linear-react-components-ui 0.4.76-rc.9 → 0.4.77-beta.10

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 (161) 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/@types/LabelStyles.js +5 -0
  6. package/lib/@types/PermissionAttr.js +5 -0
  7. package/lib/@types/PointerEvents.js +5 -0
  8. package/lib/@types/Position.js +5 -0
  9. package/lib/@types/Size.js +5 -0
  10. package/lib/@types/SizePixels.js +5 -0
  11. package/lib/alerts/AlertProvider.js +1 -1
  12. package/lib/alerts/BaseAlert.js +1 -1
  13. package/lib/assets/styles/button.scss +19 -10
  14. package/lib/assets/styles/checkbox.scss +92 -70
  15. package/lib/assets/styles/commons.scss +36 -0
  16. package/lib/assets/styles/drawers.scss +22 -6
  17. package/lib/assets/styles/dropdown.scss +28 -2
  18. package/lib/assets/styles/effects.scss +32 -0
  19. package/lib/assets/styles/floatMenu.scss +0 -1
  20. package/lib/assets/styles/gridlayout.scss +2 -1
  21. package/lib/assets/styles/input.scss +21 -0
  22. package/lib/assets/styles/label.scss +9 -1
  23. package/lib/assets/styles/list.scss +8 -0
  24. package/lib/assets/styles/multiSelect.scss +105 -0
  25. package/lib/assets/styles/panel.scss +3 -1
  26. package/lib/assets/styles/periodpicker.scss +65 -0
  27. package/lib/assets/styles/progress.scss +8 -1
  28. package/lib/assets/styles/radio.scss +19 -0
  29. package/lib/assets/styles/select.scss +4 -3
  30. package/lib/assets/styles/sidenav.scss +103 -42
  31. package/lib/assets/styles/skeleton.scss +48 -0
  32. package/lib/assets/styles/table.scss +25 -5
  33. package/lib/assets/styles/tabs.scss +116 -75
  34. package/lib/assets/styles/treeview.scss +41 -0
  35. package/lib/assets/styles/uitour.scss +112 -0
  36. package/lib/avatar/avatar.spec.js +17 -6
  37. package/lib/avatar/index.js +1 -1
  38. package/lib/buttons/DefaultButton.js +14 -5
  39. package/lib/buttons/index.js +28 -28
  40. package/lib/buttons/split_button/index.js +8 -4
  41. package/lib/buttons/types.js +5 -0
  42. package/lib/calendar/base/helpers.js +6 -6
  43. package/lib/calendar/base/index.js +1 -1
  44. package/lib/calendar/index.js +10 -10
  45. package/lib/checkbox/Label.js +37 -0
  46. package/lib/checkbox/checkbox.spec.js +16 -16
  47. package/lib/checkbox/index.js +34 -13
  48. package/lib/checkbox/types.js +5 -0
  49. package/lib/dialog/base/index.js +15 -6
  50. package/lib/dialog/form/index.js +24 -4
  51. package/lib/dialog/index.js +6 -6
  52. package/lib/drawer/Drawer.js +10 -6
  53. package/lib/drawer/Header.js +15 -5
  54. package/lib/drawer/index.js +8 -5
  55. package/lib/dropdown/Popup.js +3 -2
  56. package/lib/dropdown/types.js +5 -0
  57. package/lib/dropdown/withDropdown.js +2 -2
  58. package/lib/fieldset/index.js +1 -1
  59. package/lib/form/Field.js +3 -1
  60. package/lib/form/FieldNumber.js +11 -3
  61. package/lib/form/FieldPeriod.js +100 -0
  62. package/lib/form/form.spec.js +8 -0
  63. package/lib/form/helpers.js +20 -1
  64. package/lib/form/index.js +224 -222
  65. package/lib/form/withFieldHOC.js +6 -2
  66. package/lib/form/withFormSecurity.js +106 -0
  67. package/lib/icons/helper.js +24 -0
  68. package/lib/icons/types.js +5 -0
  69. package/lib/index.js +12 -12
  70. package/lib/inputs/base/InputTextBase.js +31 -6
  71. package/lib/inputs/base/helpers.js +14 -10
  72. package/lib/inputs/color/index.js +1 -1
  73. package/lib/inputs/date/Dropdown.js +4 -4
  74. package/lib/inputs/date/date.spec.js +46 -36
  75. package/lib/inputs/date/helpers.js +36 -0
  76. package/lib/inputs/date/index.js +13 -11
  77. package/lib/inputs/inputHOC.js +1 -1
  78. package/lib/inputs/mask/Cnpj.js +1 -1
  79. package/lib/inputs/mask/Cpf.js +1 -1
  80. package/lib/inputs/mask/Phone.js +10 -1
  81. package/lib/inputs/mask/helpers.js +2 -2
  82. package/lib/inputs/mask/imaskHOC.js +3 -2
  83. package/lib/inputs/mask/index.js +4 -4
  84. package/lib/inputs/mask/input_mask.spec.js +21 -4
  85. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  86. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  87. package/lib/inputs/multiSelect/helper.js +18 -0
  88. package/lib/inputs/multiSelect/index.js +343 -0
  89. package/lib/inputs/number/BaseNumber.js +1 -1
  90. package/lib/inputs/number/format_number.js +1 -1
  91. package/lib/inputs/number/index.js +7 -5
  92. package/lib/inputs/period/Dialog.js +38 -0
  93. package/lib/inputs/period/Dropdown.js +90 -0
  94. package/lib/inputs/period/PeriodList.js +79 -0
  95. package/lib/inputs/period/helper.js +118 -0
  96. package/lib/inputs/period/index.js +490 -0
  97. package/lib/inputs/search/index.js +3 -1
  98. package/lib/inputs/select/Dropdown.js +56 -66
  99. package/lib/inputs/select/helper.js +65 -2
  100. package/lib/inputs/select/index.js +26 -3
  101. package/lib/inputs/select/multiple/index.js +17 -12
  102. package/lib/inputs/select/simple/index.js +40 -25
  103. package/lib/internals/constants.js +5 -4
  104. package/lib/internals/types.js +5 -0
  105. package/lib/internals/withTooltip.js +87 -83
  106. package/lib/labelMessages/index.js +1 -1
  107. package/lib/labelMessages/types.js +5 -0
  108. package/lib/labels/DefaultLabel.js +8 -5
  109. package/lib/labels/index.js +10 -10
  110. package/lib/list/Item.js +36 -10
  111. package/lib/list/helpers.js +8 -3
  112. package/lib/list/index.js +173 -15
  113. package/lib/list/list.spec.js +290 -89
  114. package/lib/menus/float/MenuItem.js +25 -8
  115. package/lib/menus/sidenav/NavMenuItem.js +18 -9
  116. package/lib/menus/sidenav/NavSubMenuItem.js +1 -1
  117. package/lib/menus/sidenav/helpers.js +1 -1
  118. package/lib/menus/sidenav/index.js +69 -96
  119. package/lib/menus/sidenav/popup_menu_search/index.js +29 -18
  120. package/lib/menus/sidenav/sidenav.spec.js +86 -19
  121. package/lib/panel/Default.js +1 -1
  122. package/lib/panel/Header.js +4 -3
  123. package/lib/panel/helpers.js +1 -1
  124. package/lib/panel/index.js +14 -14
  125. package/lib/permissionValidations.js +1 -1
  126. package/lib/progress/Bar.js +40 -9
  127. package/lib/progress/index.js +12 -4
  128. package/lib/radio/index.js +10 -7
  129. package/lib/radio/types.js +5 -0
  130. package/lib/skeleton/SkeletonContainer.js +42 -0
  131. package/lib/skeleton/index.js +84 -0
  132. package/lib/spinner/index.js +7 -2
  133. package/lib/split/Split.js +6 -12
  134. package/lib/table/Body.js +55 -11
  135. package/lib/table/Header.js +14 -1
  136. package/lib/table/HeaderColumn.js +26 -3
  137. package/lib/table/Row.js +19 -8
  138. package/lib/table/RowColumn.js +23 -3
  139. package/lib/table/helpers.js +11 -1
  140. package/lib/table/index.js +50 -17
  141. package/lib/tabs/DropdownItems.js +84 -0
  142. package/lib/tabs/Menu.js +12 -9
  143. package/lib/tabs/MenuItems.js +15 -9
  144. package/lib/tabs/Panel.js +2 -4
  145. package/lib/tabs/index.js +157 -23
  146. package/lib/tabs/tabHelpers.js +3 -2
  147. package/lib/tabs/tabs.spec.js +8 -5
  148. package/lib/toolbar/ButtonBar.js +30 -24
  149. package/lib/toolbar/LabelBar.js +22 -27
  150. package/lib/toolbar/helpers.js +12 -0
  151. package/lib/toolbar/index.js +32 -17
  152. package/lib/tooltip/index.js +20 -7
  153. package/lib/treeview/Node.js +365 -50
  154. package/lib/treeview/index.js +476 -37
  155. package/lib/treeview/treeview.spec.js +18 -0
  156. package/lib/treeview_old/Node.js +1 -1
  157. package/lib/uitour/helpers.js +15 -0
  158. package/lib/uitour/index.js +271 -0
  159. package/lib/uitour/uitour.spec.js +176 -0
  160. package/package.json +10 -8
  161. package/lib/inputs/date/helper.js +0 -16
