UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7 kB
{"version":3,"file":"select.mjs","sources":["../../../../../../packages/components/tree-select/src/select.ts"],"sourcesContent":["// @ts-nocheck\nimport { computed, nextTick, onMounted, toRefs, watch } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport { pick } from 'lodash-unified'\nimport ElSelect from '@element-plus/components/select'\nimport { useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { getEventCode } from '@element-plus/utils'\n\nimport type { Ref } from 'vue'\nimport type { SelectInstance } from '@element-plus/components/select'\nimport type { TreeInstance } from '@element-plus/components/tree'\n\nexport const useSelect = (\n props,\n { attrs, emit },\n {\n select,\n tree,\n key,\n }: {\n select: Ref<SelectInstance | undefined>\n tree: Ref<TreeInstance | undefined>\n key: Ref<string>\n }\n) => {\n const ns = useNamespace('tree-select')\n\n // update tree data when use filterMethod/remoteMethod\n watch(\n () => props.data,\n () => {\n if (props.filterable) {\n nextTick(() => {\n // let tree node expand only, same with tree filter\n tree.value?.filter(select.value?.states.inputValue)\n })\n }\n },\n { flush: 'post' }\n )\n\n const focusLastNode = (listNode) => {\n const lastNode = listNode.at(-1)\n if (lastNode.expanded && lastNode.childNodes.at(-1)) {\n focusLastNode([lastNode.childNodes.at(-1)])\n } else {\n const el = tree.value.el$?.querySelector(\n `[data-key=\"${listNode.at(-1).key}\"]`\n )\n el?.focus({ preventScroll: true })\n return\n }\n }\n\n onMounted(() => {\n useEventListener(\n () => select.value?.$el,\n 'keydown',\n async (evt) => {\n const code = getEventCode(evt)\n const { dropdownMenuVisible } = select.value!\n if (\n [EVENT_CODE.down, EVENT_CODE.up].includes(code) &&\n dropdownMenuVisible\n ) {\n await nextTick()\n // wait navigateOption to finish\n setTimeout(() => {\n if (EVENT_CODE.up === code) {\n const listNode = tree.value.store.root.childNodes\n focusLastNode(listNode)\n return\n }\n // el-select-dropdown__item => el-tree-node__content => el-tree-node__content\n select.value.optionsArray[\n select.value.states.hoveringIndex\n ].$el?.parentNode?.parentNode?.focus({ preventScroll: true })\n })\n }\n },\n {\n capture: true,\n }\n )\n })\n\n const result = {\n ...pick(toRefs(props), Object.keys(ElSelect.props)),\n ...attrs,\n class: computed(() => attrs.class),\n style: computed(() => attrs.style),\n // attrs is not reactive, when v-model binding source changes,\n // this listener is still old, see the bug(or test 'v-model source change'):\n // https://github.com/element-plus/element-plus/issues/14204\n 'onUpdate:modelValue': (value) => emit(UPDATE_MODEL_EVENT, value),\n valueKey: key,\n popperClass: computed(() => {\n const classes = [ns.e('popper')]\n if (props.popperClass) classes.push(props.popperClass)\n return classes.join(' ')\n }),\n filterMethod: (keyword = '') => {\n if (props.filterMethod) {\n props.filterMethod(keyword)\n } else if (props.remoteMethod) {\n props.remoteMethod(keyword)\n } else {\n // let tree node expand only, same with tree filter\n tree.value?.filter(keyword)\n }\n },\n }\n\n return result\n}\n"],"names":[],"mappings":"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"}