This commit is contained in:
2025-09-19 14:25:20 +08:00
parent 269893a435
commit fbf3f77229
24949 changed files with 2839404 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
import type { Ref } from 'vue';
import type { DefaultRow } from '../table/defaults';
import type { WatcherPropsData } from '.';
declare function useCurrent<T extends DefaultRow>(watcherData: WatcherPropsData<T>): {
setCurrentRowKey: (key: string) => void;
restoreCurrentRowKey: () => void;
setCurrentRowByKey: (key: string) => void;
updateCurrentRow: (_currentRow: T) => void;
updateCurrentRowData: () => void;
states: {
_currentRowKey: Ref<string | null>;
currentRow: Ref<T | null>;
};
};
export default useCurrent;

View File

@@ -0,0 +1,72 @@
import { getCurrentInstance, ref, unref } from 'vue';
import { isNull } from 'lodash-unified';
import { getRowIdentity } from '../util.mjs';
function useCurrent(watcherData) {
const instance = getCurrentInstance();
const _currentRowKey = ref(null);
const currentRow = ref(null);
const setCurrentRowKey = (key) => {
instance.store.assertRowKey();
_currentRowKey.value = key;
setCurrentRowByKey(key);
};
const restoreCurrentRowKey = () => {
_currentRowKey.value = null;
};
const setCurrentRowByKey = (key) => {
var _a;
const { data, rowKey } = watcherData;
let _currentRow = null;
if (rowKey.value) {
_currentRow = (_a = (unref(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key)) != null ? _a : null;
}
currentRow.value = _currentRow != null ? _currentRow : null;
instance.emit("current-change", currentRow.value, null);
};
const updateCurrentRow = (_currentRow) => {
const oldCurrentRow = currentRow.value;
if (_currentRow && _currentRow !== oldCurrentRow) {
currentRow.value = _currentRow;
instance.emit("current-change", currentRow.value, oldCurrentRow);
return;
}
if (!_currentRow && oldCurrentRow) {
currentRow.value = null;
instance.emit("current-change", null, oldCurrentRow);
}
};
const updateCurrentRowData = () => {
const rowKey = watcherData.rowKey.value;
const data = watcherData.data.value || [];
const oldCurrentRow = currentRow.value;
if (oldCurrentRow && !data.includes(oldCurrentRow)) {
if (rowKey) {
const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);
setCurrentRowByKey(currentRowKey);
} else {
currentRow.value = null;
}
if (isNull(currentRow.value)) {
instance.emit("current-change", null, oldCurrentRow);
}
} else if (_currentRowKey.value) {
setCurrentRowByKey(_currentRowKey.value);
restoreCurrentRowKey();
}
};
return {
setCurrentRowKey,
restoreCurrentRowKey,
setCurrentRowByKey,
updateCurrentRow,
updateCurrentRowData,
states: {
_currentRowKey,
currentRow
}
};
}
export { useCurrent as default };
//# sourceMappingURL=current.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,14 @@
import type { Ref } from 'vue';
import type { WatcherPropsData } from '.';
import type { DefaultRow } from '../table/defaults';
declare function useExpand<T extends DefaultRow>(watcherData: WatcherPropsData<T>): {
updateExpandRows: () => void;
toggleRowExpansion: (row: T, expanded?: boolean) => void;
setExpandRowKeys: (rowKeys: (string | number)[]) => void;
isRowExpanded: (row: T) => boolean;
states: {
expandRows: Ref<T[]>;
defaultExpandAll: Ref<boolean>;
};
};
export default useExpand;

View File

