linear-react-components-ui 0.4.76-beta.31 → 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/assets/styles/commons.scss +10 -0
- package/lib/assets/styles/list.scss +8 -0
- package/lib/assets/styles/select.scss +3 -3
- package/lib/assets/styles/sidenav.scss +11 -1
- package/lib/assets/styles/table.scss +2 -7
- package/lib/dropdown/Popup.js +3 -2
- package/lib/inputs/search/index.js +2 -0
- package/lib/inputs/select/Dropdown.js +49 -62
- package/lib/inputs/select/helper.js +65 -2
- package/lib/inputs/select/multiple/index.js +7 -4
- package/lib/inputs/select/simple/index.js +9 -6
- package/lib/internals/constants.js +4 -3
- package/lib/list/Item.js +34 -9
- package/lib/list/helpers.js +8 -3
- package/lib/list/index.js +154 -12
- package/lib/list/list.spec.js +259 -102
- package/lib/menus/sidenav/NavMenuItem.js +15 -6
- package/lib/menus/sidenav/index.js +53 -84
- package/lib/menus/sidenav/popup_menu_search/index.js +24 -16
- package/lib/menus/sidenav/sidenav.spec.js +86 -19
- package/package.json +1 -1
- package/lib/inputs/date/helper.js +0 -16
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 =
|
|
44
|
+
var _helpers = require("./helpers");
|
|
41
45
|
|
|
42
46
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
43
47
|
|
|
@@ -58,37 +62,169 @@ 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
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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);
|
|
80
102
|
}
|
|
81
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();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return null;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
(0, _react.useEffect)(function () {
|
|
133
|
+
if (selectedItemRef.current && listRef.current && listRef.current.scroll) {
|
|
134
|
+
var selectedItemRect = selectedItemRef.current.getBoundingClientRect();
|
|
135
|
+
var listRect = listRef.current.getBoundingClientRect();
|
|
136
|
+
var defaultScrollTop = 0;
|
|
137
|
+
var defaultBottomOffset = 100;
|
|
138
|
+
|
|
139
|
+
if (selectedItemRect.top - selectedItemRect.height > listRect.bottom) {
|
|
140
|
+
listRef.current.scroll({
|
|
141
|
+
top: selectedItemRect.top
|
|
142
|
+
});
|
|
143
|
+
} else if (selectedItemRect.top + selectedItemRect.height - listRect.y >= listRect.height) {
|
|
144
|
+
listRef.current.scroll({
|
|
145
|
+
top: listRef.current.scrollTop + selectedItemRect.height
|
|
146
|
+
});
|
|
147
|
+
} else if (selectedItemRect.bottom < defaultBottomOffset) {
|
|
148
|
+
listRef.current.scroll({
|
|
149
|
+
top: defaultScrollTop
|
|
150
|
+
});
|
|
151
|
+
} else {
|
|
152
|
+
listRef.current.scroll({
|
|
153
|
+
top: listRef.current.scrollTop - selectedItemRect.height
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}, [selectedItemRef.current]);
|
|
158
|
+
(0, _react.useEffect)(function () {
|
|
159
|
+
document.addEventListener('keydown', onKeyDown);
|
|
160
|
+
return function () {
|
|
161
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
162
|
+
};
|
|
163
|
+
}, [skeletonize]);
|
|
82
164
|
(0, _react.useEffect)(function () {
|
|
83
165
|
if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
|
|
84
166
|
}, [props.selectedItemId]);
|
|
85
|
-
|
|
167
|
+
(0, _react.useEffect)(function () {
|
|
168
|
+
var newItensIds = children.length > 0 ? children.map(function (item) {
|
|
169
|
+
return item.props && item.props.itemId;
|
|
170
|
+
}).filter(Boolean) : [children.props.itemId];
|
|
171
|
+
setItensId(newItensIds);
|
|
172
|
+
}, [children.length]);
|
|
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, {
|
|
86
221
|
value: contextValues
|
|
87
222
|
}, /*#__PURE__*/_react["default"].createElement("ul", {
|
|
88
223
|
"data-testid": "list-component",
|
|
89
224
|
style: style,
|
|
90
|
-
|
|
91
|
-
|
|
225
|
+
ref: listRef,
|
|
226
|
+
className: "list-component ".concat(condensed && '-condensed', "\n ").concat(customClass, " ").concat(!transparent && '-listbackground')
|
|
227
|
+
}, newChildren));
|
|
92
228
|
};
|
|
93
229
|
|
|
94
230
|
List.propTypes = {
|
|
@@ -99,7 +235,10 @@ List.propTypes = {
|
|
|
99
235
|
selectable: _propTypes["default"].bool,
|
|
100
236
|
style: _propTypes["default"].object,
|
|
101
237
|
onSelectItem: _propTypes["default"].func,
|
|
102
|
-
selectedItemId: _propTypes["default"].string
|
|
238
|
+
selectedItemId: _propTypes["default"].string,
|
|
239
|
+
skeletonize: _propTypes["default"].bool,
|
|
240
|
+
skeletonItens: _propTypes["default"].number,
|
|
241
|
+
skeletonHeight: _propTypes["default"].number
|
|
103
242
|
};
|
|
104
243
|
List.defaultProps = {
|
|
105
244
|
customClass: '',
|
|
@@ -108,7 +247,10 @@ List.defaultProps = {
|
|
|
108
247
|
selectable: false,
|
|
109
248
|
style: {},
|
|
110
249
|
onSelectItem: undefined,
|
|
111
|
-
selectedItemId: ''
|
|
250
|
+
selectedItemId: '',
|
|
251
|
+
skeletonize: false,
|
|
252
|
+
skeletonItens: 5,
|
|
253
|
+
skeletonHeight: 48
|
|
112
254
|
};
|
|
113
255
|
var _default = List;
|
|
114
256
|
exports["default"] = _default;
|