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
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFilteredMultipleDataCombo = exports.getFilteredSimpleDataCombo = exports.getDropdownItemCssClass = exports.contentClass = void 0;
6
+ exports.returnDropdownDynamicStyles = exports.getFilteredMultipleDataCombo = exports.getFilteredSimpleDataCombo = exports.getDropdownItemCssClass = exports.contentClass = void 0;
7
7
 
8
8
  var contentClass = function contentClass(props) {
9
9
  return "content ".concat(props.showClearButton ? '' : 'noclear');
@@ -42,4 +42,67 @@ var getFilteredMultipleDataCombo = function getFilteredMultipleDataCombo(_ref2)
42
42
  });
43
43
  };
44
44
 
45
- exports.getFilteredMultipleDataCombo = getFilteredMultipleDataCombo;
45
+ exports.getFilteredMultipleDataCombo = getFilteredMultipleDataCombo;
46
+
47
+ var returnDropdownPosition = function returnDropdownPosition(_ref3) {
48
+ var selectFieldRects = _ref3.selectFieldRects,
49
+ dropdownRef = _ref3.dropdownRef,
50
+ dropdownRects = _ref3.dropdownRects;
51
+ var aboveDropdown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
52
+ var DEFAULT_MARGIN_BOTTOM = 10;
53
+
54
+ if (aboveDropdown) {
55
+ return selectFieldRects.top + window.scrollY - (dropdownRef.current && dropdownRects.height) - DEFAULT_MARGIN_BOTTOM;
56
+ }
57
+
58
+ return selectFieldRects.top + window.scrollY + selectFieldRects.height;
59
+ };
60
+
61
+ var returnDropdownDynamicStyles = function returnDropdownDynamicStyles(_ref4) {
62
+ var selectFieldRef = _ref4.selectFieldRef,
63
+ dropdownMaxHeight = _ref4.dropdownMaxHeight,
64
+ dropdownRef = _ref4.dropdownRef;
65
+ var selectFieldRects = selectFieldRef.current.getBoundingClientRect();
66
+ var dropdownRects = dropdownRef.current && dropdownRef.current.getBoundingClientRect();
67
+ var dropdownBottomDistance = window.innerHeight - selectFieldRects.bottom;
68
+ var bottomOffset = 30;
69
+ var maxDropdownBottomDistance = 200;
70
+ var height = dropdownMaxHeight;
71
+ var dropdownPosition;
72
+
73
+ if (!height || height <= 0) {
74
+ if (dropdownBottomDistance < maxDropdownBottomDistance) {
75
+ height = selectFieldRects.top;
76
+ dropdownPosition = returnDropdownPosition({
77
+ selectFieldRects: selectFieldRects,
78
+ dropdownRef: dropdownRef,
79
+ dropdownRects: dropdownRects
80
+ }, true);
81
+ } else {
82
+ height = dropdownBottomDistance;
83
+ dropdownPosition = returnDropdownPosition({
84
+ selectFieldRects: selectFieldRects
85
+ });
86
+ }
87
+ } else {
88
+ maxDropdownBottomDistance = height;
89
+
90
+ if (dropdownBottomDistance < maxDropdownBottomDistance) {
91
+ dropdownPosition = returnDropdownPosition({
92
+ selectFieldRects: selectFieldRects,
93
+ dropdownRef: dropdownRef,
94
+ dropdownRects: dropdownRects
95
+ }, true);
96
+ } else {
97
+ dropdownPosition = returnDropdownPosition(selectFieldRects);
98
+ }
99
+ }
100
+
101
+ return {
102
+ maxHeight: height - bottomOffset,
103
+ top: dropdownPosition,
104
+ left: selectFieldRects.left
105
+ };
106
+ };
107
+
108
+ exports.returnDropdownDynamicStyles = returnDropdownDynamicStyles;
@@ -15,17 +15,40 @@ var _simple = _interopRequireDefault(require("./simple"));
15
15
 
16
16
  require("../../assets/styles/select.scss");
17
17
 
