linear-react-components-ui 0.4.76-beta.12 → 0.4.76-beta.13

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 (101) 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 +33 -0
  5. package/lib/assets/styles/button.scss +17 -10
  6. package/lib/assets/styles/checkbox.scss +92 -70
  7. package/lib/assets/styles/commons.scss +26 -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 +12 -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/multiSelect.scss +105 -0
  16. package/lib/assets/styles/panel.scss +5 -2
  17. package/lib/assets/styles/periodpicker.scss +65 -0
  18. package/lib/assets/styles/progress.scss +8 -1
  19. package/lib/assets/styles/radio.scss +19 -0
  20. package/lib/assets/styles/select.scss +1 -0
  21. package/lib/assets/styles/skeleton.scss +48 -0
  22. package/lib/assets/styles/table.scss +14 -5
  23. package/lib/assets/styles/tabs.scss +79 -43
  24. package/lib/assets/styles/treeview.scss +32 -0
  25. package/lib/avatar/avatar.spec.js +17 -6
  26. package/lib/avatar/index.js +1 -1
  27. package/lib/buttons/DefaultButton.js +13 -4
  28. package/lib/buttons/split_button/index.js +8 -4
  29. package/lib/checkbox/Label.js +37 -0
  30. package/lib/checkbox/checkbox.spec.js +16 -16
  31. package/lib/checkbox/index.js +33 -12
  32. package/lib/dialog/base/index.js +15 -6
  33. package/lib/dialog/form/index.js +24 -4
  34. package/lib/drawer/Drawer.js +9 -5
  35. package/lib/drawer/Header.js +15 -5
  36. package/lib/drawer/index.js +4 -1
  37. package/lib/form/Field.js +2 -0
  38. package/lib/form/FieldNumber.js +10 -2
  39. package/lib/form/FieldPeriod.js +100 -0
  40. package/lib/form/helpers.js +20 -1
  41. package/lib/form/index.js +207 -224
  42. package/lib/form/withFieldHOC.js +5 -1
  43. package/lib/form/withFormSecurity.js +106 -0
  44. package/lib/icons/helper.js +16 -0
  45. package/lib/inputs/base/InputTextBase.js +10 -5
  46. package/lib/inputs/base/helpers.js +2 -1
  47. package/lib/inputs/date/Dropdown.js +3 -3
  48. package/lib/inputs/date/date.spec.js +46 -36
  49. package/lib/inputs/date/helpers.js +36 -0
  50. package/lib/inputs/date/index.js +12 -10
  51. package/lib/inputs/mask/imaskHOC.js +2 -1
  52. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  53. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  54. package/lib/inputs/multiSelect/helper.js +18 -0
  55. package/lib/inputs/multiSelect/index.js +343 -0
  56. package/lib/inputs/number/BaseNumber.js +1 -1
  57. package/lib/inputs/number/index.js +7 -5
  58. package/lib/inputs/period/Dialog.js +38 -0
  59. package/lib/inputs/period/Dropdown.js +90 -0
  60. package/lib/inputs/period/PeriodList.js +79 -0
  61. package/lib/inputs/period/helper.js +118 -0
  62. package/lib/inputs/period/index.js +490 -0
  63. package/lib/inputs/select/Dropdown.js +4 -4
  64. package/lib/inputs/select/index.js +26 -3
  65. package/lib/inputs/select/multiple/index.js +9 -7
  66. package/lib/inputs/select/simple/index.js +30 -18
  67. package/lib/internals/withTooltip.js +85 -81
  68. package/lib/labels/DefaultLabel.js +7 -4
  69. package/lib/list/Item.js +3 -3
  70. package/lib/list/index.js +20 -10
  71. package/lib/list/list.spec.js +129 -85
  72. package/lib/menus/float/MenuItem.js +25 -8
  73. package/lib/menus/sidenav/NavMenuItem.js +2 -2
  74. package/lib/menus/sidenav/index.js +7 -3
  75. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  76. package/lib/panel/Content.js +11 -4
  77. package/lib/progress/Bar.js +40 -9
  78. package/lib/progress/index.js +12 -4
  79. package/lib/radio/index.js +9 -6
  80. package/lib/skeleton/SkeletonContainer.js +42 -0
  81. package/lib/skeleton/index.js +84 -0
  82. package/lib/spinner/index.js +6 -1
  83. package/lib/split/Split.js +5 -11
  84. package/lib/table/HeaderColumn.js +24 -3
  85. package/lib/table/Row.js +7 -3
  86. package/lib/table/RowColumn.js +22 -3
  87. package/lib/table/index.js +11 -4
  88. package/lib/tabs/DropdownItems.js +84 -0
  89. package/lib/tabs/Menu.js +18 -5
  90. package/lib/tabs/MenuItems.js +15 -9
  91. package/lib/tabs/Panel.js +1 -3
  92. package/lib/tabs/index.js +156 -22
  93. package/lib/tabs/tabs.spec.js +8 -5
  94. package/lib/toolbar/ButtonBar.js +30 -24
  95. package/lib/toolbar/LabelBar.js +22 -27
  96. package/lib/toolbar/helpers.js +12 -0
  97. package/lib/toolbar/index.js +24 -9
  98. package/lib/tooltip/index.js +20 -7
  99. package/lib/treeview/Node.js +348 -49
  100. package/lib/treeview/index.js +457 -36
  101. package/package.json +9 -8
