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.
@@ -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;
@@ -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("span", {
125
- className: "checkbox-description"
126
- }, label)), hint && /*#__PURE__*/_react["default"].createElement("div", {
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 === permissionAttr[0].onDenied;
62
+ result[option] = hasPermission ? false : option === permissionsAttr[0].onDenied;
63
63
  });
64
64
  return result;
65
65
  };
@@ -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 node = _this.props.node;
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: _this.openCloseTree
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.setState({
88
- isVisible: !_this.state.isVisible
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$props = this.props,
104
- node = _this$props.node,
105
- children = _this$props.children;
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
- updateSelectedIds = _ref.updateSelectedIds,
316
+ handlerUpdateSelectedIds = _ref.handlerUpdateSelectedIds,
111
317
  showCheckBox = _ref.showCheckBox,
112
318
  requiredIds = _ref.requiredIds,
113
- disabled = _ref.disabled;
114
- var required = requiredIds.includes(node[valuePropName]);
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
- onChange: disabled ? undefined : function (e) {
126
- updateSelectedIds(node.id, e.target.checked);
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
- }) : node[labelPropName]), /*#__PURE__*/_react["default"].createElement("ul", {
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;
@@ -78,47 +78,368 @@ var TreeView = /*#__PURE__*/function (_Component) {
78
78
 
79
79
  var _super = _createSuper(TreeView);
80
80
 
81
- function TreeView() {
82
- var _temp, _this;
81
+ function TreeView(props) {
82
+ var _this;
83
83
 
84
84
  _classCallCheck(this, TreeView);
85
85
 
86
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
87
- args[_key] = arguments[_key];
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
- return _possibleConstructorReturn(_this, (_temp = _this = _super.call.apply(_super, [this].concat(args)), Object.defineProperty(_assertThisInitialized(_this), "state", {
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
- data: _this.props.data,
96
- selectedIds: _this.props.selectedIds
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
- }), Object.defineProperty(_assertThisInitialized(_this), "getContextValues", {
132
+ });
133
+ Object.defineProperty(_assertThisInitialized(_this), "returnAllAncestryIds", {
99
134
  configurable: true,
100
135
  enumerable: true,
101
136
  writable: true,
102
- value: function value() {
103
- return _extends({}, _this.props, _this.state, {
104
- updateSelectedIds: _this.updateSelectedIds
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
- }), Object.defineProperty(_assertThisInitialized(_this), "updateSelectedIds", {
274
+ });
275
+ Object.defineProperty(_assertThisInitialized(_this), "checkAllChildren", {
108
276
  configurable: true,
109
277
  enumerable: true,
110
278
  writable: true,
111
- value: function value(ids, checked) {
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 = [].concat(_toConsumableArray(selectedIds), _toConsumableArray(codigos));
440
+ selectedIds = _this.handleCheck(nodeId, isParent);
118
441
  } else {
119
- selectedIds = selectedIds.filter(function (id) {
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
- }), Object.defineProperty(_assertThisInitialized(_this), "buildTree", {
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 parentPropName = _this.props.parentPropName;
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
- if (node.itens && node.itens.length > 0) childrenIds = node.itens.map(function (i) {
139
- return i.id;
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
- parentId: parentId
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, nodeitem[parentPropName]);
494
+ return _this.buildTree(nodeitem, node.id, ids);
148
495
  }));
149
496
  }
150
- }), _temp));
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$props = this.props,
157
- customClass = _this$props.customClass,
158
- bordered = _this$props.bordered,
159
- children = _this$props.children,
160
- styleForContainer = _this$props.styleForContainer;
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.74",
3
+ "version": "0.4.75-beta.11",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {