linear-react-components-ui 1.1.2-beta.0 → 1.1.2-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 (46) hide show
  1. package/.eslintcache +1 -0
  2. package/.gitlab-ci.yml +1 -0
  3. package/.vscode/settings.json +10 -1
  4. package/lib/assets/styles/colors.scss +3 -1
  5. package/lib/assets/styles/dialog.scss +27 -10
  6. package/lib/assets/styles/error.scss +9 -0
  7. package/lib/assets/styles/input.scss +0 -7
  8. package/lib/assets/styles/multiSelect.scss +6 -1
  9. package/lib/assets/styles/radio.scss +37 -35
  10. package/lib/assets/styles/select.scss +13 -7
  11. package/lib/checkbox/index.js +4 -2
  12. package/lib/dialog/Custom.js +4 -2
  13. package/lib/dialog/base/Content.js +1 -0
  14. package/lib/dialog/base/Header.js +4 -4
  15. package/lib/dialog/base/index.js +6 -4
  16. package/lib/dialog/form/index.js +3 -3
  17. package/lib/drawer/Drawer.js +5 -4
  18. package/lib/dropdown/Popup.d.ts +1 -1
  19. package/lib/dropdown/Popup.js +5 -2
  20. package/lib/dropdown/types.d.ts +1 -0
  21. package/lib/inputs/base/InputTextBase.js +7 -2
  22. package/lib/inputs/base/helpers.d.ts +1 -2
  23. package/lib/inputs/base/helpers.js +1 -8
  24. package/lib/inputs/base/types.d.ts +1 -0
  25. package/lib/inputs/errorMessage/index.d.ts +15 -0
  26. package/lib/inputs/errorMessage/index.js +26 -0
  27. package/lib/inputs/file/DefaultFile.js +4 -2
  28. package/lib/inputs/file/DragDropFile.js +4 -2
  29. package/lib/inputs/multiSelect/ActionButtons.js +10 -8
  30. package/lib/inputs/multiSelect/Dropdown.js +2 -6
  31. package/lib/inputs/multiSelect/index.js +2 -2
  32. package/lib/inputs/period/index.js +4 -1
  33. package/lib/inputs/select/ActionButtons.js +18 -27
  34. package/lib/inputs/select/Dropdown.js +2 -6
  35. package/lib/inputs/select/multiple/Selecteds.d.ts +1 -1
  36. package/lib/inputs/select/multiple/Selecteds.js +3 -5
  37. package/lib/inputs/select/multiple/index.js +34 -21
  38. package/lib/inputs/select/simple/index.js +55 -33
  39. package/lib/inputs/select/types.d.ts +2 -1
  40. package/lib/inputs/types.d.ts +8 -3
  41. package/lib/menus/sidenav/index.js +3 -3
  42. package/lib/menus/sidenav/popup_menu_search/index.js +3 -2
  43. package/lib/tooltip/index.js +2 -2
  44. package/lib/treeview/Node.js +2 -2
  45. package/package.json +5 -5
  46. package/.tool-versions +0 -1
@@ -9,8 +9,8 @@ var _lodash = _interopRequireDefault(require("lodash"));
9
9
  var _buttons = require("../../buttons");
10
10
  var _icons = _interopRequireDefault(require("../../icons"));
11
11
  var _InputTextBase = _interopRequireDefault(require("../base/InputTextBase"));
12
- var helperBase = _interopRequireWildcard(require("../base/helpers"));
13
12
  var _hint = _interopRequireDefault(require("../../hint"));