@@ -0,0 +1,67 @@
import { getCurrentInstance, ref } from 'vue';
import { getKeysMap, getRowIdentity, toggleRowStatus } from '../util.mjs';
function useExpand(watcherData) {
const instance = getCurrentInstance();
const defaultExpandAll = ref(false);
const expandRows = ref([]);
const updateExpandRows = () => {
const data = watcherData.data.value || [];
const rowKey = watcherData.rowKey.value;
if (defaultExpandAll.value) {
expandRows.value = data.slice();
} else if (rowKey) {
const expandRowsMap = getKeysMap(expandRows.value, rowKey);
expandRows.value = data.reduce((prev, row) => {
const rowId = getRowIdentity(row, rowKey);
const rowInfo = expandRowsMap[rowId];
if (rowInfo) {
prev.push(row);
}
return prev;
}, []);
} else {
expandRows.value = [];
}
};
const toggleRowExpansion = (row, expanded) => {
const changed = toggleRowStatus(expandRows.value, row, expanded, void 0, void 0, void 0, watcherData.rowKey.value);
if (changed) {
instance.emit("expand-change", row, expandRows.value.slice());
}
};
const setExpandRowKeys = (rowKeys) => {
instance.store.assertRowKey();
const data = watcherData.data.value || [];
const rowKey = watcherData.rowKey.value;
const keysMap = getKeysMap(data, rowKey);
expandRows.value = rowKeys.reduce((prev, cur) => {
const info = keysMap[cur];
if (info) {
prev.push(info.row);
}
return prev;
}, []);
};
const isRowExpanded = (row) => {
const rowKey = watcherData.rowKey.value;
if (rowKey) {
const expandMap = getKeysMap(expandRows.value, rowKey);
return !!expandMap[getRowIdentity(row, rowKey)];
}
return expandRows.value.includes(row);
};
return {
updateExpandRows,
toggleRowExpansion,
setExpandRowKeys,
isRowExpanded,
states: {
expandRows,
defaultExpandAll
}
};
}
export { useExpand as default };
//# sourceMappingURL=expand.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"expand.mjs","sources":["../../../../../../../packages/components/table/src/store/expand.ts"],"sourcesContent":["import { getCurrentInstance, ref } from 'vue'\nimport { getKeysMap, getRowIdentity, toggleRowStatus } from '../util'\n\nimport type { Ref } from 'vue'\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nfunction useExpand<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const instance = getCurrentInstance() as Table<T>\n const defaultExpandAll = ref(false)\n const expandRows: Ref<T[]> = ref([])\n const updateExpandRows = () => {\n const data = watcherData.data.value || []\n const rowKey = watcherData.rowKey.value\n if (defaultExpandAll.value) {\n expandRows.value = data.slice()\n } else if (rowKey) {\n // TODO这里的代码可以优化\n const expandRowsMap = getKeysMap(expandRows.value, rowKey)\n expandRows.value = data.reduce((prev: T[], row: T) => {\n const rowId = getRowIdentity(row, rowKey)\n const rowInfo = expandRowsMap[rowId]\n if (rowInfo) {\n prev.push(row)\n }\n return prev\n }, [])\n } else {\n expandRows.value = []\n }\n }\n\n const toggleRowExpansion = (row: T, expanded?: boolean) => {\n const changed = toggleRowStatus(\n expandRows.value,\n row,\n expanded,\n undefined,\n undefined,\n undefined,\n watcherData.rowKey.value\n )\n if (changed) {\n instance.emit('expand-change', row, expandRows.value.slice())\n }\n }\n\n const setExpandRowKeys = (rowKeys: (string | number)[]) => {\n instance.store.assertRowKey()\n // TODO这里的代码可以优化\n const data = watcherData.data.value || []\n const rowKey = watcherData.rowKey.value\n const keysMap = getKeysMap(data, rowKey)\n expandRows.value = rowKeys.reduce((prev: T[], cur) => {\n const info = keysMap[cur]\n if (info) {\n prev.push(info.row)\n }\n return prev\n }, [])\n }\n\n const isRowExpanded = (row: T): boolean => {\n const rowKey = watcherData.rowKey.value\n if (rowKey) {\n const expandMap = getKeysMap(expandRows.value, rowKey)\n return !!expandMap[getRowIdentity(row, rowKey)]\n }\n return expandRows.value.includes(row)\n }\n return {\n updateExpandRows,\n toggleRowExpansion,\n setExpandRowKeys,\n isRowExpanded,\n states: {\n expandRows,\n defaultExpandAll,\n },\n }\n}\n\nexport default useExpand\n"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,519 @@
import type { DefaultRow, Table, TableProps } from '../table/defaults';
export declare function createStore<T extends DefaultRow>(table: Table<T>, props: TableProps<T>): {
mutations: {
setData(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, data: T[]): void;
insertColumn(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, column: import("../table-column/defaults").TableColumnCtx<T>, parent: import("../table-column/defaults").TableColumnCtx<T>, updateColumnOrder: () => void): void;
updateColumnOrder(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, column: import("../table-column/defaults").TableColumnCtx<T>): void;
removeColumn(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, column: import("../table-column/defaults").TableColumnCtx<T>, parent: import("../table-column/defaults").TableColumnCtx<T>, updateColumnOrder: () => void): void;
sort(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, options: import("../table/defaults").Sort): void;
changeSortCondition(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, options: import("../table/defaults").Sort): void;
filterChange(_states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, options: import("../table/defaults").Filter<T>): void;
toggleAllSelection(): void;
rowSelectedChanged(_states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, row: T): void;
setHoverRow(states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, row: T): void;
setCurrentRow(_states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
}, row: T): void;
};
commit: (name: "sort" | "setData" | "insertColumn" | "updateColumnOrder" | "removeColumn" | "changeSortCondition" | "filterChange" | "toggleAllSelection" | "rowSelectedChanged" | "setHoverRow" | "setCurrentRow", ...args: any[]) => void;
updateTableScrollY: () => void;
assertRowKey: () => void;
updateColumns: () => void;
scheduleLayout: (needUpdateColumns?: boolean, immediate?: boolean) => void;
isSelected: (row: T) => boolean;
clearSelection: () => void;
cleanSelection: () => void;
getSelectionRows: () => T[];
toggleRowSelection: (row: T, selected?: boolean, emitChange?: boolean, ignoreSelectable?: boolean) => void;
_toggleAllSelection: () => void;
toggleAllSelection: (() => void) | null;
updateAllSelected: () => void;
updateFilters: (column: import("../table-column/defaults").TableColumnCtx<T>, values: string[]) => Record<string, string[]>;
updateCurrentRow: (_currentRow: T) => void;
updateSort: (column: import("../table-column/defaults").TableColumnCtx<T> | null, prop: string | null, order: import("../table/defaults").TableSortOrder | null) => void;
execFilter: () => void;
execSort: () => void;
execQuery: (ignore?: {
filter: boolean;
} | undefined) => void;
clearFilter: (columnKeys?: string[] | string) => void;
clearSort: () => void;
toggleRowExpansion: (row: T, expanded?: boolean) => void;
setExpandRowKeysAdapter: (val: string[]) => void;
setCurrentRowKey: (key: string) => void;
toggleRowExpansionAdapter: (row: T, expanded?: boolean) => void;
isRowExpanded: (row: T) => boolean;
updateExpandRows: () => void;
updateCurrentRowData: () => void;
loadOrToggle: (row: T) => void;
updateTreeData: (ifChangeExpandRowKeys?: boolean, ifExpandAll?: boolean) => void;
updateKeyChildren: (key: string, data: T[]) => void;
states: {
_currentRowKey: import("vue").Ref<string | null>;
currentRow: import("vue").Ref<T | null>;
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, import("./tree").TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
expandRows: import("vue").Ref<T[]>;
defaultExpandAll: import("vue").Ref<boolean>;
tableSize: import("vue").Ref<any>;
rowKey: import("vue").Ref<string | null>;
data: import("vue").Ref<T[]>;
_data: import("vue").Ref<T[]>;
isComplex: import("vue").Ref<boolean>;
_columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
originColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
columns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
leafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
fixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
rightFixedLeafColumns: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: import("vue").Ref<number>;
fixedLeafColumnsLength: import("vue").Ref<number>;
rightFixedLeafColumnsLength: import("vue").Ref<number>;
isAllSelected: import("vue").Ref<boolean>;
selection: import("vue").Ref<T[]>;
reserveSelection: import("vue").Ref<boolean>;
selectOnIndeterminate: import("vue").Ref<boolean>;
selectable: import("vue").Ref<((row: T, index: number) => boolean) | null>;
filters: import("vue").Ref<import(".").StoreFilter>;
filteredData: import("vue").Ref<T[] | null>;
sortingColumn: import("vue").Ref<import("../table-column/defaults").TableColumnCtx<T> | null>;
sortProp: import("vue").Ref<string | null>;
sortOrder: import("vue").Ref<string | number | null>;
hoverRow: import("vue").Ref<T | null>;
};
ns: {
namespace: import("vue").ComputedRef<string>;
b: (blockSuffix?: string) => string;
e: (element?: string) => string;
m: (modifier?: string) => string;
be: (blockSuffix?: string, element?: string) => string;
em: (element?: string, modifier?: string) => string;
bm: (blockSuffix?: string, modifier?: string) => string;
bem: (blockSuffix?: string, element?: string, modifier?: string) => string;
is: {
(name: string, state: boolean | undefined): string;
(name: string): string;
};
cssVar: (object: Record<string, string>) => Record<string, string>;
cssVarName: (name: string) => string;
cssVarBlock: (object: Record<string, string>) => Record<string, string>;
cssVarBlockName: (name: string) => string;
};
};

