linear-react-components-ui 0.4.76-rc.9 → 0.4.76

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 (120) hide show
  1. package/.husky/pre-commit +2 -2
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +1 -2
  4. package/README.md +40 -5
  5. package/lib/assets/styles/button.scss +19 -10
  6. package/lib/assets/styles/checkbox.scss +92 -70
  7. package/lib/assets/styles/commons.scss +36 -0
  8. package/lib/assets/styles/drawers.scss +22 -6
  9. package/lib/assets/styles/dropdown.scss +28 -2
  10. package/lib/assets/styles/effects.scss +32 -0
  11. package/lib/assets/styles/floatMenu.scss +0 -1
  12. package/lib/assets/styles/gridlayout.scss +2 -1
  13. package/lib/assets/styles/input.scss +21 -0
  14. package/lib/assets/styles/label.scss +9 -1
  15. package/lib/assets/styles/list.scss +8 -0
  16. package/lib/assets/styles/multiSelect.scss +105 -0
  17. package/lib/assets/styles/panel.scss +3 -1
  18. package/lib/assets/styles/periodpicker.scss +65 -0
  19. package/lib/assets/styles/progress.scss +8 -1
  20. package/lib/assets/styles/radio.scss +19 -0
  21. package/lib/assets/styles/select.scss +4 -3
  22. package/lib/assets/styles/sidenav.scss +11 -1
  23. package/lib/assets/styles/skeleton.scss +48 -0
  24. package/lib/assets/styles/table.scss +25 -5
  25. package/lib/assets/styles/tabs.scss +116 -75
  26. package/lib/assets/styles/treeview.scss +41 -0
  27. package/lib/assets/styles/uitour.scss +112 -0
  28. package/lib/avatar/avatar.spec.js +17 -6
  29. package/lib/avatar/index.js +1 -1
  30. package/lib/buttons/DefaultButton.js +13 -4
  31. package/lib/buttons/split_button/index.js +8 -4
  32. package/lib/checkbox/Label.js +37 -0
  33. package/lib/checkbox/checkbox.spec.js +16 -16
  34. package/lib/checkbox/index.js +33 -12
  35. package/lib/dialog/base/index.js +15 -6
  36. package/lib/dialog/form/index.js +24 -4
  37. package/lib/drawer/Drawer.js +9 -5
  38. package/lib/drawer/Header.js +15 -5
  39. package/lib/drawer/index.js +4 -1
  40. package/lib/dropdown/Popup.js +3 -2
  41. package/lib/form/Field.js +2 -0
  42. package/lib/form/FieldNumber.js +11 -3
  43. package/lib/form/FieldPeriod.js +100 -0
  44. package/lib/form/form.spec.js +8 -0
  45. package/lib/form/helpers.js +20 -1
  46. package/lib/form/index.js +220 -218
  47. package/lib/form/withFieldHOC.js +5 -1
  48. package/lib/form/withFormSecurity.js +106 -0
  49. package/lib/icons/helper.js +24 -0
  50. package/lib/inputs/base/InputTextBase.js +30 -5
  51. package/lib/inputs/base/helpers.js +13 -9
  52. package/lib/inputs/date/Dropdown.js +3 -3
  53. package/lib/inputs/date/date.spec.js +46 -36
  54. package/lib/inputs/date/helpers.js +36 -0
  55. package/lib/inputs/date/index.js +12 -10
  56. package/lib/inputs/mask/Phone.js +10 -1
  57. package/lib/inputs/mask/imaskHOC.js +2 -1
  58. package/lib/inputs/mask/input_mask.spec.js +21 -4
  59. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  60. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  61. package/lib/inputs/multiSelect/helper.js +18 -0
  62. package/lib/inputs/multiSelect/index.js +343 -0
  63. package/lib/inputs/number/BaseNumber.js +1 -1
  64. package/lib/inputs/number/index.js +7 -5
  65. package/lib/inputs/period/Dialog.js +38 -0
  66. package/lib/inputs/period/Dropdown.js +90 -0
  67. package/lib/inputs/period/PeriodList.js +79 -0
  68. package/lib/inputs/period/helper.js +118 -0
  69. package/lib/inputs/period/index.js +490 -0
  70. package/lib/inputs/search/index.js +2 -0
  71. package/lib/inputs/select/Dropdown.js +55 -65
  72. package/lib/inputs/select/helper.js +65 -2
  73. package/lib/inputs/select/index.js +26 -3
  74. package/lib/inputs/select/multiple/index.js +16 -11
  75. package/lib/inputs/select/simple/index.js +39 -24
  76. package/lib/internals/constants.js +4 -3
  77. package/lib/internals/withTooltip.js +86 -82
  78. package/lib/labels/DefaultLabel.js +7 -4
  79. package/lib/list/Item.js +35 -9
  80. package/lib/list/helpers.js +8 -3
  81. package/lib/list/index.js +172 -14
  82. package/lib/list/list.spec.js +290 -89
  83. package/lib/menus/float/MenuItem.js +25 -8
  84. package/lib/menus/sidenav/NavMenuItem.js +17 -8
  85. package/lib/menus/sidenav/index.js +59 -86
  86. package/lib/menus/sidenav/popup_menu_search/index.js +26 -17
  87. package/lib/menus/sidenav/sidenav.spec.js +86 -19
  88. package/lib/panel/Header.js +4 -3
  89. package/lib/progress/Bar.js +40 -9
  90. package/lib/progress/index.js +12 -4
  91. package/lib/radio/index.js +9 -6
  92. package/lib/skeleton/SkeletonContainer.js +42 -0
  93. package/lib/skeleton/index.js +84 -0
  94. package/lib/spinner/index.js +6 -1
  95. package/lib/split/Split.js +5 -11
  96. package/lib/table/Body.js +55 -11
  97. package/lib/table/Header.js +14 -1
  98. package/lib/table/HeaderColumn.js +26 -3
  99. package/lib/table/Row.js +19 -8
  100. package/lib/table/RowColumn.js +23 -3
  101. package/lib/table/helpers.js +11 -1
  102. package/lib/table/index.js +41 -8
  103. package/lib/tabs/DropdownItems.js +84 -0
  104. package/lib/tabs/Menu.js +12 -9
  105. package/lib/tabs/MenuItems.js +15 -9
  106. package/lib/tabs/Panel.js +1 -3
  107. package/lib/tabs/index.js +156 -22
  108. package/lib/tabs/tabs.spec.js +8 -5
  109. package/lib/toolbar/ButtonBar.js +30 -24
  110. package/lib/toolbar/LabelBar.js +22 -27
  111. package/lib/toolbar/helpers.js +12 -0
  112. package/lib/toolbar/index.js +24 -9
  113. package/lib/tooltip/index.js +20 -7
  114. package/lib/treeview/Node.js +364 -49
  115. package/lib/treeview/index.js +475 -36
  116. package/lib/treeview/treeview.spec.js +18 -0
  117. package/lib/uitour/helpers.js +15 -0
  118. package/lib/uitour/index.js +271 -0
  119. package/lib/uitour/uitour.spec.js +176 -0
  120. package/package.json +9 -8
