linear-react-components-ui 0.4.75 → 0.4.76-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.
Files changed (131) hide show
  1. package/.eslintrc.js +2 -5
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +8 -9
  4. package/README.md +33 -0
  5. package/config/jest/cssTransform.js +14 -0
  6. package/config/jest/fileTransform.js +12 -0
  7. package/config/jest/storageMock.js +40 -0
  8. package/jest.config.js +18 -0
  9. package/lib/alerts/alert.spec.js +133 -0
  10. package/lib/assets/styles/dropdown.scss +28 -2
  11. package/lib/assets/styles/effects.scss +12 -0
  12. package/lib/assets/styles/floatMenu.scss +0 -1
  13. package/lib/assets/styles/multiSelect.scss +105 -0
  14. package/lib/assets/styles/panel.scss +0 -1
  15. package/lib/assets/styles/periodpicker.scss +65 -0
  16. package/lib/assets/styles/popover.scss +9 -11
  17. package/lib/assets/styles/progress.scss +8 -1
  18. package/lib/assets/styles/select.scss +1 -0
  19. package/lib/assets/styles/table.scss +13 -5
  20. package/lib/assets/styles/tabs.scss +79 -44
  21. package/lib/assets/styles/treeview.scss +32 -0
  22. package/lib/avatar/avatar.spec.js +190 -0
  23. package/lib/avatar/index.js +6 -2
  24. package/lib/badge/badge.spec.js +127 -0
  25. package/lib/badge/index.js +3 -5
  26. package/lib/buttons/DefaultButton.js +7 -1
  27. package/lib/buttons/buttons.spec.js +504 -0
  28. package/lib/calendar/calendar.spec.js +171 -0
  29. package/lib/checkbox/Label.js +37 -0
  30. package/lib/checkbox/checkbox.spec.js +215 -0
  31. package/lib/checkbox/index.js +21 -6
  32. package/lib/dialog/Custom.js +7 -1
  33. package/lib/dialog/base/index.js +18 -6
  34. package/lib/dialog/dialog.spec.js +488 -0
  35. package/lib/dialog/form/index.js +23 -4
  36. package/lib/drawer/Drawer.js +3 -0
  37. package/lib/drawer/Drawer.spec.js +258 -0
  38. package/lib/drawer/Header.js +4 -1
  39. package/lib/drawer/index.js +4 -1
  40. package/lib/dropdown/Popup.js +1 -0
  41. package/lib/dropdown/dropdown.spec.js +168 -0
  42. package/lib/dropdown/withDropdown.js +10 -4
  43. package/lib/fieldset/fieldset.spec.js +329 -0
  44. package/lib/form/Field.js +2 -0
  45. package/lib/form/FieldNumber.js +10 -2
  46. package/lib/form/FieldPeriod.js +100 -0
  47. package/lib/form/form.spec.js +285 -0
  48. package/lib/form/helpers.js +9 -1
  49. package/lib/form/index.js +209 -222
  50. package/lib/form/withFieldHOC.js +2 -0
  51. package/lib/form/withFormSecurity.js +106 -0
  52. package/lib/gridlayout/GridRow.js +1 -1
  53. package/lib/gridlayout/gridLayout.spec.js +169 -0
  54. package/lib/icons/helper.js +16 -0
  55. package/lib/icons/icons.spec.js +86 -0
  56. package/lib/icons/index.js +2 -0
  57. package/lib/inputs/base/InputTextBase.js +24 -5
  58. package/lib/inputs/base/base.spec.js +690 -0
  59. package/lib/inputs/base/helpers.js +19 -3
  60. package/lib/inputs/color/color_input.spec.js +174 -0
  61. package/lib/inputs/color/index.js +2 -2
  62. package/lib/inputs/date/Dropdown.js +3 -3
  63. package/lib/inputs/date/date.spec.js +344 -0
  64. package/lib/inputs/date/helpers.js +36 -0
  65. package/lib/inputs/date/index.js +11 -9
  66. package/lib/inputs/mask/Cpf.js +9 -9
  67. package/lib/inputs/mask/input_mask.spec.js +590 -0
  68. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  69. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  70. package/lib/inputs/multiSelect/helper.js +18 -0
  71. package/lib/inputs/multiSelect/index.js +343 -0
  72. package/lib/inputs/number/BaseNumber.js +1 -1
  73. package/lib/inputs/number/index.js +7 -5
  74. package/lib/inputs/number/numberfield.spec.js +215 -0
  75. package/lib/inputs/period/Dialog.js +38 -0
  76. package/lib/inputs/period/Dropdown.js +90 -0
  77. package/lib/inputs/period/PeriodList.js +79 -0
  78. package/lib/inputs/period/helper.js +118 -0
  79. package/lib/inputs/period/index.js +490 -0
  80. package/lib/inputs/search/search_input.spec.js +209 -0
  81. package/lib/inputs/select/Dropdown.js +4 -4
  82. package/lib/inputs/select/index.js +26 -3
  83. package/lib/inputs/select/multiple/index.js +9 -7
  84. package/lib/inputs/select/select.spec.js +391 -0
  85. package/lib/inputs/select/simple/index.js +30 -18
  86. package/lib/inputs/text/textfield.spec.js +215 -0
  87. package/lib/inputs/textarea/textarea.spec.js +59 -0
  88. package/lib/internals/withTooltip.js +86 -82
  89. package/lib/labelMessages/index.js +3 -2
  90. package/lib/labelMessages/labelMessages.spec.js +176 -0
  91. package/lib/labels/label.spec.js +162 -0
  92. package/lib/list/Item.js +3 -3
  93. package/lib/list/index.js +21 -10
  94. package/lib/list/list.spec.js +611 -0
  95. package/lib/menus/float/MenuItem.js +25 -8
  96. package/lib/menus/float/float-menu.spec.js +221 -0
  97. package/lib/menus/sidenav/index.js +7 -3
  98. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  99. package/lib/menus/sidenav/sidenav.spec.js +312 -0
  100. package/lib/noPermission/index.js +2 -1
  101. package/lib/panel/panel.spec.js +216 -0
  102. package/lib/popover/index.js +2 -1
  103. package/lib/popover/popover.spec.js +146 -0
  104. package/lib/progress/Bar.js +40 -9
  105. package/lib/progress/index.js +12 -4
  106. package/lib/progress/progress.spec.js +86 -0
  107. package/lib/radio/radio.spec.js +189 -0
  108. package/lib/spinner/SpinnerLoading.js +14 -24
  109. package/lib/spinner/index.js +6 -1
  110. package/lib/spinner/spinner.spec.js +152 -0
  111. package/lib/split/Split.js +10 -12
  112. package/lib/split/split.spec.js +151 -0
  113. package/lib/table/Header.js +3 -1
  114. package/lib/table/Row.js +2 -5
  115. package/lib/table/index.js +1 -4
  116. package/lib/table/table.spec.js +352 -0
  117. package/lib/tabs/DropdownItems.js +84 -0
  118. package/lib/tabs/Menu.js +18 -5
  119. package/lib/tabs/MenuItems.js +7 -7
  120. package/lib/tabs/Panel.js +1 -3
  121. package/lib/tabs/index.js +151 -20
  122. package/lib/tabs/tabs.spec.js +349 -0
  123. package/lib/toolbar/index.js +8 -4
  124. package/lib/toolbar/toolbar.spec.js +394 -0
  125. package/lib/tooltip/index.js +20 -6
  126. package/lib/tooltip/tooltip.spec.js +203 -0
  127. package/lib/treeview/Node.js +347 -48
  128. package/lib/treeview/index.js +456 -35
  129. package/lib/treeview/treeview.spec.js +261 -0
  130. package/package.json +19 -9
  131. package/.DS_Store +0 -0
