linear-react-components-ui 0.4.76-beta.32 → 0.4.76-beta.35

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.
@@ -331,8 +331,10 @@ $shadow-button-inset-default: inset 0 0 0 1px $default-border-color, $shadow-but
331
331
  text-shadow: none;
332
332
  box-shadow: none;
333
333
  border-color: transparent !important;
334
+ transition: none;
334
335
 
335
336
  > svg {
336
- display: none;
337
+ opacity: 0;
338
+ visibility: hidden;
337
339
  }
338
340
  }
@@ -116,6 +116,16 @@
116
116
  }
117
117
  }
118
118
 
119
+ %skeleton-transparency {
120
+ content: '';
121
+ position: absolute;
122
+ width: 100%;
123
+ height: 100%;
124
+ background: rgb(255,255,255);
125
+ background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 30%,
126
+ rgba(255,255,255,0.6) 70%,rgba(255,255,255,0.8) 100%);
127
+ }
128
+
119
129
  /* Efeito utilizado para o componente Skeleton */
120
130
  @keyframes shimmer {
121
131
  0% {
@@ -20,6 +20,14 @@ $item-height: 48px;
20
20
  line-height: 40px!important;
21
21
  }
22
22
  }
23
+ > .skeleton-transparency {
24
+ position: relative;
25
+ &::after {
26
+ @extend %skeleton-transparency;
27
+ top: 0;
28
+ left: 0;
29
+ }
30
+ }
23
31
  }
24
32
 
25
33
  .item-container {
@@ -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;
@@ -1,5 +1,6 @@
1
1
  @import "colors.scss";
2
2
  @import "effects.scss";
3
+ @import "commons.scss";
3
4
 
4
5
  .table-component {
5
6
  width: 100%;
@@ -23,13 +24,7 @@
23
24
  > .tbody {
24
25
  position: relative;
25
26
  &.skeleton-transparency::before {
26
- content: '';
27
- position: absolute;
28
- width: 100%;
29
- height: 100%;
30
- background: rgb(255,255,255);
31
- background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 30%,
32
- rgba(255,255,255,0.6) 70%,rgba(255,255,255,0.8) 100%);
27
+ @extend %skeleton-transparency;
33
28
  }
34
29
  }
35
30
  > .headercontainer > .innertable > .theader > .trow,
@@ -15,6 +15,11 @@
15
15
  margin-left: -20px;
16
16
  cursor: pointer;
17
17
  }
18
+ .loading {
19
+ margin-left: -30px;
20
+ position: absolute;
21
+ margin-top: -5px;
22
+ }
18
23
  }
19
24
  }
20
25
 
@@ -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;
@@ -272,12 +272,12 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
272
272
 
273
273
  if (e.keyCode === constants.keyCodes.ENTER) {
274
274
  this.onSelect(selected);
275
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
275
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
276
276
  var index = dataSource.findIndex(function (d) {
277
277
  return d === selected;
278
278
  });
279
279
 
280
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
280
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
281
281
  index = index === dataSource.length - 1 ? 0 : index + 1;
282
282
  } else {
283
283
  index = index === 0 ? dataSource.length - 1 : index - 1;
@@ -388,12 +388,12 @@ var _initialiseProps = function _initialiseProps() {
388
388
  e.preventDefault();
389
389
 
390
390
  _this3.onSelect(selected);
391
- } else if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
391
+ } else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
392
392
  var index = dataSource.findIndex(function (d) {
393
393
  return d[idKey] === selected[idKey];
394
394
  });
395
395
 
