linear-react-components-ui 0.4.76-beta.30 → 0.4.76-beta.33

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.
package/README.md CHANGED
@@ -71,16 +71,14 @@ ficando da seguinte maneira:
71
71
 
72
72
  ### Publicar versão de demonstração no Heroku
73
73
 
74
- Pré-requesistos
75
- - Ter um conta no heroku
76
- - Ser um colaborador do projeto no Heroku
77
- - Ter o heroku cli instalado: https://devcenter.heroku.com/articles/heroku-cli#install-the-heroku-cli
78
74
 
75
+ No diretorio da aplicação clonar
76
+ `heroku git:clone -a linear-react-comp-demo`
77
+
78
+ Renomear a pastar `linear-react-comp-demo` para `demo`
79
+
79
80
  Fazer login no Heroku
80
81
  `heroku login`
81
-
82
- No diretorio da aplicação clonar
83
- `heroku git:clone -a linear-react-comp-demo demo`
84
82
 
85
83
  Executar o comando
86
84
  `npm run deploy:heroku`
@@ -12,6 +12,10 @@ que utilizam. Em caso de mudança, ficar atento para os refatores.
12
12
  overflow: hidden;
13
13
  background-color: transparent;
14
14
  border: 1px solid #eee;
15
+ &.-blocked {
16
+ opacity: 0.4;
17
+ pointer-events: none;
18
+ }
15
19
  > .expandedmenu,
16
20
  > .collapsedmenu {
17
21
  height: auto;
@@ -26,10 +30,16 @@ que utilizam. Em caso de mudança, ficar atento para os refatores.
26
30
  align-items: center;
27
31
  justify-content: center;
28
32
  padding-left: 0px;
33
+ > .searchmenubutton {
34
+ width: 100%;
35
+ height: 100%;
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ }
29
40
  }
30
41
  &.-customsidenavitem:hover {
31
42
  background-color: white;
32
- cursor: text;
33
43
  }
34
44
  &.-disabled {
35
45
  @extend %component-disabled;
@@ -45,8 +45,6 @@
45
45
  display: flex;
46
46
  justify-content: flex-start;
47
47
  align-items: center;
48
- min-height: 25px;
49
- color: $font-color-soft;
50
48
  >.node-menu {
51
49
  animation: revealelement 0.3s forwards ease-in-out;
52
50
  margin-left: 10px;
@@ -64,9 +62,7 @@
64
62
  margin-left: 10px;
65
63
  }
66
64
  &:hover {
67
- cursor: pointer;
68
65
  background-color: rgb(209, 209, 209);
69
- text-decoration: underline;
70
66
  }
71
67
  }
72
68
  > .nodelist {
@@ -189,14 +189,6 @@ describe('Form', function () {
189
189
  }));
190
190
  expect(mockHandlerReset).toHaveBeenCalled();
191
191
  });
192
- it('should apply disabled', function () {
193
- var mockHandlerReset = jest.fn();
194
- (0, _react2.render)(mockForm({
195
- disabled: true,
196
- handlerReset: mockHandlerReset
197
- }));
198
- expect(mockHandlerReset).not.toHaveBeenCalled();
199
- });
200
192
  });
