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
@@ -9,12 +9,16 @@ exports["default"] = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
12
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
15
 
14
16
  var _icons = _interopRequireDefault(require("../../icons"));
15
17
 
16
18
  var _withDropdown = require("../../dropdown/withDropdown");
17
19
 
20
+ var _buttons = _interopRequireDefault(require("../../buttons"));
21
+
18
22
  var _helpers = _interopRequireDefault(require("./helpers"));
19
23
 
20
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -28,22 +32,33 @@ var MenuItem = function MenuItem(_ref) {
28
32
  url = _ref.url,
29
33
  iconName = _ref.iconName,
30
34
  iconColor = _ref.iconColor,
31
- iconSize = _ref.iconSize;
35
+ iconSize = _ref.iconSize,
36
+ dropdownMenu = _ref.dropdownMenu;
32
37
 
33
38
  var _useContext = (0, _react.useContext)(_helpers["default"]),
34
39
  customClassMenuItem = _useContext.customClassMenuItem;
35
40
 
36
41
  var dropdownContext = (0, _react.useContext)(_withDropdown.WithDropdownContext);
37
- return /*#__PURE__*/_react["default"].createElement("a", {
38
- target: "_blank",
42
+ return /*#__PURE__*/_react["default"].createElement("div", {
43
+ className: "floatmenuitem"
44
+ }, /*#__PURE__*/_react["default"].createElement("div", {
45
+ className: "".concat(customClassMenuItem, " -items")
46
+ }, !_lodash["default"].isEmpty(dropdownMenu) && /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
47
+ customClass: "floatmenudropdown",
48
+ iconName: "more1",
49
+ transparent: true,
50
+ size: "medium",
51
+ boxShadow: false,
52
+ dropdown: true,
53
+ showIconDropdown: false
54
+ }, dropdownMenu), /*#__PURE__*/_react["default"].createElement("a", {
39
55
  className: "floatmenulink",
56
+ target: "_blank",
40
57
  onClick: function onClick() {
41
58
  if (dropdownContext) dropdownContext.handleDropdownClose();
42
59
  },
43
60
  href: url,
44
61
  rel: "noreferrer"
45
- }, /*#__PURE__*/_react["default"].createElement("div", {
46
- className: "".concat(customClassMenuItem, " -items")
47
62
  }, /*#__PURE__*/_react["default"].createElement("span", {
48
63
  className: "iconcontainer"
49
64
  }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
@@ -53,7 +68,7 @@ var MenuItem = function MenuItem(_ref) {
53
68
  customClass: "iconmenu"
54
69
  })), /*#__PURE__*/_react["default"].createElement("span", {
55
70
  className: "nameitem"
56
- }, title)));
71
+ }, title))));
57
72
  };
58
73
 