View File

@@ -0,0 +1,68 @@
import { watch } from 'vue';
import { debounce } from 'lodash-unified';
import useStore from './index.mjs';
import { isObject } from '@vue/shared';
const InitialStateMap = {
rowKey: "rowKey",
defaultExpandAll: "defaultExpandAll",
selectOnIndeterminate: "selectOnIndeterminate",
indent: "indent",
lazy: "lazy",
data: "data",
["treeProps.hasChildren"]: {
key: "lazyColumnIdentifier",
default: "hasChildren"
},
["treeProps.children"]: {
key: "childrenColumnName",
default: "children"
},
["treeProps.checkStrictly"]: {
key: "checkStrictly",
default: false
}
};
function createStore(table, props) {
if (!table) {
throw new Error("Table is required.");
}
const store = useStore();
store.toggleAllSelection = debounce(store._toggleAllSelection, 10);
Object.keys(InitialStateMap).forEach((key) => {
handleValue(getArrKeysValue(props, key), key, store);
});
proxyTableProps(store, props);
return store;
}
function proxyTableProps(store, props) {
Object.keys(InitialStateMap).forEach((key) => {
watch(() => getArrKeysValue(props, key), (value) => {
handleValue(value, key, store);
});
});
}
function handleValue(value, propsKey, store) {
let newVal = value;
let storeKey = InitialStateMap[propsKey];
if (isObject(storeKey)) {
newVal = newVal || storeKey.default;
storeKey = storeKey.key;
}
store.states[storeKey].value = newVal;
}
function getArrKeysValue(props, key) {
if (key.includes(".")) {
const keyList = key.split(".");
let value = props;
keyList.forEach((k) => {
value = value[k];
});
return value;
} else {
return props[key];
}
}
export { createStore };
//# sourceMappingURL=helper.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"helper.mjs","sources":["../../../../../../../packages/components/table/src/store/helper.ts"],"sourcesContent":["import { watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { isObject } from '@element-plus/utils'\nimport useStore from '.'\n\nimport type { Store } from '.'\nimport type { DefaultRow, Table, TableProps } from '../table/defaults'\n\nconst InitialStateMap = {\n rowKey: 'rowKey',\n defaultExpandAll: 'defaultExpandAll',\n selectOnIndeterminate: 'selectOnIndeterminate',\n indent: 'indent',\n lazy: 'lazy',\n data: 'data',\n ['treeProps.hasChildren']: {\n key: 'lazyColumnIdentifier',\n default: 'hasChildren',\n },\n ['treeProps.children']: {\n key: 'childrenColumnName',\n default: 'children',\n },\n ['treeProps.checkStrictly']: {\n key: 'checkStrictly',\n default: false,\n },\n}\n\nexport function createStore<T extends DefaultRow>(\n table: Table<T>,\n props: TableProps<T>\n) {\n if (!table) {\n throw new Error('Table is required.')\n }\n\n const store = useStore<T>()\n // fix https://github.com/ElemeFE/element/issues/14075\n // related pr https://github.com/ElemeFE/element/pull/14146\n store.toggleAllSelection = debounce(store._toggleAllSelection, 10)\n Object.keys(InitialStateMap).forEach((key) => {\n handleValue(getArrKeysValue(props, key), key, store)\n })\n proxyTableProps(store, props)\n return store\n}\n\nfunction proxyTableProps<T extends DefaultRow>(\n store: Store<T>,\n props: TableProps<T>\n) {\n Object.keys(InitialStateMap).forEach((key) => {\n watch(\n () => getArrKeysValue(props, key),\n (value) => {\n handleValue(value, key, store)\n }\n )\n })\n}\n\nfunction handleValue<T extends DefaultRow>(\n value: string | boolean | Record<string, any>,\n propsKey: string,\n store: Store<T>\n) {\n let newVal = value\n let storeKey = InitialStateMap[propsKey as keyof typeof InitialStateMap]\n if (isObject(storeKey)) {\n newVal = newVal || storeKey.default\n storeKey = storeKey.key\n }\n ;((store.states as any)[storeKey] as any).value = newVal\n}\n\nfunction getArrKeysValue<T extends DefaultRow>(\n props: TableProps<T>,\n key: string\n) {\n if ((key as keyof typeof props).includes('.')) {\n const keyList = (key as keyof typeof props).split('.')\n let value: string | Record<string, any> = props\n keyList.forEach((k) => {\n value = (value as Record<string, any>)[k]\n })\n return value\n } else {\n return (props as any)[key] as boolean | string\n }\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,eAAe,GAAG;AACxB,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,gBAAgB,EAAE,kBAAkB;AACtC,EAAE,qBAAqB,EAAE,uBAAuB;AAChD,EAAE,MAAM,EAAE,QAAQ;AAClB,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,CAAC,uBAAuB,GAAG;AAC7B,IAAI,GAAG,EAAE,sBAAsB;AAC/B,IAAI,OAAO,EAAE,aAAa;AAC1B,GAAG;AACH,EAAE,CAAC,oBAAoB,GAAG;AAC1B,IAAI,GAAG,EAAE,oBAAoB;AAC7B,IAAI,OAAO,EAAE,UAAU;AACvB,GAAG;AACH,EAAE,CAAC,yBAAyB,GAAG;AAC/B,IAAI,GAAG,EAAE,eAAe;AACxB,IAAI,OAAO,EAAE,KAAK;AAClB,GAAG;AACH,CAAC,CAAC;AACK,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1C,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC1C,GAAG;AACH,EAAE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;AAC3B,EAAE,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACrE,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChD,IAAI,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAChC,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE;AACvC,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChD,IAAI,KAAK,CAAC,MAAM,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK;AACxD,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC7C,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC3C,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1B,IAAI,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC;AACxC,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC5B,GAAG;AAEH,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;AACxC,CAAC;AACD,SAAS,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE;AACrC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzB,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC;AACtB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,MAAM;AACT,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG;AACH;;;;"}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,193 @@
import { getCurrentInstance, unref, nextTick } from 'vue';
import { isNull } from 'lodash-unified';
import useWatcher from './watcher.mjs';
import { useNamespace } from '../../../../hooks/use-namespace/index.mjs';
function replaceColumn(array, column) {
return array.map((item) => {
var _a;
if (item.id === column.id) {
return column;
} else if ((_a = item.children) == null ? void 0 : _a.length) {
item.children = replaceColumn(item.children, column);
}
return item;
});
}
function sortColumn(array) {
array.forEach((item) => {
var _a, _b;
item.no = (_a = item.getColumnIndex) == null ? void 0 : _a.call(item);
if ((_b = item.children) == null ? void 0 : _b.length) {
sortColumn(item.children);
}
});
array.sort((cur, pre) => cur.no - pre.no);
}
function useStore() {
const instance = getCurrentInstance();
const watcher = useWatcher();
const ns = useNamespace("table");
const mutations = {
setData(states, data) {
const dataInstanceChanged = unref(states._data) !== data;
states.data.value = data;
states._data.value = data;
instance.store.execQuery();
instance.store.updateCurrentRowData();
instance.store.updateExpandRows();
instance.store.updateTreeData(instance.store.states.defaultExpandAll.value);
if (unref(states.reserveSelection)) {
instance.store.assertRowKey();
} else {
if (dataInstanceChanged) {
instance.store.clearSelection();
} else {
instance.store.cleanSelection();
}
}
instance.store.updateAllSelected();
if (instance.$ready) {
instance.store.scheduleLayout();
}
},
insertColumn(states, column, parent, updateColumnOrder) {
var _a;
const array = unref(states._columns);
let newColumns = [];
if (!parent) {
array.push(column);
newColumns = array;
} else {
if (parent && !parent.children) {
parent.children = [];
}
(_a = parent.children) == null ? void 0 : _a.push(column);
newColumns = replaceColumn(array, parent);
}
sortColumn(newColumns);
states._columns.value = newColumns;
states.updateOrderFns.push(updateColumnOrder);
if (column.type === "selection") {
states.selectable.value = column.selectable;
states.reserveSelection.value = column.reserveSelection;
}
if (instance.$ready) {
instance.store.updateColumns();
instance.store.scheduleLayout();
}
},
updateColumnOrder(states, column) {
var _a;
const newColumnIndex = (_a = column.getColumnIndex) == null ? void 0 : _a.call(column);
if (newColumnIndex === column.no)
return;
sortColumn(states._columns.value);
if (instance.$ready) {
instance.store.updateColumns();
}
},
removeColumn(states, column, parent, updateColumnOrder) {
var _a;
const array = unref(states._columns) || [];
if (parent) {
(_a = parent.children) == null ? void 0 : _a.splice(parent.children.findIndex((item) => item.id === column.id), 1);
nextTick(() => {
var _a2;
if (((_a2 = parent.children) == null ? void 0 : _a2.length) === 0) {
delete parent.children;
}
});
states._columns.value = replaceColumn(array, parent);
} else {
const index = array.indexOf(column);
if (index > -1) {
array.splice(index, 1);
states._columns.value = array;
}
}
const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder);
updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1);
if (instance.$ready) {
instance.store.updateColumns();
instance.store.scheduleLayout();
}
},
sort(states, options) {
const { prop, order, init } = options;
if (prop) {
const column = unref(states.columns).find((column2) => column2.property === prop);
if (column) {
column.order = order;
instance.store.updateSort(column, prop, order);
instance.store.commit("changeSortCondition", { init });
}
}
},
changeSortCondition(states, options) {
const { sortingColumn, sortProp, sortOrder } = states;
const columnValue = unref(sortingColumn), propValue = unref(sortProp), orderValue = unref(sortOrder);
if (isNull(orderValue)) {
states.sortingColumn.value = null;
states.sortProp.value = null;
}
const ignore = { filter: true };
instance.store.execQuery(ignore);
if (!options || !(options.silent || options.init)) {
instance.emit("sort-change", {
column: columnValue,
prop: propValue,
order: orderValue
});
}
instance.store.updateTableScrollY();
},
filterChange(_states, options) {
const { column, values, silent } = options;
const newFilters = instance.store.updateFilters(column, values);
instance.store.execQuery();
if (!silent) {
instance.emit("filter-change", newFilters);
}
instance.store.updateTableScrollY();
},
toggleAllSelection() {
var _a, _b;
(_b = (_a = instance.store).toggleAllSelection) == null ? void 0 : _b.call(_a);
},
rowSelectedChanged(_states, row) {
instance.store.toggleRowSelection(row);
instance.store.updateAllSelected();
},
setHoverRow(states, row) {
states.hoverRow.value = row;
},
setCurrentRow(_states, row) {
instance.store.updateCurrentRow(row);
}
};
const commit = function(name, ...args) {
const mutations2 = instance.store.mutations;
if (mutations2[name]) {
mutations2[name].apply(instance, [
instance.store.states,
...args
]);
} else {
throw new Error(`Action not found: ${name}`);
}
};
const updateTableScrollY = function() {
nextTick(() => instance.layout.updateScrollY.apply(instance.layout));
};
return {
ns,
...watcher,
mutations,
commit,
updateTableScrollY
};
}
export { useStore as default };
//# sourceMappingURL=index.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,27 @@
import type { WatcherPropsData } from '.';
import type { DefaultRow, TreeNode } from '../table/defaults';
export interface TreeData extends TreeNode {
children?: string[];
lazy?: boolean;
loaded?: boolean;
}
declare function useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>): {
loadData: (row: T, key: string, treeNode: TreeNode) => void;
loadOrToggle: (row: T) => void;
toggleTreeExpansion: (row: T, expanded?: boolean) => void;
updateTreeExpandKeys: (value: string[]) => void;
updateTreeData: (ifChangeExpandRowKeys?: boolean, ifExpandAll?: boolean) => void;
updateKeyChildren: (key: string, data: T[]) => void;
normalize: (data: T[]) => Record<string, TreeData>;
states: {
expandRowKeys: import("vue").Ref<string[]>;
treeData: import("vue").Ref<Record<string, TreeData>>;
indent: import("vue").Ref<number>;
lazy: import("vue").Ref<boolean>;
lazyTreeNodeMap: import("vue").Ref<Record<string, T[]>>;
lazyColumnIdentifier: import("vue").Ref<string>;
childrenColumnName: import("vue").Ref<string>;
checkStrictly: import("vue").Ref<boolean>;
};
};
export default useTree;

