UNPKG

tav-ui

Version:
112 lines (107 loc) 3.63 kB
'use strict'; 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