tdesign-vue
Version:
151 lines (147 loc) • 6.92 kB
JavaScript
/**
* 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