UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.86 kB
{"version":3,"file":"roving-focus-item.mjs","sources":["../../../../../../packages/components/roving-focus-group/src/roving-focus-item.vue"],"sourcesContent":["<template>\n <el-roving-focus-collection-item\n :id=\"id\"\n :focusable=\"focusable\"\n :active=\"active\"\n >\n <slot />\n </el-roving-focus-collection-item>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, provide, ref, unref } from 'vue'\nimport { useId } from '@element-plus/hooks'\nimport { composeEventHandlers, getEventCode } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElCollectionItem as ElRovingFocusCollectionItem } from './roving-focus-group'\nimport {\n ROVING_FOCUS_GROUP_INJECTION_KEY,\n ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n} from './tokens'\n\nexport default defineComponent({\n components: {\n ElRovingFocusCollectionItem,\n },\n props: {\n focusable: {\n type: Boolean,\n default: true,\n },\n active: Boolean,\n },\n emits: ['mousedown', 'focus', 'keydown'],\n setup(props, { emit }) {\n const { currentTabbedId, onItemFocus, onItemShiftTab, onKeydown } = inject(\n ROVING_FOCUS_GROUP_INJECTION_KEY,\n undefined\n )!\n\n const id = useId()\n const rovingFocusGroupItemRef = ref<HTMLElement>()\n\n const handleMousedown = composeEventHandlers(\n (e: Event) => {\n emit('mousedown', e)\n },\n (e) => {\n if (!props.focusable) {\n e.preventDefault()\n } else {\n onItemFocus(unref(id))\n }\n }\n )\n\n const handleFocus = composeEventHandlers(\n (e: Event) => {\n emit('focus', e)\n },\n () => {\n onItemFocus(unref(id))\n }\n )\n\n const handleKeydown = composeEventHandlers(\n (e: Event) => {\n emit('keydown', e)\n },\n (e) => {\n const { shiftKey, target, currentTarget } = e as KeyboardEvent\n const code = getEventCode(e as KeyboardEvent)\n\n if (code === EVENT_CODE.tab && shiftKey) {\n onItemShiftTab()\n return\n }\n if (target !== currentTarget) return\n onKeydown(e as KeyboardEvent)\n }\n )\n\n const isCurrentTab = computed(() => currentTabbedId.value === unref(id))\n\n provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {\n rovingFocusGroupItemRef,\n tabIndex: computed(() => (unref(isCurrentTab) ? 0 : -1)),\n handleMousedown,\n handleFocus,\n handleKeydown,\n })\n\n return {\n id,\n handleKeydown,\n handleFocus,\n handleMousedown,\n }\n },\n})\n</script>\n"],"names":["ElRovingFocusCollectionItem","_createBlock","_renderSlot"],"mappings":"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"}