201
193
  describe('Field', function () {
202
194
  describe('Default & Number', function () {
package/lib/form/index.js CHANGED
@@ -91,8 +91,7 @@ var Form = function Form(_ref) {
91
91
  onValidateForm = _ref.onValidateForm,
92
92
  externalFieldErrors = _ref.externalFieldErrors,
93
93
  onSubmit = _ref.onSubmit,
94
- skeletonize = _ref.skeletonize,
95
- disabled = _ref.disabled;
94
+ skeletonize = _ref.skeletonize;
96
95
 
97
96
  var _useState = (0, _react.useState)(dataSource),
98
97
  _useState2 = _slicedToArray(_useState, 2),
@@ -232,29 +231,10 @@ var Form = function Form(_ref) {
232
231
  };
233
232
  };
234
233
 
235
- var formProps = function formProps() {
236
- var propsForm = null;
237
-
238
- if (!disabled) {
239
- propsForm = {
240
- onSubmit: function onSubmit(e) {
241
- return e.preventDefault();
242
- },
243
- onKeyPress: function onKeyPress(e) {
244
- return submitOnEnter(e);
245
- }
246
- };
247
- }
248
-
249
- return propsForm;
250
- };
251
-
252
234
  (0, _react.useEffect)(function () {
253
- if (!disabled) {
254
- handlerSubmit(onFormSubmit);
255
- if (handlerReset) handlerReset(onReset);
256
- if (handlerValidates) handlerValidates(checkIsValid);
257
- }
235
+ handlerSubmit(onFormSubmit);
236
+ if (handlerReset) handlerReset(onReset);
237
+ if (handlerValidates) handlerValidates(checkIsValid);
258
238
  }, [data]);
259
239
  (0, _react.useEffect)(function () {
260
240
  if (securityBeforeUnload) {
@@ -267,24 +247,27 @@ var Form = function Form(_ref) {
267
247
  };
268
248
  }, [securityBeforeUnload, onBeforeUnload]);
269
249
  (0, _react.useEffect)(function () {
270
- if (!disabled) {
271
- if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
272
- setData(dataSource);
273
- setOriginalData(function (prevState) {
274
- return prevState || dataSource;
275
- });
276
- setSubmitFormOnEnter(submitOnPressEnterKey);
277
- }
250
+ if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
251
+ setData(dataSource);
252
+ setOriginalData(function (prevState) {
253
+ return prevState || dataSource;
254
+ });
255
+ setSubmitFormOnEnter(submitOnPressEnterKey);
278
256
  }
279
257
  }, [submitOnPressEnterKey, dataSource]);
280
258
  return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_helpers.FormContext.Provider, {
281
259
  value: getContextValue()
282
- }, /*#__PURE__*/_react["default"].createElement("form", _extends({
283
- style: style
284
- }, formProps(), {
260
+ }, /*#__PURE__*/_react["default"].createElement("form", {
261
+ style: style,
262
+ onSubmit: function onSubmit(e) {
263
+ return e.preventDefault();
264
+ },
265
+ onKeyPress: function onKeyPress(e) {
266
+ return submitOnEnter(e);
267
+ },
285
268
  role: "presentation",
286
269
  className: "form-component ".concat(customClass)
287
- }), children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
270
+ }, children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
288
271
  zIndex: "99999999",
289
272
  title: securityTitle || 'Dados Alterados',
290
273
  text: securityText || 'Você possui dados alterados, confirma o fechamento?',
@@ -310,8 +293,7 @@ Form.propTypes = {
310
293
  securityTitle: _propTypes["default"].string,
311
294
  securityText: _propTypes["default"].string,
312
295
  externalFieldErrors: _propTypes["default"].object,
313
- skeletonize: _propTypes["default"].bool,
314
- disabled: _propTypes["default"].bool
296
+ skeletonize: _propTypes["default"].bool
315
297
  };
316
298
  Form.defaultProps = {
317
299
  onValidateForm: undefined,
@@ -325,8 +307,7 @@ Form.defaultProps = {
325
307
  securityTitle: null,
326
308
  securityText: null,
327
309
  externalFieldErrors: {},
328
- skeletonize: false,
329
- disabled: false
310
+ skeletonize: false
330
311
  };
331
312
  var _default = Form;
332
313
  exports["default"] = _default;
@@ -558,10 +558,6 @@ function getIcons() {
558
558
  tools: {
559
559
  viewbox: '0 0 20 16',
560
560
  paths: ['M7.696 11.009l2.295 2.295-1.823 2.341c-0.334 0.437-0.926 0.476-1.315 0.087l-1.586-1.586c-0.389-0.389-0.35-0.98 0.087-1.315l2.341-1.823zM19.899 4.101l-2.399 2.399-3-3 2.399-2.399c-0.289-0.066-0.59-0.101-0.899-0.101-2.209 0-4 1.791-4 4 0 0.797 0.233 1.539 0.635 2.163l-2.233 1.739-3.402-3.402 4.5-4.5h-5l-2.22 2.22-0.22-0.22h-1.061v1.061l0.22 0.22-3.22 3.22 2.5 2.5 3-3 9 9 1.5-1.5-3.902-3.902 1.739-2.233c0.624 0.402 1.366 0.635 2.163 0.635 2.209 0 4-1.791 4-4 0-0.309-0.035-0.61-0.101-0.899z']
561
- },
562
- checkmarkCircle: {
563
- viewbox: '0 0 16 16',
564
- paths: ['M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM6.5 12.031l-2.813-3.344 1.031-1.031 1.781 1.75 5.156-4.5 0.719 0.719-5.875 6.406z']
565
561
  }
566
562
  };
567
563
  return icons;
@@ -7,8 +7,6 @@ exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
10
  var _BaseMask = _interopRequireDefault(require("./BaseMask"));
13
11
 
14
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -16,17 +14,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
16
14
  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); }
17
15
 
18
16
  var PhoneField = function PhoneField(props) {
19
- var cellNumber = props.cellNumber;
20
17
  return /*#__PURE__*/_react["default"].createElement(_BaseMask["default"], _extends({}, props, {
21
- mask: cellNumber ? '(00) 00000-0000' : '(00) 0000-0000'
18
+ mask: "(00) 0000-0000"
22
19
  }));
23
20
  };
24
21
 
25
- PhoneField.propTypes = {
26
- cellNumber: _propTypes["default"].bool
27
- };
28
- PhoneField.defaultProps = {
29
- cellNumber: false
30
- };
31
22
  var _default = PhoneField;
32
23
  exports["default"] = _default;
@@ -562,35 +562,18 @@ describe('Input Masked', function () {
562
562
 
563
563
  expect(input).toHaveValue('(11) 1111-1111');
564
564
  });
565
- it('should apply cellNumber', function () {
566
- var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.PhoneField, {
567
- cellNumber: true
568
- })),
569
- container = _render38.container;
570
-
571
- var input = container.querySelector('.input-base-component .inputwrapper .inputcontent input.textinput');
572
- expect(input).toHaveValue('(__) _____-____');
573
-
574
- _react2.fireEvent.change(input, {
575
- target: {
576
- value: '11111111111'
577
- }
578
- });
579
-
580
- expect(input).toHaveValue('(11) 11111-1111');
581
- });
582
565
  });
