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
@@ -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 _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); }
37
+
38
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
39
+
40
+ 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."); }
41
+
42
+ 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); }
43
+
44
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
45
+
46
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
47
+
48
+ 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; }
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); } }
@@ -43,109 +67,384 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
43
67
 
44
68
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
45
69
 
70
+ var nodeHasItens = function nodeHasItens(node) {
71
+ return node.itens && node.itens.length > 0;
72
+ };
73
+
46
74
  var TreeNode = /*#__PURE__*/function (_Component) {
47
75
  _inherits(TreeNode, _Component);
48
76
 
49
77
  var _super = _createSuper(TreeNode);
50
78
 
51
- function TreeNode(props, context) {
79
+ function TreeNode(props) {
52
80
  var _this;
53
81
 
54
82
  _classCallCheck(this, TreeNode);
55
83
 
56
84
  _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
85
 
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
- });
86
+ _initialiseProps.call(_assertThisInitialized(_this));
87
+
88
+ _this.labelRef = /*#__PURE__*/_react["default"].createRef();
89
+ var node = props.node,
90
+ startNodesOpened = props.startNodesOpened;
92
91
  _this.state = {
93
- isVisible: context.startNodesOpened
92
+ node: node,
93
+ isVisible: startNodesOpened && nodeHasItens(node),
94
+ wasOpened: startNodesOpened && nodeHasItens(node),
95
+ showNodeElements: false,
96
+ keepMenuOpened: false
94
97
  };
95
98
  return _this;
96
99
  }
97
100
 
98
101
  _createClass(TreeNode, [{
102
+ key: "componentDidMount",
103
+ value: function componentDidMount() {
104
+ var _this$props = this.props,
105
+ isParent = _this$props.isParent,
106
+ nodeToolbarElements = _this$props.nodeToolbarElements,
107
+ nodeRightElements = _this$props.nodeRightElements;
108
+
109
+ if (isParent || nodeRightElements || nodeToolbarElements) {
110
+ this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
111
+ this.labelRef.current.addEventListener('mouseleave', this.handleShowNodeElements);
112
+ }
113
+ }
114
+ }, {
115
+ key: "componentWillUnmount",
116
+ value: function componentWillUnmount() {
117
+ var _this$props2 = this.props,
118
+ isParent = _this$props2.isParent,
119
+ nodeToolbarElements = _this$props2.nodeToolbarElements,
120
+ nodeRightElements = _this$props2.nodeRightElements;
121
+
122
+ if (isParent || nodeRightElements || nodeToolbarElements) {
123
+ this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
124
+ this.labelRef.current.removeEventListener('mouseleave', this.handleShowNodeElements);
125
+ }
126
+ }
127
+ }, {
99
128
  key: "render",
100
129
  value: function render() {
101
130
  var _this2 = this;
102
131
 
103
- var _this$props = this.props,
104
- node = _this$props.node,
105
- children = _this$props.children;
132
+ var _this$props3 = this.props,
133
+ children = _this$props3.children,
134
+ isParent = _this$props3.isParent,
135
+ onNodeClick = _this$props3.onNodeClick,
136
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize;
137
+ var node = this.state.node;
138
+ var showNodeElements = this.state.showNodeElements;
106
139
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
107
140
  var valuePropName = _ref.valuePropName,
108
141
  labelPropName = _ref.labelPropName,
109
142
  selectedIds = _ref.selectedIds,
110
- updateSelectedIds = _ref.updateSelectedIds,
143
+ handlerUpdateSelectedIds = _ref.handlerUpdateSelectedIds,
111
144
  showCheckBox = _ref.showCheckBox,
112
145
  requiredIds = _ref.requiredIds,
113
- disabled = _ref.disabled;
114
- var required = requiredIds.includes(node[valuePropName]);
146
+ disabled = _ref.disabled,
147
+ handlerToggleCheckChildren = _ref.handlerToggleCheckChildren,
148
+ allowCheckAllChildren = _ref.allowCheckAllChildren,
149
+ requiredParentsIds = _ref.requiredParentsIds,
150
+ defaultDisabledTooltip = _ref.defaultDisabledTooltip;
151
+ var requiredNodes = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
152
+ var required = requiredNodes.includes(node[valuePropName]);
115
153
  var checked = selectedIds.includes(node[valuePropName]) || required;
116
154
  return /*#__PURE__*/_react["default"].createElement("li", {
117
155
  className: "treeviewitem"
118
156
  }, _this2.getSpan(), /*#__PURE__*/_react["default"].createElement("div", {
119
- className: "label"
157
+ className: "label",
158
+ ref: _this2.labelRef,
159
+ role: "button",
160
+ onKeyPress: null,
161
+ tabIndex: "-1",
162
+ onClick: onNodeClick ? function () {
163
+ return onNodeClick(node);
164
+ } : null
120
165
  }, showCheckBox ? /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
121
166
  checked: checked,
122
167
  disabled: required || disabled,
123
168
  value: "".concat(node[valuePropName]),
124
169
  label: node[labelPropName],
125
- onChange: disabled ? undefined : function (e) {
126
- updateSelectedIds(node.id, e.target.checked);
170
+ tooltip: required ? defaultDisabledTooltip : '',
171
+ onChange: disabled || required ? undefined : function (e) {
172
+ handlerUpdateSelectedIds(node.id, e.target.checked, isParent);
173
+ }
174
+ }) : node[labelPropName], allowCheckAllChildren && showNodeElements && isParent ? /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
175
+ dropdown: true,
176
+ dropdownAlign: "left",
177
+ size: nodeMenuButtonSize,
178
+ onClick: function onClick() {
179
+ _this2.setState({
180
+ keepMenuOpened: !_this2.state.keepMenuOpened
181
+ });
182
+ },
183
+ showIconDropdown: false,
184
+ iconName: "menu",
185
+ customClass: "node-menu",
186
+ boxShadow: false
187
+ }, /*#__PURE__*/_react["default"].createElement(_list["default"], {
188
+ condensed: true
189
+ }, /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
190
+ text: "Marcar todos",
191
+ onClick: function onClick() {
192
+ handlerToggleCheckChildren(node.id, true);
193
+
194
+ _this2.setState({
195
+ showNodeElements: false,
196
+ keepMenuOpened: false
197
+ });
198
+ }
199
+ }), /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
200
+ text: "Desmarcar todos",
201
+ onClick: function onClick() {
202
+ handlerToggleCheckChildren(node.id, false, required);
203
+
204
+ _this2.setState({
205
+ showNodeElements: false,
206
+ keepMenuOpened: false
207
+ });
127
208
  }
128
- }) : node[labelPropName]), /*#__PURE__*/_react["default"].createElement("ul", {
209
+ }))) : null, showNodeElements && _this2.returnNodeRightElements(), showNodeElements && _this2.returnNodeToolbarElements()), /*#__PURE__*/_react["default"].createElement("ul", {
129
210
  className: "nodelist"
130
211
  }, _this2.state.isVisible && children));
