UNPKG

hongluan-ui

Version:
1 lines 3.54 kB
{"version":3,"file":"trigger2.mjs","sources":["../../../../../../packages/components/tooltip/src/trigger.vue"],"sourcesContent":["<template>\n <hl-popper-trigger\n :id=\"id\"\n :virtual-ref=\"virtualRef\"\n :open=\"open\"\n :virtual-triggering=\"virtualTriggering\"\n class=\"tooltip-trigger\"\n @blur=\"onBlur\"\n @click=\"onClick\"\n @contextmenu=\"onContextMenu\"\n @focus=\"onFocus\"\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n @keydown=\"onKeydown\"\n >\n <slot></slot>\n </hl-popper-trigger>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref, toRef, unref } from 'vue'\nimport { HlPopperTrigger } from '@hongluan-ui/components/popper'\nimport { composeEventHandlers } from '@hongluan-ui/utils'\nimport { TOOLTIP_INJECTION_KEY } from '@hongluan-ui/tokens'\nimport { useTooltipTriggerProps } from './trigger'\nimport { whenTrigger } from './utils'\n\nimport type { OnlyChildExpose } from '@hongluan-ui/components/slot'\n\ndefineOptions({\n name: 'TooltipTrigger',\n})\n\nconst props = defineProps(useTooltipTriggerProps)\n\nconst { controlled, id, open, onOpen, onClose, onToggle } = inject(\n TOOLTIP_INJECTION_KEY,\n undefined,\n)!\n\nconst triggerRef = ref<OnlyChildExpose | null>(null)\n\nconst stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true\n }\n}\nconst trigger = toRef(props, 'trigger')\nconst onMouseenter = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onOpen),\n)\nconst onMouseleave = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onClose),\n)\nconst onClick = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'click', e => {\n // distinguish left click\n if ((e as MouseEvent).button === 0) {\n onToggle(e)\n }\n }),\n)\n\nconst onFocus = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onOpen),\n)\n\nconst onBlur = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onClose),\n)\n\nconst onContextMenu = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'contextmenu', (e: Event) => {\n e.preventDefault()\n onToggle(e)\n }),\n)\n\nconst onKeydown = composeEventHandlers(\n stopWhenControlledOrDisabled,\n (e: KeyboardEvent) => {\n const { code } = e\n if (props.triggerKeys.includes(code)) {\n e.preventDefault()\n onToggle(e)\n }\n },\n)\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;oCA6Bc;AAAA,EACZ,MAAM;AACR;;;;;;AAIA,UAAM,EAAE,YAAY,IAAI,MAAM,QAAQ,SAAS,aAAa,OAC1D,uBACA,MACF;AAEA,UAAM,aAAa,IAA4B,IAAI;AAEnD,UAAM,+BAA+B,MAAM;AACzC,UAAI,MAAM,UAAU,KAAK,MAAM,UAAU;AACvC,eAAO;AAAA;AACT;AAEF,UAAM,UAAU,MAAM,OAAO,SAAS;AACtC,UAAM,eAAe,qBACnB,8BACA,YAAY,SAAS,SAAS,MAAM,CACtC;AACA,UAAM,eAAe,qBACnB,8BACA,YAAY,SAAS,SAAS,OAAO,CACvC;AACA,UAAM,UAAU,qBACd,8BACA,YAAY,SAAS,SAAS,OAAK;AAEjC,UAAK,EAAiB,WAAW,GAAG;AAClC,iBAAS,CAAC;AAAA;AACZ,KACD,CACH;AAEA,UAAM,UAAU,qBACd,8BACA,YAAY,SAAS,SAAS,MAAM,CACtC;AAEA,UAAM,SAAS,qBACb,8BACA,YAAY,SAAS,SAAS,OAAO,CACvC;AAEA,UAAM,gBAAgB,qBACpB,8BACA,YAAY,SAAS,eAAe,CAAC,MAAa;AAChD,QAAE;AACF,eAAS,CAAC;AAAA,KACX,CACH;AAEA,UAAM,YAAY,qBAChB,8BACA,CAAC,MAAqB;AACpB,YAAM,EAAE,SAAS;AACjB,UAAI,MAAM,YAAY,SAAS,IAAI,GAAG;AACpC,UAAE;AACF,iBAAS,CAAC;AAAA;AACZ,KAEJ;AAEA,WAAa;AAAA,MAIX;AAAA,KACD;;;;;;;;;;;;;;;;;;;;;;;;;;;"}