@@ -11,18 +11,44 @@ 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
+
30
+ var _SpinnerLoading = _interopRequireDefault(require("../spinner/SpinnerLoading"));
31
+
20
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
33
 
22
34
  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
35
 
24
36
  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
37
 
38
+ 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); }
39
+
40
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
41
+
42
+ 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."); }
43
+
44
+ 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); }
45
+
46
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
47
+
48
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
49
+
50
+ 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; }
51
+
26
52
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27
53
 
28
54
  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); } }
@@ -43,109 +69,398 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
43
69
 
44
70
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
45
71
 
72
+ var nodeHasItens = function nodeHasItens(node) {
73
+ return node.itens && node.itens.length > 0;
74
+ };
75
+
46
76
  var TreeNode = /*#__PURE__*/function (_Component) {
47
77
  _inherits(TreeNode, _Component);
48
78
 
49
79
  var _super = _createSuper(TreeNode);
50
80
 
51
- function TreeNode(props, context) {
81
+ function TreeNode(props) {
52
82
  var _this;
53
83
 
54
84
  _classCallCheck(this, TreeNode);
55
85
 
56
86
  _this = _super.call(this, props);
57
- Object.defineProperty(_assertThisInitialized(_this), "getSpan", {
58
- configurable: true,
59
- enumerable: true,
60
- writable: true,
61
- value: function value() {
62
- var node = _this.props.node;
63
-
64
- var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
65
-
66
- if (node.itens && node.itens.length > 0) {
67
- span = /*#__PURE__*/_react["default"].createElement("span", {
68
- onKeyPress: null,
69
- tabIndex: 0,
70
- role: "button",
71
- className: "opencloseicon",
72
- onClick: _this.openCloseTree
73
- }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
74
- name: _this.state.isVisible ? 'up' : 'down',
75
- size: 10
76
- }));
77
- }
78
87
 
79
- return span;
80
- }
81
- });
82
- Object.defineProperty(_assertThisInitialized(_this), "openCloseTree", {
83
- configurable: true,
84
- enumerable: true,
85
- writable: true,
86
- value: function value() {
87
- _this.setState({
88
- isVisible: !_this.state.isVisible
89
- });
90
- }
91
- });
88
+ _initialiseProps.call(_assertThisInitialized(_this));
89
+
90
+ _this.labelRef = /*#__PURE__*/_react["default"].createRef();
91
+ var node = props.node,
92
+ startNodesOpened = props.startNodesOpened;
92
93
  _this.state = {
93
- isVisible: context.startNodesOpened
94
+ node: node,
95
+ isVisible: startNodesOpened && nodeHasItens(node),
96
+ wasOpened: startNodesOpened && nodeHasItens(node),
97
+ showNodeElements: false,
98
+ keepMenuOpened: false
94
99
  };
95
100
  return _this;
96
101
  }
