tav-ui
Version:
1 lines • 8.14 kB
Source Map (JSON)
{"version":3,"file":"useRowSelection2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useRowSelection.ts"],"sourcesContent":["import { computed, nextTick, ref, toRaw, unref, watch } from 'vue'\nimport { omit } from 'lodash-es'\nimport { findNodeAll } from '@tav-ui/utils/helper/treeHelper'\nimport { isFunction } from '@tav-ui/utils/is'\nimport { ROW_KEY } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { BasicTableProps, TableEmitType, TableRowSelection } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\n\nexport function useRowSelection(\n propsRef: ComputedRef<BasicTableProps>,\n tableData: Ref<Recordable[]>,\n emit: TableEmitType\n) {\n const selectedRowKeysRef = ref<string[]>([])\n const selectedRowRef = ref<Recordable[]>([])\n const changing = ref(false)\n const tempSelectedRowKeysRef = ref<string[]>([])\n\n const getRowSelectionRef = computed((): TableRowSelection | null => {\n const { rowSelection } = unref(propsRef)\n if (!rowSelection) {\n return null\n }\n return {\n ...(changing.value ? { selectedRowKeys: unref(tempSelectedRowKeysRef) } : {}),\n // selectedRowKeys: unref(selectedRowKeysRef),\n hideSelectAll: false,\n onChange: (selectedRowKeys: any) => {\n setSelectedRowKeys(selectedRowKeys, false)\n // selectedRowKeysRef.value = selectedRowKeys;\n // selectedRowRef.value = selectedRows;\n },\n ...omit([rowSelection, 'onChange']),\n }\n })\n\n watch(\n () => unref(propsRef).rowSelection?.selectedRowKeys,\n (v: any) => {\n setSelectedRowKeys(v)\n }\n )\n\n watch(\n () => unref(selectedRowKeysRef),\n () => {\n nextTick(() => {\n const { rowSelection } = unref(propsRef)\n if (rowSelection) {\n const { onChange } = rowSelection\n if (onChange && isFunction(onChange)) onChange(getSelectRowKeys(), getSelectRows())\n }\n emit('selection-change', {\n keys: getSelectRowKeys(),\n rows: getSelectRows(),\n })\n })\n },\n { deep: true }\n )\n\n const getAutoCreateKey = computed(() => {\n return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey\n })\n\n const getRowKey = computed(() => {\n const { rowKey } = unref(propsRef)\n return unref(getAutoCreateKey) ? ROW_KEY : rowKey\n })\n\n /**\n * 设置dom\n * @param keys 选择项的key\n */\n function setTempSelectedRowKeysRef(keys: string[]) {\n tempSelectedRowKeysRef.value = keys\n changing.value = true\n nextTick(() => {\n changing.value = false\n })\n }\n\n function setSelectedRowKeys(rowKeys: any, syncDom = true) {\n selectedRowKeysRef.value = rowKeys\n const allSelectedRows = findNodeAll(\n toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))),\n (item) => rowKeys.includes(item[unref(getRowKey) as string]),\n {\n children: propsRef.value.childrenColumnName ?? 'children',\n }\n )\n const trueSelectedRows: any[] = []\n rowKeys.forEach((key: string) => {\n const found = allSelectedRows.find((item) => item[unref(getRowKey) as string] === key)\n found && trueSelectedRows.push(found)\n })\n selectedRowRef.value = trueSelectedRows\n syncDom && setTempSelectedRowKeysRef(rowKeys)\n }\n\n function setSelectedRows(rows: Recordable[]) {\n selectedRowRef.value = rows\n }\n\n function clearSelectedRowKeys() {\n selectedRowRef.value = []\n selectedRowKeysRef.value = []\n setTempSelectedRowKeysRef([])\n }\n\n function deleteSelectRowByKey(key: string) {\n const selectedRowKeys = unref(selectedRowKeysRef)\n const index = selectedRowKeys.findIndex((item) => item === key)\n if (index !== -1) {\n unref(selectedRowKeysRef).splice(index, 1)\n }\n }\n\n function getSelectRowKeys() {\n return unref(selectedRowKeysRef)\n }\n\n function getSelectRows<T = Recordable>() {\n // const ret = toRaw(unref(selectedRowRef)).map((item) => toRaw(item));\n return unref(selectedRowRef) as T[]\n }\n\n function getRowSelection() {\n return unref(getRowSelectionRef)!\n }\n\n return {\n getRowSelection,\n getRowSelectionRef,\n getSelectRows,\n getSelectRowKeys,\n setSelectedRowKeys,\n clearSelectedRowKeys,\n deleteSelectRowByKey,\n setSelectedRows,\n }\n}\n"],"names":[],"mappings":"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"}