Skip to content

Commit 87c1229

Browse files
authored
Merge pull request #5 from lacrioque/main
Added provide to bind context in custom Events
2 parents b1528a8 + e1aa334 commit 87c1229

21 files changed

+7441
-23
lines changed

README.md

Lines changed: 137 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,31 @@ app.vue
5959
</context-menu>
6060

6161
<div v-contextmenu="{id: '123'}">右键点击区域{id: '123'}</div>
62-
<div v-contextmenu="{id: [1, 2, 3]}">右键点击区域{ id: [1, 2, 3]}</div>
62+
<div @contextmenu="openContextMenu">右键点击区域{ id: [1, 2, 3]}</div>
6363
</template>
6464

6565
<script lang="ts">
66+
67+
import { inject } from 'vue'
68+
6669
export default {
6770
name: 'App',
6871
setup () {
72+
const emitContext = inject('emitContext') as (event: Event, dataId: Record<string, unknown>) => void
73+
6974
function refresh () {
7075
alert('刷新')
7176
}
7277
78+
function openContextMenu (e: any) {
79+
emitContext(e, { id: [1, 2, 3] })
80+
}
81+
7382
function itemClickEvent (e: any) {
7483
console.log('停止,自定义id:' + e.id)
7584
}
7685
77-
return { refresh, itemClickEvent }
86+
return { refresh, itemClickEvent, openContextMenu }
7887
}
7988
}
8089
</script>
@@ -104,6 +113,132 @@ export default {
104113

105114

106115

116+
## Project setup
117+
```
118+
yarn install
119+
yarn serve
120+
yarn build
121+
yarn lint
122+
```
123+
124+
125+
# vue3-contextmenu (ENGLISH TRANSLATION)
126+
127+
English translation (with the help of google translator) !ONLY!
128+
129+
Right-click menu component for Vue3 writte in Typescript
130+
131+
Official website, documentation and example in chinese (https://hunlongyu.github.io/vue3-contextmenu/)
132+
133+
### Screenshot
134+
![vue3-contextmenu.png](https://i.loli.net/2021/01/06/n8JgY9MW5bqeax2.png)
135+
136+
### Installation
137+
```bash
138+
$ npm i -S vue3-contextmenu
139+
140+
# or
141+
142+
$ yarn add vue3-contextmenu
143+
```
144+
145+
### How-To
146+
147+
main.ts
148+
```js
149+
import contextmenu from 'vue3-contextmenu'
150+
import 'vue3-contextmenu/dist/vue3-contextmenu.css'
151+
app.use(contextmenu)
152+
```
153+
154+
app.vue
155+
```html
156+
<template>
157+
<context-menu>
158+
<context-menu-submenu :label="'View'">
159+
<context-menu-item disabled> Icon </context-menu-item>
160+
<context-menu-item> List </context-menu-item>
161+
<context-menu-item> Detailed information </context-menu-item>
162+
</context-menu-submenu>
163+
<context-menu-submenu :label="'Sort by'">
164+
<context-menu-item> Name </context-menu-item>
165+
<context-menu-item> Date </context-menu-item>
166+
<context-menu-item> Type </context-menu-item>
167+
<context-menu-item> Size </context-menu-item>
168+
<context-menu-item disabled> Duration </context-menu-item>
169+
</context-menu-submenu>
170+
<context-menu-item @click="refresh" :divider="true"> Refresh </context-menu-item>
171+
<context-menu-item @itemClickHandele="itemClickEvent" :divider="true"> Stop </context-menu-item>
172+
<context-menu-submenu :label="'Custom'" divider>
173+
<context-menu-item> Secondary menu </context-menu-item>
174+
<context-menu-submenu :label="'Multi level menu'">
175+
<context-menu-item>Three level menu</context-menu-item>
176+
<context-menu-item>Nested menu</context-menu-item>
177+
</context-menu-submenu>
178+
</context-menu-submenu>
179+
<context-menu-submenu :label="'New'" divider>
180+
<context-menu-item>New file</context-menu-item>
181+
<context-menu-item>New folder</context-menu-item>
182+
<context-menu-item>Shortcut</context-menu-item>
183+
</context-menu-submenu>
184+
<context-menu-item :disabled="true">Properties</context-menu-item>
185+
</context-menu>
186+
187+
<div v-contextmenu="{id: '123'}">Right click on area {id: '123'}</div>
188+
<div v-contextmenu="{id: [1, 2, 3]}">Right click on area { id: [1, 2, 3]}</div>
189+
</template>
190+
191+
<script lang="ts">
192+
193+
import { inject } from 'vue'
194+
195+
export default {
196+
name: 'App',
197+
setup () {
198+
const emitContext = inject('emitContext') as (event: Event, dataId: Record<string, unknown>) => void
199+
200+
function refresh () {
201+
alert('refresh')
202+
}
203+
204+
function openContextMenu (e: any) {
205+
emitContext(e, { id: [1, 2, 3] })
206+
}
207+
208+
function itemClickEvent (e: any) {
209+
console.log('Stop; with id:' + e.id)
210+
}
211+
212+
return { refresh, itemClickEvent, openContextMenu }
213+
}
214+
}
215+
</script>
216+
```
217+
218+
### 说明
219+
220+
| 参数 | 说明 | 类型 | 默认值 |
221+
| -------- | -------------------- | ------- | ------- |
222+
| label | Submenu title text | String | `null` |
223+
| disabled | Toggle enable_/disable of menu | Boolean | `false` |
224+
| divider | Show dividing line below item | Boolean | `false` |
225+
| itemClickHandele | Event on element click, contains custom id as event attribute `id´ | any | `undefinded` |
226+
227+
228+
Css classes that may be customized
229+
230+
* `v-contextmenu`: Root element
231+
* `v-contextmenu-item`: contextmenu item
232+
* `v-contextmenu-item:hover`: contextmenu item, in hovered state
233+
* `v-contextmenu-item--disabled`: contextmenu item, disabled state
234+
* `v-contextmenu-divider`: menu divider line
235+
* `v-contextmenu-submenu-label`: Submenu title
236+
* `v-contextmenu-submenu-right`: Right arrow in submenu
237+
* `v-contextmenu-submenu-children`: submenu container
238+
239+
240+
241+
107242
## Project setup
108243
```
109244
yarn install

docs/css/app.0a01be44.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/demo.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<meta charset="utf-8">
2+
<title>vue3-contextmenu demo</title>
3+
<script src="./vue3-contextmenu.umd.js"></script>
4+
5+
<link rel="stylesheet" href="./vue3-contextmenu.css">
6+
7+
8+
<script>
9+
console.log(vue3-contextmenu)
10+
</script>

docs/favicon.ico

-4.19 KB
Binary file not shown.

docs/index.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/js/app.851ca8d8.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

docs/js/app.851ca8d8.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/js/chunk-vendors.756f259b.js

Lines changed: 0 additions & 2 deletions
This file was deleted.

docs/js/chunk-vendors.756f259b.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)