@@ -33,6 +33,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
33
33
 
34
34
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
35
 
36
+ var TOOLTIP_INITIAL_HEIGHT = 40;
37
+
36
38
  var hasTooltip = function hasTooltip(_ref) {
37
39
  var tooltip = _ref.tooltip;
38
40
  return tooltip;
@@ -45,35 +47,34 @@ var getDisplayName = function getDisplayName(WrappedComponent) {
45
47
  var withTooltip = function withTooltip(WrappedComponent) {
46
48
  var EnhancedComponent = function EnhancedComponent(props) {
47
49
  var tooltip = props.tooltip,
48
- tooltipPosition = props.tooltipPosition,
49
50
  tooltipWidth = props.tooltipWidth,
50
51
  space = props.space;
51
52
 
52
- var _useState = (0, _react.useState)(false),
53
+ var _useState = (0, _react.useState)(props.tooltipPosition),
53
54
  _useState2 = _slicedToArray(_useState, 2),
54
- showTooltip = _useState2[0],
55
- setShowTooltip = _useState2[1];
55
+ tooltipPosition = _useState2[0],
56
+ setTooltipPosition = _useState2[1];
56
57
 
57
- var _useState3 = (0, _react.useState)({
58
- width: tooltipWidth,
59
- height: undefined
60
- }),
58
+ var _useState3 = (0, _react.useState)(''),
61
59
  _useState4 = _slicedToArray(_useState3, 2),
62
- tooltipDimensions = _useState4[0],
63
- setTooltipDimensions = _useState4[1];
60
+ tooltipStyle = _useState4[0],
61
+ setTooltipStyle = _useState4[1];
64
62
 
65
- var _useState5 = (0, _react.useState)(true),
63
+ var _useState5 = (0, _react.useState)(false),
66
64
  _useState6 = _slicedToArray(_useState5, 2),
67
- findScrollableParent = _useState6[0],
68
- setFindScrollableParent = _useState6[1];
65
+ showTooltip = _useState6[0],
66
+ setShowTooltip = _useState6[1];
69
67
 
70
- var _useState7 = (0, _react.useState)(undefined),
68
+ var _useState7 = (0, _react.useState)({
69
+ width: tooltipWidth,
70
+ height: TOOLTIP_INITIAL_HEIGHT
71
+ }),
71
72
  _useState8 = _slicedToArray(_useState7, 2),
72
- dimensionsTargetElement = _useState8[0],
73
- setDimensionsTargetElement = _useState8[1];
73
+ tooltipDimensions = _useState8[0],
74
+ setTooltipDimensions = _useState8[1];
74
75
 
75
- var scrollableParent = (0, _react.useRef)();
76
- var targetElement = (0, _react.useRef)();
76
+ var targetElement = (0, _react.useRef)(null);
77
+ var tooltipElement = (0, _react.useRef)(null);
77
78
 
78
79
  var onMouseOver = function onMouseOver(e) {
79
80
  if (targetElement && targetElement.current && targetElement.current.contains(e.target)) {
@@ -85,58 +86,24 @@ var withTooltip = function withTooltip(WrappedComponent) {
85
86
  setShowTooltip(false);
86
87
  };
87
88
 
88
- var onParentScroll = function onParentScroll() {
89
- var currentDimensions = targetElement.current.getBoundingClientRect();
90
-
91
- if (targetElement.current && dimensionsTargetElement !== currentDimensions) {
92
- return setDimensionsTargetElement(currentDimensions);
93
- }
94
-
95
- return null;
96
- };
97
-
98
- var getScrollableParent = function getScrollableParent(node) {
99
- if (node === null || node.nodeName === '#document') {
100
- return setFindScrollableParent(false);
101
- }
102
-
103
- var _window$getComputedSt = window.getComputedStyle(node),
104
- overflowY = _window$getComputedSt.overflowY;
105
-
106
- var isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
107
-
108
- if (isScrollable && node.scrollHeight > node.clientHeight) {
109
- scrollableParent.current = node;
110
- return setFindScrollableParent(false);
111
- }
112
-
113
- return getScrollableParent(node.parentNode);
89
+ var onAnyScroll = function onAnyScroll() {
90
+ setShowTooltip(false);
114
91
  };
115
92
 
116
93
  (0, _react.useEffect)(function () {
117
94
  if (hasTooltip(props)) {
118
95
  document.addEventListener('mouseover', onMouseOver);
96
+ document.addEventListener('scroll', onAnyScroll, true);
119
97
 
120
98
  if (targetElement && targetElement.current) {
121
99
  targetElement.current.addEventListener('mouseout', onMouseOut);
122
100
  }
123
-
124
- if (targetElement && targetElement.current && findScrollableParent) {
125
- getScrollableParent(targetElement.current);
126
- }
127
-
128
- if (scrollableParent && scrollableParent.current) {
129
- scrollableParent.current.addEventListener('scroll', onParentScroll);
130
- }
131
101
  }
132
102
 
133
103
  return function () {
134
104
  if (hasTooltip(props)) {
135
105
  document.removeEventListener('mouseover', onMouseOver);
136
-
137
- if (scrollableParent && scrollableParent.current) {
138
- scrollableParent.current.removeEventListener('scroll', onParentScroll);
139
- }
106
+ document.removeEventListener('scroll', onAnyScroll, true);
140
107
 
141
108
  if (targetElement && targetElement.current) {
142
109
  targetElement.current.removeEventListener('mouseout', onMouseOut);
@@ -144,39 +111,76 @@ var withTooltip = function withTooltip(WrappedComponent) {
144
111
  }
145
112
  };
146
113
  }, []);
114
+ (0, _react.useEffect)(function () {
115
+ if (targetElement.current) {
116
+ var width = tooltipDimensions.width,
117
+ height = tooltipDimensions.height;
118
+ var targetDimensions = targetElement.current.getBoundingClientRect();
119
+ var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
120
+ var tooltipClientWidth = tooltipElement.current && tooltipElement.current.clientWidth;
121
+ var style = "width: ".concat(typeof width === 'string' ? width : "".concat(width, "px"));
122
+ var left = targetDimensions.left + targetDimensions.width / 2 - tooltipClientWidth / 2;
123
+ left = Math.min(left, document.body.clientWidth - tooltipClientWidth - space);
124
+ style += "; left: ".concat(Math.max(space, left), "px");
125
+
126
+ switch (tooltipPosition) {
127
+ case 'top':
128
+ if (targetDimensions.top < height) {
129
+ setTooltipPosition('bottom');
130
+ } else {
131
+ style += "; top: ".concat(targetDimensions.top + window.scrollY - height - 5, "px");
132
+ }
133
+
134
+ break;
135
+
136
+ case 'bottom':
137
+ if (window.innerHeight - targetDimensions.bottom < height) {
138
+ setTooltipPosition('top');
139
+ } else {
140
+ style += "; top: ".concat(targetDimensions.top + window.scrollY + targetDimensions.height + 5, "px");
141
+ }
142
+
143
+ break;
144
+
145
+ case 'left':
146
+ if (targetDimensions.left < tooltipClientWidth) {
147
+ setTooltipPosition('right');
148
+ } else {
149
+ style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
150
+ style += "; left: ".concat(targetDimensions.left - tooltipClientWidth - 6, "px");
151
+ }
152
+
153
+ break;
154
+
155
+ case 'right':
156
+ if (window.innerWidth - targetDimensions.right < tooltipClientWidth) {
157
+ setTooltipPosition('left');
158
+ } else {
159
+ style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
160
+ style += "; left: ".concat(targetDimensions.left + targetDimensions.width + 5, "px");
161
+ }
162
+
163
+ break;
164
+
165
+ default:
166
+ style += '';
167
+ }
147
168
 
148
- var getStyle = function getStyle() {
149
- // where on the screen is the target
150
- var width = tooltipDimensions.width,
151
- height = tooltipDimensions.height;
152
- var targetDimensions = dimensionsTargetElement || targetElement.current.getBoundingClientRect();
153
- var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
154
- var style = "width: ".concat(width + 2, "px");
155
- var left = targetDimensions.left + targetDimensions.width / 2 - width / 2;
156
- left = Math.min(left, document.body.clientWidth - width - space);
157
- style += "; left: ".concat(Math.max(space, left), "px"); // when the position is informed
158
-
159
- if (tooltipPosition === 'top') {
160
- style += "; top: ".concat(targetDimensions.top + window.scrollY - height - 5, "px");
161
- } else if (tooltipPosition === 'bottom') {
162
- style += "; top: ".concat(targetDimensions.top + window.scrollY + targetDimensions.height + 5, "px");
163
- } else if (tooltipPosition === 'left') {
164
- style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
165
- style += "; left: ".concat(targetDimensions.left - width - 6, "px");
166
- } else if (tooltipPosition === 'right') {
167
- style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
168
- style += "; left: ".concat(targetDimensions.left + targetDimensions.width + 5, "px");
169
+ setTooltipStyle(style);
169
170
  }
170
-
171
- return style;
172
- };
171
+ }, [tooltipDimensions, tooltipElement.current, targetElement.current, tooltipPosition]);
172
+ (0, _react.useEffect)(function () {
173
+ setTooltipPosition(props.tooltipPosition);
174
+ }, [window.scrollY, window.scrollX, window.innerWidth]);
173
175
 
174
176
  var getTooltip = function getTooltip() {
175
177
  if (tooltip) {
176
178
  return /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
177
179
  text: tooltip,
178
- style: getStyle(),
180
+ tooltipRef: tooltipElement,
181
+ style: tooltipStyle,
179
182
  className: tooltipPosition,
183
+ tooltipDimensions: tooltipDimensions,
180
184
  handlerSetDimensions: setTooltipDimensions
181
185
  });
182
186
  }
@@ -48,7 +48,8 @@ var DefaultLabel = function DefaultLabel(props) {
48
48
  size = props.size,
49
49
  iconAlign = props.iconAlign,
50
50
  bordered = props.bordered,
51
- permissionAttr = props.permissionAttr;
51
+ permissionAttr = props.permissionAttr,
52
+ skeletonize = props.skeletonize;
52
53
  var options = [_permissionValidations.OPTIONS_ON_DENIED.unvisible];
53
54
 
54
55
  var _useState = (0, _react.useState)((0, _permissionValidations.actionsOnPermissionDenied)(permissionAttr, options)),
@@ -56,7 +57,7 @@ var DefaultLabel = function DefaultLabel(props) {
56
57
  onDenied = _useState2[0];
57
58
 
58
59
  var getClass = function getClass() {
59
- return "label-component ".concat(className, " ").concat(customClass, " ").concat(bordered && '-bordered', " ").concat(disabled && '-disabled', " \n ").concat(size && "-".concat(size), "\n ").concat(iconAlign && "icon-".concat(iconAlign));
60
+ return "label-component ".concat(className, " ").concat(customClass, " ").concat(bordered ? '-bordered' : '', " ").concat(disabled ? '-disabled' : '', "\n ").concat(skeletonize ? '-skeletonized' : '', "\n ").concat(size ? "-".concat(size) : '', "\n ").concat(iconAlign ? "icon-".concat(iconAlign) : '');
60
61
  };
61
62
 
62
63
  var getIcon = function getIcon() {
@@ -94,7 +95,8 @@ DefaultLabel.defaultProps = {
94
95
  style: {},
95
96
  visible: true,
96
97
  disabled: false,
97
- permissionAttr: undefined
98
+ permissionAttr: undefined,
99
+ skeletonize: false
98
100
  };
99
101
  DefaultLabel.propTypes = {
100
102
  customClass: _propTypes["default"].string,
@@ -109,7 +111,8 @@ DefaultLabel.propTypes = {
109
111
  style: _propTypes["default"].object,
110
112
  visible: _propTypes["default"].bool,
111
113
  disabled: _propTypes["default"].bool,
112
- permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
114
+ permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
115
+ skeletonize: _propTypes["default"].bool
113
116
  };
114
117
 
115
118
  var _default = (0, _withTooltip["default"])(DefaultLabel);
package/lib/list/Item.js CHANGED
@@ -99,12 +99,12 @@ var Item = function Item(props) {
99
99
 
100
100
  var getProps = function getProps() {
101
101
  if (shouldDisable()) return undefined;
102
- if (_onClick === undefined && dropdownContext === undefined) return null;
102
+ if (_onClick === undefined && dropdownContext === undefined && !selectable) return null;
103
103
  return {
104
104
  onClick: function onClick(e) {
105
- if (_onClick !== undefined) _onClick(e);
105
+ if (_onClick !== undefined) _onClick(e, itemId);
106
106
  if (dropdownContext) dropdownContext.handleDropdownClose();
107
- if (selectable && handleSelectItem(itemId)) ;
107
+ if (selectable) handleSelectItem(itemId, _onClick);
108
108
  },
109
109
  onKeyDown: null,
110
110
  role: 'button',
package/lib/list/index.js CHANGED
@@ -58,24 +58,30 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
58
58
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
59
 
60
60
  var List = function List(props) {
61
- var _useState = (0, _react.useState)(''),
62
- _useState2 = _slicedToArray(_useState, 2),
63
- selectedItemId = _useState2[0],
64
- setSelectedItemId = _useState2[1];
65
-
66
61
  var children = props.children,
67
62
  customClass = props.customClass,
68
63
  condensed = props.condensed,
69
64
  transparent = props.transparent,
70
65
  style = props.style,
71
- selectable = props.selectable;
66
+ selectable = props.selectable,
67
+ onSelectItem = props.onSelectItem;
68
+
69
+ var _useState = (0, _react.useState)(''),
70
+ _useState2 = _slicedToArray(_useState, 2),
71
+ selectedItemId = _useState2[0],
72
+ setSelectedItemId = _useState2[1];
73
+
72
74
  var contextValues = {
73
75
  selectable: selectable,
74
76
  selectedItemId: selectedItemId,
75
- handleSelectItem: function handleSelectItem(selectedId) {
76
- setSelectedItemId(selectedId);
77
+ handleSelectItem: function handleSelectItem(selectedId, onClick) {
78
+ if (!onSelectItem && onClick) setSelectedItemId(selectedId);
79
+ if (onSelectItem) onSelectItem(selectedId);
77
80
  }
78
81
  };
82
+ (0, _react.useEffect)(function () {
83
+ if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
84
+ }, [props.selectedItemId]);
79
85
  return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
80
86
  value: contextValues
81
87
  }, /*#__PURE__*/_react["default"].createElement("ul", {
@@ -91,14 +97,18 @@ List.propTypes = {
91
97
  customClass: _propTypes["default"].string,
92
98
  condensed: _propTypes["default"].bool,
93
99
  selectable: _propTypes["default"].bool,
94
- style: _propTypes["default"].object
100
+ style: _propTypes["default"].object,
101
+ onSelectItem: _propTypes["default"].func,
102
+ selectedItemId: _propTypes["default"].string
95
103
  };
96
104
  List.defaultProps = {
97
105
  customClass: '',
98
106
  condensed: false,
99
107
  transparent: false,
100
108
  selectable: false,
101
- style: {}
109
+ style: {},
110
+ onSelectItem: undefined,
111
+ selectedItemId: ''
102
112
  };
103
113
  var _default = List;
104
114
  exports["default"] = _default;