UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 14.7 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n data: Ref<T[]>\n rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n array: TableColumnCtx<T>[],\n column: TableColumnCtx<T>\n) {\n return array.map((item) => {\n if (item.id === column.id) {\n return column\n } else if (item.children?.length) {\n item.children = replaceColumn(item.children, column)\n }\n return item\n })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n array.forEach((item) => {\n item.no = item.getColumnIndex?.()\n if (item.children?.length) {\n sortColumn(item.children)\n }\n })\n array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const watcher = useWatcher<T>()\n const ns = useNamespace('table')\n const { t } = useLocale()\n\n type StoreStates = typeof watcher.states\n const mutations = {\n setData(states: StoreStates, data: T[]) {\n const dataInstanceChanged = unref(states._data) !== data\n states.data.value = data\n states._data.value = data\n instance.store.execQuery()\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n instance.store.updateCurrentRowData()\n instance.store.updateExpandRows()\n instance.store.updateTreeData(\n instance.store.states.defaultExpandAll.value\n )\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey()\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection()\n } else {\n instance.store.cleanSelection()\n }\n }\n instance.store.updateAllSelected()\n if (instance.$ready) {\n instance.store.scheduleLayout()\n }\n },\n\n insertColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns)\n let newColumns = []\n if (!parent) {\n array.push(column)\n newColumns = array\n } else {\n if (parent && !parent.children) {\n parent.children = []\n }\n parent.children?.push(column)\n newColumns = replaceColumn(array, parent)\n }\n sortColumn(newColumns)\n states._columns.value = newColumns\n states.updateOrderFns.push(updateColumnOrder)\n if (column.type === 'selection') {\n states.selectable.value = column.selectable\n states.reserveSelection.value = column.reserveSelection\n }\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics insert column\n instance.store.scheduleLayout()\n }\n },\n\n updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n const newColumnIndex = column.getColumnIndex?.()\n if (newColumnIndex === column.no) return\n\n sortColumn(states._columns.value)\n\n if (instance.$ready) {\n instance.store.updateColumns()\n }\n },\n\n removeColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns) || []\n if (parent) {\n parent.children?.splice(\n parent.children.findIndex((item) => item.id === column.id),\n 1\n )\n // fix #10699, delete parent.children immediately will trigger again\n nextTick(() => {\n if (parent.children?.length === 0) {\n delete parent.children\n }\n })\n states._columns.value = replaceColumn(array, parent)\n } else {\n const index = array.indexOf(column)\n if (index > -1) {\n array.splice(index, 1)\n states._columns.value = array\n }\n }\n\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics remove column\n instance.store.scheduleLayout()\n }\n },\n\n sort(states: StoreStates, options: Sort) {\n const { prop, order, init } = options\n if (prop) {\n const column = unref(states.columns).find(\n (column) => column.property === prop\n )\n if (column) {\n column.order = order\n instance.store.updateSort(column, prop, order)\n instance.store.commit('changeSortCondition', { init })\n }\n }\n },\n\n changeSortCondition(states: StoreStates, options: Sort) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n // https://github.com/element-plus/element-plus/pull/4640\n const { sortingColumn, sortProp, sortOrder } = states\n const columnValue = unref(sortingColumn),\n propValue = unref(sortProp),\n orderValue = unref(sortOrder)\n if (isNull(orderValue)) {\n states.sortingColumn.value = null\n states.sortProp.value = null\n }\n const ignore = { filter: true }\n instance.store.execQuery(ignore)\n\n if (!options || !(options.silent || options.init)) {\n instance.emit('sort-change', {\n column: columnValue,\n prop: propValue,\n order: orderValue,\n })\n }\n\n instance.store.updateTableScrollY()\n },\n\n filterChange(_states: StoreStates, options: Filter<T>) {\n const { column, values, silent } = options\n const newFilters = instance.store.updateFilters(column, values)\n instance.store.execQuery()\n\n if (!silent) {\n instance.emit('filter-change', newFilters)\n }\n instance.store.updateTableScrollY()\n },\n\n toggleAllSelection() {\n instance.store.toggleAllSelection?.()\n },\n\n rowSelectedChanged(_states: StoreStates, row: T) {\n instance.store.toggleRowSelection(row)\n instance.store.updateAllSelected()\n },\n\n setHoverRow(states: StoreStates, row: T) {\n states.hoverRow.value = row\n },\n\n setCurrentRow(_states: StoreStates, row: T) {\n instance.store.updateCurrentRow(row)\n },\n }\n const commit = function (name: keyof typeof mutations, ...args: any[]) {\n const mutations = instance.store.mutations\n if (mutations[name]) {\n ;(mutations[name] as any).apply(instance, [\n instance.store.states,\n ...args,\n ])\n } else {\n throw new Error(`Action not found: ${name}`)\n }\n }\n const updateTableScrollY = function () {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n }\n return {\n ns,\n t,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY,\n }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"names":["_a","column","mutations"],"mappings":"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"}