@@ -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+
6669export 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```
109244yarn install
0 commit comments