ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
51 lines (42 loc) • 1.82 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
import { computed } from 'vue';
import { fillLegacyProps } from '../utils/legacyUtil';
export default (function (treeData, searchValue, _ref) {
var treeNodeFilterProp = _ref.treeNodeFilterProp,
filterTreeNode = _ref.filterTreeNode,
fieldNames = _ref.fieldNames;
return computed(function () {
var fieldChildren = fieldNames.value.children;
var searchValueVal = searchValue.value;
var treeNodeFilterPropValue = treeNodeFilterProp === null || treeNodeFilterProp === void 0 ? void 0 : treeNodeFilterProp.value;
if (!searchValueVal || filterTreeNode.value === false) {
return treeData.value;
}
var filterOptionFunc;
if (typeof filterTreeNode.value === 'function') {
filterOptionFunc = filterTreeNode.value;
} else {
var upperStr = searchValueVal.toUpperCase();
filterOptionFunc = function filterOptionFunc(_, dataNode) {
var value = dataNode[treeNodeFilterPropValue];
return String(value).toUpperCase().includes(upperStr);
};
}
function dig(list) {
var keepAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var res = [];
for (var index = 0, len = list.length; index < len; index++) {
var dataNode = list[index];
var children = dataNode[fieldChildren];
var match = keepAll || filterOptionFunc(searchValueVal, fillLegacyProps(dataNode));
var childList = dig(children || [], match);
if (match || childList.length) {
res.push(_extends(_extends({}, dataNode), _defineProperty({}, fieldChildren, childList)));
}
}
return res;
}
return dig(treeData.value);
});
});