18
+ var _gridlayout = _interopRequireDefault(require("../../gridlayout"));
19
+
20
+ var _excluded = ["gridLayout", "multiple"];
21
+
18
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
23
 
24
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
25
+
26
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
+
20
28
  var SelectField = function SelectField(props) {
21
- return props.multiple ? /*#__PURE__*/_react["default"].createElement(_multiple["default"], props) : /*#__PURE__*/_react["default"].createElement(_simple["default"], props);
29
+ var gridLayout = props.gridLayout,
30
+ multiple = props.multiple,
31
+ newProps = _objectWithoutProperties(props, _excluded);
32
+
33
+ var component = multiple ? /*#__PURE__*/_react["default"].createElement(_multiple["default"], newProps) : /*#__PURE__*/_react["default"].createElement(_simple["default"], newProps);
34
+
35
+ if (gridLayout !== undefined) {
36
+ return /*#__PURE__*/_react["default"].createElement(_gridlayout["default"], {
37
+ customClass: "-withinput",
38
+ cols: gridLayout
39
+ }, component);
40
+ }
41
+
42
+ return component;
22
43
  };
23
44
 
24
45
  SelectField.propTypes = {
25
- multiple: _propTypes["default"].bool
46
+ multiple: _propTypes["default"].bool,
47
+ gridLayout: _propTypes["default"].string
26
48
  };
27
49
  SelectField.defaultProps = {
28
- multiple: false
50
+ multiple: false,
51
+ gridLayout: undefined
29
52
  };
30
53
  var _default = SelectField;
31
54
  exports["default"] = _default;
@@ -83,7 +83,9 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
83
83
 
84
84
  _this.componentId = "select-component".concat(_uuid["default"].v1());
85
85
  _this.componentRef = /*#__PURE__*/_react["default"].createRef();
