choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
86 lines (67 loc) • 2.9 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = normalizeTreeNodes;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = require("react");
var _DataSet = _interopRequireDefault(require("../data-set/DataSet"));
var _enum = require("../data-set/enum");
var _excluded = ["value", "title", "children", "disabled"];
function getOptionsFromChildren(elements, data, fields, textField, valueField, parentField, idField, disabledField, parent) {
if (elements) {
_react.Children.forEach(elements, function (child) {
if ( /*#__PURE__*/(0, _react.isValidElement)(child)) {
var type = child.type;
if (type.__PRO_TREE_SELECT_NODE) {
var _data$push;
var props = child.props;
var value = props.value,
title = props.title,
children = props.children,
disabled = props.disabled,
__treeNodeProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
data.push((_data$push = {}, (0, _defineProperty2["default"])(_data$push, textField, title), (0, _defineProperty2["default"])(_data$push, valueField, value), (0, _defineProperty2["default"])(_data$push, disabledField, disabled), (0, _defineProperty2["default"])(_data$push, parentField, parent), (0, _defineProperty2["default"])(_data$push, "__treeNodeProps", __treeNodeProps), _data$push));
if (idField !== valueField) {
data[idField] = props[idField] || value;
}
getOptionsFromChildren(children, data, fields, textField, valueField, parentField, idField, disabledField, props[idField] || value);
}
}
});
}
}
function normalizeTreeNodes(_ref) {
var textField = _ref.textField,
valueField = _ref.valueField,
disabledField = _ref.disabledField,
parentField = _ref.parentField,
idField = _ref.idField,
multiple = _ref.multiple,
children = _ref.children;
var data = [];
var fields = [{
name: textField,
type: _enum.FieldType.reactNode
}, {
name: valueField
}, {
name: disabledField,
type: _enum.FieldType["boolean"]
}];
if (children) {
getOptionsFromChildren(children, data, fields, textField, valueField, parentField, idField, disabledField);
}
return new _DataSet["default"]({
data: data,
fields: fields,
paging: false,
selection: multiple ? _enum.DataSetSelection.multiple : _enum.DataSetSelection.single,
autoLocateFirst: false,
parentField: parentField,
idField: idField
});
}
//# sourceMappingURL=normalizeTreeNodes.js.map
;