View File

@@ -0,0 +1,218 @@
import { ref, getCurrentInstance, computed, watch, unref } from 'vue';
import { getRowIdentity, walkTreeNode } from '../util.mjs';
import { isArray } from '@vue/shared';
import { isUndefined } from '../../../../utils/types.mjs';
function useTree(watcherData) {
const expandRowKeys = ref([]);
const treeData = ref({});
const indent = ref(16);
const lazy = ref(false);
const lazyTreeNodeMap = ref({});
const lazyColumnIdentifier = ref("hasChildren");
const childrenColumnName = ref("children");
const checkStrictly = ref(false);
const instance = getCurrentInstance();
const normalizedData = computed(() => {
if (!watcherData.rowKey.value)
return {};
const data = watcherData.data.value || [];
return normalize(data);
});
const normalizedLazyNode = computed(() => {
const rowKey = watcherData.rowKey.value;
const keys = Object.keys(lazyTreeNodeMap.value);
const res = {};
if (!keys.length)
return res;
keys.forEach((key) => {
if (lazyTreeNodeMap.value[key].length) {
const item = { children: [] };
lazyTreeNodeMap.value[key].forEach((row) => {
const currentRowKey = getRowIdentity(row, rowKey);
item.children.push(currentRowKey);
if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {
res[currentRowKey] = { children: [] };
}
});
res[key] = item;
}
});
return res;
});
const normalize = (data) => {
const rowKey = watcherData.rowKey.value;
const res = {};
walkTreeNode(data, (parent, children, level) => {
const parentId = getRowIdentity(parent, rowKey);
if (isArray(children)) {
res[parentId] = {
children: children.map((row) => getRowIdentity(row, rowKey)),
level
};
} else if (lazy.value) {
res[parentId] = {
children: [],
lazy: true,
level
};
}
}, childrenColumnName.value, lazyColumnIdentifier.value, lazy.value);
return res;
};
const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll) => {
var _a, _b;
ifExpandAll || (ifExpandAll = (_a = instance.store) == null ? void 0 : _a.states.defaultExpandAll.value);
const nested = normalizedData.value;
const normalizedLazyNode_ = normalizedLazyNode.value;
const keys = Object.keys(nested);
const newTreeData = {};
if (keys.length) {
const oldTreeData = unref(treeData);
const rootLazyRowKeys = [];
const getExpanded = (oldValue, key) => {
if (ifChangeExpandRowKeys) {
if (expandRowKeys.value) {
return ifExpandAll || expandRowKeys.value.includes(key);
} else {
return !!(ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded));
}
} else {
const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key);
return !!((oldValue == null ? void 0 : oldValue.expanded) || included);
}
};
keys.forEach((key) => {
const oldValue = oldTreeData[key];
const newValue = { ...nested[key] };
newValue.expanded = getExpanded(oldValue, key);
if (newValue.lazy) {
const { loaded = false, loading = false } = oldValue || {};
newValue.loaded = !!loaded;
newValue.loading = !!loading;
rootLazyRowKeys.push(key);
}
newTreeData[key] = newValue;
});
const lazyKeys = Object.keys(normalizedLazyNode_);
if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {
lazyKeys.forEach((key) => {
var _a2;
const oldValue = oldTreeData[key];
const lazyNodeChildren = normalizedLazyNode_[key].children;
if (rootLazyRowKeys.includes(key)) {
if (((_a2 = newTreeData[key].children) == null ? void 0 : _a2.length) !== 0) {
throw new Error("[ElTable]children must be an empty array.");
}
newTreeData[key].children = lazyNodeChildren;
} else {
const { loaded = false, loading = false } = oldValue || {};
newTreeData[key] = {
lazy: true,
loaded: !!loaded,
loading: !!loading,
expanded: getExpanded(oldValue, key),
children: lazyNodeChildren,
level: void 0
};
}
});
}
}
treeData.value = newTreeData;
(_b = instance.store) == null ? void 0 : _b.updateTableScrollY();
};
watch(() => expandRowKeys.value, () => {
updateTreeData(true);
});
watch(() => normalizedData.value, () => {
updateTreeData();
});
watch(() => normalizedLazyNode.value, () => {
updateTreeData();
});
const updateTreeExpandKeys = (value) => {
expandRowKeys.value = value;
updateTreeData();
};
const isUseLazy = (data) => {
return lazy.value && data && "loaded" in data && !data.loaded;
};
const toggleTreeExpansion = (row, expanded) => {
instance.store.assertRowKey();
const rowKey = watcherData.rowKey.value;
const id = getRowIdentity(row, rowKey);
const data = id && treeData.value[id];
if (id && data && "expanded" in data) {
const oldExpanded = data.expanded;
expanded = isUndefined(expanded) ? !data.expanded : expanded;
treeData.value[id].expanded = expanded;
if (oldExpanded !== expanded) {
instance.emit("expand-change", row, expanded);
}
isUseLazy(data) && loadData(row, id, data);
instance.store.updateTableScrollY();
}
};
const loadOrToggle = (row) => {
instance.store.assertRowKey();
const rowKey = watcherData.rowKey.value;
const id = getRowIdentity(row, rowKey);
const data = treeData.value[id];
if (isUseLazy(data)) {
loadData(row, id, data);
} else {
toggleTreeExpansion(row, void 0);
}
};
const loadData = (row, key, treeNode) => {
const { load } = instance.props;
if (load && !treeData.value[key].loaded) {
treeData.value[key].loading = true;
load(row, treeNode, (data) => {
if (!isArray(data)) {
throw new TypeError("[ElTable] data must be an array");
}
treeData.value[key].loading = false;
treeData.value[key].loaded = true;
treeData.value[key].expanded = true;
if (data.length) {
lazyTreeNodeMap.value[key] = data;
}
instance.emit("expand-change", row, true);
});
}
};
const updateKeyChildren = (key, data) => {
const { lazy: lazy2, rowKey } = instance.props;
if (!lazy2)
return;
if (!rowKey)
throw new Error("[Table] rowKey is required in updateKeyChild");
if (lazyTreeNodeMap.value[key]) {
lazyTreeNodeMap.value[key] = data;
}
};
return {
loadData,
loadOrToggle,
toggleTreeExpansion,
updateTreeExpandKeys,
updateTreeData,
updateKeyChildren,
normalize,
states: {
expandRowKeys,
treeData,
indent,
lazy,
lazyTreeNodeMap,
lazyColumnIdentifier,
childrenColumnName,
checkStrictly
}
};
}
export { useTree as default };
//# sourceMappingURL=tree.mjs.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,80 @@
import type { Ref } from 'vue';
import type { TableColumnCtx } from '../table-column/defaults';
import type { DefaultRow, TableSortOrder } from '../table/defaults';
import type { StoreFilter } from '.';
declare function useWatcher<T extends DefaultRow>(): {
assertRowKey: () => void;
updateColumns: () => void;
scheduleLayout: (needUpdateColumns?: boolean, immediate?: boolean) => void;
isSelected: (row: T) => boolean;
clearSelection: () => void;
cleanSelection: () => void;
getSelectionRows: () => T[];
toggleRowSelection: (row: T, selected?: boolean, emitChange?: boolean, ignoreSelectable?: boolean) => void;
_toggleAllSelection: () => void;
toggleAllSelection: (() => void) | null;
updateAllSelected: () => void;
updateFilters: (column: TableColumnCtx<T>, values: string[]) => Record<string, string[]>;
updateCurrentRow: (_currentRow: T) => void;
updateSort: (column: TableColumnCtx<T> | null, prop: string | null, order: TableSortOrder | null) => void;
execFilter: () => void;
execSort: () => void;
execQuery: (ignore?: {
filter: boolean;
} | undefined) => void;
clearFilter: (columnKeys?: string[] | string) => void;
clearSort: () => void;
toggleRowExpansion: (row: T, expanded?: boolean) => void;
setExpandRowKeysAdapter: (val: string[]) => void;
setCurrentRowKey: (key: string) => void;
toggleRowExpansionAdapter: (row: T, expanded?: boolean) => void;
isRowExpanded: (row: T) => boolean;
updateExpandRows: () => void;
updateCurrentRowData: () => void;
loadOrToggle: (row: T) => void;
updateTreeData: (ifChangeExpandRowKeys?: boolean, ifExpandAll?: boolean) => void;
updateKeyChildren: (key: string, data: T[]) => void;
states: {
_currentRowKey: Ref<string | null>;
currentRow: Ref<T | null>;
expandRowKeys: Ref<string[]>;
treeData: Ref<Record<string, import("./tree").TreeData>>;
indent: Ref<number>;
lazy: Ref<boolean>;
lazyTreeNodeMap: Ref<Record<string, T[]>>;
lazyColumnIdentifier: Ref<string>;
childrenColumnName: Ref<string>;
checkStrictly: Ref<boolean>;
expandRows: Ref<T[]>;
defaultExpandAll: Ref<boolean>;
tableSize: Ref<any>;
rowKey: Ref<string | null>;
data: Ref<T[]>;
_data: Ref<T[]>;
isComplex: Ref<boolean>;
_columns: Ref<TableColumnCtx<T>[]>;
originColumns: Ref<TableColumnCtx<T>[]>;
columns: Ref<TableColumnCtx<T>[]>;
fixedColumns: Ref<TableColumnCtx<T>[]>;
rightFixedColumns: Ref<TableColumnCtx<T>[]>;
leafColumns: Ref<TableColumnCtx<T>[]>;
fixedLeafColumns: Ref<TableColumnCtx<T>[]>;
rightFixedLeafColumns: Ref<TableColumnCtx<T>[]>;
updateOrderFns: (() => void)[];
leafColumnsLength: Ref<number>;
fixedLeafColumnsLength: Ref<number>;
rightFixedLeafColumnsLength: Ref<number>;
isAllSelected: Ref<boolean>;
selection: Ref<T[]>;
reserveSelection: Ref<boolean>;
selectOnIndeterminate: Ref<boolean>;
selectable: Ref<((row: T, index: number) => boolean) | null>;
filters: Ref<StoreFilter>;
filteredData: Ref<T[] | null>;
sortingColumn: Ref<TableColumnCtx<T> | null>;
sortProp: Ref<string | null>;
sortOrder: Ref<string | number | null>;
hoverRow: Ref<T | null>;
};
};
export default useWatcher;

