UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.31 kB
{"version":3,"file":"use-focus-trap.mjs","names":[],"sources":["../../../../../../../packages/components/popper/src/composables/use-focus-trap.ts"],"sourcesContent":["import { onBeforeUnmount, ref } from 'vue'\n\nimport type { SetupContext } from 'vue'\nimport type { PopperContentEmits, PopperContentProps } from '../content'\n\nexport const usePopperContentFocusTrap = (\n props: PopperContentProps,\n emit: SetupContext<PopperContentEmits>['emit']\n) => {\n const trapped = ref(false)\n const focusStartRef = ref<'container' | 'first' | HTMLElement>()\n\n const onFocusAfterTrapped = () => {\n emit('focus')\n }\n\n const onFocusAfterReleased = (event: CustomEvent) => {\n if (event.detail?.focusReason !== 'pointer') {\n focusStartRef.value = 'first'\n emit('blur')\n }\n }\n\n const onFocusInTrap = (event: FocusEvent) => {\n if (props.visible && !trapped.value) {\n if (event.target) {\n focusStartRef.value = event.target as typeof focusStartRef.value\n }\n trapped.value = true\n }\n }\n\n const onFocusoutPrevented = (event: CustomEvent) => {\n if (!props.trapping) {\n if (event.detail.focusReason === 'pointer') {\n event.preventDefault()\n }\n trapped.value = false\n }\n }\n\n const onReleaseRequested = () => {\n trapped.value = false\n emit('close')\n }\n\n onBeforeUnmount(() => {\n focusStartRef.value = undefined\n })\n\n return {\n focusStartRef,\n trapped,\n\n onFocusAfterReleased,\n onFocusAfterTrapped,\n onFocusInTrap,\n onFocusoutPrevented,\n onReleaseRequested,\n }\n}\n\nexport type UsePopperContentFocusTrapReturn = ReturnType<\n typeof usePopperContentFocusTrap\n>\n"],"mappings":";;AAKA,MAAa,6BACX,OACA,SACG;CACH,MAAM,UAAU,IAAI,MAAM;CAC1B,MAAM,gBAAgB,KAA0C;CAEhE,MAAM,4BAA4B;EAChC,KAAK,QAAQ;;CAGf,MAAM,wBAAwB,UAAuB;EACnD,IAAI,MAAM,QAAQ,gBAAgB,WAAW;GAC3C,cAAc,QAAQ;GACtB,KAAK,OAAO;;;CAIhB,MAAM,iBAAiB,UAAsB;EAC3C,IAAI,MAAM,WAAW,CAAC,QAAQ,OAAO;GACnC,IAAI,MAAM,QACR,cAAc,QAAQ,MAAM;GAE9B,QAAQ,QAAQ;;;CAIpB,MAAM,uBAAuB,UAAuB;EAClD,IAAI,CAAC,MAAM,UAAU;GACnB,IAAI,MAAM,OAAO,gBAAgB,WAC/B,MAAM,gBAAgB;GAExB,QAAQ,QAAQ;;;CAIpB,MAAM,2BAA2B;EAC/B,QAAQ,QAAQ;EAChB,KAAK,QAAQ;;CAGf,sBAAsB;EACpB,cAAc,QAAQ,KAAA;GACtB;CAEF,OAAO;EACL;EACA;EAEA;EACA;EACA;EACA;EACA;EACD"}