linear-react-components-ui 0.4.76-beta.24 → 0.4.76-beta.27

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 (87) hide show
  1. package/lib/alerts/AlertProvider.js +1 -1
  2. package/lib/alerts/BaseAlert.js +1 -1
  3. package/lib/assets/styles/effects.scss +20 -0
  4. package/lib/assets/styles/sidenav.scss +7 -1
  5. package/lib/assets/styles/table.scss +13 -0
  6. package/lib/assets/styles/uitour.scss +112 -0
  7. package/lib/buttons/DefaultButton.js +1 -1
  8. package/lib/buttons/index.js +28 -28
  9. package/lib/calendar/base/helpers.js +6 -6
  10. package/lib/calendar/base/index.js +1 -1
  11. package/lib/calendar/index.js +10 -10
  12. package/lib/checkbox/index.js +1 -1
  13. package/lib/dialog/index.js +6 -6
  14. package/lib/drawer/Drawer.js +1 -1
  15. package/lib/drawer/index.js +4 -4
  16. package/lib/dropdown/withDropdown.js +2 -2
  17. package/lib/fieldset/index.js +1 -1
  18. package/lib/form/Field.js +1 -1
  19. package/lib/form/helpers.js +1 -1
  20. package/lib/form/index.js +5 -5
  21. package/lib/form/withFieldHOC.js +1 -1
  22. package/lib/form/withFormSecurity.js +2 -2
  23. package/lib/index.js +12 -12
  24. package/lib/inputs/base/InputTextBase.js +24 -4
  25. package/lib/inputs/base/helpers.js +1 -1
  26. package/lib/inputs/color/index.js +1 -1
  27. package/lib/inputs/date/Dropdown.js +1 -1
  28. package/lib/inputs/date/helper.js +16 -0
  29. package/lib/inputs/date/helpers.js +1 -1
  30. package/lib/inputs/date/index.js +1 -1
  31. package/lib/inputs/inputHOC.js +1 -1
  32. package/lib/inputs/mask/Cnpj.js +1 -1
  33. package/lib/inputs/mask/Cpf.js +1 -1
  34. package/lib/inputs/mask/helpers.js +2 -2
  35. package/lib/inputs/mask/imaskHOC.js +1 -1
  36. package/lib/inputs/mask/index.js +4 -4
  37. package/lib/inputs/multiSelect/Dropdown.js +1 -1
  38. package/lib/inputs/multiSelect/index.js +1 -1
  39. package/lib/inputs/number/format_number.js +1 -1
  40. package/lib/inputs/period/Dropdown.js +1 -1
  41. package/lib/inputs/period/helper.js +1 -1
  42. package/lib/inputs/period/index.js +1 -1
  43. package/lib/inputs/search/index.js +1 -1
  44. package/lib/inputs/select/Dropdown.js +1 -1
  45. package/lib/inputs/select/helper.js +1 -1
  46. package/lib/inputs/select/multiple/index.js +3 -3
  47. package/lib/inputs/select/simple/index.js +3 -3
  48. package/lib/internals/constants.js +5 -4
  49. package/lib/internals/withTooltip.js +1 -1
  50. package/lib/labelMessages/index.js +1 -1
  51. package/lib/labels/DefaultLabel.js +1 -1
  52. package/lib/labels/index.js +10 -10
  53. package/lib/list/Item.js +32 -8
  54. package/lib/list/index.js +89 -11
  55. package/lib/list/list.spec.js +230 -102
  56. package/lib/menus/sidenav/NavMenuItem.js +13 -5
  57. package/lib/menus/sidenav/NavSubMenuItem.js +1 -1
  58. package/lib/menus/sidenav/helpers.js +1 -1
  59. package/lib/menus/sidenav/index.js +56 -90
  60. package/lib/menus/sidenav/popup_menu_search/index.js +22 -16
  61. package/lib/menus/sidenav/sidenav.spec.js +86 -19
  62. package/lib/panel/Default.js +1 -1
  63. package/lib/panel/helpers.js +1 -1
  64. package/lib/panel/index.js +14 -14
  65. package/lib/permissionValidations.js +1 -1
  66. package/lib/radio/index.js +1 -1
  67. package/lib/skeleton/SkeletonContainer.js +1 -1
  68. package/lib/spinner/index.js +1 -1
  69. package/lib/split/Split.js +1 -1
  70. package/lib/table/Body.js +41 -7
  71. package/lib/table/Header.js +12 -1
  72. package/lib/table/HeaderColumn.js +4 -2
  73. package/lib/table/Row.js +14 -7
  74. package/lib/table/RowColumn.js +4 -3
  75. package/lib/table/helpers.js +11 -1
  76. package/lib/table/index.js +41 -17
  77. package/lib/tabs/Panel.js +1 -1
  78. package/lib/tabs/index.js +1 -1
  79. package/lib/tabs/tabHelpers.js +2 -3
  80. package/lib/toolbar/index.js +8 -8
  81. package/lib/treeview/Node.js +1 -1
  82. package/lib/treeview/index.js +1 -1
  83. package/lib/treeview_old/Node.js +1 -1
  84. package/lib/uitour/helpers.js +15 -0
  85. package/lib/uitour/index.js +271 -0
  86. package/lib/uitour/uitour.spec.js +176 -0
  87. package/package.json +1 -1
