linear-react-components-ui 0.4.76-beta.26 → 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.
@@ -26,10 +26,16 @@ que utilizam. Em caso de mudança, ficar atento para os refatores.
26
26
  align-items: center;
27
27
  justify-content: center;
28
28
  padding-left: 0px;
29
+ > .searchmenubutton {
30
+ width: 100%;
31
+ height: 100%;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ }
29
36
  }
30
37
  &.-customsidenavitem:hover {
31
38
  background-color: white;
32
- cursor: text;
33
39
  }
34
40
  &.-disabled {
35
41
  @extend %component-disabled;
package/lib/list/Item.js CHANGED
@@ -108,13 +108,13 @@ var Item = function Item(props) {
108
108
  if (selectable) handleSelectItem(itemId, onClick);
109
109
  };
110
110
 
111
- var onKeyDown = function onKeyDown(e) {
111
+ var onKeyDown = (0, _react.useCallback)(function (e) {
112
112
  if ([constants.keyCodes.ENTER].includes(e.keyCode)) {
113
113
  e.preventDefault();
114
114
  handleOnSelectItem(e);
115
115
  if (url) history.push(url);
116
116
  }
117
- };
117
+ }, [url]);
118
118
 
119
119
  var getProps = function getProps() {
120
120
  if (shouldDisable()) return undefined;
@@ -123,12 +123,18 @@ var Item = function Item(props) {
123
123
  onClick: function onClick(e) {
124
124
  handleOnSelectItem(e);
125
125
  },
126
- onKeyDown: onKeyDown,
127
126
  role: 'button',
127
+ onKeyDown: onKeyDown,
128
128
  tabIndex: '0'
129
129
  };
130
130
  };
131
131
 
132
+ (0, _react.useEffect)(function () {
133
+ document.addEventListener('keydown', onKeyDown);
134
+ return function () {
135
+ document.removeEventListener('keydown', onKeyDown);
136
+ };
137
+ }, []);
132
138
  if (!visible || onDenied.unvisible) return null;
133
139
  return /*#__PURE__*/_react["default"].createElement("li", _extends({
134
140
  ref: itemId && selectedItemId === itemId ? selectedItemRef : null,
@@ -43,8 +43,6 @@ var _NavSubMenuItem = _interopRequireDefault(require("./NavSubMenuItem"));
43
43
 
44
44
  var _NavMenuGroup = _interopRequireDefault(require("./NavMenuGroup"));
45
45
 
46
- var _text = _interopRequireDefault(require("../../inputs/text"));
47
-
48
46
  var _ExpandMenu = _interopRequireDefault(require("./ExpandMenu"));
49
47
 
50
48
  require("../../assets/styles/sidenav.scss");
@@ -100,30 +98,20 @@ var SideNav = function SideNav(props) {
100
98
  isExpanded = _useState2[0],
101
99
  setIsExpanded = _useState2[1];
102
100
 
103
- var _useState3 = (0, _react.useState)(true),
101
+ var _useState3 = (0, _react.useState)([]),
104
102
  _useState4 = _slicedToArray(_useState3, 2),
105
- searchFieldHasNoFocus = _useState4[0],
106
- setSearchFieldHasNoFocus = _useState4[1];
103
+ menuItemsContent = _useState4[0],
104
+ setMenuItemsContent = _useState4[1];
107
105
 
108
- var _useState5 = (0, _react.useState)([]),
106
+ var _useState5 = (0, _react.useState)({}),
109
107
  _useState6 = _slicedToArray(_useState5, 2),
110
- menuItemsContent = _useState6[0],
111
- setMenuItemsContent = _useState6[1];
108
+ sideNavDimensions = _useState6[0],
109
+ setSideNavDimensions = _useState6[1];
112
110
 
113
- var _useState7 = (0, _react.useState)(''),
111
+ var _useState7 = (0, _react.useState)(false),
114
112
  _useState8 = _slicedToArray(_useState7, 2),
115
- searchContent = _useState8[0],
116
- setSearchContent = _useState8[1];
117
-
118
- var _useState9 = (0, _react.useState)({}),
119
- _useState10 = _slicedToArray(_useState9, 2),
120
- sideNavDimensions = _useState10[0],
121
- setSideNavDimensions = _useState10[1];
122
-
123
- var _useState11 = (0, _react.useState)(false),
124
- _useState12 = _slicedToArray(_useState11, 2),
125
- openSearchMenuPopup = _useState12[0],
126
- setOpenSearchMenuPopup = _useState12[1];
113
+ openSearchMenuPopup = _useState8[0],
114
+ setOpenSearchMenuPopup = _useState8[1];
127
115
 
128
116
  var searchFieldRef = (0, _react.useRef)(null);
129
117
  var sideNavRef = (0, _react.useRef)(null);
@@ -133,41 +121,6 @@ var SideNav = function SideNav(props) {
133
121
  if (onExpandMenuClick) onExpandMenuClick(!isExpanded);
134
122
  };
135
123
 
136
- var returnLeftElements = function returnLeftElements() {
137
- var propsTextField = {};
138
-
139
- if (searchFieldHasNoFocus) {
140
- propsTextField = {
141
- leftElements: [/*#__PURE__*/_react["default"].createElement("div", {
142
- key: "searchMenuIcon",
143
- role: "button",
144
- tabIndex: "-1",
145
- style: {
146
- width: '100%',
147
- height: '100%',
148
- display: 'flex',
149
- justifyContent: 'center'
150
- },
151
- onKeyDown: function onKeyDown() {},
152
- onClick: function onClick() {
153
- if (searchFieldRef && searchFieldRef.current) {
154
- setSearchFieldHasNoFocus(false);
155
- setTimeout(function () {
156
- searchFieldRef.current.focus();
157
- }, 150);
158
- }
159
- }
160
- }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
161
- name: "search",
162
- customClass: "searchmenuicon",
163
- size: menuSize === 'small' && 16 || menuSize === 'medium' && 22 || menuSize === 'large' && 32
164
- }))]
165
- };
166
- }
167
-
168
- return propsTextField;
169
- };
170
-
171
124
  var getPopupMenuSearchStyle = function getPopupMenuSearchStyle() {
172
125
  var left = sideNavDimensions.left,
173
126
  top = sideNavDimensions.top,
@@ -186,8 +139,6 @@ var SideNav = function SideNav(props) {
186
139
 
187
140
  var closeSearchMenuPopup = function closeSearchMenuPopup() {
188
141
  setOpenSearchMenuPopup(false);
189
- setSearchContent('');
190
- setSearchFieldHasNoFocus(true);
191
142
  };
192
143
 
193
144
  var compareChild = function compareChild(child) {
@@ -220,11 +171,15 @@ var SideNav = function SideNav(props) {
220
171
  }
221
172
  };
222
173
 
174
+ var openSearchMenu = function openSearchMenu() {
175
+ setOpenSearchMenuPopup(true);
176
+ if (searchFieldRef.current) searchFieldRef.current.focus();
177
+ };
178
+
223
179
  var onKeyDown = function onKeyDown(e) {
224
180
  if ([constants.keyCodes.F].includes(e.keyCode) && e.ctrlKey && e.shiftKey) {
225
181
  e.preventDefault();
226
- setSearchFieldHasNoFocus(false);
227
- if (searchFieldRef.current) searchFieldRef.current.focus();
182
+ openSearchMenu();
228
183
  }
229
184
  };
230
185
 
@@ -259,30 +214,21 @@ var SideNav = function SideNav(props) {
259
214
  customClass: "-customsidenavitem",
260
215
  tooltip: "Pesquisar funcionalidades (CTRL+SHIFT+F)",
261
216
  tooltipPosition: "right"
262
- }, /*#__PURE__*/_react["default"].createElement(_text["default"], _extends({
263
- value: searchContent,
264
- customClassForWrapper: "-customsizes",
265
- customClass: "-customsizes",
266
- customClassForSideButtons: "-iconcenter",
267
- customClassForInputContent: searchFieldHasNoFocus ? '-hidden' : '',
268
- onFocus: function onFocus() {
269
- return setSearchFieldHasNoFocus(false);
270
- },
271
- onBlur: function onBlur(e) {
272
- if (e.target.value === '') setSearchFieldHasNoFocus(true);
273
- },
274
- inputRef: searchFieldRef,
275
- onChange: function onChange(e) {
276
- setSearchContent(e.target.value);
277
- setOpenSearchMenuPopup(e.target.value !== '');
278
- setSideNavDimensions(sideNavRef.current.getBoundingClientRect());
217
+ }, /*#__PURE__*/_react["default"].createElement("div", {
218
+ key: "searchMenuIcon",
219
+ className: "searchmenubutton",
220
+ role: "button",
221
+ tabIndex: "-1",
222
+ onKeyDown: function onKeyDown() {},
223
+ onClick: function onClick() {
224
+ if (!openSearchMenuPopup) openSearchMenu();else closeSearchMenuPopup();
279
225
  }
280
- }, returnLeftElements())), openSearchMenuPopup && /*#__PURE__*/_react["default"].createElement(_popup_menu_search["default"], _extends({}, props, {
226
+ }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
227
+ name: "search",
228
+ customClass: "searchmenuicon",
229
+ size: menuSize === 'small' && 16 || menuSize === 'medium' && 22 || menuSize === 'large' && 32
230
+ })), openSearchMenuPopup && /*#__PURE__*/_react["default"].createElement(_popup_menu_search["default"], _extends({}, props, {
281
231
  style: getPopupMenuSearchStyle(),
282
- searchContent: searchContent,
283
- handleSetSearchContent: function handleSetSearchContent(searchValue) {
284
- return setSearchContent(searchValue);
285
- },
286
232
  handlerClose: closeSearchMenuPopup,
287
233
  menuItemsContent: menuItemsContent && returnMenuItems()
288
234
  }))));
@@ -328,7 +274,7 @@ SideNav.defaultProps = {
328
274
  showExpandMenu: false,
329
275
  onExpandMenuClick: undefined,
330
276
  enableMenuSearch: false,
331
- menuSearchEmptyMessage: undefined
277
+ menuSearchEmptyMessage: ''
332
278
  };
333
279
  var _default = SideNav;
334
280
  exports["default"] = _default;
@@ -41,13 +41,11 @@ var body = document.getElementsByTagName('body')[0];
41
41
 
42
42
  var PopupMenuSearch = function PopupMenuSearch(props) {
43
43
  var style = props.style,
44
- searchContent = props.searchContent,
45
44
  menuItemsContent = props.menuItemsContent,
46
45
  handlerClose = props.handlerClose,
47
- menuSearchEmptyMessage = props.menuSearchEmptyMessage,
48
- handleSetSearchContent = props.handleSetSearchContent;
46
+ menuSearchEmptyMessage = props.menuSearchEmptyMessage;
49
47
 
50
- var _useState = (0, _react.useState)(searchContent),
48
+ var _useState = (0, _react.useState)(''),
51
49
  _useState2 = _slicedToArray(_useState, 2),
52
50
  searchFieldContent = _useState2[0],
53
51
  setSearchFieldContent = _useState2[1];
@@ -57,6 +55,11 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
57
55
  searchResult = _useState4[0],
58
56
  setSearchResult = _useState4[1];
59
57
 
58
+ var _useState5 = (0, _react.useState)(''),
59
+ _useState6 = _slicedToArray(_useState5, 2),
60
+ defaultSelectedItemId = _useState6[0],
61
+ setDefaultSelectedItemId = _useState6[1];
62
+
60
63
  var searchFieldRef = (0, _react.useRef)(null);
61
64
  var popupRef = (0, _react.useRef)(document.createElement('div'));
62
65
  popupRef.current.className = 'searchmenu';
@@ -80,22 +83,20 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
80
83
  (0, _react.useEffect)(function () {
81
84
  popupRef.current.style = style;
82
85
  }, [style]);
86
+ (0, _react.useEffect)(function () {
87
+ if (searchResult.length > 0) setDefaultSelectedItemId(searchResult[0].id);
88
+ }, []);
83
89
 
84
90
  var search = function search(value) {
85
91
  var filter = value.toLowerCase();
86
92
  var result = menuItemsContent && menuItemsContent.filter(function (item) {
87
93
  return item.content.toLowerCase().includes(filter);
88
94
  });
95
+ if (result.length > 0) setDefaultSelectedItemId(result[0].id);
89
96
  setSearchFieldContent(value);
90
- handleSetSearchContent(value);
91
97
  setSearchResult(result);
92
98
  };
93
99
 
94
- (0, _react.useEffect)(function () {
95
- setSearchFieldContent(searchContent);
96
- search(searchContent);
97
- }, [searchContent]);
98
-
99
100
  var returnList = function returnList() {
100
101
  if (searchResult && searchResult.length > 0) {
101
102
  return /*#__PURE__*/_react["default"].createElement(_list["default"], {
@@ -103,6 +104,7 @@ var PopupMenuSearch = function PopupMenuSearch(props) {
103
104
  transparent: true,
104
105
  selectable: true,
105
106
  onSelectItem: handlerClose,
107
+ selectedItemId: defaultSelectedItemId,
106
108
  style: {
107
109
  margin: '25px 0px',
108
110
  border: 'none',
@@ -307,7 +307,7 @@ describe('SideNav Menu', function () {
307
307
  })),
308
308
  container = _render9.container;
309
309
 
310
- expect(container.querySelector('.inputwrapper')).toBeInTheDocument();
310
+ expect(container.querySelector('.searchmenubutton')).toBeInTheDocument();
311
311
  });
312
312
  it('should render tooltip on over menu search item', function () {
313
313
  var _render10 = (0, _react2.render)(sidebarNavMockRender({
@@ -321,7 +321,7 @@ describe('SideNav Menu', function () {
321
321
 
322
322
  expect(document.querySelector('.tooltip-component')).toBeInTheDocument();
323
323
  });
324
- it('should focus input when pressed HotKey', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
324
+ it('should open popup menu when pressed HotKey', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
325
325
  var _render11, container;
326
326
 
327
327
  return regeneratorRuntime.wrap(function _callee4$(_context4) {
@@ -340,7 +340,7 @@ describe('SideNav Menu', function () {
340
340
  shiftKey: true
341
341
  });
342
342
 
343
- expect(container.querySelector('.inputwrapper .sidebuttons')).not.toBeInTheDocument();
343
+ expect(document.querySelector('.searchmenu')).toBeInTheDocument();
344
344
 
345
345
  case 3:
346
346
  case "end":
@@ -349,13 +349,21 @@ describe('SideNav Menu', function () {
349
349
  }
350
350
  }, _callee4);
351
351
  })));
352
- it('should render menu search on input change', function () {
352
+ it('should search on input change', function () {
353
353
  var _render12 = (0, _react2.render)(sidebarNavMockRender({
354
354
  enableMenuSearch: true
355
355
  })),
356
356
  container = _render12.container;
357
357
 
358
- var input = container.querySelector('.inputwrapper .inputcontent .textinput');
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');
359
367
 
360
368
  _react2.fireEvent.change(input, {
361
369
  target: {
@@ -364,7 +372,7 @@ describe('SideNav Menu', function () {
364
372
  });
365
373
 
366
374
  expect(document.querySelector('.searchmenu')).toBeInTheDocument();
367
- expect(document.querySelectorAll('.list-component .item').length).toBe(5);
375
+ expect(document.querySelectorAll('.searchmenu .list-component .item').length).toBe(5);
368
376
  });
369
377
  });
370
378
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.76-beta.26",
3
+ "version": "0.4.76-beta.27",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {