UNPKG

@vuesax-alpha/nightly

Version:
1 lines 9.43 kB
{"version":3,"file":"popper2.mjs","sources":["../../../../../../packages/components/popper/src/popper.vue"],"sourcesContent":["<template>\n <popper-trigger\n :disabled=\"disabled\"\n :trigger=\"trigger\"\n :virtual-ref=\"virtualRef\"\n :virtual-triggering=\"virtualTriggering\"\n :on-mouseenter=\"onMouseenter\"\n :on-mouseleave=\"onMouseleave\"\n :on-click=\"onClick\"\n :on-keydown=\"onKeydown\"\n :on-focus=\"onFocus\"\n :on-blur=\"onBlur\"\n :on-contextmenu=\"onContextmenu\"\n >\n <slot />\n </popper-trigger>\n\n <popper-content\n :animation=\"animation\"\n :append-to=\"appendTo\"\n :teleported=\"teleported\"\n :persistent=\"persistent\"\n :placement=\"popperPlacement\"\n :content=\"content\"\n :interactivity=\"interactivity\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle, floatingStyles, { zIndex }]\"\n :disabled=\"disabled\"\n :visible=\"visible\"\n :show-arrow=\"showArrow\"\n @blur=\"onBlur\"\n @close=\"onClose\"\n >\n <slot name=\"content\" />\n </popper-content>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n onDeactivated,\n provide,\n reactive,\n readonly,\n ref,\n toRef,\n unref,\n watch,\n} from 'vue'\nimport { isBoolean, isEmpty } from '@vuesax-alpha/utils'\nimport {\n useDelayedToggle,\n usePopperContainer,\n usePopperContainerId,\n useZIndex,\n} from '@vuesax-alpha/hooks'\nimport { popperContextKey } from '@vuesax-alpha/tokens'\nimport {\n arrow as arrowMiddleware,\n flip as flipMiddleware,\n offset as offsetMiddleware,\n shift as shiftMiddleware,\n useFloating,\n} from '@vuesax-alpha/hooks/use-floating/vue'\nimport { popperEmits, popperProps, usePopperModelToggle } from './popper'\nimport popperContent from './content.vue'\nimport popperTrigger from './trigger.vue'\nimport type { Ref } from 'vue'\nimport type {\n Middleware,\n ReferenceElement,\n} from '@vuesax-alpha/hooks/use-floating/vue'\n\ndefineOptions({\n name: 'VsPopper',\n inheritAttrs: false,\n})\n\nusePopperContainer()\n\nconst { selector, id } = usePopperContainerId()\n\nconst appendTo = computed(() => props.appendTo || selector.value)\n\nconst props = defineProps(popperProps)\nconst emit = defineEmits(popperEmits)\n\nconst { currentZIndex, nextZIndex } = useZIndex()\n\nconst zIndex = computed(() => currentZIndex.value)\n\nconst triggerRef = ref<ReferenceElement>()\nconst contentRef = ref<HTMLElement>()\nconst arrowRef = ref<HTMLElement>()\n\nconst open = ref(false)\nconst toggleReason = ref<Event>()\n\nconst { show, hide, hasUpdateHandler } = usePopperModelToggle({\n indicator: open,\n toggleReason,\n processBeforeClosing: props.processBeforeClose,\n shouldProceed: props.processBeforeOpen,\n})\n\nconst { onOpen, onClose } = useDelayedToggle({\n showAfter: toRef(props, 'showAfter'),\n hideAfter: toRef(props, 'hideAfter'),\n autoClose: toRef(props, 'autoClose'),\n open: show,\n close: hide,\n})\n\nconst {\n update,\n placement: popperPlacement,\n floatingStyles,\n} = useFloating(triggerRef, contentRef, {\n open,\n middleware: ref([\n !isEmpty(props.offset) && offsetMiddleware(props.offset),\n !isEmpty(props.flip) &&\n flipMiddleware(isBoolean(props.flip) ? undefined : props.flip),\n !isEmpty(props.shift) &&\n shiftMiddleware(isBoolean(props.shift) ? undefined : props.shift),\n arrowMiddleware({\n element: arrowRef,\n }),\n ]) as Ref<Middleware[]>,\n placement: computed(() => props.placement),\n strategy: computed(() => props.strategy),\n transform: false,\n fit: computed(() => props.fit),\n})\n\nconst controlled = computed(\n () => isBoolean(props.visible) && !hasUpdateHandler.value\n)\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n update()\n shouldUpdateZIndex && nextZIndex()\n}\n\nconst onBlur = () => {\n if (!props.virtualTriggering) {\n onClose()\n }\n}\n\nconst isFocusInsideContent = () => {\n return !!contentRef.value?.contains(document.activeElement)\n}\n\nwatch(\n () => props.disabled,\n (disabled) => {\n if (disabled && open.value) {\n open.value = false\n }\n }\n)\n\nonDeactivated(() => open.value && hide())\n\nprovide(popperContextKey, {\n contentRef,\n triggerRef,\n arrowRef,\n referenceRef: triggerRef,\n\n controlled,\n id,\n open: readonly(open),\n trigger: toRef(props, 'trigger'),\n onOpen,\n onClose,\n onToggle: (event?: Event) => {\n if (unref(open)) {\n onClose(event)\n } else {\n onOpen(event)\n }\n },\n onShow: () => {\n emit('show', toggleReason.value)\n },\n onHide: () => {\n emit('hide', toggleReason.value)\n },\n onBeforeShow: () => {\n emit('before-show', toggleReason.value)\n },\n onBeforeHide: () => {\n emit('before-hide', toggleReason.value)\n },\n updatePopper,\n})\n\ndefineExpose(\n reactive({\n /**\n * @description popper component instance\n */\n triggerRef,\n /**\n * @description tooltip-content component instance\n */\n contentRef,\n /**\n * @description validate current focus event is trigger inside tooltip-content\n */\n isFocusInsideContent,\n /**\n * @description update popper component instance\n */\n updatePopper,\n /**\n * @description expose onOpen function to mange tooltip open state\n */\n onOpen,\n /**\n * @description expose onOpen function to mange tooltip open state\n */\n onClose,\n /**\n * @description expose hide function\n */\n hide,\n /**\n * @description expose current poppper placement\n */\n popperPlacement,\n })\n)\n</script>\n"],"names":["offsetMiddleware","flipMiddleware","shiftMiddleware","arrowMiddleware"],"mappings":"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"}