583
566
  describe('Zip Code', function () {
584
567
  it('should render correctly', function () {
585
- var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
586
- container = _render39.container;
568
+ var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
569
+ container = _render38.container;
587
570
 
588
571
  expect(container.firstChild).toBeTruthy();
589
572
  expect(container.firstChild).toHaveClass('input-base-component');
590
573
  });
591
574
  it('should apply zipcode mask', function () {
592
- var _render40 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
593
- container = _render40.container;
575
+ var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
576
+ container = _render39.container;
594
577
 
595
578
  var input = container.querySelector('.input-base-component .inputwrapper .inputcontent input.textinput');
596
579
  expect(input).toHaveValue('_____-___');
@@ -301,6 +301,7 @@ SearchField.propTypes = {
301
301
  disabled: _propTypes["default"].bool,
302
302
  readOnly: _propTypes["default"].bool,
303
303
  value: _propTypes["default"].string,
304
+ placeHolder: _propTypes["default"].string,
304
305
  permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
305
306
  };
306
307
  SearchField.defaultProps = {
@@ -312,6 +313,7 @@ SearchField.defaultProps = {
312
313
  disabled: false,
313
314
  readOnly: false,
314
315
  value: undefined,
316
+ placeHolder: '',
315
317
  permissionAttr: undefined
316
318
  };
317
319
  var _default = SearchField;
@@ -270,12 +270,12 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
270
270
 
271
271
  if (e.keyCode === constants.keyCodes.ENTER) {
272
272
  this.onSelect(selected);
273
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
273
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
274
274
  var index = dataSource.findIndex(function (d) {
275
275
  return d === selected;
276
276
  });
277
277
 
278
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
278
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
279
279
  index = index === dataSource.length - 1 ? 0 : index + 1;
280
280
  } else {
281
281
  index = index === 0 ? dataSource.length - 1 : index - 1;
@@ -385,12 +385,12 @@ var _initialiseProps = function _initialiseProps() {
385
385
  e.preventDefault();
386
386
 
387
387
  _this3.onSelect(selected);
388
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
388
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
389
389
  var index = dataSource.findIndex(function (d) {
390
390
  return d[idKey] === selected[idKey];
391
391
  });
392
392
 
393
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
393
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
394
394
  index = index === dataSource.length - 1 ? 0 : index + 1;
395
395
  } else {
396
396
  index = index === 0 ? dataSource.length - 1 : index - 1;
@@ -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;
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 }; }
@@ -44,7 +46,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
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");
@@ -58,6 +60,19 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
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