59
74
  MenuItem.propTypes = {
@@ -63,7 +78,8 @@ MenuItem.propTypes = {
63
78
  iconName: _propTypes["default"].string,
64
79
  iconColor: _propTypes["default"].string,
65
80
  iconSize: _propTypes["default"].number,
66
- customClass: _propTypes["default"].string
81
+ customClass: _propTypes["default"].string,
82
+ dropdownMenu: _propTypes["default"].element
67
83
  };
68
84
  MenuItem.defaultProps = {
69
85
  iconColor: 'gray',
@@ -72,7 +88,8 @@ MenuItem.defaultProps = {
72
88
  iconName: '',
73
89
  customClass: '',
74
90
  url: undefined,
75
- urlHref: undefined
91
+ urlHref: undefined,
92
+ dropdownMenu: undefined
76
93
  };
77
94
  var _default = MenuItem;
78
95
  exports["default"] = _default;
@@ -19,6 +19,8 @@ var _helpers = require("./helpers");
19
19
 
20
20
  var _permissionValidations = require("../../permissionValidations");
21
21
 
22
+ var _withTooltip = _interopRequireDefault(require("../../internals/withTooltip"));
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
25
 
24
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -49,7 +51,8 @@ var NavMenuItem = function NavMenuItem(props) {
49
51
  permissionAttr = props.permissionAttr,
50
52
  maxWidth = props.maxWidth,
51
53
  minWidth = props.minWidth,
52
- columnsQtty = props.columnsQtty;
54
+ columnsQtty = props.columnsQtty,
55
+ targetRef = props.targetRef;
53
56
 
54
57
  var _useState = (0, _react.useState)(false),
55
58
  _useState2 = _slicedToArray(_useState, 2),
@@ -69,7 +72,8 @@ var NavMenuItem = function NavMenuItem(props) {
69
72
 
70
73
  var _useContext = (0, _react.useContext)(_helpers.SideNavContext),
71
74
  isExpanded = _useContext.isExpanded,
72
- menuSize = _useContext.menuSize;
75
+ menuSize = _useContext.menuSize,
76
+ openSearchMenuPopup = _useContext.openSearchMenuPopup;
73
77
 
74
78
  var unvisible = onDenied.unvisible,
75
79
  disabled = onDenied.disabled;
@@ -93,6 +97,7 @@ var NavMenuItem = function NavMenuItem(props) {
93
97
  return /*#__PURE__*/_react["default"].createElement(_helpers.SubMenuContext.Provider, {
94
98
  value: contextValues()
95
99
  }, /*#__PURE__*/_react["default"].createElement("li", {
100
+ ref: targetRef,
96
101
  className: "item ".concat(url && !disabled && '-withlink', " ").concat(customClass, " ").concat(disabled && '-disabled'),
97
102
  onMouseEnter: function onMouseEnter(e) {
98
103
  _onMouseEnter(e);
@@ -108,7 +113,7 @@ var NavMenuItem = function NavMenuItem(props) {
108
113
  customClass: "menuicon"
109
114
  }), isExpanded && /*#__PURE__*/_react["default"].createElement("span", {
110
115
  className: "title"
111
- }, title), !childrenIsSubMenu && children)), showSubMenu && children && childrenIsSubMenu && !disabled && /*#__PURE__*/_react["default"].createElement("div", {
116
+ }, title), !childrenIsSubMenu && children)), showSubMenu && children && childrenIsSubMenu && !disabled && !openSearchMenuPopup && /*#__PURE__*/_react["default"].createElement("div", {
112
117
  className: "submenu-container",
113
118
  style: {
114
119
  marginLeft: targetDimensions.width,
@@ -134,9 +139,10 @@ NavMenuItem.propTypes = {
134
139
  url: _propTypes["default"].string,
135
140
  customClass: _propTypes["default"].string,
136
141
  permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
137
- minWidth: _propTypes["default"].oneOf([_propTypes["default"].string, _propTypes["default"].number]),
138
- maxWidth: _propTypes["default"].oneOf([_propTypes["default"].string, _propTypes["default"].number]),
139
- columnsQtty: _propTypes["default"].number
142
+ minWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
143
+ maxWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
144
+ columnsQtty: _propTypes["default"].number,
145
+ targetRef: _propTypes["default"].func
140
146
  };
141
147
  NavMenuItem.defaultProps = {
142
148
  childrenIsSubMenu: true,
@@ -148,7 +154,10 @@ NavMenuItem.defaultProps = {
148
154
  permissionAttr: undefined,
149
155
  minWidth: 500,
150
156
  maxWidth: '90%',
151
- columnsQtty: 2
157
+ columnsQtty: 2,
158
+ targetRef: undefined
152
159
  };
153
- var _default = NavMenuItem;
160
+
161
+ var _default = (0, _withTooltip["default"])(NavMenuItem);
162
+
154
163
  exports["default"] = _default;
@@ -35,14 +35,14 @@ var _react = _interopRequireWildcard(require("react"));
35
35
 
36
36
  var _propTypes = _interopRequireDefault(require("prop-types"));
37
37
 
38
+ var _uuid = _interopRequireDefault(require("uuid"));
39
+
38
40
  var _NavMenuItem = _interopRequireDefault(require("./NavMenuItem"));
39
41
 
40
42
  var _NavSubMenuItem = _interopRequireDefault(require("./NavSubMenuItem"));
41
43
 
42
44
  var _NavMenuGroup = _interopRequireDefault(require("./NavMenuGroup"));
43
45
 
44
- var _text = _interopRequireDefault(require("../../inputs/text"));
45
-
46
46
  var _ExpandMenu = _interopRequireDefault(require("./ExpandMenu"));
47
47
 
48
48
  require("../../assets/styles/sidenav.scss");
@@ -51,6 +51,8 @@ var _helpers = require("./helpers");
51
51
 
52
52
  var _icons = _interopRequireDefault(require("../../icons"));
53
53
 
54
+ var constants = _interopRequireWildcard(require("../../internals/constants"));
55
+
54
56
  var _popup_menu_search = _interopRequireDefault(require("./popup_menu_search"));
55
57
 
56
58
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -96,30 +98,20 @@ var SideNav = function SideNav(props) {
96
98
  isExpanded = _useState2[0],
97
99
  setIsExpanded = _useState2[1];
98
100
 
99
- var _useState3 = (0, _react.useState)(true),
101
+ var _useState3 = (0, _react.useState)([]),
100
102
  _useState4 = _slicedToArray(_useState3, 2),
101
- searchFieldHasNoFocus = _useState4[0],
102
- setSearchFieldHasNoFocus = _useState4[1];
103
+ menuItemsContent = _useState4[0],
104
+ setMenuItemsContent = _useState4[1];
103
105
 
104
- var _useState5 = (0, _react.useState)([]),
106
+ var _useState5 = (0, _react.useState)({}),
105
107
  _useState6 = _slicedToArray(_useState5, 2),
106
- menuItemsContent = _useState6[0],
107
- setMenuItemsContent = _useState6[1];
108
+ sideNavDimensions = _useState6[0],
109
+ setSideNavDimensions = _useState6[1];
108
110
 
109
- var _useState7 = (0, _react.useState)(''),
111
+ var _useState7 = (0, _react.useState)(false),
110
112
  _useState8 = _slicedToArray(_useState7, 2),
111
- searchContent = _useState8[0],
112
- setSearchContent = _useState8[1];
113
-
114
- var _useState9 = (0, _react.useState)({}),
115
- _useState10 = _slicedToArray(_useState9, 2),
116
- sideNavDimensions = _useState10[0],
117
- setSideNavDimensions = _useState10[1];
118
-
119
- var _useState11 = (0, _react.useState)(false),
120
- _useState12 = _slicedToArray(_useState11, 2),
121
- openSearchMenuPopup = _useState12[0],
122
- setOpenSearchMenuPopup = _useState12[1];
113
+ openSearchMenuPopup = _useState8[0],
114
+ setOpenSearchMenuPopup = _useState8[1];
123
115
 
124
116
  var searchFieldRef = (0, _react.useRef)(null);
125
117
  var sideNavRef = (0, _react.useRef)(null);
@@ -129,41 +121,6 @@ var SideNav = function SideNav(props) {
129
121
  if (onExpandMenuClick) onExpandMenuClick(!isExpanded);
130
122
  };
131
123
 
132
- var returnLeftElements = function returnLeftElements() {
133
- var propsTextField = {};
134
-
135
- if (searchFieldHasNoFocus) {
136
- propsTextField = {
137
- leftElements: [/*#__PURE__*/_react["default"].createElement("div", {
138
- key: "searchMenuIcon",
139
- role: "button",
140
- tabIndex: "-1",
141
- style: {
142
- width: '100%',
143
- height: '100%',
144
- display: 'flex',
145
- justifyContent: 'center'
146
- },
147
- onKeyDown: function onKeyDown() {},
148
- onClick: function onClick() {
149
- if (searchFieldRef && searchFieldRef.current) {
150
- setSearchFieldHasNoFocus(false);
151
- setTimeout(function () {
152
- searchFieldRef.current.focus();
153
- }, 150);
154
- }
155
- }
156
- }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
157
- name: "search",
158
- customClass: "searchmenuicon",
159
- size: menuSize === 'small' && 16 || menuSize === 'medium' && 22 || menuSize === 'large' && 32
160
- }))]
161
- };
162
- }
163
-
164
- return propsTextField;
165
- };
166
-
167
124
  var getPopupMenuSearchStyle = function getPopupMenuSearchStyle() {
168
125
  var left = sideNavDimensions.left,
169
126
  top = sideNavDimensions.top,
@@ -176,14 +133,13 @@ var SideNav = function SideNav(props) {
176
133
  var getContextValues = function getContextValues() {
177
134
  return {
178
135
  isExpanded: isExpanded,
179
- menuSize: menuSize
136
+ menuSize: menuSize,
137
+ openSearchMenuPopup: openSearchMenuPopup
180
138
  };
181
139
  };
182
140
 
183
141
  var closeSearchMenuPopup = function closeSearchMenuPopup() {
184
142
  setOpenSearchMenuPopup(false);
185
- setSearchContent('');
186
- setSearchFieldHasNoFocus(true);
187
143
  };
188
144
 
189
145
  var compareChild = function compareChild(child) {
@@ -192,6 +148,7 @@ var SideNav = function SideNav(props) {
192
148
 
193
149
  if ((type === _NavMenuItem["default"] || type === _NavSubMenuItem["default"]) && !child.props.children) {
194
150
  menuItemsContent.push({
151
+ id: "".concat(child.props.title, "-").concat(_uuid["default"].v1()),
195
152
  content: child.props.title,
196
153
  url: child.props.url
197
154
  });
@@ -215,6 +172,24 @@ var SideNav = function SideNav(props) {
215
172
  }
216
173
  };
217
174
 
175
+ var openSearchMenu = function openSearchMenu() {
176
+ setOpenSearchMenuPopup(true);
177
+ if (searchFieldRef.current) searchFieldRef.current.focus();
178
+ };
179
+
180
+ var onKeyDown = function onKeyDown(e) {
181
+ if ([constants.keyCodes.F].includes(e.keyCode) && e.ctrlKey && e.shiftKey) {
182
+ e.preventDefault();
183
+ openSearchMenu();
184
+ }
185
+ };
186
+
187
+ (0, _react.useEffect)(function () {
188
+ document.addEventListener('keydown', onKeyDown);
189
+ return function () {
190
+ document.removeEventListener('keydown', onKeyDown);
191
+ };
192
+ }, []);
218
193
  (0, _react.useEffect)(function () {
219
194
  if (enableMenuSearch && sideNavRef && sideNavRef.current) {
220
195
  setSideNavDimensions(sideNavRef.current.getBoundingClientRect());
@@ -233,34 +208,30 @@ var SideNav = function SideNav(props) {
233
208
  };
234
209
 
235
210
  var getPopupMenuSearch = function getPopupMenuSearch() {
236
- return /*#__PURE__*/_react["default"].createElement(_NavMenuGroup["default"], null, /*#__PURE__*/_react["default"].createElement(_NavMenuItem["default"], {
211
+ return /*#__PURE__*/_react["default"].createElement(_NavMenuGroup["default"], {
212
+ key: "popup-menusearch-".concat(_uuid["default"].v1())
213
+ }, /*#__PURE__*/_react["default"].createElement(_NavMenuItem["default"], {
237
214
  childrenIsSubMenu: false,
238
- customClass: "-customsidenavitem"
239
- }, /*#__PURE__*/_react["default"].createElement(_text["default"], _extends({
240
- value: searchContent,
241
- customClassForWrapper: "-customsizes",
242
- customClass: "-customsizes",
243
- customClassForSideButtons: "-iconcenter",
244
- tooltip: "Pesquisar funcionalidades",
245
- tooltipPosition: "right",
246
- customClassForInputContent: searchFieldHasNoFocus ? '-hidden' : '',
247
- onFocus: function onFocus() {
248
- return setSearchFieldHasNoFocus(false);
249
- },
250
- onBlur: function onBlur(e) {
251
- if (e.target.value === '') setSearchFieldHasNoFocus(true);
252
- },
253
- inputRef: searchFieldRef,
254
- onChange: function onChange(e) {
255
- setOpenSearchMenuPopup(e.target.value !== '');
256
- setSideNavDimensions(sideNavRef.current.getBoundingClientRect());
257
- setSearchContent(e.target.value);
215
+ customClass: "-customsidenavitem",
216
+ tooltip: "Pesquisar funcionalidades (CTRL+SHIFT+F)",
217
+ tooltipPosition: "right"
218
+ }, /*#__PURE__*/_react["default"].createElement("div", {
219
+ key: "searchMenuIcon",
220
+ className: "searchmenubutton",
221
+ role: "button",
222
+ tabIndex: "-1",
223
+ onKeyDown: function onKeyDown() {},
224
+ onClick: function onClick() {
225
+ openSearchMenu();
258
226
  }
259
- }, returnLeftElements())), openSearchMenuPopup && /*#__PURE__*/_react["default"].createElement(_popup_menu_search["default"], _extends({}, props, {
227
+ }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
228
+ name: "search",
229
+ customClass: "searchmenuicon",
230
+ size: menuSize === 'small' && 16 || menuSize === 'medium' && 22 || menuSize === 'large' && 32
231
+ })), openSearchMenuPopup && /*#__PURE__*/_react["default"].createElement(_popup_menu_search["default"], _extends({}, props, {
260
232
  style: getPopupMenuSearchStyle(),
261
- searchContent: searchContent,
262
233
  handlerClose: closeSearchMenuPopup,
263
- menuItemsContent: returnMenuItems()
234
+ menuItemsContent: menuItemsContent && returnMenuItems()
264
235
  }))));
265
236
  };
266
237
 
@@ -276,7 +247,7 @@ var SideNav = function SideNav(props) {
276
247
  return /*#__PURE__*/_react["default"].createElement(_helpers.SideNavContext.Provider, {
277
248
  value: getContextValues()
278
249
  }, /*#__PURE__*/_react["default"].createElement("div", {
279
- className: "sidenav-component ".concat(customClass),
250
+ className: "sidenav-component ".concat(openSearchMenuPopup ? '-blocked' : '', " ").concat(customClass),
280
251
  ref: sideNavRef
281
252
  }, showExpandMenu && /*#__PURE__*/_react["default"].createElement(_ExpandMenu["default"], {
282
253
  expandMenuCustomClass: "".concat(isExpanded && 'closefromexpanded', " ").concat(expandMenuCustomClass),
@@ -294,7 +265,8 @@ SideNav.propTypes = {
294
265
  showExpandMenu: _propTypes["default"].bool,
295
266
  children: _propTypes["default"].arrayOf(_propTypes["default"].element).isRequired,
296
267
  enableMenuSearch: _propTypes["default"].bool,
297
- menuSearchEmptyMessage: _propTypes["default"].string
268
+ menuSearchEmptyMessage: _propTypes["default"].string,
269
+ menuSearchPlaceholder: _propTypes["default"].string
298
270
  };
299
271
  SideNav.defaultProps = {
300
272
  expanded: true,
@@ -304,7 +276,8 @@ SideNav.defaultProps = {
304
276
  showExpandMenu: false,
305
277
  onExpandMenuClick: undefined,
306
278
  enableMenuSearch: false,
307
- menuSearchEmptyMessage: undefined
279
+ menuSearchEmptyMessage: '',
280
+ menuSearchPlaceholder: ''
308
281
  };
309
282
  var _default = SideNav;
310
283
  exports["default"] = _default;
@@ -9,8 +9,6 @@ exports["default"] = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _uuid = _interopRequireDefault(require("uuid"));
13
-
14
12
  var _reactDom = _interopRequireDefault(require("react-dom"));
15
13
 
16
14
  var _search = _interopRequireDefault(require("../../../inputs/search"));
@@ -43,12 +41,12 @@ var body = document.getElementsByTagName('body')[0];
43
41
 
44
42
  var PopupMenuSearch = function PopupMenuSearch(props) {
45
43
  var style = props.style,
46
- searchContent = props.searchContent,
47
44
  menuItemsContent = props.menuItemsContent,
48
45
  handlerClose = props.handlerClose,
49
- menuSearchEmptyMessage = props.menuSearchEmptyMessage;
46
+ menuSearchEmptyMessage = props.menuSearchEmptyMessage,
47
+ menuSearchPlaceholder = props.menuSearchPlaceholder;
50
48
 
51
- var _useState = (0, _react.useState)(searchContent),
49
+ var _useState = (0, _react.useState)(''),
52
50
  _useState2 = _slicedToArray(_useState, 2),
53
51
  searchFieldContent = _useState2[0],
54
52
  setSearchFieldContent = _useState2[1];
@@ -58,6 +56,11 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
58
56
  searchResult = _useState4[0],
59
57
  setSearchResult = _useState4[1];
60
58
 
59
+ var _useState5 = (0, _react.useState)(''),
60
+ _useState6 = _slicedToArray(_useState5, 2),
61
+ defaultSelectedItemId = _useState6[0],
62
+ setDefaultSelectedItemId = _useState6[1];
63
+
61
64
  var searchFieldRef = (0, _react.useRef)(null);
62
65
  var popupRef = (0, _react.useRef)(document.createElement('div'));
63
66
  popupRef.current.className = 'searchmenu';
@@ -81,35 +84,40 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
81
84
  (0, _react.useEffect)(function () {
82
85
  popupRef.current.style = style;
83
86
  }, [style]);
87
+ (0, _react.useEffect)(function () {
88
+ if (searchResult.length > 0) setDefaultSelectedItemId(searchResult[0].id);
89
+ }, []);
84
90
 
85
91
  var search = function search(value) {
86
92
  var filter = value.toLowerCase();
87
- var result = menuItemsContent.filter(function (item) {
93
+ var result = menuItemsContent && menuItemsContent.filter(function (item) {
88
94
  return item.content.toLowerCase().includes(filter);
89
95
  });
96
+ if (result.length > 0) setDefaultSelectedItemId(result[0].id);
90
97
  setSearchFieldContent(value);
91
98
  setSearchResult(result);
92
99
  };
93
100
 
94
- (0, _react.useEffect)(function () {
95
- setSearchFieldContent(searchContent);
96
- search(searchContent);
97
- }, [searchContent]);
98
-
99
101
  var returnList = function returnList() {
100
102
  if (searchResult && searchResult.length > 0) {
101
103
  return /*#__PURE__*/_react["default"].createElement(_list["default"], {
102
104
  condensed: true,
103
105
  transparent: true,
106
+ selectable: true,
107
+ onSelectItem: handlerClose,
108
+ selectedItemId: defaultSelectedItemId,
109
+ selectOnEnter: true,
104
110
  style: {
105
- margin: '25px 0px'
111
+ margin: '25px 0px',
112
+ border: 'none',
113
+ boxShadow: 'none'
106
114
  }
107
- }, searchResult && searchResult.map(function (item) {
115
+ }, searchResult.map(function (item) {
108
116
  return /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
109
- key: "".concat(item.content, "-").concat(_uuid["default"].v1()),
117
+ key: item.id,
118
+ itemId: item.id,
110
119
  url: item.url,
111
- text: item.content,
112
- onClick: handlerClose
120
+ text: item.content
113
121
  });
114
122
  }));
115
123
  }
@@ -136,8 +144,9 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
136
144
  },
137
145
  inputRef: searchFieldRef,
138
146
  value: searchFieldContent,
147
+ placeHolder: menuSearchPlaceholder,
139
148
  onReset: function onReset() {
140
- setSearchFieldContent('');
149
+ search('');
141
150
  }
142
151
  }), /*#__PURE__*/_react["default"].createElement("div", {
143
152
  style: {
@@ -206,38 +206,30 @@ describe('SideNav Menu', function () {
206
206
 
207
207
  expect(container.querySelector('.openclosemenu')).toBeInTheDocument();
208
208
  });
209
- it('should enable menu search', function () {
210
- var _render4 = (0, _react2.render)(sidebarNavMockRender({
211
- enableMenuSearch: true
212
- })),
213
- container = _render4.container;
214
-
215
- expect(container.querySelector('.inputwrapper')).toBeInTheDocument();
216
- });
217
209
  it('should render all items', function () {
218
- var _render5 = (0, _react2.render)(sidebarNavMockRender()),
219
- container = _render5.container;
210
+ var _render4 = (0, _react2.render)(sidebarNavMockRender()),
211
+ container = _render4.container;
220
212
  /* primeiro item é o float menu */
221
213
 
222
214
 
223
215
  expect(container.querySelectorAll('li.item').length - 1).toBe(menuDataMock.length);
224
216
  });
225
217
  it('should be rendering 3 items SVGs', function () {
226
- var _render6 = (0, _react2.render)(sidebarNavMockRender()),
227
- container = _render6.container;
218
+ var _render5 = (0, _react2.render)(sidebarNavMockRender()),
219
+ container = _render5.container;
228
220
 
229
221
  expect(container.querySelectorAll('li.item .icon-component').length).toBe(3);
230
222
  });
231
223
  it('should open submenu on over', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
232
- var _render7, container;
224
+ var _render6, container;
233
225
 
234
226
  return regeneratorRuntime.wrap(function _callee$(_context) {
235
227
  while (1) {
236
228
  switch (_context.prev = _context.next) {
237
229
  case 0:
238
- _render7 = (0, _react2.render)(sidebarNavMockRender({
230
+ _render6 = (0, _react2.render)(sidebarNavMockRender({
239
231
  menuSize: 'large'
240
- })), container = _render7.container;
232
+ })), container = _render6.container;
241
233
 
242
234
  _react2.fireEvent.mouseOver(container.querySelector('.customscroll .item'));
243
235
 
@@ -257,13 +249,13 @@ describe('SideNav Menu', function () {
257
249
  }, _callee);
258
250
  })));
259
251
  it('submenu should render all items', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
260
- var _render8, container;
252
+ var _render7, container;
261
253
 
262
254
  return regeneratorRuntime.wrap(function _callee2$(_context2) {
263
255
  while (1) {
264
256
  switch (_context2.prev = _context2.next) {
265
257
  case 0:
266
- _render8 = (0, _react2.render)(sidebarNavMockRender()), container = _render8.container;
258
+ _render7 = (0, _react2.render)(sidebarNavMockRender()), container = _render7.container;
267
259
 
268
260
  _react2.fireEvent.mouseOver(container.querySelector('.customscroll .item'));
269
261
 
@@ -283,13 +275,13 @@ describe('SideNav Menu', function () {
283
275
  }, _callee2);
284
276
  })));
285
277
  it('submenu should have title', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
286
- var _render9, container;
278
+ var _render8, container;
287
279
 
288
280
  return regeneratorRuntime.wrap(function _callee3$(_context3) {
289
281
  while (1) {
290
282
  switch (_context3.prev = _context3.next) {
291
283
  case 0:
292
- _render9 = (0, _react2.render)(sidebarNavMockRender()), container = _render9.container;
284
+ _render8 = (0, _react2.render)(sidebarNavMockRender()), container = _render8.container;
293
285
 
294
286
  _react2.fireEvent.mouseOver(container.querySelector('.customscroll .item'));
295
287
 
@@ -308,5 +300,80 @@ describe('SideNav Menu', function () {
308
300
  }
309
301
  }, _callee3);
310
302
  })));
303
+ describe('Popup Search Menu', function () {
304
+ it('should enable menu search', function () {
305
+ var _render9 = (0, _react2.render)(sidebarNavMockRender({
306
+ enableMenuSearch: true
307
+ })),
308
+ container = _render9.container;
309
+
310
+ expect(container.querySelector('.searchmenubutton')).toBeInTheDocument();
311
+ });
312
+ it('should render tooltip on over menu search item', function () {
313
+ var _render10 = (0, _react2.render)(sidebarNavMockRender({
314
+ enableMenuSearch: true
315
+ })),
316
+ container = _render10.container;
317
+
318
+ var navitem = container.querySelector('.-customsidenavitem');
319
+
320
+ _react2.fireEvent.mouseOver(navitem);
321
+
322
+ expect(document.querySelector('.tooltip-component')).toBeInTheDocument();
323
+ });
324
+ it('should open popup menu when pressed HotKey', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
325
+ var _render11, container;
326
+
327
+ return regeneratorRuntime.wrap(function _callee4$(_context4) {
328
+ while (1) {
329
+ switch (_context4.prev = _context4.next) {
330
+ case 0:
331
+ _render11 = (0, _react2.render)(sidebarNavMockRender({
332
+ enableMenuSearch: true
333
+ })), container = _render11.container;
334
+
335
+ _react2.fireEvent.keyDown(container, {
336
+ key: 'F',
337
+ code: 'keyF',
338
+ keyCode: 70,
339
+ ctrlKey: true,
340
+ shiftKey: true
341
+ });
342
+
343
+ expect(document.querySelector('.searchmenu')).toBeInTheDocument();
344
+
345
+ case 3:
346
+ case "end":
347
+ return _context4.stop();
348
+ }
349
+ }
350
+ }, _callee4);
351
+ })));
352
+ it('should search on input change', function () {
353
+ var _render12 = (0, _react2.render)(sidebarNavMockRender({
354
+ enableMenuSearch: true
355
+ })),
356
+ container = _render12.container;
357
+
358
+ _react2.fireEvent.keyDown(container, {
359
+ key: 'F',
360
+ code: 'keyF',
361
+ keyCode: 70,
362
+ ctrlKey: true,
363
+ shiftKey: true
364
+ });
365
+
366
+ var input = document.querySelector('.searchmenu .inputwrapper .inputcontent .textinput');
367
+
368
+ _react2.fireEvent.change(input, {
369
+ target: {
370
+ value: 'A'
371
+ }
372
+ });
373
+
374
+ expect(document.querySelector('.searchmenu')).toBeInTheDocument();
375
+ expect(document.querySelectorAll('.searchmenu .list-component .item').length).toBe(5);
376
+ });
377
+ });
311
378
  });
312
379
  });