97
102
 
98
103
  _createClass(TreeNode, [{
104
+ key: "componentDidMount",
105
+ value: function componentDidMount() {
106
+ var _this$props = this.props,
107
+ isParent = _this$props.isParent,
108
+ nodeToolbarElements = _this$props.nodeToolbarElements,
109
+ nodeRightElements = _this$props.nodeRightElements;
110
+
111
+ if (isParent || nodeRightElements || nodeToolbarElements) {
112
+ this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
113
+ this.labelRef.current.addEventListener('mouseleave', this.handleShowNodeElements);
114
+ }
115
+ }
116
+ }, {
117
+ key: "componentWillUnmount",
118
+ value: function componentWillUnmount() {
119
+ var _this$props2 = this.props,
120
+ isParent = _this$props2.isParent,
121
+ nodeToolbarElements = _this$props2.nodeToolbarElements,
122
+ nodeRightElements = _this$props2.nodeRightElements;
123
+
124
+ if (isParent || nodeRightElements || nodeToolbarElements) {
125
+ this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
126
+ this.labelRef.current.removeEventListener('mouseleave', this.handleShowNodeElements);
127
+ }
128
+ }
129
+ }, {
99
130
  key: "render",
100
131
  value: function render() {
101
132
  var _this2 = this;
102
133
 
103
- var _this$props = this.props,
104
- node = _this$props.node,
105
- children = _this$props.children;
134
+ var _this$props3 = this.props,
135
+ children = _this$props3.children,
136
+ isParent = _this$props3.isParent,
137
+ onNodeClick = _this$props3.onNodeClick,
138
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
139
+ selectedNodeId = _this$props3.selectedNodeId;
140
+ var node = this.state.node;
141
+ var showNodeElements = this.state.showNodeElements;
106
142
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
107
143
  var valuePropName = _ref.valuePropName,
108
144
  labelPropName = _ref.labelPropName,
109
145
  selectedIds = _ref.selectedIds,
110
- updateSelectedIds = _ref.updateSelectedIds,
146
+ handlerUpdateSelectedIds = _ref.handlerUpdateSelectedIds,
111
147
  showCheckBox = _ref.showCheckBox,
112
148
  requiredIds = _ref.requiredIds,
113
- disabled = _ref.disabled;
114
- var required = requiredIds.includes(node[valuePropName]);
149
+ disabled = _ref.disabled,
150
+ handlerToggleCheckChildren = _ref.handlerToggleCheckChildren,
151
+ allowCheckAllChildren = _ref.allowCheckAllChildren,
152
+ requiredParentsIds = _ref.requiredParentsIds,
153
+ defaultDisabledTooltip = _ref.defaultDisabledTooltip;
154
+ var requiredNodes = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
155
+ var required = requiredNodes.includes(node[valuePropName]);
115
156
  var checked = selectedIds.includes(node[valuePropName]) || required;
116
157
  return /*#__PURE__*/_react["default"].createElement("li", {
117
158
  className: "treeviewitem"
118
159
  }, _this2.getSpan(), /*#__PURE__*/_react["default"].createElement("div", {
119
- className: "label"
160
+ className: "label",
161
+ style: {
162
+ textDecoration: !onNodeClick ? 'none' : null,
163
+ backgroundColor: selectedNodeId === node.id ? 'rgb(209, 209, 209)' : null
164
+ },
165
+ ref: _this2.labelRef,
166
+ role: "button",
167
+ onKeyPress: null,
168
+ tabIndex: "-1",
169
+ onClick: onNodeClick ? function () {
170
+ return onNodeClick(node);
171
+ } : null
120
172
  }, showCheckBox ? /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
121
173
  checked: checked,
122
174
  disabled: required || disabled,
123
175
  value: "".concat(node[valuePropName]),
124
176
  label: node[labelPropName],
125
- onChange: disabled ? undefined : function (e) {
126
- updateSelectedIds(node.id, e.target.checked);
177
+ tooltip: required ? defaultDisabledTooltip : '',
178
+ onChange: disabled || required ? undefined : function (e) {
179
+ handlerUpdateSelectedIds(node.id, e.target.checked, isParent);
180
+ }
181
+ }) : node[labelPropName], allowCheckAllChildren && showNodeElements && isParent ? /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
182
+ dropdown: true,
183
+ dropdownAlign: "left",
184
+ size: nodeMenuButtonSize,
185
+ onClick: function onClick() {
186
+ _this2.setState({
187
+ keepMenuOpened: !_this2.state.keepMenuOpened
188
+ });
189
+ },
190
+ showIconDropdown: false,
191
+ iconName: "menu",
192
+ customClass: "node-menu",
193
+ boxShadow: false
194
+ }, /*#__PURE__*/_react["default"].createElement(_list["default"], {
195
+ condensed: true
196
+ }, /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
197
+ text: "Marcar todos",
198
+ onClick: function onClick() {
199
+ handlerToggleCheckChildren(node.id, true);
200
+
201
+ _this2.setState({
202
+ showNodeElements: false,
203
+ keepMenuOpened: false
204
+ });
127
205
  }
128
- }) : node[labelPropName]), /*#__PURE__*/_react["default"].createElement("ul", {
206
+ }), /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
207
+ text: "Desmarcar todos",
208
+ onClick: function onClick() {
209
+ handlerToggleCheckChildren(node.id, false, required);
210
+
211
+ _this2.setState({
212
+ showNodeElements: false,
213
+ keepMenuOpened: false
214
+ });
215
+ }
216
+ }))) : null, showNodeElements && _this2.returnNodeRightElements(), showNodeElements && _this2.returnNodeToolbarElements()), /*#__PURE__*/_react["default"].createElement("ul", {
129
217
  className: "nodelist"
130
218
  }, _this2.state.isVisible && children));