View File

@@ -0,0 +1,449 @@
import { getCurrentInstance, toRefs, ref, computed, watch, unref } from 'vue';
import { getKeysMap, getRowIdentity, toggleRowStatus, getColumnById, getColumnByKey, orderBy } from '../util.mjs';
import useExpand from './expand.mjs';
import useCurrent from './current.mjs';
import useTree from './tree.mjs';
import { hasOwn, isString, isArray } from '@vue/shared';
import { castArray } from 'lodash-unified';
const sortData = (data, states) => {
const sortingColumn = states.sortingColumn;
if (!sortingColumn || isString(sortingColumn.sortable)) {
return data;
}
return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);
};
const doFlattenColumns = (columns) => {
const result = [];
columns.forEach((column) => {
if (column.children && column.children.length > 0) {
result.push.apply(result, doFlattenColumns(column.children));
} else {
result.push(column);
}
});
return result;
};
function useWatcher() {
var _a;
const instance = getCurrentInstance();
const { size: tableSize } = toRefs((_a = instance.proxy) == null ? void 0 : _a.$props);
const rowKey = ref(null);
const data = ref([]);
const _data = ref([]);
const isComplex = ref(false);
const _columns = ref([]);
const originColumns = ref([]);
const columns = ref([]);
const fixedColumns = ref([]);
const rightFixedColumns = ref([]);
const leafColumns = ref([]);
const fixedLeafColumns = ref([]);
const rightFixedLeafColumns = ref([]);
const updateOrderFns = [];
const leafColumnsLength = ref(0);
const fixedLeafColumnsLength = ref(0);
const rightFixedLeafColumnsLength = ref(0);
const isAllSelected = ref(false);
const selection = ref([]);
const reserveSelection = ref(false);
const selectOnIndeterminate = ref(false);
const selectable = ref(null);
const filters = ref({});
const filteredData = ref(null);
const sortingColumn = ref(null);
const sortProp = ref(null);
const sortOrder = ref(null);
const hoverRow = ref(null);
const selectedMap = computed(() => {
return rowKey.value ? getKeysMap(selection.value, rowKey.value) : void 0;
});
watch(data, () => {
var _a2;
if (instance.state) {
scheduleLayout(false);
const needUpdateFixed = instance.props.tableLayout === "auto";
if (needUpdateFixed) {
(_a2 = instance.refs.tableHeaderRef) == null ? void 0 : _a2.updateFixedColumnStyle();
}
}
}, {
deep: true
});
const assertRowKey = () => {
if (!rowKey.value)
throw new Error("[ElTable] prop row-key is required");
};
const updateChildFixed = (column) => {
var _a2;
(_a2 = column.children) == null ? void 0 : _a2.forEach((childColumn) => {
childColumn.fixed = column.fixed;
updateChildFixed(childColumn);
});
};
const updateColumns = () => {
_columns.value.forEach((column) => {
updateChildFixed(column);
});
fixedColumns.value = _columns.value.filter((column) => [true, "left"].includes(column.fixed));
const selectColumn = _columns.value.find((column) => column.type === "selection");
let selectColFixLeft;
if (selectColumn && selectColumn.fixed !== "right" && !fixedColumns.value.includes(selectColumn)) {
const selectColumnIndex = _columns.value.indexOf(selectColumn);
if (selectColumnIndex === 0 && fixedColumns.value.length) {
fixedColumns.value.unshift(selectColumn);
selectColFixLeft = true;
}
}
rightFixedColumns.value = _columns.value.filter((column) => column.fixed === "right");
const notFixedColumns = _columns.value.filter((column) => (selectColFixLeft ? column.type !== "selection" : true) && !column.fixed);
originColumns.value = Array.from(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value);
const leafColumns2 = doFlattenColumns(notFixedColumns);
const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value);
const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value);
leafColumnsLength.value = leafColumns2.length;
fixedLeafColumnsLength.value = fixedLeafColumns2.length;
rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length;
columns.value = Array.from(fixedLeafColumns2).concat(leafColumns2).concat(rightFixedLeafColumns2);
isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0;
};
const scheduleLayout = (needUpdateColumns, immediate = false) => {
if (needUpdateColumns) {
updateColumns();
}
if (immediate) {
instance.state.doLayout();
} else {
instance.state.debouncedUpdateLayout();
}
};
const isSelected = (row) => {
if (selectedMap.value) {
return !!selectedMap.value[getRowIdentity(row, rowKey.value)];
} else {
return selection.value.includes(row);
}
};
const clearSelection = () => {
isAllSelected.value = false;
const oldSelection = selection.value;
selection.value = [];
if (oldSelection.length) {
instance.emit("selection-change", []);
}
};
const cleanSelection = () => {
var _a2, _b;
let deleted;
if (rowKey.value) {
deleted = [];
const childrenKey = (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.childrenColumnName.value;
const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey);
for (const key in selectedMap.value) {
if (hasOwn(selectedMap.value, key) && !dataMap[key]) {
deleted.push(selectedMap.value[key].row);
}
}
} else {
deleted = selection.value.filter((item) => !data.value.includes(item));
}
if (deleted.length) {
const newSelection = selection.value.filter((item) => !deleted.includes(item));
selection.value = newSelection;
instance.emit("selection-change", newSelection.slice());
}
};
const getSelectionRows = () => {
return (selection.value || []).slice();
};
const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => {
var _a2, _b, _c, _d;
const treeProps = {
children: (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.childrenColumnName.value,
checkStrictly: (_d = (_c = instance == null ? void 0 : instance.store) == null ? void 0 : _c.states) == null ? void 0 : _d.checkStrictly.value
};
const changed = toggleRowStatus(selection.value, row, selected, treeProps, ignoreSelectable ? void 0 : selectable.value, data.value.indexOf(row), rowKey.value);
if (changed) {
const newSelection = (selection.value || []).slice();
if (emitChange) {
instance.emit("select", newSelection, row);
}
instance.emit("selection-change", newSelection);
}
};
const _toggleAllSelection = () => {
var _a2, _b;
const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length);
isAllSelected.value = value;
let selectionChanged = false;
let childrenCount = 0;
const rowKey2 = (_b = (_a2 = instance == null ? void 0 : instance.store) == null ? void 0 : _a2.states) == null ? void 0 : _b.rowKey.value;
const { childrenColumnName } = instance.store.states;
const treeProps = {
children: childrenColumnName.value,
checkStrictly: false
};
data.value.forEach((row, index) => {
const rowIndex = index + childrenCount;
if (toggleRowStatus(selection.value, row, value, treeProps, selectable.value, rowIndex, rowKey2)) {
selectionChanged = true;
}
childrenCount += getChildrenCount(getRowIdentity(row, rowKey2));
});
if (selectionChanged) {
instance.emit("selection-change", selection.value ? selection.value.slice() : []);
}
instance.emit("select-all", (selection.value || []).slice());
};
const updateAllSelected = () => {
var _a2;
if (((_a2 = data.value) == null ? void 0 : _a2.length) === 0) {
isAllSelected.value = false;
return;
}
const { childrenColumnName } = instance.store.states;
let rowIndex = 0;
let selectedCount = 0;
const checkSelectedStatus = (data2) => {
var _a3;
for (const row of data2) {
const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex);
if (!isSelected(row)) {
if (!selectable.value || isRowSelectable) {
return false;
}
} else {
selectedCount++;
}
rowIndex++;
if (((_a3 = row[childrenColumnName.value]) == null ? void 0 : _a3.length) && !checkSelectedStatus(row[childrenColumnName.value])) {
return false;
}
}
return true;
};
const isAllSelected_ = checkSelectedStatus(data.value || []);
isAllSelected.value = selectedCount === 0 ? false : isAllSelected_;
};
const getChildrenCount = (rowKey2) => {
var _a2;
if (!instance || !instance.store)
return 0;
const { treeData } = instance.store.states;
let count = 0;
const children = (_a2 = treeData.value[rowKey2]) == null ? void 0 : _a2.children;
if (children) {
count += children.length;
children.forEach((childKey) => {
count += getChildrenCount(childKey);
});
}
return count;
};
const updateFilters = (column, values) => {
const filters_ = {};
castArray(column).forEach((col) => {
filters.value[col.id] = values;
filters_[col.columnKey || col.id] = values;
});
return filters_;
};
const updateSort = (column, prop, order) => {
if (sortingColumn.value && sortingColumn.value !== column) {
sortingColumn.value.order = null;
}
sortingColumn.value = column;
sortProp.value = prop;
sortOrder.value = order;
};
const execFilter = () => {
let sourceData = unref(_data);
Object.keys(filters.value).forEach((columnId) => {
const values = filters.value[columnId];
if (!values || values.length === 0)
return;
const column = getColumnById({
columns: columns.value
}, columnId);
if (column && column.filterMethod) {
sourceData = sourceData.filter((row) => {
return values.some((value) => column.filterMethod.call(null, value, row, column));
});
}
});
filteredData.value = sourceData;
};
const execSort = () => {
var _a2;
data.value = sortData((_a2 = filteredData.value) != null ? _a2 : [], {
sortingColumn: sortingColumn.value,
sortProp: sortProp.value,
sortOrder: sortOrder.value
});
};
const execQuery = (ignore = void 0) => {
if (!(ignore == null ? void 0 : ignore.filter)) {
execFilter();
}
execSort();
};
const clearFilter = (columnKeys) => {
const { tableHeaderRef } = instance.refs;
if (!tableHeaderRef)
return;
const panels = Object.assign({}, tableHeaderRef.filterPanels);
const keys = Object.keys(panels);
if (!keys.length)
return;
if (isString(columnKeys)) {
columnKeys = [columnKeys];
}
if (isArray(columnKeys)) {
const columns_ = columnKeys.map((key) => getColumnByKey({
columns: columns.value
}, key));
keys.forEach((key) => {
const column = columns_.find((col) => col.id === key);
if (column) {
column.filteredValue = [];
}
});
instance.store.commit("filterChange", {
column: columns_,
values: [],
silent: true,
multi: true
});
} else {
keys.forEach((key) => {
const column = columns.value.find((col) => col.id === key);
if (column) {
column.filteredValue = [];
}
});
filters.value = {};
instance.store.commit("filterChange", {
column: {},
values: [],
silent: true
});
}
};
const clearSort = () => {
if (!sortingColumn.value)
return;
updateSort(null, null, null);
instance.store.commit("changeSortCondition", {
silent: true
});
};
const {
setExpandRowKeys,
toggleRowExpansion,
updateExpandRows,
states: expandStates,
isRowExpanded
} = useExpand({
data,
rowKey
});
const {
updateTreeExpandKeys,
toggleTreeExpansion,
updateTreeData,
updateKeyChildren,
loadOrToggle,
states: treeStates
} = useTree({
data,
rowKey
});
const {
updateCurrentRowData,
updateCurrentRow,
setCurrentRowKey,
states: currentData
} = useCurrent({
data,
rowKey
});
const setExpandRowKeysAdapter = (val) => {
setExpandRowKeys(val);
updateTreeExpandKeys(val);
};
const toggleRowExpansionAdapter = (row, expanded) => {
const hasExpandColumn = columns.value.some(({ type }) => type === "expand");
if (hasExpandColumn) {
toggleRowExpansion(row, expanded);
} else {
toggleTreeExpansion(row, expanded);
}
};
return {
assertRowKey,
updateColumns,
scheduleLayout,
isSelected,
clearSelection,
cleanSelection,
getSelectionRows,
toggleRowSelection,
_toggleAllSelection,
toggleAllSelection: null,
updateAllSelected,
updateFilters,
updateCurrentRow,
updateSort,
execFilter,
execSort,
execQuery,
clearFilter,
clearSort,
toggleRowExpansion,
setExpandRowKeysAdapter,
setCurrentRowKey,
toggleRowExpansionAdapter,
isRowExpanded,
updateExpandRows,
updateCurrentRowData,
loadOrToggle,
updateTreeData,
updateKeyChildren,
states: {
tableSize,
rowKey,
data,
_data,
isComplex,
_columns,
originColumns,
columns,
fixedColumns,
rightFixedColumns,
leafColumns,
fixedLeafColumns,
rightFixedLeafColumns,
updateOrderFns,
leafColumnsLength,
fixedLeafColumnsLength,
rightFixedLeafColumnsLength,
isAllSelected,
selection,
reserveSelection,
selectOnIndeterminate,
selectable,
filters,
filteredData,
sortingColumn,
sortProp,
sortOrder,
hoverRow,
...expandStates,
...treeStates,
...currentData
}
};
}
export { useWatcher as default };
//# sourceMappingURL=watcher.mjs.map

File diff suppressed because one or more lines are too long