@@ -3,28 +3,28 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "ToolBarGroup", {
6
+ Object.defineProperty(exports, "ButtonBar", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _ToolBarGroup["default"];
9
+ return _ButtonBar["default"];
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "Separator", {
12
+ Object.defineProperty(exports, "LabelBar", {
13
13
  enumerable: true,
14
14
  get: function get() {
15
- return _Separator["default"];
15
+ return _LabelBar["default"];
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "ButtonBar", {
18
+ Object.defineProperty(exports, "Separator", {
19
19
  enumerable: true,
20
20
  get: function get() {
21
- return _ButtonBar["default"];
21
+ return _Separator["default"];
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "LabelBar", {
24
+ Object.defineProperty(exports, "ToolBarGroup", {
25
25
  enumerable: true,
26
26
  get: function get() {
27
- return _LabelBar["default"];
27
+ return _ToolBarGroup["default"];
28
28
  }
29
29
  });
30
30
  exports["default"] = void 0;
@@ -43,29 +43,44 @@ var _LabelBar = _interopRequireDefault(require("./LabelBar"));
43
43
 
44
44
  require("../assets/styles/toolbar.scss");
45
45
 
46
+ var _helpers = _interopRequireDefault(require("./helpers"));
47
+
46
48
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
47
49
 
48
- var ToolBar = function ToolBar(_ref) {
49
- var size = _ref.size,
50
- customClass = _ref.customClass,
51
- style = _ref.style,
52
- children = _ref.children;
53
- return /*#__PURE__*/_react["default"].createElement("div", {
50
+ 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); }
51
+
52
+ var ToolBar = function ToolBar(props) {
53
+ var size = props.size,
54
+ customClass = props.customClass,
55
+ style = props.style,
56
+ children = props.children,
57
+ innerRef = props.innerRef;
58
+
59
+ var contextValues = _extends({}, props);
60
+
61
+ return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
62
+ value: contextValues
63
+ }, /*#__PURE__*/_react["default"].createElement("div", {
64
+ ref: innerRef,
54
65
  className: "toolbar-component ".concat(size && "".concat(size, "-bar"), " ").concat(customClass),
55
66
  style: style
56
- }, children);
67
+ }, children));
57
68
  };
58
69
 
59
70
  ToolBar.propTypes = {
60
71
  size: _propTypes["default"].oneOf(['small', 'large']),
61
72
  style: _propTypes["default"].object,
62
73
  children: _propTypes["default"].any.isRequired,
63
- customClass: _propTypes["default"].string
74
+ customClass: _propTypes["default"].string,
75
+ innerRef: _propTypes["default"].func,
76
+ skeletonize: _propTypes["default"].bool
64
77
  };
65
78
  ToolBar.defaultProps = {
66
79
  size: null,
67
80
  style: {},
68
- customClass: ''
81
+ customClass: '',
82
+ innerRef: null,
83
+ skeletonize: false
69
84
  };
70
85
  var _default = ToolBar;
71
86
  exports["default"] = _default;
@@ -25,27 +25,38 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
25
 
26
26
  var Tooltip = function Tooltip(props) {
27
27
  var className = props.className,
28
+ tooltipDimensions = props.tooltipDimensions,
28
29
  handlerSetDimensions = props.handlerSetDimensions,
29
30
  style = props.style,
30
- text = props.text;
31
+ text = props.text,
32
+ tooltipRef = props.tooltipRef;
31
33
  var tooltipComponent = (0, _react.useRef)(document.createElement('div'));
32
- tooltipComponent.current.id = "tooltip-".concat(_uuid["default"].v1());
33
- tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
34
- tooltipComponent.current.dataset.testid = 'tooltip-component';
35
- tooltipComponent.current.style = style;
36
34
  (0, _react.useEffect)(function () {
35
+ tooltipComponent.current.id = "tooltip-".concat(_uuid["default"].v1());
36
+ tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
37
+ tooltipComponent.current.dataset.testid = 'tooltip-component';
38
+ tooltipComponent.current.style = style;
37
39
  document.body.appendChild(tooltipComponent.current);
38
40
  var tooltipEl = document.querySelector("div#".concat(tooltipComponent.current.id));
39
41
  var width = tooltipEl.offsetWidth;
42
+
43
+ if (tooltipDimensions.width) {
44
+ width = tooltipDimensions.width;
45
+ }
46
+
40
47
  var height = tooltipEl.offsetHeight;
41
48
  handlerSetDimensions({
42
49
  width: width,
43
50
  height: height
44
51
  });
52
+ if (tooltipRef) tooltipRef.current = tooltipEl;
45
53
  return function () {
46
54
  return document.body.removeChild(tooltipComponent.current);
47
55
  };
48
56
  }, []);
57
+ (0, _react.useEffect)(function () {
58
+ tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
59
+ }, [className]);
49
60
  (0, _react.useEffect)(function () {
50
61
  tooltipComponent.current.style = style;
51
62
  }, [style]);
@@ -63,13 +74,15 @@ Tooltip.propTypes = {
63
74
  text: _propTypes["default"].string,
64
75
  style: _propTypes["default"].string,
65
76
  className: _propTypes["default"].string,
66
- handlerSetDimensions: _propTypes["default"].func
77
+ handlerSetDimensions: _propTypes["default"].func,
78
+ tooltipRef: _propTypes["default"].object
67
79
  };
68
80
  Tooltip.defaultProps = {
69
81
  text: undefined,
70
82
  className: 'bottom',
71
83
  style: '',
72
- handlerSetDimensions: undefined
84
+ handlerSetDimensions: undefined,
85
+ tooltipRef: null
73
86
  };
74
87
  var _default = Tooltip;
75
88
  exports["default"] = _default;
@@ -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); } }
@@ -35,7 +61,7 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func
35
61
 
36
62
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
37
63
 
38
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
64
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
39
65
 
40
66
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
41
67
 
@@ -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;