UNPKG

tdesign-vue

Version:
151 lines (147 loc) 6.92 kB
/** * tdesign v1.14.1 * (c) 2025 tdesign * @license MIT */ import _defineProperty from '@babel/runtime/helpers/defineProperty'; import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import { toRefs, ref, watch, nextTick } from '@vue/composition-api'; import useDefaultValue from '../../hooks/useDefaultValue.js'; import { getUniqueRowValue, diffExpandedTreeNode } from '../../_common/js/table/tree-store.js'; import '@babel/runtime/helpers/classCallCheck'; import '@babel/runtime/helpers/createClass'; import 'lodash-es'; import '../../_common/js/table/utils.js'; import '../../_common/js/log/log.js'; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useTreeDataExpand(props, context, params) { var store = params.store, dataSource = params.dataSource, rowDataKeys = params.rowDataKeys; var _toRefs = toRefs(props), data = _toRefs.data, expandedTreeNodes = _toRefs.expandedTreeNodes, tree = _toRefs.tree; var isDefaultExpandAllExecute = ref(false); var isDefaultExpandedTreeNodesExecute = ref(false); var _useDefaultValue = useDefaultValue(expandedTreeNodes, props.defaultExpandedTreeNodes, props.onExpandedTreeNodesChange, "expandedTreeNodes", "expanded-tree-nodes-change"), _useDefaultValue2 = _slicedToArray(_useDefaultValue, 2), tExpandedTreeNode = _useDefaultValue2[0], setTExpandedTreeNode = _useDefaultValue2[1]; var changedExpandTreeNode = ref({ type: "props-change" }); function expandAll() { var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "expand-all"; var list = arguments.length > 1 ? arguments[1] : undefined; var newData = list || data.value; dataSource.value = store.value.expandAll(newData, rowDataKeys.value); var expandedNode = dataSource.value.map(function (t) { return getUniqueRowValue(t, rowDataKeys.value.rowKey); }); setTExpandedTreeNode(expandedNode, { row: void 0, rowState: void 0, rowIndex: void 0, type: "expand", trigger: type }); changedExpandTreeNode.value.type = "expand-all"; } function foldAll() { dataSource.value = _toConsumableArray(store.value.foldAll(dataSource.value, rowDataKeys.value)); setTExpandedTreeNode([], { row: void 0, rowState: void 0, rowIndex: void 0, type: "fold", trigger: "fold-all" }); } function onExpandFoldIconClick(p, trigger) { var _props$onTreeExpandCh; var row = p.row, rowIndex = p.rowIndex; changedExpandTreeNode.value = _objectSpread({ type: "user-reaction-change" }, p); var rowValue = getUniqueRowValue(row, rowDataKeys.value.rowKey); var rowState = store.value.treeDataMap.get(rowValue); var expandedNodes = _toConsumableArray(tExpandedTreeNode.value); if (rowState.expanded) { var expandedChildrenKeys = store.value.getExpandedChildrenKeys([row], rowDataKeys.value); for (var i = 0, len = expandedNodes.length; i < len; i++) { var nodeValue = expandedNodes[i]; if (expandedChildrenKeys.includes(nodeValue)) { expandedNodes[i] = void 0; } } expandedNodes = expandedNodes.filter(Boolean); } else { expandedNodes.push(rowValue); } var params2 = { row: row, rowIndex: rowIndex, rowState: rowState, trigger: trigger }; setTExpandedTreeNode(expandedNodes, _objectSpread(_objectSpread({}, params2), {}, { type: rowState.expanded ? "fold" : "expand" })); (_props$onTreeExpandCh = props.onTreeExpandChange) === null || _props$onTreeExpandCh === void 0 || _props$onTreeExpandCh.call(props, params2); context.emit("tree-expand-change", params2); } function updateExpandState(data2, tExpandedTreeNode2) { var oldExpandedTreeNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; var _diffExpandedTreeNode = diffExpandedTreeNode(tExpandedTreeNode2, oldExpandedTreeNode), addedList = _diffExpandedTreeNode.addedList, removedList = _diffExpandedTreeNode.removedList; store.value.expandTreeNode(addedList, data2, rowDataKeys.value); store.value.foldTreeNode(removedList, data2, rowDataKeys.value); return data2; } watch([tExpandedTreeNode, data], function (_ref, _ref2) { var _ref3 = _slicedToArray(_ref, 1), tExpandedTreeNode2 = _ref3[0]; var _ref4 = _slicedToArray(_ref2, 1), oldExpandedTreeNode = _ref4[0]; if (!store.value.treeDataMap.size || !data.value.length) return; if (changedExpandTreeNode.value.type === "user-reaction-change") { var _ref5 = changedExpandTreeNode.value || {}, row = _ref5.row, rowIndex = _ref5.rowIndex; dataSource.value = store.value.toggleExpandData({ row: row, rowIndex: rowIndex }, dataSource.value, rowDataKeys.value); } else if (changedExpandTreeNode.value.type === "props-change") { updateExpandState(dataSource.value, tExpandedTreeNode2, oldExpandedTreeNode); } changedExpandTreeNode.value.type = "props-change"; }); var updateExpandOnDataChange = function updateExpandOnDataChange(data2) { var _tree$value, _tExpandedTreeNode$va; if ((_tree$value = tree.value) !== null && _tree$value !== void 0 && _tree$value.defaultExpandAll && !isDefaultExpandAllExecute.value) { expandAll("default-expand-all", _toConsumableArray(data2)); isDefaultExpandAllExecute.value = true; } else if ((_tExpandedTreeNode$va = tExpandedTreeNode.value) !== null && _tExpandedTreeNode$va !== void 0 && _tExpandedTreeNode$va.length) { nextTick(function () { dataSource.value = updateExpandState(_toConsumableArray(data2), tExpandedTreeNode.value, []); }); } }; return { tExpandedTreeNode: tExpandedTreeNode, isDefaultExpandAllExecute: isDefaultExpandAllExecute, isDefaultExpandedTreeNodesExecute: isDefaultExpandedTreeNodesExecute, expandAll: expandAll, foldAll: foldAll, onExpandFoldIconClick: onExpandFoldIconClick, updateExpandOnDataChange: updateExpandOnDataChange }; } export { useTreeDataExpand as default, useTreeDataExpand }; //# sourceMappingURL=useTreeDataExpand.js.map