13
+ var _errorMessage = require("../errorMessage");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -262,7 +262,9 @@ const DragDropFile = props => {
262
262
  onDragLeave: handleDragLeave,
263
263
  onDragOver: handleDragOver,
264
264
  onDrop: handleDrop
265
- })), errorMessages && helperBase.getErrorMessages(errorMessages), /*#__PURE__*/_react.default.createElement(_hint.default, {
265
+ })), /*#__PURE__*/_react.default.createElement(_errorMessage.ErrorMessage, {
266
+ messages: errorMessages
267
+ }), /*#__PURE__*/_react.default.createElement(_hint.default, {
266
268
  visible: !!hint,
267
269
  customClass: "hint",
268
270
  description: hint
@@ -20,22 +20,24 @@ const ActionButtons = _ref => {
20
20
  dropdownAlignButton = 'left'
21
21
  } = _ref;
22
22
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_buttons.default, {
23
+ transparent: true,
24
+ tabIndex: -1,
23
25
  disabled: disabled,
26
+ boxShadow: false,
24
27
  size: "small",
25
- iconName: dropdownOpened ? 'up' : 'down',
26
28
  onClick: handleOpenClose,
27
29
  customClass: "actionbutton",
28
- transparent: true,
29
- boxShadow: false
30
+ iconName: dropdownOpened ? 'up' : 'down'
30
31
  }), /*#__PURE__*/_react.default.createElement(_buttons.default, {
31
- disabled: disabled,
32
- iconName: "more1",
32
+ dropdown: true,
33
33
  transparent: true,
34
+ disabled: disabled,
35
+ tabIndex: -1,
34
36
  boxShadow: false,
37
+ showIconDropdown: false,
38
+ iconName: "more1",
35
39
  customClass: "actionbutton",
36
- dropdown: true,
37
- dropdownAlign: dropdownAlignButton,
38
- showIconDropdown: false
40
+ dropdownAlign: dropdownAlignButton
39
41
  }, /*#__PURE__*/_react.default.createElement(_list.default, null, /*#__PURE__*/_react.default.createElement(_list.ListItem, {
40
42
  itemId: "1",
41
43
  text: "Marcar Todos",
@@ -94,11 +94,9 @@ const Dropdown = props => {
94
94
  className: "listcontainer"
95
95
  }, dataCombo && dataCombo.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
96
96
  className: "item selectall"
97
- }, /*#__PURE__*/_react.default.createElement("span", {
98
- role: "button",
97
+ }, /*#__PURE__*/_react.default.createElement("button", {
99
98
  className: "menubutton",
100
99
  tabIndex: -1,
101
- onKeyPress: () => {},
102
100
  onClick: () => isAllChecked ? onUncheckAll(true) : onCheckAll(true)
103
101
  }, /*#__PURE__*/_react.default.createElement(_icons.default, {
104
102
  name: isAllChecked && dataCombo.length > 0 ? 'checkboxChecked2' : 'checkboxUnchecked2',
@@ -110,11 +108,9 @@ const Dropdown = props => {
110
108
  return /*#__PURE__*/_react.default.createElement("div", {
111
109
  key: "dropdowmItem ".concat(item[idKey], "}"),
112
110
  className: "item ".concat(isChecked && '-selected')
113
- }, /*#__PURE__*/_react.default.createElement("span", {
114
- role: "button",
111
+ }, /*#__PURE__*/_react.default.createElement("button", {
115
112
  className: "menubutton",
116
113
  tabIndex: -1,
117
- onKeyPress: () => {},
118
114
  onClick: () => {
119
115
  onSelect(item);
120
116
  }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _lodash = _interopRequireDefault(require("lodash"));
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- var _uuid = _interopRequireDefault(require("uuid"));
9
+ var uuid = _interopRequireWildcard(require("uuid"));
10
10
  var _InputTextBase = _interopRequireDefault(require("../base/InputTextBase"));
11
11
  var _ActionButtons = _interopRequireDefault(require("./ActionButtons"));
12
12
  var _Dropdown = _interopRequireDefault(require("./Dropdown"));
@@ -33,7 +33,7 @@ const MultiSelectField = props => {
33
33
  gridLayout,
34
34
  dropdownAlignButton = 'left'
35
35
  } = props;
36
- const componentId = "multiSelect-component".concat(_uuid.default.v1());
36
+ const componentId = "multiSelect-component".concat(uuid.v1());
37
37
  const [dataCombo, setDataCombo] = (0, _react.useState)(dataSource);
38
38
  const [selecteds, setSelecteds] = (0, _react.useState)();
39
39
  const [inputValue, setInputValue] = (0, _react.useState)('');
@@ -16,6 +16,7 @@ var _Dialog = _interopRequireDefault(require("./Dialog"));
16
16
  var _hint = _interopRequireDefault(require("../../hint"));
17
17
  var helperBase = _interopRequireWildcard(require("../base/helpers"));
18
18
  require("../../assets/styles/periodpicker.scss");
19
+ var _errorMessage = require("../errorMessage");
19
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -374,6 +375,8 @@ const PeriodPicker = props => {
374
375
  visible: !!hint,
375
376
  customClass: "hint",
376
377
  description: hint
377
- }), props.errorMessages && helperBase.getErrorMessages(props.errorMessages));
378
+ }), /*#__PURE__*/_react.default.createElement(_errorMessage.ErrorMessage, {
379
+ messages: props.errorMessages
380
+ }));
378
381
  };
379
382
  var _default = exports.default = PeriodPicker;
@@ -11,37 +11,28 @@ const ActionButtons = props => {
11
11
  const {
12
12
  disabled = false,
13
13
  showClearButton = true,
14
- dropDownOpened
14
+ dropDownOpened,
15
+ handlerOpenClose,
16
+ handlerClear
15
17
  } = props;
16
- const returnOnClick = () => {
17
- if (!disabled) {
18
- return props.handleOpenClose();
19
- }
20
- return undefined;
21
- };
22
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showClearButton && /*#__PURE__*/_react.default.createElement("span", {
23
- role: "button",
24
- className: "actionbutton",
25
- onClick: () => {
26
- props.handleClear();
27
- },
28
- onKeyPress: () => {},
29
- tabIndex: -1
18
+ return /*#__PURE__*/_react.default.createElement("div", {
19
+ className: "actionbuttonsselect"
20
+ }, showClearButton && /*#__PURE__*/_react.default.createElement("button", {
21
+ disabled: disabled,
22
+ tabIndex: -1,
23
+ className: "actionbutton buttonclear",
24
+ onClick: handlerClear
30
25
  }, /*#__PURE__*/_react.default.createElement(_icons.default, {
31
- pointerEvents: "none",
32
26
  name: "cancel",
33
- customClass: "iconclear"
34
- })), /*#__PURE__*/_react.default.createElement("span", {
35
- role: "button",
36
- className: "actionbutton",
37
- onClick: () => {
38
- returnOnClick();
39
- },
40
- onKeyPress: () => {},
41
- tabIndex: -1
42
- }, /*#__PURE__*/_react.default.createElement(_icons.default, {
43
- name: dropDownOpened ? 'mini_up' : 'mini_down',
44
27
  pointerEvents: "none"
28
+ })), /*#__PURE__*/_react.default.createElement("button", {
29
+ disabled: disabled,
30
+ tabIndex: -1,
31
+ className: "actionbutton buttonopenclose",
32
+ onClick: handlerOpenClose
33
+ }, /*#__PURE__*/_react.default.createElement(_icons.default, {
34
+ pointerEvents: "none",
35
+ name: dropDownOpened ? 'mini_up' : 'mini_down'
45
36
  })));
46
37
  };
47
38
  var _default = exports.default = ActionButtons;
@@ -29,7 +29,6 @@ const Dropdown = props => {
29
29
  dropdownWidth,
30
30
  gridWrapperStyle,
31
31
  handleOnSelect,
32
- handleOnBlur,
33
32
  inputValue,
34
33
  handleOnFocus,
35
34
  opened,
@@ -83,15 +82,12 @@ const Dropdown = props => {
83
82
  return /*#__PURE__*/_react.default.createElement("div", {
84
83
  key: "dropdowmIten ".concat(item[idKey], "}"),
85
84
  className: helper.getDropdownItemCssClass(itemSelected, disabled, striped)
86
- }, /*#__PURE__*/_react.default.createElement("span", {
87
- role: "button",
85
+ }, /*#__PURE__*/_react.default.createElement("button", {
88
86
  className: "menubutton",
89
87
  tabIndex: -1,
90
- onKeyPress: () => {},
91
- onClick: () => {
88
+ onClick: event => {
92
89
  if (!disabled) {
93
90
  handleOnSelect(item);
94
- handleOnBlur(item);
95
91
  }
96
92
  }
97
93
  }, item.iconName && /*#__PURE__*/_react.default.createElement(_icons.default, {
@@ -6,6 +6,6 @@ import '../../base/types.js';
6
6
  import 'react';
7
7
  import '../../../@types/Period.js';
8
8
 
9
- declare const Selecteds: ({ currents, descriptionKey, idKey, handleOnUnselect, }: ISelectedsMultipleProps) => JSX.Element;
9
+ declare const Selecteds: ({ currents, descriptionKey, idKey, handlerOnUnselect, }: ISelectedsMultipleProps) => JSX.Element;
10
10
 
11
11
  export { Selecteds as default };
@@ -11,17 +11,15 @@ const Selecteds = _ref => {
11
11
  currents,
12
12
  descriptionKey,
13
13
  idKey,
14
- handleOnUnselect
14
+ handlerOnUnselect
15
15
  } = _ref;
16
16
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, currents.map(selected => /*#__PURE__*/_react.default.createElement("div", {
17
17
  className: "selecteditem",
18
18
  key: "selected-".concat(selected[idKey])
19
- }, typeof descriptionKey === 'string' ? selected[descriptionKey] : descriptionKey(selected), /*#__PURE__*/_react.default.createElement("span", {
19
+ }, typeof descriptionKey === 'string' ? selected[descriptionKey] : descriptionKey(selected), /*#__PURE__*/_react.default.createElement("button", {
20
20
  className: "close",
21
- role: "button",
22
21
  tabIndex: -1,
23
- onKeyPress: () => {},
24
- onClick: () => handleOnUnselect(selected[idKey])
22
+ onClick: () => handlerOnUnselect(selected[idKey])
25
23
  }))));
26
24
  };
27
25
  var _default = exports.default = Selecteds;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
- var _uuid = _interopRequireDefault(require("uuid"));
9
+ var uuid = _interopRequireWildcard(require("uuid"));
10
10
  var _Dropdown = _interopRequireDefault(require("../Dropdown"));
11
11
  var _ActionButtons = _interopRequireDefault(require("../ActionButtons"));
12
12
  var _Selecteds = _interopRequireDefault(require("./Selecteds"));
@@ -24,7 +24,8 @@ const MultipleSelect = props => {
24
24
  handlerClear,
25
25
  value = [],
26
26
  remoteSearch = false,
27
- descriptionKey
27
+ descriptionKey,
28
+ showClearButton
28
29
  } = props;
29
30
  const [dataCombo, setDataCombo] = (0, _react.useState)(dataSource);
30
31
  const [currents, setCurrents] = (0, _react.useState)([]);
@@ -35,11 +36,12 @@ const MultipleSelect = props => {
35
36
  const [insideComponent, setInsideComponent] = (0, _react.useState)(false);
36
37
  const [onDenied, setOnDeniedSelect] = (0, _react.useState)();
37
38
  const [valueFromProps, setValueFromProps] = (0, _react.useState)([]);
38
- const componentId = "select-component".concat(_uuid.default.v1());
39
+ const componentId = "select-component".concat(uuid.v1());
39
40
  const componentRef = (0, _react.useRef)(null);
40
41
  const dropdownRef = (0, _react.useRef)(null);
41
42
  const selectWrapper = (0, _react.useRef)();
42
43
  const gridElRef = (0, _react.useRef)();
44
+ const inputTextRef = (0, _react.useRef)(null);
43
45
  const descriptionKeyIsString = typeof descriptionKey === 'string';
44
46
  const onScreenResize = () => {
45
47
  if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);
@@ -53,12 +55,12 @@ const MultipleSelect = props => {
53
55
  }
54
56
  };
55
57
  const onMouseMove = event => {
56
- const {
57
- target
58
- } = event;
59
- if (target.className === '') return;
60
- const insideComponents = ['item', 'menubutton', 'filterinput', 'filtercontainer', 'label'].includes(target.className);
61
- setInsideComponent(insideComponents);
58
+ var _dropdownRef$current, _dropdownRef$current$;
59
+ const target = event.target;
60
+ const idDropdown = ((_dropdownRef$current = dropdownRef.current) === null || _dropdownRef$current === void 0 ? void 0 : (_dropdownRef$current$ = _dropdownRef$current.parentElement) === null || _dropdownRef$current$ === void 0 ? void 0 : _dropdownRef$current$.id) || '';
61
+ const dropdownElement = document.getElementById(idDropdown);
62
+ const keepDropdownOpen = Boolean(dropdownElement === null || dropdownElement === void 0 ? void 0 : dropdownElement.contains(target));
63
+ setInsideComponent(keepDropdownOpen);
62
64
  };
63
65
  const onClearClick = () => {
64
66
  setSelected(undefined);
@@ -94,6 +96,7 @@ const MultipleSelect = props => {
94
96
  setCurrents(currentsSelect);
95
97
  setDataCombo(dataSource);
96
98
  setInputValue([]);
99
+ if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();
97
100
  setOpened(false);
98
101
  if (props.onSelect) setSelected(props.onSelect(currentsSelect.map(i => i[idKey])));
99
102
  };
@@ -101,11 +104,13 @@ const MultipleSelect = props => {
101
104
  if (currents) {
102
105
  const result = currents.filter(item => item[idKey] !== id);
103
106
  setCurrents(result);
107
+ if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();
108
+ setOpened(false);
104
109
  if (props.onSelect) setSelected(props.onSelect(result.map(i => i[idKey])));
105
110
  }
106
111
  };
107
112
  const onOpenClose = () => {
108
- setOpened(!opened);
113
+ setOpened(prevState => !prevState);
109
114
  if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);
110
115
  };
111
116
  const onFocus = () => {
@@ -115,11 +120,16 @@ const MultipleSelect = props => {
115
120
  };
116
121
  const onBlur = e => {
117
122
  if (props.onBlur) props.onBlur(e);
118
- if (!insideComponent) setOpened(false);
123
+ if (!insideComponent) {
124
+ setOpened(false);
125
+ setDataCombo(dataSource);
126
+ }
119
127
  };
120
128
  const onInputKeyDown = e => {
121
129
  if (e.keyCode) {
122
130
  if (e.keyCode === constants.keyCodes.ENTER && selected) {
131
+ var _e$preventDefault;
132
+ (_e$preventDefault = e.preventDefault) === null || _e$preventDefault === void 0 ? void 0 : _e$preventDefault.call(e);
123
133
  if (!currents.includes(selected)) onSelect(selected);
124
134
  } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
125
135
  if (!opened) setOpened(true);
@@ -190,6 +200,11 @@ const MultipleSelect = props => {
190
200
  ref: componentRef,
191
201
  className: "select-component"
192
202
  }, /*#__PURE__*/_react.default.createElement(_InputTextBase.default, _extends({}, props, {
203
+ inputRef: ref => {
204
+ if (props.inputRef) props.inputRef(ref);
205
+ inputTextRef.current = ref;
206
+ },
207
+ autoComplete: "off",
193
208
  value: inputValue.toString(),
194
209
  readOnly: shouldBeReadOnly(),
195
210
  onFocus: () => {
@@ -208,21 +223,19 @@ const MultipleSelect = props => {
208
223
  selectWrapper.current = r;
209
224
  },
210
225
  handlerSetOnDenied: setOnDenied,
211
- rightElements: /*#__PURE__*/_react.default.createElement(_ActionButtons.default, _extends({}, props, {
226
+ rightElements: /*#__PURE__*/_react.default.createElement(_ActionButtons.default, {
227
+ showClearButton: showClearButton,
212
228
  disabled: shouldDisable() || shouldBeReadOnly(),
213
229
  dropDownOpened: opened,
214
- handleClear: () => {
230
+ handlerClear: () => {
215
231
  if (shouldDisable()) return null;
216
232
  return onClearClick();
217
233
  },
218
- handleOpenClose: () => {
219
- onOpenClose();
220
- }
221
- }))
222
- }), /*#__PURE__*/_react.default.createElement(_Selecteds.default, _extends({
223
- currents: currents
224
- }, props, {
225
- handleOnUnselect: onUnselect
234
+ handlerOpenClose: onOpenClose
235
+ })
236
+ }), /*#__PURE__*/_react.default.createElement(_Selecteds.default, _extends({}, props, {
237
+ currents: currents,
238
+ handlerOnUnselect: onUnselect
226
239
  }))), opened && /*#__PURE__*/_react.default.createElement(_Dropdown.default, _extends({}, props, {
227
240
  selected: selected,
228
241
  selectFieldRef: componentRef,
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _uuid = _interopRequireDefault(require("uuid"));
8
+ var uuid = _interopRequireWildcard(require("uuid"));
9
9
  var _lodash = _interopRequireDefault(require("lodash"));
10
10
  var _Dropdown = _interopRequireDefault(require("../Dropdown"));
11
11
  var _ActionButtons = _interopRequireDefault(require("../ActionButtons"));
@@ -19,7 +19,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
19
19
  const SimpleSelect = props => {
20
20
  const {
21
21
  value,
22
- descriptionKey = '',
22
+ descriptionKey,
23
23
  dataSource = [],
24
24
  gridLayout,
25
25
  onSearch,
@@ -32,7 +32,9 @@ const SimpleSelect = props => {
32
32
  name = '',
33
33
  undigitable,
34
34
  searchOnDropdown = false,
35
- allOptions = undefined
35
+ allOptions = undefined,
36
+ showClearButton = false,
37
+ searchNotFoundText
36
38
  } = props;
37
39
  const descriptionKeyIsString = typeof descriptionKey === 'string';
38
40
  const dataSourceWithAllOptions = allOptions ? [{
@@ -48,15 +50,11 @@ const SimpleSelect = props => {
48
50
  const [onDenied, setOnDeniedSelect] = (0, _react.useState)();
49
51
  const [isTyping, setIsTyping] = (0, _react.useState)(false);
50
52
  const dropdownRef = (0, _react.useRef)(null);
51
- const componentId = "select-component".concat(_uuid.default.v1());
53
+ const componentId = "select-component-".concat(name, "-").concat(uuid.v1());
52
54
  const componentRef = (0, _react.useRef)(null);
53
55
  const selectWrapper = (0, _react.useRef)();
54
56
  const gridElement = (0, _react.useRef)();
55
- const clearSelected = () => {
56
- setInputText('');
57
- setSelected(null);
58
- setDataCombo(dataSourceWithAllOptions);
59
- };
57
+ const inputTextRef = (0, _react.useRef)(null);
60
58
  const onScreenResize = () => {
61
59
  if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);
62
60
  };
@@ -70,10 +68,12 @@ const SimpleSelect = props => {
70
68
  }
71
69
  };
72
70
  const onMouseMove = event => {
71
+ var _dropdownRef$current2, _dropdownRef$current3;
73
72
  const target = event.target;
74
- if (target.className === '') return;
75
- const insideComponents = ['item', 'menubutton', 'filterinput', 'filtercontainer', 'label'].includes(target.className);
76
- setInsideComponent(insideComponents);
73
+ const idDropdown = ((_dropdownRef$current2 = dropdownRef.current) === null || _dropdownRef$current2 === void 0 ? void 0 : (_dropdownRef$current3 = _dropdownRef$current2.parentElement) === null || _dropdownRef$current3 === void 0 ? void 0 : _dropdownRef$current3.id) || '';
74
+ const dropdownElement = document.getElementById(idDropdown);
75
+ const keepDropdownOpen = Boolean(dropdownElement === null || dropdownElement === void 0 ? void 0 : dropdownElement.contains(target));
76
+ setInsideComponent(keepDropdownOpen);
77
77
  };
78
78
  const getSelectEvent = selectedEvent => ({
79
79
  target: {
@@ -99,12 +99,12 @@ const SimpleSelect = props => {
99
99
  });
100
100
  if (dataComboFilter && dataComboFilter.length > 0) {
101
101
  selectedFilter = dataComboFilter[0];
102
+ setSelected(selectedFilter);
102
103
  }
103
104
  setDataCombo(dataComboFilter);
104
105
  }
105
106
  setOpened(true);
106
107
  setInputText(valueFilter);
107
- setSelected(selectedFilter);
108
108
  if (selectedFilter) {
109
109
  if (descriptionKeyIsString && valueFilter === selectedFilter[descriptionKey] || !descriptionKeyIsString && valueFilter === descriptionKey(selectedFilter)) {
110
110
  onChange(selectedFilter);
@@ -112,18 +112,22 @@ const SimpleSelect = props => {
112
112
  }
113
113
  };
114
114
  const onSelect = selectedDropdown => {
115
- if (selectedDropdown === undefined) return;
116
- setOpened(false);
115
+ if (!selectedDropdown) return;
117
116
  setSelected(selectedDropdown);
118
117
  if (descriptionKeyIsString) setInputText(selectedDropdown[descriptionKey]);else setInputText(descriptionKey(selectedDropdown));
119
- onChange(selectedDropdown);
118
+ new Promise(resolve => {
119
+ resolve(onChange(selectedDropdown));
120
+ }).finally(() => {
121
+ if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();
122
+ setOpened(false);
123
+ });
120
124
  };
121
125
  const onOpenClose = () => {
122
- setOpened(!opened);
126
+ setOpened(prevState => !prevState);
123
127
  if (selectWrapper.current) setDropdownWidth(selectWrapper.current.clientWidth);
124
128
  };
125
129
  const onFocus = () => {
126
- setOpened(openDropdownOnFocus);
130
+ if (openDropdownOnFocus) setOpened(true);
127
131
  if (selectWrapper) {
128
132
  const dropdownWidthFocus = selectWrapper.current ? selectWrapper.current.clientWidth : 0;
129
133
  setDropdownWidth(dropdownWidthFocus);
@@ -133,16 +137,20 @@ const SimpleSelect = props => {
133
137
  if (props.onBlur) {
134
138
  const event = getSelectEvent(selected);
135
139
  props.onBlur(event);
136
- if (selected) {
137
- if (descriptionKeyIsString && inputText !== selected[descriptionKey] || !descriptionKeyIsString && inputText !== descriptionKey(selected)) {
138
- clearSelected();
139
- }
140
+ if (selected && descriptionKeyIsString && inputText !== selected[descriptionKey] || !descriptionKeyIsString && inputText !== descriptionKey(selected)) {
141
+ setSelected(null);
142
+ setInputText(inputText);
143
+ new Promise(resolve => {
144
+ resolve(onChange(null));
145
+ }).finally(() => {
146
+ onChange();
147
+ });
140
148
  }
141
- setDataCombo(dataSourceWithAllOptions);
142
149
  }
143
150
  if (!insideComponent) {
144
151
  setOpened(false);
145
152
  setIsTyping(false);
153
+ setDataCombo(dataSourceWithAllOptions);
146
154
  }
147
155
  };
148
156
  const onInputKeyDown = e => {
@@ -160,13 +168,22 @@ const SimpleSelect = props => {
160
168
  index = dataCombo && index === 0 ? (dataCombo === null || dataCombo === void 0 ? void 0 : dataCombo.length) - 1 : index - 1;
161
169
  }
162
170
  setSelected(dataCombo[index]);
171
+ if (descriptionKeyIsString) setInputText(dataCombo[index][descriptionKey]);
172
+ if (!descriptionKeyIsString) setInputText(descriptionKey(dataCombo[index]));
163
173
  }
164
174
  }
165
175
  if (!isTyping) setIsTyping(true);
166
176
  };
167
177
  const onClearClick = () => {
168
- setSelected(undefined);
169
- setInputText('');
178
+ new Promise(resolve => {
179
+ resolve(onChange(null));
180
+ }).finally(() => {
181
+ setSelected(null);
182
+ setInputText('');
183
+ onChange();
184
+ if (inputTextRef && inputTextRef.current) inputTextRef.current.focus();
185
+ setOpened(false);
186
+ });
170
187
  };
171
188
  const setOnDenied = onDeniedSelect => {
172
189
  setOnDeniedSelect(onDeniedSelect);
@@ -229,6 +246,11 @@ const SimpleSelect = props => {
229
246
  ref: componentRef,
230
247
  className: "select-component"
231
248
  }, /*#__PURE__*/_react.default.createElement(_InputTextBase.default, _extends({}, props, {
249
+ inputRef: ref => {
250
+ if (props.inputRef) props.inputRef(ref);
251
+ inputTextRef.current = ref;
252
+ },
253
+ autoComplete: "off",
232
254
  readOnly: undigitable || shouldBeReadOnly(),
233
255
  value: inputText,
234
256
  onFocus: onFocus,
@@ -243,18 +265,18 @@ const SimpleSelect = props => {
243
265
  selectWrapper.current = r;
244
266
  },
245
267
  handlerSetOnDenied: inputOnDenied => setOnDenied(inputOnDenied),
246
- rightElements: /*#__PURE__*/_react.default.createElement(_ActionButtons.default, _extends({}, props, {
268
+ rightElements: /*#__PURE__*/_react.default.createElement(_ActionButtons.default, {
247
269
  disabled: shouldDisable() || shouldBeReadOnly(),
270
+ showClearButton: showClearButton,
248
271
  dropDownOpened: opened,
249
- handleClear: () => {
272
+ handlerClear: () => {
250
273
  if (shouldDisable()) return null;
251
274
  return onClearClick();
252
275
  },
253
- handleOpenClose: () => {
254
- onOpenClose();
255
- }
256
- }))
276
+ handlerOpenClose: onOpenClose
277
+ })
257
278
  })), opened && /*#__PURE__*/_react.default.createElement(_Dropdown.default, _extends({}, props, {
279
+ opened: opened,
258
280
  selected: selected,
259
281
  inputValue: inputText,
260
282
  selectFieldRef: componentRef,
@@ -268,9 +290,9 @@ const SimpleSelect = props => {
268
290
  handleOnKeydown: onInputKeyDown,
269
291
  handleOnBlur: () => onBlur,
270
292
  handleOnFocus: onFocus,
271
- opened: opened,
272
293
  dataCombo: dataCombo,
273
- dropdownWidth: dropdownWidth || 0
294
+ dropdownWidth: dropdownWidth || 0,
295
+ searchNotFoundText: searchNotFoundText
274
296
  })));
275
297
  };
276
298
  var _default = exports.default = SimpleSelect;
@@ -47,6 +47,7 @@ interface ISimpleSelectProps {
47
47
  autoFocus?: boolean;
48
48
  onFocus?: () => void;
49
49
  allOptions?: AllOptions;
50
+ inputRef?: ((ref: HTMLInputElement | HTMLTextAreaElement | null) => void);
50
51
  }
51
52
  interface ISelectFieldProps extends Omit<ISimpleSelectProps, 'idKey' | 'value' | 'descriptionKey'> {
52
53
  multiple?: boolean;
@@ -92,7 +93,7 @@ interface ISelectedsMultipleProps {
92
93
  idKey: string;
93
94
  descriptionKey: DescriptionKey;
94
95
  currents: DataCombo[];
95
- handleOnUnselect: (id: string) => void;
96
+ handlerOnUnselect: (id: string) => void;
96
97
  }
97
98
  interface GetFilteredParams {
98
99
  dataSource: DataCombo[];
@@ -133,8 +133,8 @@ interface IDropdownSelectProps {
133
133
  align?: 'left' | 'right';
134
134
  }
135
135
  interface IActionButtonsSelectProps {
136
- handleClear: () => void;
137
- handleOpenClose: () => void;
136
+ handlerClear: () => void;
137
+ handlerOpenClose: () => void;
138
138
  dropDownOpened: boolean;
139
139
  showClearButton?: boolean;
140
140
  disabled?: boolean;
@@ -149,5 +149,10 @@ interface IButtonsProps {
149
149
  transparent: boolean;
150
150
  disabled?: boolean;
151
151
  }
152
+ interface ErrorProps {
153
+ customClass?: string;
154
+ style?: React.CSSProperties;
155
+ messages?: string | string[];
156
+ }
152
157
 
153
- export type { IActionButtonsSelectProps, IAdvancedFilterProps, IButtonsProps, IDropdownProps, IDropdownSelectProps, IInputHOCProps, IMaskHOCProps, ISearchProps };
158
+ export type { ErrorProps, IActionButtonsSelectProps, IAdvancedFilterProps, IButtonsProps, IDropdownProps, IDropdownSelectProps, IInputHOCProps, IMaskHOCProps, ISearchProps };
@@ -29,7 +29,7 @@ Object.defineProperty(exports, "NavSubMenuItem", {
29
29
  });
30
30
  exports.default = void 0;
31
31
  var _react = _interopRequireWildcard(require("react"));
32
- var _uuid = _interopRequireDefault(require("uuid"));
32
+ var uuid = _interopRequireWildcard(require("uuid"));
33
33
  var _NavMenuItem = _interopRequireDefault(require("./NavMenuItem"));
34
34
  var _NavSubMenuItem = _interopRequireDefault(require("./NavSubMenuItem"));
35
35
  var _NavMenuGroup = _interopRequireDefault(require("./NavMenuGroup"));
@@ -82,7 +82,7 @@ const SideNav = props => {
82
82
  } = child;
83
83
  if ((type === _NavMenuItem.default || type === _NavSubMenuItem.default) && !child.props.children) {
84
84
  setMenuItemsContent(prevState => [...prevState, {
85
- id: "".concat(child.props.title, "-").concat(_uuid.default.v1()),
85
+ id: "".concat(child.props.title, "-").concat(uuid.v1()),
86
86
  content: child.props.title,
87
87
  url: child.props.url
88
88
  }]);
@@ -127,7 +127,7 @@ const SideNav = props => {
127
127
  }, [expanded]);
128
128
  const returnMenuItems = () => menuItemsContent.filter(item => item.content !== '');
129
129
  const getPopupMenuSearch = () => /*#__PURE__*/_react.default.createElement(_NavMenuGroup.default, {
130
- key: "popup-menusearch-".concat(_uuid.default.v1())
130
+ key: "popup-menusearch-".concat(uuid.v1())
131
131
  }, /*#__PURE__*/_react.default.createElement(_NavMenuItem.default, {
132
132
  childrenIsSubMenu: false,
133
133
  customClass: "-customsidenavitem",
@@ -34,15 +34,16 @@ const PopupMenuSearch = props => {
34
34
  const closeOnEsc = e => {
35
35
  if (e.keyCode === 27 || e.key === 'ESC') {
36
36
  handlerClose();
37
+ e.stopPropagation();
37
38
  }
38
39
  };
39
40
  (0, _react.useEffect)(() => {
40
41
  body.appendChild(popupRef.current);
41
42
  if (searchFieldRef && searchFieldRef.current) searchFieldRef.current.focus();
42
- document.body.addEventListener('keyup', closeOnEsc);
43
+ document.body.addEventListener('keydown', closeOnEsc);
43
44
  return () => {
44
45
  body.removeChild(popupRef.current);
45
- document.body.removeEventListener('keyup', closeOnEsc);
46
+ document.body.removeEventListener('keydown', closeOnEsc);
46
47
  };
47
48
  }, []);
48
49
  (0, _react.useEffect)(() => {