vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 9.68 kB
Source Map (JSON)
{"version":3,"file":"select.mjs","sources":["../../../../../../package/components/table-select/src/select.ts"],"sourcesContent":["// @ts-nocheck\nimport { computed, toRefs, nextTick, watch, toValue, onMounted } from \"vue\";\nimport { pick, isArray } from \"lodash-es\";\nimport { ElSelect, useNamespace, UPDATE_MODEL_EVENT, ElTable, ElPagination } from \"element-plus\";\nimport type { Ref } from \"vue\";\nimport { useGlobalConfig } from \"../../config-provider/src/hooks/use-global-config\";\nimport { onKeyStroke } from \"@vueuse/core\";\n\nexport const useSelect = (\n props,\n { attrs, emit },\n {\n key,\n filter,\n select,\n currentPage,\n pagination,\n table\n }: {\n select: Ref<InstanceType<typeof ElSelect> | undefined>;\n table: Ref<InstanceType<typeof ElTable> | undefined>;\n pagination: Ref<InstanceType<typeof ElPagination> | undefined>;\n key: Ref<string>;\n filter: (query: string) => void;\n currentPage: Ref<number>;\n }\n) => {\n const ns = useNamespace(\"table-select\");\n const config = useGlobalConfig();\n\n watch(currentPage, (value, old) => {\n if (value !== old)\n props?.remoteMethod?.({\n query: select.value.query,\n [config.value.currentPageKey]: value,\n [config.value.pageSizeKey]: pagination.value.pageSize\n });\n });\n\n watch(\n () => [props.modelValue, props.data],\n ([_modelValue]) => {\n const modelValue = toValue(_modelValue);\n if (modelValue && !props.multiple) {\n table.value?.store.setCurrentRowKey(modelValue);\n }\n if (props.multiple) {\n table.value?.clearSelection();\n if (isArray(modelValue) && modelValue.length > 0) {\n nextTick(() => {\n for (const item of table.value?.store.states.data.value) {\n if (modelValue.includes(item[key.value])) {\n table.value?.toggleRowSelection(item, true);\n }\n }\n });\n }\n }\n },\n { immediate: true, deep: true }\n );\n\n const navigateOptions = async () => {\n await nextTick();\n const rowEls = (table.value?.$refs.tableBody as HTMLTableElement).querySelectorAll(\n \".el-table__row\"\n );\n if (rowEls.length > 0 && rowEls[select.value.hoverIndex]) {\n rowEls.forEach((item) => item.classList.remove(\"hover-row\"));\n rowEls[select.value.hoverIndex].classList.add(\"hover-row\");\n }\n };\n\n onMounted(() => {\n onKeyStroke(\n [\"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\"],\n (e) => {\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n navigateOptions();\n }\n if (e.key === \"ArrowLeft\") {\n if (pagination.value.currentPage <= 1) {\n currentPage.value = pagination.value.pageCount;\n } else {\n currentPage.value = pagination.value.currentPage - 1;\n }\n }\n if (e.key === \"ArrowRight\") {\n if (pagination.value.currentPage >= pagination.value.pageCount) {\n currentPage.value = 1;\n } else {\n currentPage.value = pagination.value.currentPage + 1;\n }\n }\n },\n { target: select.value?.input || select.value.reference.input }\n );\n });\n\n const result = {\n ...pick(toRefs(props), Object.keys(ElSelect.props)),\n ...attrs,\n loading: false,\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) props.filterMethod(keyword);\n\n nextTick(() => {\n // let tree node expand only, same with tree filter\n filter(keyword);\n });\n },\n // clear filter text when visible change\n onVisibleChange: (visible: boolean) => {\n attrs.onVisibleChange?.(visible);\n if (props.filterable && visible) {\n result.filterMethod();\n }\n if (visible) {\n navigateOptions();\n }\n },\n remoteMethod: (query: string) => {\n if (select.value?.visible)\n props?.remoteMethod?.({\n query,\n [config.value.currentPageKey]: pagination.value?.currentPage,\n [config.value.pageSizeKey]: pagination.value?.pageSize\n });\n }\n };\n\n return result;\n};\n"],"names":["_a","_b"],"mappings":"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"}