UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.01 kB
{"version":3,"file":"use-focus-trap.mjs","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"],"names":[],"mappings":";;AAKO,MAAM,yBAAA,GAA4B,CACvC,KAAA,EACA,IAAA,KACG;AACH,EAAA,MAAM,OAAA,GAAU,IAAI,KAAK,CAAA;AACzB,EAAA,MAAM,gBAAgB,GAAA,EAAyC;AAE/D,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,IAAA,CAAK,OAAO,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAuB;AAhBvD,IAAA,IAAA,EAAA;AAiBI,IAAA,IAAA,CAAA,CAAI,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,WAAA,MAAgB,SAAA,EAAW;AAC3C,MAAA,aAAA,CAAc,KAAA,GAAQ,OAAA;AACtB,MAAA,IAAA,CAAK,MAAM,CAAA;AAAA,IACb;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAsB;AAC3C,IAAA,IAAI,KAAA,CAAM,OAAA,IAAW,CAAC,OAAA,CAAQ,KAAA,EAAO;AACnC,MAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,QAAA,aAAA,CAAc,QAAQ,KAAA,CAAM,MAAA;AAAA,MAC9B;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAuB;AAClD,IAAA,IAAI,CAAC,MAAM,QAAA,EAAU;AACnB,MAAA,IAAI,KAAA,CAAM,MAAA,CAAO,WAAA,KAAgB,SAAA,EAAW;AAC1C,QAAA,KAAA,CAAM,cAAA,EAAe;AAAA,MACvB;AACA,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAChB,IAAA,IAAA,CAAK,OAAO,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,aAAA,CAAc,KAAA,GAAQ,MAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,aAAA;AAAA,IACA,OAAA;AAAA,IAEA,oBAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}