linear-react-components-ui 0.4.74 → 0.4.75-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assets/styles/treeview.scss +32 -0
- package/lib/buttons/DefaultButton.js +7 -1
- package/lib/checkbox/Label.js +37 -0
- package/lib/checkbox/index.js +20 -6
- package/lib/permissionValidations.js +1 -1
- package/lib/treeview/Node.js +288 -18
- package/lib/treeview/index.js +448 -35
- package/package.json +1 -1
|
@@ -42,6 +42,25 @@
|
|
|
42
42
|
animation: revealelement 0.3s forwards ease-in-out;
|
|
43
43
|
> .label {
|
|
44
44
|
width: auto;
|
|
45
|
+
display: flex;
|
|
46
|
+
justify-content: flex-start;
|
|
47
|
+
align-items: center;
|
|
48
|
+
>.node-menu {
|
|
49
|
+
animation: revealelement 0.3s forwards ease-in-out;
|
|
50
|
+
margin-left: 10px;
|
|
51
|
+
}
|
|
52
|
+
>.node-rightelements {
|
|
53
|
+
animation: revealelement 0.3s forwards ease-in-out;
|
|
54
|
+
display: flex;
|
|
55
|
+
justify-content: flex-start;
|
|
56
|
+
align-items: center;
|
|
57
|
+
}
|
|
58
|
+
>.node-toolbarelements {
|
|
59
|
+
animation: revealelement 0.3s forwards ease-in-out;
|
|
60
|
+
width: auto;
|
|
61
|
+
height: 100%;
|
|
62
|
+
margin-left: 10px;
|
|
63
|
+
}
|
|
45
64
|
&:hover {
|
|
46
65
|
background-color: rgb(209, 209, 209);
|
|
47
66
|
}
|
|
@@ -53,3 +72,16 @@
|
|
|
53
72
|
float: left;
|
|
54
73
|
}
|
|
55
74
|
}
|
|
75
|
+
|
|
76
|
+
.nodelist > .treeviewitem > .label > .node-rightelements > .element,
|
|
77
|
+
.treeview-component > .treeviewcontainer > .treeviewitem > .label > .node-rightelements > .element {
|
|
78
|
+
margin-left: 10px;
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
height: 100%;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.nodelist > .treeviewitem > .label > .node-toolbarelements > .toolbar-group > .buttonbar,
|
|
85
|
+
.treeview-component > .treeviewcontainer > .treeviewitem > .label > .node-toolbarelements > .toolbar-group > .buttonbar {
|
|
86
|
+
border: none;
|
|
87
|
+
}
|
|
@@ -69,7 +69,8 @@ var DefaultButton = function DefaultButton(props) {
|
|
|
69
69
|
boxShadow = props.boxShadow,
|
|
70
70
|
transparent = props.transparent,
|
|
71
71
|
round = props.round,
|
|
72
|
-
permissionAttr = props.permissionAttr
|
|
72
|
+
permissionAttr = props.permissionAttr,
|
|
73
|
+
_onBlur = props.onBlur;
|
|
73
74
|
|
|
74
75
|
var _useState = (0, _react.useState)(false),
|
|
75
76
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -147,6 +148,9 @@ var DefaultButton = function DefaultButton(props) {
|
|
|
147
148
|
if (dropdown) showDropdown();
|
|
148
149
|
if (_onClick && toggleable) setActiveButton(!activeButton);
|
|
149
150
|
},
|
|
151
|
+
onBlur: function onBlur(e) {
|
|
152
|
+
if (_onBlur) _onBlur(e);
|
|
153
|
+
},
|
|
150
154
|
disabled: shouldDisable(),
|
|
151
155
|
className: "".concat(getClass(), " ").concat(activeButton ? '-toggleable' : ''),
|
|
152
156
|
ref: function ref(r) {
|
|
@@ -176,6 +180,7 @@ DefaultButton.propTypes = {
|
|
|
176
180
|
boxShadow: _propTypes["default"].bool,
|
|
177
181
|
icon: _propTypes["default"].instanceOf(Object),
|
|
178
182
|
onClick: _propTypes["default"].func,
|
|
183
|
+
onBlur: _propTypes["default"].func,
|
|
179
184
|
targetRef: _propTypes["default"].func,
|
|
180
185
|
tabIndex: _propTypes["default"].string,
|
|
181
186
|
dropdown: _propTypes["default"].bool,
|
|
@@ -211,6 +216,7 @@ DefaultButton.defaultProps = {
|
|
|
211
216
|
icon: null,
|
|
212
217
|
content: null,
|
|
213
218
|
onClick: null,
|
|
219
|
+
onBlur: null,
|
|
214
220
|
targetRef: undefined,
|
|
215
221
|
tabIndex: undefined,
|
|
216
222
|
isLoading: false,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _withTooltip = _interopRequireDefault(require("../internals/withTooltip"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
+
|
|
16
|
+
var Label = function Label(_ref) {
|
|
17
|
+
var label = _ref.label,
|
|
18
|
+
targetRef = _ref.targetRef;
|
|
19
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
20
|
+
className: "checkbox-description",
|
|
21
|
+
ref: function ref(r) {
|
|
22
|
+
return targetRef && targetRef(r);
|
|
23
|
+
}
|
|
24
|
+
}, label);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
Label.propTypes = {
|
|
28
|
+
label: _propTypes["default"].string.isRequired,
|
|
29
|
+
targetRef: _propTypes["default"].func
|
|
30
|
+
};
|
|
31
|
+
Label.defaultProps = {
|
|
32
|
+
targetRef: undefined
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var _default = (0, _withTooltip["default"])(Label);
|
|
36
|
+
|
|
37
|
+
exports["default"] = _default;
|
package/lib/checkbox/index.js
CHANGED
|
@@ -13,6 +13,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
13
13
|
|
|
14
14
|
var _gridlayout = _interopRequireDefault(require("../gridlayout"));
|
|
15
15
|
|
|
16
|
+
var _Label = _interopRequireDefault(require("./Label"));
|
|
17
|
+
|
|
16
18
|
require("../assets/styles/checkbox.scss");
|
|
17
19
|
|
|
18
20
|
var _permissionValidations = require("../permissionValidations");
|
|
@@ -52,7 +54,10 @@ var CheckBox = function CheckBox(props) {
|
|
|
52
54
|
id = props.id,
|
|
53
55
|
gridLayout = props.gridLayout,
|
|
54
56
|
checked = props.checked,
|
|
55
|
-
permissionAttr = props.permissionAttr
|
|
57
|
+
permissionAttr = props.permissionAttr,
|
|
58
|
+
tooltip = props.tooltip,
|
|
59
|
+
tooltipPosition = props.tooltipPosition,
|
|
60
|
+
tooltipWidth = props.tooltipWidth;
|
|
56
61
|
|
|
57
62
|
var _useState = (0, _react.useState)(checked),
|
|
58
63
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -121,9 +126,12 @@ var CheckBox = function CheckBox(props) {
|
|
|
121
126
|
value: value,
|
|
122
127
|
id: id,
|
|
123
128
|
onChange: function onChange() {}
|
|
124
|
-
}), /*#__PURE__*/_react["default"].createElement("span", null), label && /*#__PURE__*/_react["default"].createElement("
|
|
125
|
-
|
|
126
|
-
|
|
129
|
+
}), /*#__PURE__*/_react["default"].createElement("span", null), label && /*#__PURE__*/_react["default"].createElement(_Label["default"], {
|
|
130
|
+
label: label,
|
|
131
|
+
tooltip: tooltip,
|
|
132
|
+
tooltipWidth: tooltipWidth,
|
|
133
|
+
tooltipPosition: tooltipPosition
|
|
134
|
+
})), hint && /*#__PURE__*/_react["default"].createElement("div", {
|
|
127
135
|
className: "checkbox-hint"
|
|
128
136
|
}, hint));
|
|
129
137
|
};
|
|
@@ -148,7 +156,10 @@ CheckBox.propTypes = {
|
|
|
148
156
|
autofocus: _propTypes["default"].bool,
|
|
149
157
|
hint: _propTypes["default"].string,
|
|
150
158
|
gridLayout: _propTypes["default"].string,
|
|
151
|
-
permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
|
|
159
|
+
permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
|
|
160
|
+
tooltip: _propTypes["default"].string,
|
|
161
|
+
tooltipPosition: _propTypes["default"].string,
|
|
162
|
+
tooltipWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
|
|
152
163
|
};
|
|
153
164
|
CheckBox.defaultProps = {
|
|
154
165
|
label: '',
|
|
@@ -163,7 +174,10 @@ CheckBox.defaultProps = {
|
|
|
163
174
|
hint: undefined,
|
|
164
175
|
id: undefined,
|
|
165
176
|
gridLayout: undefined,
|
|
166
|
-
permissionAttr: undefined
|
|
177
|
+
permissionAttr: undefined,
|
|
178
|
+
tooltip: '',
|
|
179
|
+
tooltipPosition: 'top',
|
|
180
|
+
tooltipWidth: 'auto'
|
|
167
181
|
};
|
|
168
182
|
var _default = CheckBox;
|
|
169
183
|
exports["default"] = _default;
|
|
@@ -59,7 +59,7 @@ var actionsOnPermissionDenied = function actionsOnPermissionDenied(permissionAtt
|
|
|
59
59
|
|
|
60
60
|
var result = {};
|
|
61
61
|
options.forEach(function (option) {
|
|
62
|
-
result[option] = hasPermission ? false : option ===
|
|
62
|
+
result[option] = hasPermission ? false : option === permissionsAttr[0].onDenied;
|
|
63
63
|
});
|
|
64
64
|
return result;
|
|
65
65
|
};
|
package/lib/treeview/Node.js
CHANGED
|
@@ -11,18 +11,42 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
|
|
14
|
+
var _uuid = _interopRequireDefault(require("uuid"));
|
|
15
|
+
|
|
16
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
17
|
+
|
|
14
18
|
var _checkbox = _interopRequireDefault(require("../checkbox"));
|
|
15
19
|
|
|
16
20
|
var _icons = _interopRequireDefault(require("../icons"));
|
|
17
21
|
|
|
18
22
|
var _constants = require("./constants");
|
|
19
23
|
|
|
24
|
+
var _buttons = _interopRequireDefault(require("../buttons"));
|
|
25
|
+
|
|
26
|
+
var _list = _interopRequireWildcard(require("../list"));
|
|
27
|
+
|
|
28
|
+
var _toolbar = _interopRequireWildcard(require("../toolbar"));
|
|
29
|
+
|
|
20
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
31
|
|
|
22
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
33
|
|
|
24
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
35
|
|
|
36
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
37
|
+
|
|
38
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
39
|
+
|
|
40
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
41
|
+
|
|
42
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
43
|
+
|
|
44
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
45
|
+
|
|
46
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
47
|
+
|
|
48
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
49
|
+
|
|
26
50
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
27
51
|
|
|
28
52
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -59,17 +83,21 @@ var TreeNode = /*#__PURE__*/function (_Component) {
|
|
|
59
83
|
enumerable: true,
|
|
60
84
|
writable: true,
|
|
61
85
|
value: function value() {
|
|
62
|
-
var
|
|
86
|
+
var _this$props = _this.props,
|
|
87
|
+
node = _this$props.node,
|
|
88
|
+
alwaysShowArrow = _this$props.alwaysShowArrow;
|
|
63
89
|
|
|
64
90
|
var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
|
|
65
91
|
|
|
66
|
-
if (node.itens && node.itens.length > 0) {
|
|
92
|
+
if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
|
|
67
93
|
span = /*#__PURE__*/_react["default"].createElement("span", {
|
|
68
94
|
onKeyPress: null,
|
|
69
95
|
tabIndex: 0,
|
|
70
96
|
role: "button",
|
|
71
97
|
className: "opencloseicon",
|
|
72
|
-
onClick:
|
|
98
|
+
onClick: function onClick() {
|
|
99
|
+
return _this.openCloseTree(node);
|
|
100
|
+
}
|
|
73
101
|
}, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
|
|
74
102
|
name: _this.state.isVisible ? 'up' : 'down',
|
|
75
103
|
size: 10
|
|
@@ -80,52 +108,278 @@ var TreeNode = /*#__PURE__*/function (_Component) {
|
|
|
80
108
|
}
|
|
81
109
|
});
|
|
82
110
|
Object.defineProperty(_assertThisInitialized(_this), "openCloseTree", {
|
|
111
|
+
configurable: true,
|
|
112
|
+
enumerable: true,
|
|
113
|
+
writable: true,
|
|
114
|
+
value: function value(node) {
|
|
115
|
+
var _this$state = _this.state,
|
|
116
|
+
isVisible = _this$state.isVisible,
|
|
117
|
+
wasOpened = _this$state.wasOpened;
|
|
118
|
+
var handlerOnNodeOpen = _this.props.handlerOnNodeOpen;
|
|
119
|
+
var nextState = {
|
|
120
|
+
isVisible: !isVisible
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
if (!wasOpened && handlerOnNodeOpen) {
|
|
124
|
+
nextState = _extends({}, nextState, {
|
|
125
|
+
wasOpened: true
|
|
126
|
+
});
|
|
127
|
+
handlerOnNodeOpen(node);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
_this.setState(nextState);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(_assertThisInitialized(_this), "handleShowNodeElements", {
|
|
134
|
+
configurable: true,
|
|
135
|
+
enumerable: true,
|
|
136
|
+
writable: true,
|
|
137
|
+
value: function value() {
|
|
138
|
+
var _this$state2 = _this.state,
|
|
139
|
+
showNodeElements = _this$state2.showNodeElements,
|
|
140
|
+
keepMenuOpened = _this$state2.keepMenuOpened;
|
|
141
|
+
if (!showNodeElements) _this.setState({
|
|
142
|
+
showNodeElements: true
|
|
143
|
+
});else if (showNodeElements && !keepMenuOpened) {
|
|
144
|
+
_this.setState({
|
|
145
|
+
showNodeElements: false
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(_assertThisInitialized(_this), "updateElements", {
|
|
151
|
+
configurable: true,
|
|
152
|
+
enumerable: true,
|
|
153
|
+
writable: true,
|
|
154
|
+
value: function value(elements) {
|
|
155
|
+
var _this$props2 = _this.props,
|
|
156
|
+
node = _this$props2.node,
|
|
157
|
+
nodeElementsValidations = _this$props2.nodeElementsValidations;
|
|
158
|
+
var updatedElements = [];
|
|
159
|
+
|
|
160
|
+
if (elements) {
|
|
161
|
+
updatedElements = _react["default"].Children.map(elements, function (element) {
|
|
162
|
+
if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
|
|
163
|
+
var _element$props = element.props,
|
|
164
|
+
validationKey = _element$props.validationKey,
|
|
165
|
+
onNodeElementClick = _element$props.onNodeElementClick;
|
|
166
|
+
var elementBehavior;
|
|
167
|
+
var newProps = {};
|
|
168
|
+
|
|
169
|
+
if (nodeElementsValidations && validationKey) {
|
|
170
|
+
elementBehavior = _this.validateNodeElement(validationKey);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (onNodeElementClick) {
|
|
174
|
+
newProps = _extends({}, newProps, {
|
|
175
|
+
onClick: function onClick(e) {
|
|
176
|
+
onNodeElementClick(node);
|
|
177
|
+
if (e.stopPropagation) e.stopPropagation();
|
|
178
|
+
},
|
|
179
|
+
onNodeElementClick: null
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return element;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return updatedElements;
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnNodeRightElements", {
|
|
83
194
|
configurable: true,
|
|
84
195
|
enumerable: true,
|
|
85
196
|
writable: true,
|
|
86
197
|
value: function value() {
|
|
87
|
-
_this.
|
|
88
|
-
|
|
198
|
+
var nodeRightElements = _this.props.nodeRightElements;
|
|
199
|
+
|
|
200
|
+
var updatedNodeRightElements = _this.updateElements(nodeRightElements).map(function (element) {
|
|
201
|
+
var unvisible = element.props && 'visible' in element.props && !element.props.visible;
|
|
202
|
+
var style = unvisible ? {
|
|
203
|
+
display: 'none'
|
|
204
|
+
} : {};
|
|
205
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
206
|
+
style: style,
|
|
207
|
+
key: "element-".concat(_uuid["default"].v1()),
|
|
208
|
+
className: "element"
|
|
209
|
+
}, element);
|
|
89
210
|
});
|
|
211
|
+
|
|
212
|
+
return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
213
|
+
className: "node-rightelements"
|
|
214
|
+
}, updatedNodeRightElements) : null;
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnNodeToolbarElements", {
|
|
218
|
+
configurable: true,
|
|
219
|
+
enumerable: true,
|
|
220
|
+
writable: true,
|
|
221
|
+
value: function value() {
|
|
222
|
+
var nodeToolbarElements = _this.props.nodeToolbarElements;
|
|
223
|
+
|
|
224
|
+
var updatedNodeRightElements = _this.updateElements(nodeToolbarElements);
|
|
225
|
+
|
|
226
|
+
return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
|
|
227
|
+
customClass: "node-toolbarelements"
|
|
228
|
+
}, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
|
|
90
229
|
}
|
|
91
230
|
});
|
|
231
|
+
Object.defineProperty(_assertThisInitialized(_this), "validateNodeElement", {
|
|
232
|
+
configurable: true,
|
|
233
|
+
enumerable: true,
|
|
234
|
+
writable: true,
|
|
235
|
+
value: function value(validationKey) {
|
|
236
|
+
var _this$props3 = _this.props,
|
|
237
|
+
nodeElementsValidations = _this$props3.nodeElementsValidations,
|
|
238
|
+
node = _this$props3.node;
|
|
239
|
+
var validations = nodeElementsValidations[validationKey];
|
|
240
|
+
var options = {
|
|
241
|
+
disabled: {
|
|
242
|
+
disabled: true
|
|
243
|
+
},
|
|
244
|
+
unvisible: {
|
|
245
|
+
visible: false
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
var elementBehavior = {};
|
|
249
|
+
|
|
250
|
+
if (validations) {
|
|
251
|
+
validations.forEach(function (validation) {
|
|
252
|
+
var validator = validation.validator,
|
|
253
|
+
applyBehavior = validation.applyBehavior;
|
|
254
|
+
|
|
255
|
+
if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
|
|
256
|
+
elementBehavior = options[applyBehavior] || options.unvisible;
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return elementBehavior;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
_this.labelRef = /*#__PURE__*/_react["default"].createRef();
|
|
92
265
|
_this.state = {
|
|
93
|
-
isVisible: context.startNodesOpened
|
|
266
|
+
isVisible: context.startNodesOpened,
|
|
267
|
+
wasOpened: context.startNodesOpened,
|
|
268
|
+
showNodeElements: false,
|
|
269
|
+
keepMenuOpened: false
|
|
94
270
|
};
|
|
95
271
|
return _this;
|
|
96
272
|
}
|
|
97
273
|
|
|
98
274
|
_createClass(TreeNode, [{
|
|
275
|
+
key: "componentDidMount",
|
|
276
|
+
value: function componentDidMount() {
|
|
277
|
+
var _this$props4 = this.props,
|
|
278
|
+
isParent = _this$props4.isParent,
|
|
279
|
+
nodeToolbarElements = _this$props4.nodeToolbarElements,
|
|
280
|
+
nodeRightElements = _this$props4.nodeRightElements;
|
|
281
|
+
|
|
282
|
+
if (isParent || nodeRightElements || nodeToolbarElements) {
|
|
283
|
+
this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
|
|
284
|
+
this.labelRef.current.addEventListener('mouseleave', this.handleShowNodeElements);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}, {
|
|
288
|
+
key: "componentWillUnmount",
|
|
289
|
+
value: function componentWillUnmount() {
|
|
290
|
+
var _this$props5 = this.props,
|
|
291
|
+
isParent = _this$props5.isParent,
|
|
292
|
+
nodeToolbarElements = _this$props5.nodeToolbarElements,
|
|
293
|
+
nodeRightElements = _this$props5.nodeRightElements;
|
|
294
|
+
|
|
295
|
+
if (isParent || nodeRightElements || nodeToolbarElements) {
|
|
296
|
+
this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
|
|
297
|
+
this.labelRef.current.removeEventListener('mouseleave', this.handleShowNodeElements);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}, {
|
|
99
301
|
key: "render",
|
|
100
302
|
value: function render() {
|
|
101
303
|
var _this2 = this;
|
|
102
304
|
|
|
103
|
-
var _this$
|
|
104
|
-
node = _this$
|
|
105
|
-
children = _this$
|
|
305
|
+
var _this$props6 = this.props,
|
|
306
|
+
node = _this$props6.node,
|
|
307
|
+
children = _this$props6.children,
|
|
308
|
+
isParent = _this$props6.isParent,
|
|
309
|
+
onNodeClick = _this$props6.onNodeClick,
|
|
310
|
+
nodeMenuButtonSize = _this$props6.nodeMenuButtonSize;
|
|
311
|
+
var showNodeElements = this.state.showNodeElements;
|
|
106
312
|
return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
|
|
107
313
|
var valuePropName = _ref.valuePropName,
|
|
108
314
|
labelPropName = _ref.labelPropName,
|
|
109
315
|
selectedIds = _ref.selectedIds,
|
|
110
|
-
|
|
316
|
+
handlerUpdateSelectedIds = _ref.handlerUpdateSelectedIds,
|
|
111
317
|
showCheckBox = _ref.showCheckBox,
|
|
112
318
|
requiredIds = _ref.requiredIds,
|
|
113
|
-
disabled = _ref.disabled
|
|
114
|
-
|
|
319
|
+
disabled = _ref.disabled,
|
|
320
|
+
handlerToggleCheckChildren = _ref.handlerToggleCheckChildren,
|
|
321
|
+
allowCheckAllChildren = _ref.allowCheckAllChildren,
|
|
322
|
+
requiredParentsIds = _ref.requiredParentsIds,
|
|
323
|
+
defaultDisabledTooltip = _ref.defaultDisabledTooltip;
|
|
324
|
+
var requiredNodes = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
|
|
325
|
+
var required = requiredNodes.includes(node[valuePropName]);
|
|
115
326
|
var checked = selectedIds.includes(node[valuePropName]) || required;
|
|
116
327
|
return /*#__PURE__*/_react["default"].createElement("li", {
|
|
117
328
|
className: "treeviewitem"
|
|
118
329
|
}, _this2.getSpan(), /*#__PURE__*/_react["default"].createElement("div", {
|
|
119
|
-
className: "label"
|
|
330
|
+
className: "label",
|
|
331
|
+
ref: _this2.labelRef,
|
|
332
|
+
role: "button",
|
|
333
|
+
onKeyPress: null,
|
|
334
|
+
tabIndex: "-1",
|
|
335
|
+
onClick: onNodeClick ? function () {
|
|
336
|
+
return onNodeClick(node);
|
|
337
|
+
} : null
|
|
120
338
|
}, showCheckBox ? /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
|
|
121
339
|
checked: checked,
|
|
122
340
|
disabled: required || disabled,
|
|
123
341
|
value: "".concat(node[valuePropName]),
|
|
124
342
|
label: node[labelPropName],
|
|
125
|
-
|
|
126
|
-
|
|
343
|
+
tooltip: required ? defaultDisabledTooltip : '',
|
|
344
|
+
onChange: disabled || required ? undefined : function (e) {
|
|
345
|
+
handlerUpdateSelectedIds(node.id, e.target.checked, isParent);
|
|
346
|
+
}
|
|
347
|
+
}) : node[labelPropName], allowCheckAllChildren && showNodeElements && isParent ? /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
|
|
348
|
+
dropdown: true,
|
|
349
|
+
dropdownAlign: "left",
|
|
350
|
+
size: nodeMenuButtonSize,
|
|
351
|
+
onClick: function onClick() {
|
|
352
|
+
_this2.setState({
|
|
353
|
+
keepMenuOpened: !_this2.state.keepMenuOpened
|
|
354
|
+
});
|
|
355
|
+
},
|
|
356
|
+
showIconDropdown: false,
|
|
357
|
+
iconName: "menu",
|
|
358
|
+
customClass: "node-menu",
|
|
359
|
+
boxShadow: false
|
|
360
|
+
}, /*#__PURE__*/_react["default"].createElement(_list["default"], {
|
|
361
|
+
condensed: true
|
|
362
|
+
}, /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
|
|
363
|
+
text: "Marcar todos",
|
|
364
|
+
onClick: function onClick() {
|
|
365
|
+
handlerToggleCheckChildren(node.id, true);
|
|
366
|
+
|
|
367
|
+
_this2.setState({
|
|
368
|
+
showNodeElements: false,
|
|
369
|
+
keepMenuOpened: false
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}), /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
|
|
373
|
+
text: "Desmarcar todos",
|
|
374
|
+
onClick: function onClick() {
|
|
375
|
+
handlerToggleCheckChildren(node.id, false, required);
|
|
376
|
+
|
|
377
|
+
_this2.setState({
|
|
378
|
+
showNodeElements: false,
|
|
379
|
+
keepMenuOpened: false
|
|
380
|
+
});
|
|
127
381
|
}
|
|
128
|
-
}) :
|
|
382
|
+
}))) : null, showNodeElements && _this2.returnNodeRightElements(), showNodeElements && _this2.returnNodeToolbarElements()), /*#__PURE__*/_react["default"].createElement("ul", {
|
|
129
383
|
className: "nodelist"
|
|
130
384
|
}, _this2.state.isVisible && children));
|
|
131
385
|
});
|
|
@@ -140,12 +394,28 @@ TreeNode.propTypes = {
|
|
|
140
394
|
children: _propTypes["default"].any.isRequired,
|
|
141
395
|
childrenIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
|
|
142
396
|
parentId: _propTypes["default"].number,
|
|
143
|
-
disabled: _propTypes["default"].bool
|
|
397
|
+
disabled: _propTypes["default"].bool,
|
|
398
|
+
isParent: _propTypes["default"].bool,
|
|
399
|
+
alwaysShowArrow: _propTypes["default"].bool,
|
|
400
|
+
nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
|
|
401
|
+
nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
|
|
402
|
+
nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
|
|
403
|
+
onNodeClick: _propTypes["default"].func,
|
|
404
|
+
handlerOnNodeOpen: _propTypes["default"].func,
|
|
405
|
+
nodeElementsValidations: _propTypes["default"].object
|
|
144
406
|
};
|
|
145
407
|
TreeNode.defaultProps = {
|
|
146
408
|
childrenIds: [],
|
|
147
409
|
parentId: undefined,
|
|
148
|
-
disabled: false
|
|
410
|
+
disabled: false,
|
|
411
|
+
isParent: false,
|
|
412
|
+
alwaysShowArrow: false,
|
|
413
|
+
nodeRightElements: undefined,
|
|
414
|
+
nodeToolbarElements: undefined,
|
|
415
|
+
nodeMenuButtonSize: 'small',
|
|
416
|
+
onNodeClick: undefined,
|
|
417
|
+
handlerOnNodeOpen: undefined,
|
|
418
|
+
nodeElementsValidations: undefined
|
|
149
419
|
};
|
|
150
420
|
TreeNode.contextType = _constants.TreeviewContext;
|
|
151
421
|
var _default = TreeNode;
|
package/lib/treeview/index.js
CHANGED
|
@@ -78,47 +78,368 @@ var TreeView = /*#__PURE__*/function (_Component) {
|
|
|
78
78
|
|
|
79
79
|
var _super = _createSuper(TreeView);
|
|
80
80
|
|
|
81
|
-
function TreeView() {
|
|
82
|
-
var
|
|
81
|
+
function TreeView(props) {
|
|
82
|
+
var _this;
|
|
83
83
|
|
|
84
84
|
_classCallCheck(this, TreeView);
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
_this = _super.call(this, props);
|
|
87
|
+
Object.defineProperty(_assertThisInitialized(_this), "getContextValues", {
|
|
88
|
+
configurable: true,
|
|
89
|
+
enumerable: true,
|
|
90
|
+
writable: true,
|
|
91
|
+
value: function value() {
|
|
92
|
+
return _extends({}, _this.props, _this.state, {
|
|
93
|
+
handlerUpdateSelectedIds: _this.updateSelectedIds,
|
|
94
|
+
handlerToggleCheckChildren: _this.toggleCheckChildren
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
Object.defineProperty(_assertThisInitialized(_this), "handleNewSelectedIds", {
|
|
99
|
+
configurable: true,
|
|
100
|
+
enumerable: true,
|
|
101
|
+
writable: true,
|
|
102
|
+
value: function value(selectedIds) {
|
|
103
|
+
var requiredIds = [];
|
|
104
|
+
var newSelectedIds = [];
|
|
105
|
+
selectedIds.forEach(function (id) {
|
|
106
|
+
var _this$checkAllAncestr = _this.checkAllAncestry(id, [], true, false),
|
|
107
|
+
requiredParentsIds = _this$checkAllAncestr.requiredParentsIds,
|
|
108
|
+
updatedIdsWithAncestryIds = _this$checkAllAncestr.updatedIdsWithAncestryIds;
|
|
109
|
+
|
|
110
|
+
newSelectedIds = [].concat(_toConsumableArray(newSelectedIds), _toConsumableArray(updatedIdsWithAncestryIds));
|
|
111
|
+
requiredIds = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
|
|
112
|
+
});
|
|
89
113
|
|
|
90
|
-
|
|
114
|
+
_this.setState({
|
|
115
|
+
requiredParentsIds: _lodash["default"].uniq(requiredIds),
|
|
116
|
+
selectedIds: _lodash["default"].uniq(newSelectedIds)
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnParentId", {
|
|
91
121
|
configurable: true,
|
|
92
122
|
enumerable: true,
|
|
93
123
|
writable: true,
|
|
94
|
-
value: {
|
|
95
|
-
|
|
96
|
-
|
|
124
|
+
value: function value(nodeId) {
|
|
125
|
+
var parentId = Object.keys(_this.idsWithChildren).find(function (id) {
|
|
126
|
+
return _this.idsWithChildren[id].find(function (childId) {
|
|
127
|
+
return childId === nodeId;
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
return Number(parentId);
|
|
97
131
|
}
|
|
98
|
-
})
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnAllAncestryIds", {
|
|
99
134
|
configurable: true,
|
|
100
135
|
enumerable: true,
|
|
101
136
|
writable: true,
|
|
102
|
-
value: function value() {
|
|
103
|
-
|
|
104
|
-
|
|
137
|
+
value: function value(nodeId) {
|
|
138
|
+
var ancestryIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
139
|
+
|
|
140
|
+
var parentId = _this.returnParentId(nodeId);
|
|
141
|
+
|
|
142
|
+
if (parentId) {
|
|
143
|
+
var currentAncestryIds = [].concat(_toConsumableArray(ancestryIds), [Number(parentId)]);
|
|
144
|
+
return _this.returnAllAncestryIds(Number(parentId), currentAncestryIds);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return ancestryIds;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnChildrenIds", {
|
|
151
|
+
configurable: true,
|
|
152
|
+
enumerable: true,
|
|
153
|
+
writable: true,
|
|
154
|
+
value: function value(nodeId) {
|
|
155
|
+
var returnRequiredIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
156
|
+
var nodeChildrenIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
157
|
+
var requiredIds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
158
|
+
|
|
159
|
+
if (_this.idsWithChildren[nodeId] !== undefined) {
|
|
160
|
+
nodeChildrenIds.push(nodeId);
|
|
161
|
+
if (returnRequiredIds) requiredIds.push(nodeId);
|
|
162
|
+
|
|
163
|
+
_this.idsWithChildren[nodeId].forEach(function (childId) {
|
|
164
|
+
return _this.returnChildrenIds(childId, returnRequiredIds, nodeChildrenIds, requiredIds);
|
|
165
|
+
});
|
|
166
|
+
} else nodeChildrenIds.push(nodeId);
|
|
167
|
+
|
|
168
|
+
return returnRequiredIds ? {
|
|
169
|
+
nodeChildrenIds: nodeChildrenIds,
|
|
170
|
+
requiredIds: requiredIds
|
|
171
|
+
} : nodeChildrenIds;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
Object.defineProperty(_assertThisInitialized(_this), "returnRequiredAncestryIds", {
|
|
175
|
+
configurable: true,
|
|
176
|
+
enumerable: true,
|
|
177
|
+
writable: true,
|
|
178
|
+
value: function value(nodeId) {
|
|
179
|
+
var requiredAncestryIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
180
|
+
var previousParentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
181
|
+
var selectedSiblingsIds = [];
|
|
182
|
+
var selectedIds = _this.state.selectedIds;
|
|
183
|
+
|
|
184
|
+
var parentId = _this.returnParentId(nodeId);
|
|
185
|
+
|
|
186
|
+
if (parentId) {
|
|
187
|
+
var nodeSiblingsIds = _this.idsWithChildren[parentId].filter(function (childId) {
|
|
188
|
+
return childId !== nodeId;
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
var isPreviousParentSelected = selectedIds.includes(previousParentId);
|
|
192
|
+
|
|
193
|
+
if (nodeSiblingsIds && nodeSiblingsIds.length > 0) {
|
|
194
|
+
selectedSiblingsIds = selectedIds.filter(function (id) {
|
|
195
|
+
return nodeSiblingsIds.includes(id);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
var requiredIds = isPreviousParentSelected || selectedSiblingsIds.length > 0 ? _toConsumableArray(requiredAncestryIds) : [].concat(_toConsumableArray(requiredAncestryIds), [parentId]);
|
|
200
|
+
|
|
201
|
+
if (selectedSiblingsIds.length === 0 && !isPreviousParentSelected) {
|
|
202
|
+
return _this.returnRequiredAncestryIds(parentId, requiredIds, parentId);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return requiredAncestryIds;
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
Object.defineProperty(_assertThisInitialized(_this), "toggleCheckChildren", {
|
|
210
|
+
configurable: true,
|
|
211
|
+
enumerable: true,
|
|
212
|
+
writable: true,
|
|
213
|
+
value: function value(nodeId, check) {
|
|
214
|
+
var required = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
215
|
+
|
|
216
|
+
_this.setState({
|
|
217
|
+
isHandlingSelectedIds: true
|
|
218
|
+
}, function () {
|
|
219
|
+
_this.updateSelectedIds(nodeId, check, true, required);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
Object.defineProperty(_assertThisInitialized(_this), "checkAllAncestry", {
|
|
224
|
+
configurable: true,
|
|
225
|
+
enumerable: true,
|
|
226
|
+
writable: true,
|
|
227
|
+
value: function value(nodeId, codigos) {
|
|
228
|
+
var returnRequiredParentsIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
229
|
+
var updateState = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
230
|
+
var selectedIds = _this.state.selectedIds;
|
|
231
|
+
var requiredParentsIds = _this.state.requiredParentsIds;
|
|
232
|
+
|
|
233
|
+
var nodeAncestryIds = _this.returnAllAncestryIds(nodeId);
|
|
234
|
+
|
|
235
|
+
var notRequiredAncestryIds = nodeAncestryIds.filter(function (id) {
|
|
236
|
+
return !requiredParentsIds.includes(id);
|
|
237
|
+
});
|
|
238
|
+
var notSelectedAncestryIds = nodeAncestryIds.filter(function (id) {
|
|
239
|
+
return !selectedIds.includes(id);
|
|
240
|
+
});
|
|
241
|
+
selectedIds = [].concat(_toConsumableArray(selectedIds), _toConsumableArray(codigos), _toConsumableArray(notSelectedAncestryIds));
|
|
242
|
+
requiredParentsIds = [].concat(_toConsumableArray(requiredParentsIds), _toConsumableArray(notRequiredAncestryIds));
|
|
243
|
+
if (updateState) _this.setState({
|
|
244
|
+
requiredParentsIds: requiredParentsIds
|
|
245
|
+
});
|
|
246
|
+
return !returnRequiredParentsIds ? selectedIds : {
|
|
247
|
+
updatedIdsWithAncestryIds: selectedIds,
|
|
248
|
+
requiredParentsIds: requiredParentsIds
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
Object.defineProperty(_assertThisInitialized(_this), "updateAncestryAndSelectedIds", {
|
|
253
|
+
configurable: true,
|
|
254
|
+
enumerable: true,
|
|
255
|
+
writable: true,
|
|
256
|
+
value: function value(nodeId, codigos, requiredParentsIds) {
|
|
257
|
+
var selectedIds = _this.state.selectedIds;
|
|
258
|
+
|
|
259
|
+
var ancestryIds = _this.returnRequiredAncestryIds(nodeId);
|
|
260
|
+
|
|
261
|
+
var remainRequiredParentsIds = requiredParentsIds.filter(function (id) {
|
|
262
|
+
return !ancestryIds.includes(id);
|
|
263
|
+
});
|
|
264
|
+
selectedIds = selectedIds.filter(function (selectedId) {
|
|
265
|
+
return !codigos.includes(selectedId);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
_this.setState({
|
|
269
|
+
requiredParentsIds: remainRequiredParentsIds
|
|
105
270
|
});
|
|
271
|
+
|
|
272
|
+
return selectedIds;
|
|
106
273
|
}
|
|
107
|
-
})
|
|
274
|
+
});
|
|
275
|
+
Object.defineProperty(_assertThisInitialized(_this), "checkAllChildren", {
|
|
108
276
|
configurable: true,
|
|
109
277
|
enumerable: true,
|
|
110
278
|
writable: true,
|
|
111
|
-
value: function value(
|
|
279
|
+
value: function value(nodeId) {
|
|
280
|
+
var returnRequiredIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
281
|
+
var currentRequiredIds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
282
|
+
var _this$state = _this.state,
|
|
283
|
+
selectedIds = _this$state.selectedIds,
|
|
284
|
+
requiredParentsIds = _this$state.requiredParentsIds;
|
|
285
|
+
var childrenIds;
|
|
286
|
+
|
|
287
|
+
if (returnRequiredIds) {
|
|
288
|
+
var _this$returnChildrenI = _this.returnChildrenIds(nodeId, returnRequiredIds),
|
|
289
|
+
nodeChildrenIds = _this$returnChildrenI.nodeChildrenIds,
|
|
290
|
+
requiredIds = _this$returnChildrenI.requiredIds;
|
|
291
|
+
|
|
292
|
+
var newRequiredIds = requiredIds.filter(function (id) {
|
|
293
|
+
return !currentRequiredIds.includes(id);
|
|
294
|
+
});
|
|
295
|
+
requiredParentsIds = [].concat(_toConsumableArray(currentRequiredIds), _toConsumableArray(newRequiredIds));
|
|
296
|
+
childrenIds = nodeChildrenIds;
|
|
297
|
+
} else childrenIds = _this.returnChildrenIds(nodeId);
|
|
298
|
+
|
|
299
|
+
var notSelectedChildrenIds = childrenIds.filter(function (id) {
|
|
300
|
+
return !selectedIds.includes(id);
|
|
301
|
+
});
|
|
302
|
+
selectedIds = [].concat(_toConsumableArray(selectedIds), _toConsumableArray(notSelectedChildrenIds));
|
|
303
|
+
|
|
304
|
+
_this.setState({
|
|
305
|
+
isHandlingSelectedIds: false,
|
|
306
|
+
requiredParentsIds: requiredParentsIds
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
return selectedIds;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
Object.defineProperty(_assertThisInitialized(_this), "uncheckAllChildren", {
|
|
313
|
+
configurable: true,
|
|
314
|
+
enumerable: true,
|
|
315
|
+
writable: true,
|
|
316
|
+
value: function value(nodeId) {
|
|
317
|
+
var remainSelectedIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
318
|
+
var selectedIds = remainSelectedIds.length > 0 ? remainSelectedIds : _this.state.selectedIds;
|
|
319
|
+
|
|
320
|
+
var childrenIds = _this.returnChildrenIds(nodeId);
|
|
321
|
+
|
|
322
|
+
selectedIds = selectedIds.filter(function (selectedId) {
|
|
323
|
+
return !childrenIds.includes(selectedId);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
_this.setState({
|
|
327
|
+
isHandlingSelectedIds: false
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
return selectedIds;
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
Object.defineProperty(_assertThisInitialized(_this), "uncheckRequiredChildren", {
|
|
334
|
+
configurable: true,
|
|
335
|
+
enumerable: true,
|
|
336
|
+
writable: true,
|
|
337
|
+
value: function value(nodeId, codigos, requiredParentsIds) {
|
|
338
|
+
var childrenIds = _this.returnChildrenIds(nodeId);
|
|
339
|
+
|
|
340
|
+
var remainRequiredIds = requiredParentsIds.filter(function (id) {
|
|
341
|
+
return !childrenIds.includes(id);
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
_this.setState({
|
|
345
|
+
requiredParentsIds: _toConsumableArray(remainRequiredIds)
|
|
346
|
+
}, function () {
|
|
347
|
+
return _this.updateAncestryAndSelectedIds(nodeId, codigos, remainRequiredIds);
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
Object.defineProperty(_assertThisInitialized(_this), "handleOnNodeOpen", {
|
|
352
|
+
configurable: true,
|
|
353
|
+
enumerable: true,
|
|
354
|
+
writable: true,
|
|
355
|
+
value: function value(node) {
|
|
356
|
+
var id = node.id;
|
|
357
|
+
var onNodeOpen = _this.props.onNodeOpen;
|
|
358
|
+
var alreadyOpenedIds = _this.state.alreadyOpenedIds;
|
|
359
|
+
|
|
360
|
+
if (!alreadyOpenedIds.includes(id) && onNodeOpen) {
|
|
361
|
+
alreadyOpenedIds = [].concat(_toConsumableArray(alreadyOpenedIds), [id]);
|
|
362
|
+
onNodeOpen(node);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
_this.setState({
|
|
366
|
+
alreadyOpenedIds: alreadyOpenedIds
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
Object.defineProperty(_assertThisInitialized(_this), "handleCheck", {
|
|
371
|
+
configurable: true,
|
|
372
|
+
enumerable: true,
|
|
373
|
+
writable: true,
|
|
374
|
+
value: function value(nodeId, isParent) {
|
|
375
|
+
var selectedIds = _this.state.selectedIds;
|
|
376
|
+
var codigos = _lodash["default"].isArray(nodeId) ? nodeId : [nodeId];
|
|
377
|
+
var isHandlingSelectedIds = _this.state.isHandlingSelectedIds;
|
|
378
|
+
var _this$props = _this.props,
|
|
379
|
+
allowCheckAllChildren = _this$props.allowCheckAllChildren,
|
|
380
|
+
allowCheckAllAncestry = _this$props.allowCheckAllAncestry;
|
|
381
|
+
selectedIds = [].concat(_toConsumableArray(selectedIds), _toConsumableArray(codigos));
|
|
382
|
+
|
|
383
|
+
if (isParent && isHandlingSelectedIds && allowCheckAllChildren) {
|
|
384
|
+
if (allowCheckAllAncestry) {
|
|
385
|
+
var _this$checkAllAncestr2 = _this.checkAllAncestry(nodeId, codigos, true),
|
|
386
|
+
updatedIdsWithAncestryIds = _this$checkAllAncestr2.updatedIdsWithAncestryIds,
|
|
387
|
+
requiredParentsIds = _this$checkAllAncestr2.requiredParentsIds;
|
|
388
|
+
|
|
389
|
+
var updatedIdsWithChidlrenIds = _this.checkAllChildren(nodeId, true, requiredParentsIds);
|
|
390
|
+
|
|
391
|
+
selectedIds = [].concat(_toConsumableArray(updatedIdsWithAncestryIds), _toConsumableArray(updatedIdsWithChidlrenIds));
|
|
392
|
+
} else selectedIds = _this.checkAllChildren(nodeId);
|
|
393
|
+
} else if (allowCheckAllAncestry) {
|
|
394
|
+
selectedIds = _this.checkAllAncestry(nodeId, codigos);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return selectedIds;
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
Object.defineProperty(_assertThisInitialized(_this), "handleUncheck", {
|
|
401
|
+
configurable: true,
|
|
402
|
+
enumerable: true,
|
|
403
|
+
writable: true,
|
|
404
|
+
value: function value(nodeId, isParent, required) {
|
|
405
|
+
var selectedIds = _this.state.selectedIds;
|
|
406
|
+
var _this$state2 = _this.state,
|
|
407
|
+
isHandlingSelectedIds = _this$state2.isHandlingSelectedIds,
|
|
408
|
+
requiredParentsIds = _this$state2.requiredParentsIds;
|
|
409
|
+
var _this$props2 = _this.props,
|
|
410
|
+
allowCheckAllChildren = _this$props2.allowCheckAllChildren,
|
|
411
|
+
allowCheckAllAncestry = _this$props2.allowCheckAllAncestry;
|
|
412
|
+
var codigos = _lodash["default"].isArray(nodeId) ? nodeId : [nodeId];
|
|
413
|
+
selectedIds = selectedIds.filter(function (id) {
|
|
414
|
+
return !codigos.includes(id);
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
if (isParent && isHandlingSelectedIds && allowCheckAllChildren) {
|
|
418
|
+
if (allowCheckAllAncestry) {
|
|
419
|
+
var updatedSelectedIds = _this.updateAncestryAndSelectedIds(nodeId, codigos, requiredParentsIds);
|
|
420
|
+
|
|
421
|
+
selectedIds = _this.uncheckAllChildren(nodeId, updatedSelectedIds);
|
|
422
|
+
if (required) _this.uncheckRequiredChildren(nodeId, codigos, requiredParentsIds);
|
|
423
|
+
} else selectedIds = _this.uncheckAllChildren(nodeId);
|
|
424
|
+
} else if (allowCheckAllAncestry) {
|
|
425
|
+
selectedIds = _this.updateAncestryAndSelectedIds(nodeId, codigos, requiredParentsIds);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return selectedIds;
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
Object.defineProperty(_assertThisInitialized(_this), "updateSelectedIds", {
|
|
432
|
+
configurable: true,
|
|
433
|
+
enumerable: true,
|
|
434
|
+
writable: true,
|
|
435
|
+
value: function value(nodeId, checked, isParent, required) {
|
|
112
436
|
var selectedIds = _this.state.selectedIds;
|
|
113
437
|
var onSelectedIdsChange = _this.props.onSelectedIdsChange;
|
|
114
|
-
var codigos = _lodash["default"].isArray(ids) ? ids : [ids];
|
|
115
438
|
|
|
116
439
|
if (checked) {
|
|
117
|
-
selectedIds =
|
|
440
|
+
selectedIds = _this.handleCheck(nodeId, isParent);
|
|
118
441
|
} else {
|
|
119
|
-
selectedIds =
|
|
120
|
-
return !codigos.includes(id);
|
|
121
|
-
});
|
|
442
|
+
selectedIds = _this.handleUncheck(nodeId, isParent, required);
|
|
122
443
|
}
|
|
123
444
|
|
|
124
445
|
_this.setState({
|
|
@@ -127,37 +448,90 @@ var TreeView = /*#__PURE__*/function (_Component) {
|
|
|
127
448
|
|
|
128
449
|
if (onSelectedIdsChange) onSelectedIdsChange(selectedIds);
|
|
129
450
|
}
|
|
130
|
-
})
|
|
451
|
+
});
|
|
452
|
+
Object.defineProperty(_assertThisInitialized(_this), "buildTree", {
|
|
131
453
|
configurable: true,
|
|
132
454
|
enumerable: true,
|
|
133
455
|
writable: true,
|
|
134
456
|
value: function value(node) {
|
|
135
457
|
var parentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
136
|
-
var
|
|
458
|
+
var ids = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
459
|
+
var _this$props3 = _this.props,
|
|
460
|
+
nodeRightElements = _this$props3.nodeRightElements,
|
|
461
|
+
onNodeClick = _this$props3.onNodeClick,
|
|
462
|
+
nodeElementsValidations = _this$props3.nodeElementsValidations,
|
|
463
|
+
nodeToolbarElements = _this$props3.nodeToolbarElements,
|
|
464
|
+
nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
|
|
465
|
+
alwaysShowArrow = _this$props3.alwaysShowArrow;
|
|
137
466
|
var childrenIds = [];
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
467
|
+
|
|
468
|
+
if (node.itens && node.itens.length > 0) {
|
|
469
|
+
childrenIds = node.itens.map(function (i) {
|
|
470
|
+
return i.id;
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
if (ids) {
|
|
474
|
+
var idWithChildren = {};
|
|
475
|
+
idWithChildren[node.id] = childrenIds;
|
|
476
|
+
Object.assign(ids, idWithChildren);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
141
480
|
return /*#__PURE__*/_react["default"].createElement(_Node["default"], {
|
|
142
481
|
key: "node-".concat(node.id),
|
|
143
482
|
node: node,
|
|
483
|
+
alwaysShowArrow: alwaysShowArrow,
|
|
144
484
|
childrenIds: childrenIds,
|
|
145
|
-
|
|
485
|
+
isParent: node.itens && node.itens.length > 0,
|
|
486
|
+
parentId: parentId,
|
|
487
|
+
nodeRightElements: nodeRightElements,
|
|
488
|
+
nodeToolbarElements: nodeToolbarElements,
|
|
489
|
+
nodeElementsValidations: nodeElementsValidations,
|
|
490
|
+
nodeMenuButtonSize: nodeMenuButtonSize,
|
|
491
|
+
onNodeClick: onNodeClick,
|
|
492
|
+
handlerOnNodeOpen: _this.handleOnNodeOpen
|
|
146
493
|
}, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
|
|
147
|
-
return _this.buildTree(nodeitem,
|
|
494
|
+
return _this.buildTree(nodeitem, node.id, ids);
|
|
148
495
|
}));
|
|
149
496
|
}
|
|
150
|
-
})
|
|
497
|
+
});
|
|
498
|
+
_this.idsWithChildren = {};
|
|
499
|
+
_this.state = {
|
|
500
|
+
data: _this.props.data,
|
|
501
|
+
propSelectedIds: _this.props.selectedIds,
|
|
502
|
+
selectedIds: _this.props.selectedIds,
|
|
503
|
+
isHandlingSelectedIds: false,
|
|
504
|
+
requiredParentsIds: [],
|
|
505
|
+
alreadyOpenedIds: []
|
|
506
|
+
};
|
|
507
|
+
return _this;
|
|
151
508
|
}
|
|
152
509
|
|
|
153
510
|
_createClass(TreeView, [{
|
|
511
|
+
key: "componentDidMount",
|
|
512
|
+
value: function componentDidMount() {
|
|
513
|
+
this.buildTree(this.state.data, undefined, this.idsWithChildren);
|
|
514
|
+
}
|
|
515
|
+
}, {
|
|
516
|
+
key: "componentDidUpdate",
|
|
517
|
+
value: function componentDidUpdate(prevProps, prevState) {
|
|
518
|
+
var _this$state3 = this.state,
|
|
519
|
+
selectedIds = _this$state3.selectedIds,
|
|
520
|
+
propSelectedIds = _this$state3.propSelectedIds;
|
|
521
|
+
var allowCheckAllAncestry = this.props.allowCheckAllAncestry;
|
|
522
|
+
|
|
523
|
+
var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), prevState.propSelectedIds.sort());
|
|
524
|
+
|
|
525
|
+
if (allowCheckAllAncestry && !isSameSelectedIds) this.handleNewSelectedIds(selectedIds);
|
|
526
|
+
}
|
|
527
|
+
}, {
|
|
154
528
|
key: "render",
|
|
155
529
|
value: function render() {
|
|
156
|
-
var _this$
|
|
157
|
-
customClass = _this$
|
|
158
|
-
bordered = _this$
|
|
159
|
-
children = _this$
|
|
160
|
-
styleForContainer = _this$
|
|
530
|
+
var _this$props4 = this.props,
|
|
531
|
+
customClass = _this$props4.customClass,
|
|
532
|
+
bordered = _this$props4.bordered,
|
|
533
|
+
children = _this$props4.children,
|
|
534
|
+
styleForContainer = _this$props4.styleForContainer;
|
|
161
535
|
var data = this.state.data;
|
|
162
536
|
return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Provider, {
|
|
163
537
|
value: this.getContextValues()
|
|
@@ -168,6 +542,25 @@ var TreeView = /*#__PURE__*/function (_Component) {
|
|
|
168
542
|
className: "treeviewcontainer ".concat(bordered && '-bordered')
|
|
169
543
|
}, this.buildTree(data))));
|
|
170
544
|
}
|
|
545
|
+
}], [{
|
|
546
|
+
key: "getDerivedStateFromProps",
|
|
547
|
+
value: function getDerivedStateFromProps(props, state) {
|
|
548
|
+
var data = props.data,
|
|
549
|
+
selectedIds = props.selectedIds;
|
|
550
|
+
var propSelectedIds = state.propSelectedIds;
|
|
551
|
+
|
|
552
|
+
var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), selectedIds.sort());
|
|
553
|
+
|
|
554
|
+
if (data !== state.data || !isSameSelectedIds) {
|
|
555
|
+
return {
|
|
556
|
+
data: data,
|
|
557
|
+
selectedIds: selectedIds,
|
|
558
|
+
propSelectedIds: selectedIds
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
return null;
|
|
563
|
+
}
|
|
171
564
|
}]);
|
|
172
565
|
|
|
173
566
|
return TreeView;
|
|
@@ -181,23 +574,43 @@ TreeView.propTypes = {
|
|
|
181
574
|
labelPropName: _propTypes["default"].string.isRequired,
|
|
182
575
|
parentPropName: _propTypes["default"].string.isRequired,
|
|
183
576
|
startNodesOpened: _propTypes["default"].bool,
|
|
577
|
+
alwaysShowArrow: _propTypes["default"].bool,
|
|
184
578
|
selectedIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
|
|
185
579
|
requiredIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
|
|
186
580
|
showCheckBox: _propTypes["default"].bool,
|
|
187
581
|
onSelectedIdsChange: _propTypes["default"].func,
|
|
188
582
|
children: _propTypes["default"].instanceOf(Object),
|
|
189
|
-
styleForContainer: _propTypes["default"].object
|
|
583
|
+
styleForContainer: _propTypes["default"].object,
|
|
584
|
+
allowCheckAllChildren: _propTypes["default"].bool,
|
|
585
|
+
allowCheckAllAncestry: _propTypes["default"].bool,
|
|
586
|
+
defaultDisabledTooltip: _propTypes["default"].string,
|
|
587
|
+
nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
|
|
588
|
+
nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
|
|
589
|
+
nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
|
|
590
|
+
onNodeClick: _propTypes["default"].func,
|
|
591
|
+
onNodeOpen: _propTypes["default"].func,
|
|
592
|
+
nodeElementsValidations: _propTypes["default"].object
|
|
190
593
|
};
|
|
191
594
|
TreeView.defaultProps = {
|
|
192
595
|
customClass: '',
|
|
193
596
|
bordered: false,
|
|
194
597
|
startNodesOpened: false,
|
|
598
|
+
alwaysShowArrow: false,
|
|
195
599
|
selectedIds: [],
|
|
196
600
|
requiredIds: [],
|
|
197
601
|
showCheckBox: false,
|
|
198
602
|
onSelectedIdsChange: undefined,
|
|
199
603
|
children: undefined,
|
|
200
|
-
styleForContainer: {}
|
|
604
|
+
styleForContainer: {},
|
|
605
|
+
allowCheckAllChildren: false,
|
|
606
|
+
allowCheckAllAncestry: false,
|
|
607
|
+
defaultDisabledTooltip: '',
|
|
608
|
+
nodeRightElements: undefined,
|
|
609
|
+
nodeToolbarElements: undefined,
|
|
610
|
+
nodeMenuButtonSize: 'small',
|
|
611
|
+
onNodeClick: undefined,
|
|
612
|
+
onNodeOpen: undefined,
|
|
613
|
+
nodeElementsValidations: undefined
|
|
201
614
|
};
|
|
202
615
|
var _default = TreeView;
|
|
203
616
|
exports["default"] = _default;
|