UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 8.41 kB
{"version":3,"file":"content.vue2.mjs","sources":["../../../../../../packages/components/popper/src/content.vue"],"sourcesContent":["<template>\n <div\n ref=\"contentRef\"\n v-bind=\"contentAttrs\"\n :style=\"contentStyle\"\n :class=\"contentClass\"\n tabindex=\"-1\"\n @mouseenter=\"(e) => $emit('mouseenter', e)\"\n @mouseleave=\"(e) => $emit('mouseleave', e)\"\n >\n <el-focus-trap\n :loop=\"loop\"\n :trapped=\"trapped\"\n :trap-on-focus-in=\"true\"\n :focus-trap-el=\"contentRef\"\n :focus-start-el=\"focusStartRef\"\n @focus-after-trapped=\"onFocusAfterTrapped\"\n @focus-after-released=\"onFocusAfterReleased\"\n @focusin=\"onFocusInTrap\"\n @focusout-prevented=\"onFocusoutPrevented\"\n @release-requested=\"onReleaseRequested\"\n >\n <slot />\n </el-focus-trap>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, onBeforeUnmount, onMounted, provide, unref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { NOOP, isElement } from '@element-plus/utils'\nimport ElFocusTrap from '@element-plus/components/focus-trap'\nimport { formItemContextKey } from '@element-plus/components/form'\nimport { POPPER_CONTENT_INJECTION_KEY } from './constants'\nimport { popperContentEmits, popperContentPropsDefaults } from './content'\nimport {\n usePopperContent,\n usePopperContentDOM,\n usePopperContentFocusTrap,\n} from './composables'\n\nimport type { WatchStopHandle } from 'vue'\nimport type { PopperContentProps } from './content'\n\ndefineOptions({\n name: 'ElPopperContent',\n})\n\nconst emit = defineEmits(popperContentEmits)\n\nconst props = withDefaults(\n defineProps<PopperContentProps>(),\n popperContentPropsDefaults\n)\n\nconst {\n focusStartRef,\n trapped,\n\n onFocusAfterReleased,\n onFocusAfterTrapped,\n onFocusInTrap,\n onFocusoutPrevented,\n onReleaseRequested,\n} = usePopperContentFocusTrap(props, emit)\n\nconst { attributes, arrowRef, contentRef, styles, instanceRef, role, update } =\n usePopperContent(props)\n\nconst {\n ariaModal,\n arrowStyle,\n contentAttrs,\n contentClass,\n contentStyle,\n updateZIndex,\n} = usePopperContentDOM(props, {\n styles,\n attributes,\n role,\n})\n\nconst formItemContext = inject(formItemContextKey, undefined)\n\nprovide(POPPER_CONTENT_INJECTION_KEY, {\n arrowStyle,\n arrowRef,\n})\n\nif (formItemContext) {\n // disallow auto-id from inside popper content\n provide(formItemContextKey, {\n ...formItemContext,\n addInputId: NOOP,\n removeInputId: NOOP,\n })\n}\n\nlet triggerTargetAriaStopWatch: WatchStopHandle | undefined = undefined\n\nconst updatePopper = (shouldUpdateZIndex = true) => {\n update()\n shouldUpdateZIndex && updateZIndex()\n}\n\nconst togglePopperAlive = () => {\n updatePopper(false)\n if (props.visible && props.focusOnShow) {\n trapped.value = true\n } else if (props.visible === false) {\n trapped.value = false\n }\n}\n\nonMounted(() => {\n watch(\n () => props.triggerTargetEl,\n (triggerTargetEl, prevTriggerTargetEl) => {\n triggerTargetAriaStopWatch?.()\n triggerTargetAriaStopWatch = undefined\n\n const el = unref(triggerTargetEl || contentRef.value)\n const prevEl = unref(prevTriggerTargetEl || contentRef.value)\n\n if (isElement(el)) {\n triggerTargetAriaStopWatch = watch(\n [role, () => props.ariaLabel, ariaModal, () => props.id],\n (watches) => {\n ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key, idx) => {\n isNil(watches[idx])\n ? el.removeAttribute(key)\n : el.setAttribute(key, watches[idx]!)\n })\n },\n { immediate: true }\n )\n }\n if (prevEl !== el && isElement(prevEl)) {\n ;['role', 'aria-label', 'aria-modal', 'id'].forEach((key) => {\n prevEl.removeAttribute(key)\n })\n }\n },\n { immediate: true }\n )\n\n watch(() => props.visible, togglePopperAlive, { immediate: true })\n})\n\nonBeforeUnmount(() => {\n triggerTargetAriaStopWatch?.()\n triggerTargetAriaStopWatch = undefined\n contentRef.value = undefined\n})\n\ndefineExpose({\n /**\n * @description popper content element\n */\n popperContentRef: contentRef,\n /**\n * @description popperjs instance\n */\n popperInstanceRef: instanceRef,\n /**\n * @description method for updating popper\n */\n updatePopper,\n\n /**\n * @description content style\n */\n contentStyle,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_mergeProps","_unref","$emit","_createVNode","_renderSlot"],"mappings":"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"}