86
+ _this.dropdownRef = /*#__PURE__*/_react["default"].createRef();
86
87
  _this.state = {
88
+ valueFromProps: null,
87
89
  dataCombo: props.dataSource,
88
90
  currents: [],
89
91
  selected: null,
@@ -141,10 +143,11 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
141
143
  }, {
142
144
  key: "onClickOutside",
143
145
  value: function onClickOutside(event) {
144
- var selectWrapper = this.selectWrapper;
146
+ var selectWrapper = this.selectWrapper,
147
+ dropdownRef = this.dropdownRef;
145
148
  var target = event.target;
146
149
 
147
- if (target !== selectWrapper && !selectWrapper.contains(target)) {
150
+ if (target !== selectWrapper && !selectWrapper.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
148
151
  this.setState({
149
152
  opened: false
150
153
  });
@@ -269,12 +272,12 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
269
272
 
270
273
  if (e.keyCode === constants.keyCodes.ENTER) {
271
274
  this.onSelect(selected);
272
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
275
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
273
276
  var index = dataSource.findIndex(function (d) {
274
277
  return d === selected;
275
278
  });
276
279
 
277
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
280
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
278
281
  index = index === dataSource.length - 1 ? 0 : index + 1;
279
282
  } else {
280
283
  index = index === 0 ? dataSource.length - 1 : index - 1;
@@ -362,6 +365,7 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
362
365
  handleOnUnselect: this.onUnselect
363
366
  }))), opened && /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], _extends({}, this.state, this.props, {
364
367
  selectFieldRef: this.componentRef,
368
+ dropdownRef: this.dropdownRef,
365
369
  gridWrapperStyle: gridLayout ? window.getComputedStyle(this.gridEl) : undefined,
366
370
  handleOnSelect: this.onSelect,
367
371
  handleOnFilter: this.onFilter,
@@ -385,18 +389,19 @@ Object.defineProperty(MultipleSelect, "getDerivedStateFromProps", {
385
389
  value = props.value,
386
390
  idKey = props.idKey;
387
391
 
388
- if (dataSource !== state.dataCombo) {
389
- var dataCombo = remoteSearch ? dataSource : (0, _helper.getFilteredMultipleDataCombo)(_extends({}, props, state));
390
- return {
391
- dataCombo: dataCombo,
392
- selected: dataSource.length > 0 && remoteSearch ? dataSource[0] : null
393
- };
394
- } else if (value !== null && dataSource.length > 0) {
392
+ if (value !== state.valueFromProps && dataSource.length > 0) {
395
393
  return {
394
+ valueFromProps: value,
396
395
  currents: dataSource.filter(function (item) {
397
396
  return value.includes(item[idKey]);
398
397
  })
399
398
  };
399
+ } else if (dataSource !== state.dataCombo) {
400
+ var dataCombo = remoteSearch ? dataSource : (0, _helper.getFilteredMultipleDataCombo)(_extends({}, props, state));
401
+ return {
402
+ dataCombo: dataCombo,
403
+ selected: dataCombo.length > 0 ? dataCombo[0] : null
404
+ };
400
405
  }
401
406
 
402
407
  return null;
@@ -78,6 +78,7 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
78
78
  onDenied: undefined,
79
79
  isTyping: false
80
80
  };
81
+ _this.dropdownRef = /*#__PURE__*/_react["default"].createRef();
81
82
  _this.componentId = "select-component".concat(_uuid["default"].v1());
82
83
  _this.componentRef = /*#__PURE__*/_react["default"].createRef();
83
84
  return _this;
@@ -127,9 +128,6 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
127
128
  onFocus: function onFocus() {
128
129
  _this2.onFocus();
129
130
  },
130
- onBlur: function onBlur(e) {
131
- _this2.onBlur(e);
132
- },
133
131
  onChange: function onChange(e) {
134
132
  _this2.onFilter(e.target.value);
135
133
  },
@@ -155,6 +153,7 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
155
153
  }))
156
154
  })), opened && /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], _extends({}, this.state, this.props, {
157
155
  selectFieldRef: this.componentRef,
156
+ dropdownRef: this.dropdownRef,
158
157
  gridWrapperStyle: gridLayout ? window.getComputedStyle(this.gridEl) : undefined,
159
158
  handleOnSelect: this.onSelect,
160
159
  handleOnFilter: this.onFilter,
@@ -175,14 +174,14 @@ Object.defineProperty(SimpleSelect, "getDerivedStateFromProps", {
175
174
  value: function value(props, state) {
176
175
  var value = props.value,
177
176
  dataSource = props.dataSource,
177
+ descriptionKey = props.descriptionKey,
178
178
  idKey = props.idKey,
179
179
  selectFirstOnEnter = props.selectFirstOnEnter,
180
- descriptionKey = props.descriptionKey,
181
180
  remoteSearch = props.remoteSearch,
182
181
  undigitable = props.undigitable;
183
182
  var current = null;
184
183
 
185
- if (value !== state.valueFromProps) {
184
+ if (value !== state.valueFromProps && dataSource.length > 0) {
186
185
  if (value !== null) {
187
186
  current = dataSource.find(function (i) {
188
187
  return i[idKey].toString().toLowerCase() === value.toString().toLowerCase();
@@ -230,10 +229,11 @@ var _initialiseProps = function _initialiseProps() {
230
229
  enumerable: true,
231
230
  writable: true,
232
231
  value: function value(event) {
233
- var selectWrapper = _this3.selectWrapper;
232
+ var selectWrapper = _this3.selectWrapper,
233
+ dropdownRef = _this3.dropdownRef;
234
234
  var target = event.target;
235
235
 
236
- if (target !== selectWrapper && !selectWrapper.contains(target)) {
236
+ if (target !== selectWrapper && !selectWrapper.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
237
237
  _this3.setState({
238
238
  opened: false
239
239
  });
@@ -293,18 +293,11 @@ var _initialiseProps = function _initialiseProps() {
293
293
  enumerable: true,
294
294
  writable: true,
295
295
  value: function value(selected) {
296
- var _this3$props2 = _this3.props,
297
- onChange = _this3$props2.onChange,
298
- idKey = _this3$props2.idKey,
299
- name = _this3$props2.name;
296
+ var onChange = _this3.props.onChange;
300
297
 
301
298
  if (onChange) {
302
- var event = {
303
- target: {
304
- name: name,
305
- value: selected ? selected[idKey] : undefined
306
- }
307
- };
299
+ var event = _this3.getSelectEvent(selected);
300
+
308
301
  onChange(event);
309
302
  }
310
303
  }
@@ -364,9 +357,15 @@ var _initialiseProps = function _initialiseProps() {
364
357
  configurable: true,
365
358
  enumerable: true,
366
359
  writable: true,
367
- value: function value(e) {
360
+ value: function value(selected) {
368
361
  var onBlur = _this3.props.onBlur;
369
- if (onBlur) onBlur(e);
362
+
363
+ if (onBlur) {
364
+ var event = _this3.getSelectEvent(selected);
365
+
366
+ onBlur(event);
367
+ }
368
+
370
369
  if (!_this3.state.insideComponent) _this3.setState({
371
370
  opened: false,
372
371
  isTyping: false
@@ -378,9 +377,9 @@ var _initialiseProps = function _initialiseProps() {
378
377
  enumerable: true,
379
378
  writable: true,
380
379
  value: function value(e) {
381
- var _this3$props3 = _this3.props,
382
- dataSource = _this3$props3.dataSource,
383
- idKey = _this3$props3.idKey;
380
+ var _this3$props2 = _this3.props,
381
+ dataSource = _this3$props2.dataSource,
382
+ idKey = _this3$props2.idKey;
384
383
  var _this3$state = _this3.state,
385
384
  selected = _this3$state.selected,
386
385
  isTyping = _this3$state.isTyping;
@@ -389,12 +388,12 @@ var _initialiseProps = function _initialiseProps() {
389
388
  e.preventDefault();
390
389
 
391
390
  _this3.onSelect(selected);
392
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
391
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
393
392
  var index = dataSource.findIndex(function (d) {
394
393
  return d[idKey] === selected[idKey];
395
394
  });
396
395
 
397
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
396
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
398
397
  index = index === dataSource.length - 1 ? 0 : index + 1;
399
398
  } else {
400
399
  index = index === 0 ? dataSource.length - 1 : index - 1;
@@ -421,6 +420,22 @@ var _initialiseProps = function _initialiseProps() {
421
420
  });
422
421
  }
423
422
  });
423
+ Object.defineProperty(this, "getSelectEvent", {
424
+ configurable: true,
425
+ enumerable: true,
426
+ writable: true,
427
+ value: function value(selected) {
428
+ var _this3$props3 = _this3.props,
429
+ idKey = _this3$props3.idKey,
430
+ name = _this3$props3.name;
431
+ return {
432
+ target: {
433
+ name: name,
434
+ value: selected ? selected[idKey] : undefined
435
+ }
436
+ };
437
+ }
438
+ });
424
439
  Object.defineProperty(this, "setOnDenied", {
425
440
  configurable: true,
426
441
  enumerable: true,
@@ -7,9 +7,10 @@ exports.PARA_ENGANAR_O_ESLINT_JA_QUE_TENHO_SO_UMA_CONSTANTE = exports.keyCodes =
7
7
  var keyCodes = {
8
8
  TAB: 9,
9
9
  ENTER: 13,
10
- ARROW_UP: 40,
11
- ARROW_DOWN: 38,
12
- BACKSPACE: 8
10
+ ARROW_UP: 38,
11
+ ARROW_DOWN: 40,
12
+ BACKSPACE: 8,
13
+ F: 70
13
14
  };
14
15
  exports.keyCodes = keyCodes;
15
16
  var PARA_ENGANAR_O_ESLINT_JA_QUE_TENHO_SO_UMA_CONSTANTE = 1;
@@ -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,38 +47,37 @@ 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
- if (targetElement.current.contains(e.target)) {
80
+ if (targetElement && targetElement.current && targetElement.current.contains(e.target)) {
80
81
  setShowTooltip(true);
81
82
  } else setShowTooltip(false);
82
83
  };
@@ -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 && tooltipElement.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.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);