131
219
  });
132
220
  }
221
+ }], [{
222
+ key: "getDerivedStateFromProps",
223
+ value: function getDerivedStateFromProps(props, state) {
224
+ var node = props.node,
225
+ startNodesOpened = props.startNodesOpened;
226
+
227
+ if (node !== state.node) {
228
+ return {
229
+ node: node,
230
+ isVisible: startNodesOpened && nodeHasItens(node),
231
+ wasOpened: startNodesOpened && nodeHasItens(node)
232
+ };
233
+ }
234
+
235
+ return null;
236
+ }
133
237
  }]);
134
238
 
135
239
  return TreeNode;
136
240
  }(_react.Component);
137
241
 
242
+ var _initialiseProps = function _initialiseProps() {
243
+ var _this3 = this;
244
+
245
+ Object.defineProperty(this, "getSpan", {
246
+ configurable: true,
247
+ enumerable: true,
248
+ writable: true,
249
+ value: function value() {
250
+ var _this3$props = _this3.props,
251
+ alwaysShowArrow = _this3$props.alwaysShowArrow,
252
+ idsInLoading = _this3$props.idsInLoading;
253
+ var node = _this3.state.node;
254
+ var isLoading = idsInLoading.includes(node.id);
255
+
256
+ var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
257
+
258
+ if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
259
+ span = /*#__PURE__*/_react["default"].createElement("span", {
260
+ onKeyPress: null,
261
+ tabIndex: 0,
262
+ role: "button",
263
+ className: isLoading ? 'loading' : 'opencloseicon',
264
+ onClick: function onClick() {
265
+ return _this3.openCloseTree(node);
266
+ }
267
+ }, isLoading ? /*#__PURE__*/_react["default"].createElement(_SpinnerLoading["default"], {
268
+ size: "35px"
269
+ }) : /*#__PURE__*/_react["default"].createElement(_icons["default"], {
270
+ name: _this3.state.isVisible ? 'up' : 'down',
271
+ size: 10
272
+ }));
273
+ }
274
+
275
+ return span;
276
+ }
277
+ });
278
+ Object.defineProperty(this, "openCloseTree", {
279
+ configurable: true,
280
+ enumerable: true,
281
+ writable: true,
282
+ value: function value(node) {
283
+ var _this3$state = _this3.state,
284
+ isVisible = _this3$state.isVisible,
285
+ wasOpened = _this3$state.wasOpened;
286
+ var handlerOnNodeOpen = _this3.props.handlerOnNodeOpen;
287
+ var nextState = {
288
+ isVisible: !isVisible
289
+ };
290
+
291
+ if (!wasOpened && handlerOnNodeOpen) {
292
+ nextState = _extends({}, nextState, {
293
+ wasOpened: true
294
+ });
295
+ handlerOnNodeOpen(node);
296
+ }
297
+
298
+ _this3.setState(nextState);
299
+ }
300
+ });
301
+ Object.defineProperty(this, "handleShowNodeElements", {
302
+ configurable: true,
303
+ enumerable: true,
304
+ writable: true,
305
+ value: function value() {
306
+ var _this3$state2 = _this3.state,
307
+ showNodeElements = _this3$state2.showNodeElements,
308
+ keepMenuOpened = _this3$state2.keepMenuOpened;
309
+ if (!showNodeElements) _this3.setState({
310
+ showNodeElements: true
311
+ });else if (showNodeElements && !keepMenuOpened) {
312
+ _this3.setState({
313
+ showNodeElements: false
314
+ });
315
+ }
316
+ }
317
+ });
318
+ Object.defineProperty(this, "updateElements", {
319
+ configurable: true,
320
+ enumerable: true,
321
+ writable: true,
322
+ value: function value(elements) {
323
+ var nodeElementsValidations = _this3.props.nodeElementsValidations;
324
+ var node = _this3.state.node;
325
+ var updatedElements = [];
326
+
327
+ if (elements) {
328
+ updatedElements = _react["default"].Children.map(elements, function (element) {
329
+ if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
330
+ var _element$props = element.props,
331
+ validationKey = _element$props.validationKey,
332
+ onNodeElementClick = _element$props.onNodeElementClick;
333
+ var elementBehavior;
334
+ var newProps = {};
335
+
336
+ if (nodeElementsValidations && validationKey) {
337
+ elementBehavior = _this3.validateNodeElement(validationKey);
338
+ }
339
+
340
+ if (onNodeElementClick) {
341
+ newProps = _extends({}, newProps, {
342
+ onClick: function onClick(e) {
343
+ onNodeElementClick(node);
344
+ if (e.stopPropagation) e.stopPropagation();
345
+ },
346
+ onNodeElementClick: null
347
+ });
348
+ }
349
+
350
+ return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
351
+ }
352
+
353
+ return element;
354
+ });
355
+ }
356
+
357
+ return updatedElements;
358
+ }
359
+ });
360
+ Object.defineProperty(this, "returnNodeRightElements", {
361
+ configurable: true,
362
+ enumerable: true,
363
+ writable: true,
364
+ value: function value() {
365
+ var nodeRightElements = _this3.props.nodeRightElements;
366
+
367
+ var updatedNodeRightElements = _this3.updateElements(nodeRightElements).map(function (element) {
368
+ var unvisible = element.props && 'visible' in element.props && !element.props.visible;
369
+ var style = unvisible ? {
370
+ display: 'none'
371
+ } : {};
372
+ return /*#__PURE__*/_react["default"].createElement("div", {
373
+ style: style,
374
+ key: "element-".concat(_uuid["default"].v1()),
375
+ className: "element"
376
+ }, element);
377
+ });
378
+
379
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
380
+ className: "node-rightelements"
381
+ }, updatedNodeRightElements) : null;
382
+ }
383
+ });
384
+ Object.defineProperty(this, "returnNodeToolbarElements", {
385
+ configurable: true,
386
+ enumerable: true,
387
+ writable: true,
388
+ value: function value() {
389
+ var nodeToolbarElements = _this3.props.nodeToolbarElements;
390
+
391
+ var updatedNodeRightElements = _this3.updateElements(nodeToolbarElements);
392
+
393
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
394
+ customClass: "node-toolbarelements"
395
+ }, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
396
+ }
397
+ });
398
+ Object.defineProperty(this, "validateNodeElement", {
399
+ configurable: true,
400
+ enumerable: true,
401
+ writable: true,
402
+ value: function value(validationKey) {
403
+ var nodeElementsValidations = _this3.props.nodeElementsValidations;
404
+ var node = _this3.state.node;
405
+ var validations = nodeElementsValidations[validationKey];
406
+ var options = {
407
+ disabled: {
408
+ disabled: true
409
+ },
410
+ unvisible: {
411
+ visible: false
412
+ }
413
+ };
414
+ var elementBehavior = {};
415
+
416
+ if (validations) {
417
+ validations.forEach(function (validation) {
418
+ var validator = validation.validator,
419
+ applyBehavior = validation.applyBehavior;
420
+
421
+ if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
422
+ elementBehavior = options[applyBehavior] || options.unvisible;
423
+ }
424
+ });
425
+ }
426
+
427
+ return elementBehavior;
428
+ }
429
+ });
430
+ };
431
+
138
432
  TreeNode.propTypes = {
139
433
  node: _propTypes["default"].object.isRequired,
140
434
  children: _propTypes["default"].any.isRequired,
141
435
  childrenIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
142
- parentId: _propTypes["default"].number,
143
- disabled: _propTypes["default"].bool
436
+ parentId: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
437
+ disabled: _propTypes["default"].bool,
438
+ isParent: _propTypes["default"].bool,
439
+ alwaysShowArrow: _propTypes["default"].bool,
440
+ nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
441
+ nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
442
+ nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
443
+ onNodeClick: _propTypes["default"].func,
444
+ handlerOnNodeOpen: _propTypes["default"].func,
445
+ nodeElementsValidations: _propTypes["default"].object,
446
+ startNodesOpened: _propTypes["default"].bool.isRequired,
447
+ idsInLoading: _propTypes["default"].arrayOf(_propTypes["default"].number),
448
+ selectedNodeId: _propTypes["default"].number
144
449
  };
145
450
  TreeNode.defaultProps = {
146
451
  childrenIds: [],
147
452
  parentId: undefined,
148
- disabled: false
453
+ disabled: false,
454
+ isParent: false,
455
+ alwaysShowArrow: false,
456
+ nodeRightElements: undefined,
457
+ nodeToolbarElements: undefined,
458
+ nodeMenuButtonSize: 'small',
459
+ onNodeClick: undefined,
460
+ handlerOnNodeOpen: undefined,
461
+ nodeElementsValidations: undefined,
462
+ idsInLoading: [],
463
+ selectedNodeId: undefined
149
464
  };
150
465
  TreeNode.contextType = _constants.TreeviewContext;
151
466
  var _default = TreeNode;