131
212
  });
132
213
  }
214
+ }], [{
215
+ key: "getDerivedStateFromProps",
216
+ value: function getDerivedStateFromProps(props, state) {
217
+ var node = props.node,
218
+ startNodesOpened = props.startNodesOpened;
219
+
220
+ if (node !== state.node) {
221
+ return {
222
+ node: node,
223
+ isVisible: startNodesOpened && nodeHasItens(node),
224
+ wasOpened: startNodesOpened && nodeHasItens(node)
225
+ };
226
+ }
227
+
228
+ return null;
229
+ }
133
230
  }]);
134
231
 
135
232
  return TreeNode;
136
233
  }(_react.Component);
137
234
 
235
+ var _initialiseProps = function _initialiseProps() {
236
+ var _this3 = this;
237
+
238
+ Object.defineProperty(this, "getSpan", {
239
+ configurable: true,
240
+ enumerable: true,
241
+ writable: true,
242
+ value: function value() {
243
+ var alwaysShowArrow = _this3.props.alwaysShowArrow;
244
+ var node = _this3.state.node;
245
+
246
+ var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
247
+
248
+ if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
249
+ span = /*#__PURE__*/_react["default"].createElement("span", {
250
+ onKeyPress: null,
251
+ tabIndex: 0,
252
+ role: "button",
253
+ className: "opencloseicon",
254
+ onClick: function onClick() {
255
+ return _this3.openCloseTree(node);
256
+ }
257
+ }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
258
+ name: _this3.state.isVisible ? 'up' : 'down',
259
+ size: 10
260
+ }));
261
+ }
262
+
263
+ return span;
264
+ }
265
+ });
266
+ Object.defineProperty(this, "openCloseTree", {
267
+ configurable: true,
268
+ enumerable: true,
269
+ writable: true,
270
+ value: function value(node) {
271
+ var _this3$state = _this3.state,
272
+ isVisible = _this3$state.isVisible,
273
+ wasOpened = _this3$state.wasOpened;
274
+ var handlerOnNodeOpen = _this3.props.handlerOnNodeOpen;
275
+ var nextState = {
276
+ isVisible: !isVisible
277
+ };
278
+
279
+ if (!wasOpened && handlerOnNodeOpen) {
280
+ nextState = _extends({}, nextState, {
281
+ wasOpened: true
282
+ });
283
+ handlerOnNodeOpen(node);
284
+ }
285
+
286
+ _this3.setState(nextState);
287
+ }
288
+ });
289
+ Object.defineProperty(this, "handleShowNodeElements", {
290
+ configurable: true,
291
+ enumerable: true,
292
+ writable: true,
293
+ value: function value() {
294
+ var _this3$state2 = _this3.state,
295
+ showNodeElements = _this3$state2.showNodeElements,
296
+ keepMenuOpened = _this3$state2.keepMenuOpened;
297
+ if (!showNodeElements) _this3.setState({
298
+ showNodeElements: true
299
+ });else if (showNodeElements && !keepMenuOpened) {
300
+ _this3.setState({
301
+ showNodeElements: false
302
+ });
303
+ }
304
+ }
305
+ });
306
+ Object.defineProperty(this, "updateElements", {
307
+ configurable: true,
308
+ enumerable: true,
309
+ writable: true,
310
+ value: function value(elements) {
311
+ var nodeElementsValidations = _this3.props.nodeElementsValidations;
312
+ var node = _this3.state.node;
313
+ var updatedElements = [];
314
+
315
+ if (elements) {
316
+ updatedElements = _react["default"].Children.map(elements, function (element) {
317
+ if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
318
+ var _element$props = element.props,
319
+ validationKey = _element$props.validationKey,
320
+ onNodeElementClick = _element$props.onNodeElementClick;
321
+ var elementBehavior;
322
+ var newProps = {};
323
+
324
+ if (nodeElementsValidations && validationKey) {
325
+ elementBehavior = _this3.validateNodeElement(validationKey);
326
+ }
327
+
328
+ if (onNodeElementClick) {
329
+ newProps = _extends({}, newProps, {
330
+ onClick: function onClick(e) {
331
+ onNodeElementClick(node);
332
+ if (e.stopPropagation) e.stopPropagation();
333
+ },
334
+ onNodeElementClick: null
335
+ });
336
+ }
337
+
338
+ return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
339
+ }
340
+
341
+ return element;
342
+ });
343
+ }
344
+
345
+ return updatedElements;
346
+ }
347
+ });
348
+ Object.defineProperty(this, "returnNodeRightElements", {
349
+ configurable: true,
350
+ enumerable: true,
351
+ writable: true,
352
+ value: function value() {
353
+ var nodeRightElements = _this3.props.nodeRightElements;
354
+
355
+ var updatedNodeRightElements = _this3.updateElements(nodeRightElements).map(function (element) {
356
+ var unvisible = element.props && 'visible' in element.props && !element.props.visible;
357
+ var style = unvisible ? {
358
+ display: 'none'
359
+ } : {};
360
+ return /*#__PURE__*/_react["default"].createElement("div", {
361
+ style: style,
362
+ key: "element-".concat(_uuid["default"].v1()),
363
+ className: "element"
364
+ }, element);
365
+ });
366
+
367
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
368
+ className: "node-rightelements"
369
+ }, updatedNodeRightElements) : null;
370
+ }
371
+ });
372
+ Object.defineProperty(this, "returnNodeToolbarElements", {
373
+ configurable: true,
374
+ enumerable: true,
375
+ writable: true,
376
+ value: function value() {
377
+ var nodeToolbarElements = _this3.props.nodeToolbarElements;
378
+
379
+ var updatedNodeRightElements = _this3.updateElements(nodeToolbarElements);
380
+
381
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
382
+ customClass: "node-toolbarelements"
383
+ }, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
384
+ }
385
+ });
386
+ Object.defineProperty(this, "validateNodeElement", {
387
+ configurable: true,
388
+ enumerable: true,
389
+ writable: true,
390
+ value: function value(validationKey) {
391
+ var nodeElementsValidations = _this3.props.nodeElementsValidations;
392
+ var node = _this3.state.node;
393
+ var validations = nodeElementsValidations[validationKey];
394
+ var options = {
395
+ disabled: {
396
+ disabled: true
397
+ },
398
+ unvisible: {
399
+ visible: false
400
+ }
401
+ };
402
+ var elementBehavior = {};
403
+
404
+ if (validations) {
405
+ validations.forEach(function (validation) {
406
+ var validator = validation.validator,
407
+ applyBehavior = validation.applyBehavior;
408
+
409
+ if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
410
+ elementBehavior = options[applyBehavior] || options.unvisible;
411
+ }
412
+ });
413
+ }
414
+
415
+ return elementBehavior;
416
+ }
417
+ });
418
+ };
419
+
138
420
  TreeNode.propTypes = {
139
421
  node: _propTypes["default"].object.isRequired,
140
422
  children: _propTypes["default"].any.isRequired,
141
423
  childrenIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
142
424
  parentId: _propTypes["default"].number,
143
- disabled: _propTypes["default"].bool
425
+ disabled: _propTypes["default"].bool,
426
+ isParent: _propTypes["default"].bool,
427
+ alwaysShowArrow: _propTypes["default"].bool,
428
+ nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
429
+ nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
430
+ nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
431
+ onNodeClick: _propTypes["default"].func,
432
+ handlerOnNodeOpen: _propTypes["default"].func,
433
+ nodeElementsValidations: _propTypes["default"].object,
434
+ startNodesOpened: _propTypes["default"].bool.isRequired
144
435
  };
145
436
  TreeNode.defaultProps = {
146
437
  childrenIds: [],
147
438
  parentId: undefined,
148
- disabled: false
439
+ disabled: false,
440
+ isParent: false,
441
+ alwaysShowArrow: false,
442
+ nodeRightElements: undefined,
443
+ nodeToolbarElements: undefined,
444
+ nodeMenuButtonSize: 'small',
445
+ onNodeClick: undefined,
446
+ handlerOnNodeOpen: undefined,
447
+ nodeElementsValidations: undefined
149
448
  };
150
449
  TreeNode.contextType = _constants.TreeviewContext;
151
450
  var _default = TreeNode;