UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 1.62 kB
{"version":3,"file":"directive.mjs","sources":["../../../../../../packages/components/popover/src/directive.ts"],"sourcesContent":["import { on } from '@element-plus/utils/dom'\n\nimport type { DirectiveBinding, VNode, ObjectDirective } from 'vue'\n\ninterface PopoverInstance {\n events: Record<string, EventListenerOrEventListenerObject>\n triggerRef: HTMLElement\n tabindex: string | number\n}\n\nconst attachEvents = (\n el: HTMLElement,\n binding: DirectiveBinding,\n vnode: VNode\n) => {\n const _ref = binding.arg || binding.value\n const popover = vnode.dirs[0].instance.$refs[_ref] as PopoverInstance\n if (popover) {\n popover.triggerRef = el\n el.setAttribute('tabindex', popover.tabindex as string)\n // because v-popover cannot modify the vnode itself due to it has already been\n Object.entries(popover.events).forEach(([eventName, e]) => {\n on(el, eventName.toLowerCase().slice(2), e)\n })\n }\n}\n\nexport default {\n mounted(el, binding, vnode) {\n attachEvents(el, binding, vnode)\n },\n updated(el, binding, vnode) {\n attachEvents(el, binding, vnode)\n },\n} as ObjectDirective\n\nexport const VPopover = 'popover'\n"],"names":[],"mappings":";;AAUA,MAAM,eAAe,CACnB,IACA,SACA,UACG;AACH,QAAM,OAAO,QAAQ,OAAO,QAAQ;AACpC,QAAM,UAAU,MAAM,KAAK,GAAG,SAAS,MAAM;AAC7C,MAAI,SAAS;AACX,YAAQ,aAAa;AACrB,OAAG,aAAa,YAAY,QAAQ;AAEpC,WAAO,QAAQ,QAAQ,QAAQ,QAAQ,CAAC,CAAC,WAAW,OAAO;AACzD,SAAG,IAAI,UAAU,cAAc,MAAM,IAAI;AAAA;AAAA;AAAA;AAK/C,uBAAe;AAAA,EACb,QAAQ,IAAI,SAAS,OAAO;AAC1B,iBAAa,IAAI,SAAS;AAAA;AAAA,EAE5B,QAAQ,IAAI,SAAS,OAAO;AAC1B,iBAAa,IAAI,SAAS;AAAA;AAAA;MAIjB,WAAW;;;;"}