oui-kit
Version:
🎯 *UI toolkit with a French touch* 🇫🇷
41 lines (36 loc) • 1.51 kB
text/typescript
import type { DirectiveBinding } from 'vue'
import type { LoggerInterface } from 'zeed'
import { Logger } from 'zeed'
const log: LoggerInterface = Logger('oui:v-menu')
export const vMenu = {
updated: (element: any, binding: DirectiveBinding) => {
log.assert(typeof binding.value === 'function', 'v-menu requires function as argument')
element.__ouiVMenu = binding.value
},
mounted: (element: any, binding: DirectiveBinding) => {
log.assert(typeof binding.value === 'function', 'v-menu requires function as argument')
element.__ouiVMenu = binding.value
element.addEventListener('contextmenu', (event: MouseEvent) => {
event.preventDefault() // no system menu
element.__ouiVMenu?.(event, element)
})
element.addEventListener('click', (event: MouseEvent) => {
element.__ouiVMenu?.(event, element)
})
},
}
export const vMenuContext = {
updated: (element: any, binding: DirectiveBinding) => {
log.assert(typeof binding.value === 'function', 'v-menu requires function as argument')
element.__ouiVMenuContext = binding.value
},
mounted: (element: any, binding: DirectiveBinding) => {
log.assert(typeof binding.value === 'function', 'v-menu requires function as argument')
element.__ouiVMenuContext = binding.value
element.addEventListener('contextmenu', (event: MouseEvent) => {
event.preventDefault() // no system menu
element.__ouiVMenuContext?.(event, element)
})
},
}
export const vContext = vMenuContext