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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/list/Item.js CHANGED
@@ -17,7 +17,7 @@ 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
 
@@ -67,11 +67,12 @@ var Item = function Item(props) {
67
67
  visible = props.visible,
68
68
  permissionAttr = props.permissionAttr;
69
69
 
70
- var _useContext = (0, _react.useContext)(_helpers["default"]),
70
+ var _useContext = (0, _react.useContext)(_helpers.ListContext),
71
71
  handleSelectItem = _useContext.handleSelectItem,
72
72
  selectable = _useContext.selectable,
73
73
  selectedItemId = _useContext.selectedItemId,
74
- selectedItemRef = _useContext.selectedItemRef;
74
+ selectedItemRef = _useContext.selectedItemRef,
75
+ skeletonize = _useContext.skeletonize;
75
76
 
76
77
  var dropdownContext = (0, _react.useContext)(_withDropdown.WithDropdownContext);
77
78
  var options = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible];
@@ -109,7 +110,7 @@ var Item = function Item(props) {
109
110
  };
110
111
 
111
112
  var onKeyDown = (0, _react.useCallback)(function (e) {
112
- if ([constants.keyCodes.ENTER].includes(e.keyCode)) {
113
+ if ([constants.keyCodes.ENTER].includes(e.keyCode) && !skeletonize) {
113
114
  e.preventDefault();
114
115
  handleOnSelectItem(e);
115
116
  if (url) history.push(url);
@@ -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
@@ -35,11 +35,13 @@ var _Item = _interopRequireDefault(require("./Item"));
35
35
 
36
36
  var constants = _interopRequireWildcard(require("../internals/constants"));
37
37
 
38
+ var _skeleton = _interopRequireDefault(require("../skeleton"));
39
+
38
40
  var _Separator = _interopRequireDefault(require("./Separator"));
39
41
 
40
42
  require("../assets/styles/list.scss");
41
43
 
42
- var _helpers = _interopRequireDefault(require("./helpers"));
44
+ var _helpers = require("./helpers");
43
45
 
44
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
47
 
@@ -60,6 +62,16 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
60
62
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
61
63
 
62
64
  var List = function List(props) {
65
+ var customClass = props.customClass,
66
+ condensed = props.condensed,
67
+ transparent = props.transparent,
68
+ style = props.style,
69
+ selectable = props.selectable,
70
+ onSelectItem = props.onSelectItem,
71
+ skeletonize = props.skeletonize,
72
+ skeletonItens = props.skeletonItens,
73
+ skeletonHeight = props.skeletonHeight,
74
+ children = props.children;
63
75
  var selectedItemRef = (0, _react.useRef)(null);
64
76
  var listRef = (0, _react.useRef)(null);
65
77
 
@@ -73,18 +85,17 @@ var List = function List(props) {
73
85
  itensId = _useState4[0],
74
86
  setItensId = _useState4[1];
75
87
 
76
- var children = props.children,
77
- customClass = props.customClass,
78
- condensed = props.condensed,
79
- transparent = props.transparent,
80
- style = props.style,
81
- selectable = props.selectable,
82
- onSelectItem = props.onSelectItem;
88
+ var _useState5 = (0, _react.useState)(children),
89
+ _useState6 = _slicedToArray(_useState5, 2),
90
+ newChildren = _useState6[0],
91
+ setNewChildren = _useState6[1];
92
+
83
93
  var contextValues = {
84
94
  selectable: selectable,
85
95
  selectedItemId: selectedItemId,
86
96
  selectedItemRef: selectedItemRef,
87
97
  children: children,
98
+ skeletonize: skeletonize,
88
99
  handleSelectItem: function handleSelectItem(itemId, onClick) {
89
100
  if (!onSelectItem && onClick) setSelectedItemId(itemId);
90
101
  if (onSelectItem) onSelectItem(itemId);
@@ -92,7 +103,7 @@ var List = function List(props) {
92
103
  };
93
104
 
94
105
  var onKeyDown = function onKeyDown(e) {
95
- if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode)) {
106
+ if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode) && !skeletonize) {
96
107
  e.preventDefault();
97
108
 
98
109
  if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
@@ -149,24 +160,71 @@ var List = function List(props) {
149
160
  return function () {
150
161
  document.removeEventListener('keydown', onKeyDown);
151
162
  };
152
- });
163
+ }, [skeletonize]);
153
164
  (0, _react.useEffect)(function () {
154
165
  if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
155
166
  }, [props.selectedItemId]);
156
167
  (0, _react.useEffect)(function () {
157
- var newItensIds = children.length > 0 && children.map(function (item) {
158
- return item.props.itemId;
159
- }).filter(Boolean);
168
+ var newItensIds = children.length > 0 ? children.map(function (item) {
169
+ return item.props && item.props.itemId;
170
+ }).filter(Boolean) : [children.props.itemId];
160
171
  setItensId(newItensIds);
161
172
  }, [children.length]);
162
- return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
173
+
174
+ var getSkeleton = function getSkeleton() {
175
+ var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
176
+ var maxSkeletonsItensExceeded = 2;
177
+ var skeletonItensCount = length > skeletonItens ? maxSkeletonsItensExceeded : Math.floor(skeletonItens / length);
178
+ var skeletonItensList = Array.from(Array(skeletonItensCount).keys());
179
+ return /*#__PURE__*/_react["default"].createElement("div", {
180
+ className: "skeleton-transparency"
181
+ }, skeletonItensList.map(function (id) {
182
+ return /*#__PURE__*/_react["default"].createElement(_Item["default"], {
183
+ key: id,
184
+ hovered: false,
185
+ style: {
186
+ pointerEvents: 'none'
187
+ }
188
+ }, /*#__PURE__*/_react["default"].createElement(_skeleton["default"], {
189
+ height: skeletonHeight,
190
+ style: {
191
+ margin: '6px 0'
192
+ }
193
+ }));
194
+ }));
195
+ };
196
+
197
+ var getNewChildren = function getNewChildren(headersChildren) {
198
+ return headersChildren.length > 0 ? headersChildren.map(function (item) {
199
+ return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
200
+ key: item.props.title
201
+ }, item, getSkeleton(headersChildren.length));
202
+ }) : /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, headersChildren, getSkeleton());
203
+ };
204
+
205
+ (0, _react.useEffect)(function () {
206
+ if (skeletonize) {
207
+ var headersChildren = children.type && children.type === _helpers.LIST_ITEMS_TYPES.listHeader && children;
208
+
209
+ if (children.length > 0) {
210
+ headersChildren = children.filter(function (item) {
211
+ return item.type && item.type.name === _helpers.LIST_ITEMS_TYPES.listHeader;
212
+ });
213
+ }
214
+
215
+ setNewChildren(getNewChildren(headersChildren));
216
+ } else {
217
+ setNewChildren(children);
218
+ }
219
+ }, [skeletonize, children.length]);
220
+ return /*#__PURE__*/_react["default"].createElement(_helpers.ListContext.Provider, {
163
221
  value: contextValues
164
222
  }, /*#__PURE__*/_react["default"].createElement("ul", {
165
223
  "data-testid": "list-component",
166
224
  style: style,
167
225
  ref: listRef,
168
226
  className: "list-component ".concat(condensed && '-condensed', "\n ").concat(customClass, " ").concat(!transparent && '-listbackground')
169
- }, children));
227
+ }, newChildren));
170
228
  };
171
229
 
172
230
  List.propTypes = {
@@ -177,7 +235,10 @@ List.propTypes = {
177
235
  selectable: _propTypes["default"].bool,
178
236
  style: _propTypes["default"].object,
179
237
  onSelectItem: _propTypes["default"].func,
180
- selectedItemId: _propTypes["default"].string
238
+ selectedItemId: _propTypes["default"].string,
239
+ skeletonize: _propTypes["default"].bool,
240
+ skeletonItens: _propTypes["default"].number,
241
+ skeletonHeight: _propTypes["default"].number
181
242
  };
182
243
  List.defaultProps = {
183
244
  customClass: '',
@@ -186,7 +247,10 @@ List.defaultProps = {
186
247
  selectable: false,
187
248
  style: {},
188
249
  onSelectItem: undefined,
189
- selectedItemId: ''
250
+ selectedItemId: '',
251
+ skeletonize: false,
252
+ skeletonItens: 5,
253
+ skeletonHeight: 48
190
254
  };
191
255
  var _default = List;
192
256
  exports["default"] = _default;