396
- if (e.keyCode === constants.keyCodes.ARROW_UP) {
396
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
397
397
  index = index === dataSource.length - 1 ? 0 : index + 1;
398
398
  } else {
399
399
  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
@@ -17,10 +17,12 @@ var _icons = _interopRequireDefault(require("../icons"));
17
17
 
18
18
  var _checkbox = _interopRequireDefault(require("../checkbox"));
19
19
 
20
- var _helpers = _interopRequireDefault(require("./helpers"));
20
+ var _helpers = 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,
@@ -65,10 +67,12 @@ var Item = function Item(props) {
65
67
  visible = props.visible,
66
68
  permissionAttr = props.permissionAttr;
67
69
 
68
- var _useContext = (0, _react.useContext)(_helpers["default"]),
70
+ var _useContext = (0, _react.useContext)(_helpers.ListContext),
69
71
  handleSelectItem = _useContext.handleSelectItem,
70
72
  selectable = _useContext.selectable,
71
- selectedItemId = _useContext.selectedItemId;
73
+ selectedItemId = _useContext.selectedItemId,
74
+ selectedItemRef = _useContext.selectedItemRef,
75
+ skeletonize = _useContext.skeletonize;
72
76
 
73
77
  var dropdownContext = (0, _react.useContext)(_withDropdown.WithDropdownContext);
74
78
  var options = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible];
@@ -77,6 +81,8 @@ var Item = function Item(props) {
77
81
  _useState2 = _slicedToArray(_useState, 1),
78
82
  onDenied = _useState2[0];
79
83
 
84
+ var history = (0, _reactRouterDom.useHistory)();
85
+
80
86
  var shouldDisable = function shouldDisable() {
81
87
  return disabled || onDenied.disabled;
82
88
  };
@@ -97,23 +103,42 @@ var Item = function Item(props) {
97
103
  return null;
98
104
  };
99
105
 
106
+ var handleOnSelectItem = function handleOnSelectItem(e) {
107
+ if (onClick !== undefined) onClick(e, itemId);
108
+ if (dropdownContext) dropdownContext.handleDropdownClose();
109
+ if (selectable) handleSelectItem(itemId, onClick);
110
+ };
111
+
112
+ var onKeyDown = (0, _react.useCallback)(function (e) {
113
+ if ([constants.keyCodes.ENTER].includes(e.keyCode) && !skeletonize) {
114
+ e.preventDefault();
115
+ handleOnSelectItem(e);
116
+ if (url) history.push(url);
117
+ }
118
+ }, [url]);
119
+
100
120
  var getProps = function getProps() {
101
121
  if (shouldDisable()) return undefined;
102
- if (_onClick === undefined && dropdownContext === undefined && !selectable) return null;
122
+ if (onClick === undefined && dropdownContext === undefined && !selectable) return null;
103
123
  return {
104
124
  onClick: function onClick(e) {
105
- if (_onClick !== undefined) _onClick(e, itemId);
106
- if (dropdownContext) dropdownContext.handleDropdownClose();
107
- if (selectable) handleSelectItem(itemId, _onClick);
125
+ handleOnSelectItem(e);
108
126
  },
109
- onKeyDown: null,
110
127
  role: 'button',
128
+ onKeyDown: onKeyDown,
111
129
  tabIndex: '0'
112
130
  };
113
131
  };
114
132
 
133
+ (0, _react.useEffect)(function () {
134
+ document.addEventListener('keydown', onKeyDown);
135
+ return function () {
136
+ document.removeEventListener('keydown', onKeyDown);
137
+ };
138
+ }, []);
115
139
  if (!visible || onDenied.unvisible) return null;
116
140
  return /*#__PURE__*/_react["default"].createElement("li", _extends({
141
+ ref: itemId && selectedItemId === itemId ? selectedItemRef : null,
117
142
  style: style,
118
143
  className: "item-container ".concat(hovered && 'hovered', "\n ").concat(itemId && selectedItemId === itemId ? '-activedlist' : '')
119
144
  }, getProps(), {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.LIST_ITEMS_TYPES = exports.ListContext = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -11,5 +11,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
11
11
 
12
12
  var ListContext = /*#__PURE__*/_react["default"].createContext();
13
13
 
14
- var _default = ListContext;
15
- exports["default"] = _default;
14
+ exports.ListContext = ListContext;
15
+ var LIST_ITEMS_TYPES = {
16
+ listHeader: 'Header',
17
+ listItem: 'Item',
18
+ listSeparator: 'Separator'
19
+ };
20
+ exports.LIST_ITEMS_TYPES = LIST_ITEMS_TYPES;
package/lib/list/index.js CHANGED
@@ -33,11 +33,15 @@ var _Header = _interopRequireDefault(require("./Header"));
33
33
 
34
34
  var _Item = _interopRequireDefault(require("./Item"));
35
35
 
36
+ var constants = _interopRequireWildcard(require("../internals/constants"));
37
+
38
+ var _skeleton = _interopRequireDefault(require("../skeleton"));
39
+
36
40
  var _Separator = _interopRequireDefault(require("./Separator"));
37
41
 
38
42
  require("../assets/styles/list.scss");
39
43
 
40
- var _helpers = _interopRequireDefault(require("./helpers"));
44
+ var _helpers = require("./helpers");
41
45
 
42
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
43
47
 
@@ -58,37 +62,168 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
58
62
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
63
 
60
64
  var List = function List(props) {
61
- var children = props.children,
62
- customClass = props.customClass,
65
+ var customClass = props.customClass,
63
66
  condensed = props.condensed,
64
67
  transparent = props.transparent,
65
68
  style = props.style,
66
69
  selectable = props.selectable,
67
- onSelectItem = props.onSelectItem;
70
+ onSelectItem = props.onSelectItem,
71
+ skeletonize = props.skeletonize,
72
+ skeletonItens = props.skeletonItens,
73
+ skeletonHeight = props.skeletonHeight,
74
+ children = props.children;
75
+ var selectedItemRef = (0, _react.useRef)(null);
76
+ var listRef = (0, _react.useRef)(null);
68
77
 
69
78
  var _useState = (0, _react.useState)(''),
70
79
  _useState2 = _slicedToArray(_useState, 2),
71
80
  selectedItemId = _useState2[0],
72
81
  setSelectedItemId = _useState2[1];
73
82
 
83
+ var _useState3 = (0, _react.useState)([]),
84
+ _useState4 = _slicedToArray(_useState3, 2),
85
+ itensId = _useState4[0],
86
+ setItensId = _useState4[1];
87
+
88
+ var _useState5 = (0, _react.useState)(children),
89
+ _useState6 = _slicedToArray(_useState5, 2),
90
+ newChildren = _useState6[0],
91
+ setNewChildren = _useState6[1];
92
+
74
93
  var contextValues = {
75
94
  selectable: selectable,
76
95
  selectedItemId: selectedItemId,
77
- handleSelectItem: function handleSelectItem(selectedId, onClick) {
78
- if (!onSelectItem && onClick) setSelectedItemId(selectedId);
79
- if (onSelectItem) onSelectItem(selectedId);
96
+ selectedItemRef: selectedItemRef,
97
+ children: children,
98
+ skeletonize: skeletonize,
99
+ handleSelectItem: function handleSelectItem(itemId, onClick) {
100
+ if (!onSelectItem && onClick) setSelectedItemId(itemId);
101
+ if (onSelectItem) onSelectItem(itemId);
102
+ }
103
+ };
104
+
105
+ var onKeyDown = function onKeyDown(e) {
106
+ if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode) && !skeletonize) {
107
+ e.preventDefault();
108
+
109
+ if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
110
+ if (selectedItemId === itensId[itensId.length - 1]) {
111
+ setSelectedItemId(itensId[0]);
112
+ } else {
113
+ var index = itensId.indexOf(selectedItemId === '' ? '0' : selectedItemId);
114
+ setSelectedItemId(itensId[index + 1]);
115
+ }
116
+ } else if (e.keyCode === constants.keyCodes.ARROW_UP) {
117
+ if (selectedItemId === itensId[0]) {
118
+ setSelectedItemId(itensId[itensId.length - 1]);
119
+ } else {
120
+ var _index = itensId.indexOf(selectedItemId);
121
+
122
+ setSelectedItemId(itensId[_index - 1]);
123
+ }
124
+ }
125
+
126
+ return selectedItemRef.current && selectedItemRef.current.focus();
80
127
  }
128
+
129
+ return null;
130
+ };
131
+
132
+ var getSkeleton = function getSkeleton() {
133
+ var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
134
+ var maxSkeletonsItensExceeded = 2;
135
+ var skeletonItensCount = length > skeletonItens ? maxSkeletonsItensExceeded : Math.floor(skeletonItens / length);
136
+ var skeletonItensList = Array.from(Array(skeletonItensCount).keys());
137
+ return /*#__PURE__*/_react["default"].createElement("div", {
138
+ className: "skeleton-transparency"
139
+ }, skeletonItensList.map(function (id) {
140
+ return /*#__PURE__*/_react["default"].createElement(_Item["default"], {
141
+ key: id,
142
+ hovered: false,
143
+ style: {
144
+ pointerEvents: 'none'
145
+ }
146
+ }, /*#__PURE__*/_react["default"].createElement(_skeleton["default"], {
147
+ height: skeletonHeight,
148
+ style: {
149
+ margin: '6px 0'
150
+ }
151
+ }));
152
+ }));
81
153
  };
154
+
155
+ var getNewChildren = function getNewChildren(headersChildren) {
156
+ return headersChildren.length > 0 ? headersChildren.map(function (item) {
157
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
158
+ key: item.props.title
159
+ }, item, getSkeleton(headersChildren.length));
160
+ }) : /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, headersChildren, getSkeleton());
161
+ };
162
+
163
+ (0, _react.useEffect)(function () {
164
+ if (selectedItemRef.current && listRef.current && listRef.current.scroll) {
165
+ var selectedItemRect = selectedItemRef.current.getBoundingClientRect();
166
+ var listRect = listRef.current.getBoundingClientRect();
167
+ var defaultScrollTop = 0;
168
+ var defaultBottomOffset = 100;
169
+
170
+ if (selectedItemRect.top - selectedItemRect.height > listRect.bottom) {
171
+ listRef.current.scroll({
172
+ top: selectedItemRect.top
173
+ });
174
+ } else if (selectedItemRect.top + selectedItemRect.height - listRect.y >= listRect.height) {
175
+ listRef.current.scroll({
176
+ top: listRef.current.scrollTop + selectedItemRect.height
177
+ });
178
+ } else if (selectedItemRect.bottom < defaultBottomOffset) {
179
+ listRef.current.scroll({
180
+ top: defaultScrollTop
181
+ });
182
+ } else {
183
+ listRef.current.scroll({
184
+ top: listRef.current.scrollTop - selectedItemRect.height
185
+ });
186
+ }
187
+ }
188
+ }, [selectedItemRef.current]);
189
+ (0, _react.useEffect)(function () {
190
+ if (!skeletonize) document.addEventListener('keydown', onKeyDown);
191
+ return function () {
192
+ document.removeEventListener('keydown', onKeyDown);
193
+ };
194
+ }, [skeletonize]);
82
195
  (0, _react.useEffect)(function () {
83
196
  if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
84
197
  }, [props.selectedItemId]);
85
- return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
198
+ (0, _react.useEffect)(function () {
199
+ var newItensIds = children.length > 0 ? children.map(function (item) {
200
+ return item.props && item.props.itemId;
201
+ }).filter(Boolean) : [children.props.itemId];
202
+ setItensId(newItensIds);
203
+ }, [children]);
204
+ (0, _react.useEffect)(function () {
205
+ if (skeletonize) {
206
+ var headersChildren = children.type && children.type === _helpers.LIST_ITEMS_TYPES.listHeader && children;
207
+
208
+ if (children.length > 0) {
209
+ headersChildren = children.filter(function (item) {
210
+ return item.type && item.type.name === _helpers.LIST_ITEMS_TYPES.listHeader;
211
+ });
212
+ }
213
+
214
+ setNewChildren(getNewChildren(headersChildren));
215
+ } else {
216
+ setNewChildren(children);
217
+ }
218
+ }, [skeletonize, children]);
219
+ return /*#__PURE__*/_react["default"].createElement(_helpers.ListContext.Provider, {
86
220
  value: contextValues
87
221
  }, /*#__PURE__*/_react["default"].createElement("ul", {
88
222
  "data-testid": "list-component",
89
223
  style: style,
90
- className: "list-component ".concat(condensed && '-condensed', " ").concat(customClass, " ").concat(!transparent && '-listbackground')
91
- }, children));
224
+ ref: listRef,
225
+ className: "list-component ".concat(condensed && '-condensed', "\n ").concat(customClass, " ").concat(!transparent && '-listbackground')
226
+ }, newChildren));
92
227
  };
93
228
 
94
229
  List.propTypes = {
@@ -99,7 +234,10 @@ List.propTypes = {
99
234
  selectable: _propTypes["default"].bool,
100
235
  style: _propTypes["default"].object,
101
236
  onSelectItem: _propTypes["default"].func,
102
- selectedItemId: _propTypes["default"].string
237
+ selectedItemId: _propTypes["default"].string,
238
+ skeletonize: _propTypes["default"].bool,
239
+ skeletonItens: _propTypes["default"].number,
240
+ skeletonHeight: _propTypes["default"].number
103
241
  };
104
242
  List.defaultProps = {
105
243
  customClass: '',
@@ -108,7 +246,10 @@ List.defaultProps = {
108
246
  selectable: false,
109
247
  style: {},
110
248
  onSelectItem: undefined,
111
- selectedItemId: ''
249
+ selectedItemId: '',
250
+ skeletonize: false,
251
+ skeletonItens: 5,
252
+ skeletonHeight: 48
112
253
  };
113
254
  var _default = List;
114
255
  exports["default"] = _default;