choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
108 lines (90 loc) • 2.85 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _tslib = require("tslib");
var _mobx = require("mobx");
var _Record = require("./Record");
var _utils = require("./utils");
var Group = /*#__PURE__*/function () {
function Group(name, index, value, parentGroup) {
(0, _classCallCheck2["default"])(this, Group);
this.index = index;
this.name = name;
this.value = value;
this.parentGroup = parentGroup;
this.records = [];
this.totalRecords = [];
this.subGroups = [];
}
(0, _createClass2["default"])(Group, [{
key: "isExpanded",
get: function get() {
return this.getState(_Record.EXPANDED_KEY) !== false;
},
set: function set(isExpanded) {
this.setState(_Record.EXPANDED_KEY, isExpanded);
}
}, {
key: "level",
get: function get() {
var parent = this.parent;
if (parent) {
return parent.level + 1;
}
return 0;
}
}, {
key: "expandedRecords",
get: function get() {
var subGroups = this.subGroups;
if (subGroups.length) {
return subGroups.reduce(function (list, group) {
var newList = list.concat(group.expandedRecords);
var children = group.children;
if (children && group.isExpanded) {
return children.reduce(function (childList, childGroup) {
return childList.concat(childGroup.expandedRecords);
}, newList);
}
return newList;
}, []);
}
return this.records;
}
}, {
key: "getState",
value: function getState(key) {
var state = this.state;
return state && state.get(key);
}
}, {
key: "setState",
value: function setState(key, value) {
if (value !== undefined || this.state) {
var state = (0, _utils.getIf)(this, 'state', function () {
return _mobx.observable.map();
});
return state.set(key, value);
}
}
}, {
key: "mergeState",
value: function mergeState(newState) {
var state = (0, _utils.getIf)(this, 'state', function () {
return _mobx.observable.map();
});
state.merge(newState);
}
}]);
return Group;
}();
exports["default"] = Group;
(0, _tslib.__decorate)([_mobx.observable], Group.prototype, "state", void 0);
(0, _tslib.__decorate)([_mobx.computed], Group.prototype, "expandedRecords", null);
(0, _tslib.__decorate)([_mobx.action], Group.prototype, "setState", null);
//# sourceMappingURL=Group.js.map