package/lib/list/Item.js CHANGED
@@ -21,6 +21,8 @@ var _helpers = _interopRequireDefault(require("./helpers"));
21
21
 
22
22
  var _withDropdown = require("../dropdown/withDropdown");
23
23
 
24
+ var constants = _interopRequireWildcard(require("../internals/constants"));
25
+
24
26
  var _permissionValidations = require("../permissionValidations");
25
27
 
26
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -39,12 +41,12 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
39
41
 
40
42
  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; }
41
43
 
42
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
44
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
43
45
 
44
46
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
47
 
46
48
  var Item = function Item(props) {
47
- var _onClick = props.onClick,
49
+ var onClick = props.onClick,
48
50
  leftIconName = props.leftIconName,
49
51
  leftIcon = props.leftIcon,
50
52
  displayCheckbox = props.displayCheckbox,
@@ -68,7 +70,8 @@ var Item = function Item(props) {
68
70
  var _useContext = (0, _react.useContext)(_helpers["default"]),
69
71
  handleSelectItem = _useContext.handleSelectItem,
70
72
  selectable = _useContext.selectable,
71
- selectedItemId = _useContext.selectedItemId;
73
+ selectedItemId = _useContext.selectedItemId,
74
+ selectedItemRef = _useContext.selectedItemRef;
72
75
 
73
76
  var dropdownContext = (0, _react.useContext)(_withDropdown.WithDropdownContext);
74
77
  var options = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible];
@@ -77,6 +80,8 @@ var Item = function Item(props) {
77
80
  _useState2 = _slicedToArray(_useState, 1),
78
81
  onDenied = _useState2[0];
79
82
 
83
+ var history = (0, _reactRouterDom.useHistory)();
84
+
80
85
  var shouldDisable = function shouldDisable() {
81
86
  return disabled || onDenied.disabled;
82
87
  };
@@ -97,23 +102,42 @@ var Item = function Item(props) {
97
102
  return null;
98
103
  };
99
104
 
105
+ var handleOnSelectItem = function handleOnSelectItem(e) {
106
+ if (onClick !== undefined) onClick(e, itemId);
107
+ if (dropdownContext) dropdownContext.handleDropdownClose();
108
+ if (selectable) handleSelectItem(itemId, onClick);
109
+ };
110
+
111
+ var onKeyDown = (0, _react.useCallback)(function (e) {
112
+ if ([constants.keyCodes.ENTER].includes(e.keyCode)) {
113
+ e.preventDefault();
114
+ handleOnSelectItem(e);
115
+ if (url) history.push(url);
116
+ }
117
+ }, [url]);
118
+
100
119
  var getProps = function getProps() {
101
120
  if (shouldDisable()) return undefined;
102
- if (_onClick === undefined && dropdownContext === undefined && !selectable) return null;
121
+ if (onClick === undefined && dropdownContext === undefined && !selectable) return null;
103
122
  return {
104
123
  onClick: function onClick(e) {
105
- if (_onClick !== undefined) _onClick(e, itemId);
106
- if (dropdownContext) dropdownContext.handleDropdownClose();
107
- if (selectable) handleSelectItem(itemId, _onClick);
124
+ handleOnSelectItem(e);
108
125
  },
109
- onKeyDown: null,
110
126
  role: 'button',
127
+ onKeyDown: onKeyDown,
111
128
  tabIndex: '0'
112
129
  };
113
130
  };
114
131
 
132
+ (0, _react.useEffect)(function () {
133
+ document.addEventListener('keydown', onKeyDown);
134
+ return function () {
135
+ document.removeEventListener('keydown', onKeyDown);
136
+ };
137
+ }, []);
115
138
  if (!visible || onDenied.unvisible) return null;
116
139
  return /*#__PURE__*/_react["default"].createElement("li", _extends({
140
+ ref: itemId && selectedItemId === itemId ? selectedItemRef : null,
117
141
  style: style,
118
142
  className: "item-container ".concat(hovered && 'hovered', "\n ").concat(itemId && selectedItemId === itemId ? '-activedlist' : '')
119
143
  }, getProps(), {
package/lib/list/index.js CHANGED
@@ -33,6 +33,8 @@ var _Header = _interopRequireDefault(require("./Header"));
33
33
 
34
34
  var _Item = _interopRequireDefault(require("./Item"));
35
35
 
36
+ var constants = _interopRequireWildcard(require("../internals/constants"));
37
+
36
38
  var _Separator = _interopRequireDefault(require("./Separator"));
37
39
 
38
40
  require("../assets/styles/list.scss");
@@ -53,11 +55,24 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
53
55
 
54
56
  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; }
55
57
 
56
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
58
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
57
59
 
58
60
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
61
 
60
62
  var List = function List(props) {
63
+ var selectedItemRef = (0, _react.useRef)(null);
64
+ var listRef = (0, _react.useRef)(null);
65
+
66
+ var _useState = (0, _react.useState)(''),
67
+ _useState2 = _slicedToArray(_useState, 2),
68
+ selectedItemId = _useState2[0],
69
+ setSelectedItemId = _useState2[1];
70
+
71
+ var _useState3 = (0, _react.useState)([]),
72
+ _useState4 = _slicedToArray(_useState3, 2),
73
+ itensId = _useState4[0],
74
+ setItensId = _useState4[1];
75
+
61
76
  var children = props.children,
62
77
  customClass = props.customClass,
63
78
  condensed = props.condensed,
@@ -65,29 +80,92 @@ var List = function List(props) {
65
80
  style = props.style,
66
81
  selectable = props.selectable,
67
82
  onSelectItem = props.onSelectItem;
68
-
69
- var _useState = (0, _react.useState)(''),
70
- _useState2 = _slicedToArray(_useState, 2),
71
- selectedItemId = _useState2[0],
72
- setSelectedItemId = _useState2[1];
73
-
74
83
  var contextValues = {
75
84
  selectable: selectable,
76
85
  selectedItemId: selectedItemId,
77
- handleSelectItem: function handleSelectItem(selectedId, onClick) {
78
- if (!onSelectItem && onClick) setSelectedItemId(selectedId);
79
- if (onSelectItem) onSelectItem(selectedId);
86
+ selectedItemRef: selectedItemRef,
87
+ children: children,
88
+ handleSelectItem: function handleSelectItem(itemId, onClick) {
89
+ if (!onSelectItem && onClick) setSelectedItemId(itemId);
90
+ if (onSelectItem) onSelectItem(itemId);
91
+ }
92
+ };
93
+
94
+ var onKeyDown = function onKeyDown(e) {
95
+ if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
96
+ e.preventDefault();
97
+
98
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
99
+ if (selectedItemId === itensId[itensId.length - 1]) {
100
+ setSelectedItemId(itensId[0]);
101
+ } else {
102
+ var index = itensId.indexOf(selectedItemId === '' ? '0' : selectedItemId);
103
+ setSelectedItemId(itensId[index + 1]);
104
+ }
105
+ } else if (e.keyCode === constants.keyCodes.ARROW_UP) {
106
+ if (selectedItemId === itensId[0]) {
107
+ setSelectedItemId(itensId[itensId.length - 1]);
108
+ } else {
109
+ var _index = itensId.indexOf(selectedItemId);
110
+
111
+ setSelectedItemId(itensId[_index - 1]);
112
+ }
113
+ }
114
+
115
+ return selectedItemRef.current && selectedItemRef.current.focus();
80
116
  }
117
+
118
+ return null;
81
119
  };
120
+
121
+ (0, _react.useEffect)(function () {
122
+ if (selectedItemRef.current && listRef.current && listRef.current.scroll) {
123
+ var selectedItemRect = selectedItemRef.current.getBoundingClientRect();
124
+ var listRect = listRef.current.getBoundingClientRect();
125
+ var defaultScrollTop = 0;
126
+ var defaultBottomOffset = 100;
127
+
128
+ if (selectedItemRect.top - selectedItemRect.height > listRect.bottom) {
129
+ listRef.current.scroll({
130
+ top: selectedItemRect.top
131
+ });
132
+ } else if (selectedItemRect.top + selectedItemRect.height - listRect.y >= listRect.height) {
133
+ listRef.current.scroll({
134
+ top: listRef.current.scrollTop + selectedItemRect.height
135
+ });
136
+ } else if (selectedItemRect.bottom < defaultBottomOffset) {
137
+ listRef.current.scroll({
138
+ top: defaultScrollTop
139
+ });
140
+ } else {
141
+ listRef.current.scroll({
142
+ top: listRef.current.scrollTop - selectedItemRect.height
143
+ });
144
+ }
145
+ }
146
+ }, [selectedItemRef.current]);
147
+ (0, _react.useEffect)(function () {
148
+ document.addEventListener('keydown', onKeyDown);
149
+ return function () {
150
+ document.removeEventListener('keydown', onKeyDown);
151
+ };
152
+ });
82
153
  (0, _react.useEffect)(function () {
83
154
  if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
84
155
  }, [props.selectedItemId]);
156
+ (0, _react.useEffect)(function () {
157
+ var newItensIds = children.length > 0 && children.map(function (item) {
158
+ return item.props.itemId;
159
+ }).filter(Boolean);
160
+ setItensId(newItensIds);
161
+ }, [children.length]);
85
162
  return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
86
163
  value: contextValues
87
164
  }, /*#__PURE__*/_react["default"].createElement("ul", {
88
165
  "data-testid": "list-component",
89
166
  style: style,
90
- className: "list-component ".concat(condensed && '-condensed', " ").concat(customClass, " ").concat(!transparent && '-listbackground')
167
+ ref: listRef,
168
+ className: "list-component ".concat(condensed && '-condensed', "\n ").concat(customClass, " ").concat(!transparent && '-listbackground')
91
169
  }, children));
92
170
  };
93
171