@@ -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,92 @@ 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,
466
+ startNodesOpened = _this$props3.startNodesOpened;
137
467
  var childrenIds = [];
138
- if (node.itens && node.itens.length > 0) childrenIds = node.itens.map(function (i) {
139
- return i.id;
140
- });
468
+
469
+ if (node.itens && node.itens.length > 0) {
470
+ childrenIds = node.itens.map(function (i) {
471
+ return i.id;
472
+ });
473
+
474
+ if (ids) {
475
+ var idWithChildren = {};
476
+ idWithChildren[node.id] = childrenIds;
477
+ Object.assign(ids, idWithChildren);
478
+ }
479
+ }
480
+
141
481
  return /*#__PURE__*/_react["default"].createElement(_Node["default"], {
142
482
  key: "node-".concat(node.id),
143
483
  node: node,
484
+ startNodesOpened: startNodesOpened,
485
+ alwaysShowArrow: alwaysShowArrow,
144
486
  childrenIds: childrenIds,
145
- parentId: parentId
487
+ isParent: node.itens && node.itens.length > 0,
488
+ parentId: parentId,
489
+ nodeRightElements: nodeRightElements,
490
+ nodeToolbarElements: nodeToolbarElements,
491
+ nodeElementsValidations: nodeElementsValidations,
492
+ nodeMenuButtonSize: nodeMenuButtonSize,
493
+ onNodeClick: onNodeClick,
494
+ handlerOnNodeOpen: _this.handleOnNodeOpen
146
495
  }, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
147
- return _this.buildTree(nodeitem, nodeitem[parentPropName]);
496
+ return _this.buildTree(nodeitem, node.id, ids);
148
497
  }));
149
498
  }
