tav-ui
Version:
112 lines (107 loc) • 3.63 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var lodashEs = require('lodash-es');
var treeHelper = require('../../../../utils/helper/treeHelper2.js');
var is = require('../../../../utils/is2.js');
var _const = require('../const2.js');
function useRowSelection(propsRef, tableData, emit) {
const selectedRowKeysRef = vue.ref([]);
const selectedRowRef = vue.ref([]);
const changing = vue.ref(false);
const tempSelectedRowKeysRef = vue.ref([]);
const getRowSelectionRef = vue.computed(() => {
const { rowSelection } = vue.unref(propsRef);
if (!rowSelection) {
return null;
}
return {
...changing.value ? { selectedRowKeys: vue.unref(tempSelectedRowKeysRef) } : {},
hideSelectAll: false,
onChange: (selectedRowKeys) => {
setSelectedRowKeys(selectedRowKeys, false);
},
...lodashEs.omit([rowSelection, "onChange"])
};
});
vue.watch(() => vue.unref(propsRef).rowSelection?.selectedRowKeys, (v) => {
setSelectedRowKeys(v);
});
vue.watch(() => vue.unref(selectedRowKeysRef), () => {
vue.nextTick(() => {
const { rowSelection } = vue.unref(propsRef);
if (rowSelection) {
const { onChange } = rowSelection;
if (onChange && is.isFunction(onChange))
onChange(getSelectRowKeys(), getSelectRows());
}
emit("selection-change", {
keys: getSelectRowKeys(),
rows: getSelectRows()
});
});
}, { deep: true });
const getAutoCreateKey = vue.computed(() => {
return vue.unref(propsRef).autoCreateKey && !vue.unref(propsRef).rowKey;
});
const getRowKey = vue.computed(() => {
const { rowKey } = vue.unref(propsRef);
return vue.unref(getAutoCreateKey) ? _const.ROW_KEY : rowKey;
});
function setTempSelectedRowKeysRef(keys) {
tempSelectedRowKeysRef.value = keys;
changing.value = true;
vue.nextTick(() => {
changing.value = false;
});
}
function setSelectedRowKeys(rowKeys, syncDom = true) {
selectedRowKeysRef.value = rowKeys;
const allSelectedRows = treeHelper.findNodeAll(vue.toRaw(vue.unref(tableData)).concat(vue.toRaw(vue.unref(selectedRowRef))), (item) => rowKeys.includes(item[vue.unref(getRowKey)]), {
children: propsRef.value.childrenColumnName ?? "children"
});
const trueSelectedRows = [];
rowKeys.forEach((key) => {
const found = allSelectedRows.find((item) => item[vue.unref(getRowKey)] === key);
found && trueSelectedRows.push(found);
});
selectedRowRef.value = trueSelectedRows;
syncDom && setTempSelectedRowKeysRef(rowKeys);
}
function setSelectedRows(rows) {
selectedRowRef.value = rows;
}
function clearSelectedRowKeys() {
selectedRowRef.value = [];
selectedRowKeysRef.value = [];
setTempSelectedRowKeysRef([]);
}
function deleteSelectRowByKey(key) {
const selectedRowKeys = vue.unref(selectedRowKeysRef);
const index = selectedRowKeys.findIndex((item) => item === key);
if (index !== -1) {
vue.unref(selectedRowKeysRef).splice(index, 1);
}
}
function getSelectRowKeys() {
return vue.unref(selectedRowKeysRef);
}
function getSelectRows() {
return vue.unref(selectedRowRef);
}
function getRowSelection() {
return vue.unref(getRowSelectionRef);
}
return {
getRowSelection,
getRowSelectionRef,
getSelectRows,
getSelectRowKeys,
setSelectedRowKeys,
clearSelectedRowKeys,
deleteSelectRowByKey,
setSelectedRows
};
}
exports.useRowSelection = useRowSelection;
//# sourceMappingURL=useRowSelection2.js.map