150
- }), _temp));
499
+ });
500
+ _this.idsWithChildren = {};
501
+ _this.state = {
502
+ data: _this.props.data,
503
+ propSelectedIds: _this.props.selectedIds,
504
+ selectedIds: _this.props.selectedIds,
505
+ isHandlingSelectedIds: false,
506
+ requiredParentsIds: [],
507
+ alreadyOpenedIds: []
508
+ };
509
+ return _this;
151
510
  }
152
511
 
153
512
  _createClass(TreeView, [{
513
+ key: "componentDidMount",
514
+ value: function componentDidMount() {
515
+ this.buildTree(this.state.data, undefined, this.idsWithChildren);
516
+ }
517
+ }, {
518
+ key: "componentDidUpdate",
519
+ value: function componentDidUpdate(prevProps, prevState) {
520
+ var _this$state3 = this.state,
521
+ selectedIds = _this$state3.selectedIds,
522
+ propSelectedIds = _this$state3.propSelectedIds;
523
+ var allowCheckAllAncestry = this.props.allowCheckAllAncestry;
524
+
525
+ var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), prevState.propSelectedIds.sort());
526
+
527
+ if (allowCheckAllAncestry && !isSameSelectedIds) this.handleNewSelectedIds(selectedIds);
528
+ }
529
+ }, {
154
530
  key: "render",
155
531
  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;
532
+ var _this$props4 = this.props,
533
+ customClass = _this$props4.customClass,
534
+ bordered = _this$props4.bordered,
535
+ children = _this$props4.children,
536
+ styleForContainer = _this$props4.styleForContainer;
161
537
  var data = this.state.data;
162
538
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Provider, {
163
539
  value: this.getContextValues()
@@ -168,6 +544,29 @@ var TreeView = /*#__PURE__*/function (_Component) {
168
544
  className: "treeviewcontainer ".concat(bordered && '-bordered')
169
545
  }, this.buildTree(data))));
170
546
  }
547
+ }], [{
548
+ key: "getDerivedStateFromProps",
549
+ value: function getDerivedStateFromProps(props, state) {
550
+ var data = props.data,
551
+ selectedIds = props.selectedIds,
552
+ enableDynamicData = props.enableDynamicData;
553
+ var propSelectedIds = state.propSelectedIds;
554
+
555
+ var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), selectedIds.sort());
556
+
557
+ if (enableDynamicData && data !== state.data) {
558
+ return {
559
+ data: data
560
+ };
561
+ } else if (!isSameSelectedIds) {
562
+ return {
563
+ selectedIds: selectedIds,
564
+ propSelectedIds: selectedIds
565
+ };
566
+ }
567
+
568
+ return null;
569
+ }
171
570
  }]);
172
571
 
173
572
  return TreeView;
@@ -181,23 +580,45 @@ TreeView.propTypes = {
181
580
  labelPropName: _propTypes["default"].string.isRequired,
182
581
  parentPropName: _propTypes["default"].string.isRequired,
183
582
  startNodesOpened: _propTypes["default"].bool,
583
+ alwaysShowArrow: _propTypes["default"].bool,
184
584
  selectedIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
185
585
  requiredIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
186
586
  showCheckBox: _propTypes["default"].bool,
187
587
  onSelectedIdsChange: _propTypes["default"].func,
188
588
  children: _propTypes["default"].instanceOf(Object),
189
- styleForContainer: _propTypes["default"].object
589
+ styleForContainer: _propTypes["default"].object,
590
+ allowCheckAllChildren: _propTypes["default"].bool,
591
+ allowCheckAllAncestry: _propTypes["default"].bool,
592
+ defaultDisabledTooltip: _propTypes["default"].string,
593
+ nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
594
+ nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
595
+ nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
596
+ onNodeClick: _propTypes["default"].func,
597
+ onNodeOpen: _propTypes["default"].func,
598
+ nodeElementsValidations: _propTypes["default"].object,
599
+ enableDynamicData: _propTypes["default"].bool
190
600
  };
191
601
  TreeView.defaultProps = {
192
602
  customClass: '',
193
603
  bordered: false,
194
604
  startNodesOpened: false,
605
+ alwaysShowArrow: false,
195
606
  selectedIds: [],
196
607
  requiredIds: [],
197
608
  showCheckBox: false,
198
609
  onSelectedIdsChange: undefined,
199
610
  children: undefined,
200
- styleForContainer: {}
611
+ styleForContainer: {},
612
+ allowCheckAllChildren: false,
613
+ allowCheckAllAncestry: false,
614
+ defaultDisabledTooltip: '',
615
+ nodeRightElements: undefined,
616
+ nodeToolbarElements: undefined,
617
+ nodeMenuButtonSize: 'small',
618
+ onNodeClick: undefined,
619
+ onNodeOpen: undefined,
620
+ nodeElementsValidations: undefined,
621
+ enableDynamicData: false
201
622
  };
202
623
  var _default = TreeView;
203
624
  exports["default"] = _default;