@zohodesk/components 1.4.7 → 1.4.9
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/.cli/propValidation_report.html +1 -1
- package/README.md +17 -4
- package/es/Accordion/Accordion.js +1 -1
- package/es/Card/Card.js +1 -1
- package/es/MultiSelect/AdvancedGroupMultiSelect.js +16 -8
- package/es/MultiSelect/AdvancedMultiSelect.js +13 -6
- package/es/MultiSelect/EmptyState.js +2 -1
- package/es/MultiSelect/MultiSelect.js +27 -16
- package/es/MultiSelect/MultiSelectWithAvatar.js +9 -2
- package/es/MultiSelect/SelectedOptions.js +4 -2
- package/es/MultiSelect/Suggestions.js +10 -2
- package/es/MultiSelect/__tests__/MultiSelect.spec.js +25 -0
- package/es/MultiSelect/__tests__/Suggestions.spec.js +58 -0
- package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +253 -0
- package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +343 -0
- package/es/MultiSelect/constants.js +6 -0
- package/es/MultiSelect/props/propTypes.js +15 -55
- package/es/Popup/Popup.js +45 -17
- package/es/Popup/Registry.js +1 -0
- package/es/Select/Select.js +1 -1
- package/es/Select/__tests__/Select.spec.js +8 -1
- package/es/utils/dropDownUtils.js +25 -6
- package/es/v1/Popup/Popup.js +1 -1
- package/es/v1/Select/Select.js +1 -1
- package/lib/Accordion/Accordion.js +2 -2
- package/lib/Card/Card.js +2 -2
- package/lib/MultiSelect/AdvancedGroupMultiSelect.js +94 -83
- package/lib/MultiSelect/AdvancedMultiSelect.js +16 -7
- package/lib/MultiSelect/EmptyState.js +3 -1
- package/lib/MultiSelect/MultiSelect.js +30 -17
- package/lib/MultiSelect/MultiSelectWithAvatar.js +11 -3
- package/lib/MultiSelect/SelectedOptions.js +4 -2
- package/lib/MultiSelect/Suggestions.js +10 -2
- package/lib/MultiSelect/__tests__/MultiSelect.spec.js +25 -0
- package/lib/MultiSelect/__tests__/Suggestions.spec.js +58 -0
- package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +253 -0
- package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +343 -0
- package/lib/MultiSelect/constants.js +13 -0
- package/lib/MultiSelect/props/propTypes.js +14 -55
- package/lib/Popup/Popup.js +54 -18
- package/lib/Popup/Registry.js +1 -0
- package/lib/Select/Select.js +2 -2
- package/lib/Select/__tests__/Select.spec.js +8 -1
- package/lib/utils/dropDownUtils.js +24 -3
- package/lib/v1/Popup/Popup.js +2 -2
- package/lib/v1/Select/Select.js +2 -2
- package/package.json +11 -9
|
@@ -56,11 +56,13 @@ var MultiSelect_propTypes = {
|
|
|
56
56
|
getRef: _propTypes["default"].func,
|
|
57
57
|
getTargetRef: _propTypes["default"].func,
|
|
58
58
|
i18nKeys: _propTypes["default"].shape({
|
|
59
|
+
searchText: _propTypes["default"].string,
|
|
59
60
|
clearText: _propTypes["default"].string,
|
|
60
61
|
loadingText: _propTypes["default"].string,
|
|
61
62
|
emptyText: _propTypes["default"].string,
|
|
62
63
|
noMoreText: _propTypes["default"].string,
|
|
63
|
-
searchEmptyText: _propTypes["default"].string
|
|
64
|
+
searchEmptyText: _propTypes["default"].string,
|
|
65
|
+
limitReachedMessage: _propTypes["default"].string
|
|
64
66
|
}),
|
|
65
67
|
a11y: _propTypes["default"].shape({
|
|
66
68
|
clearLabel: _propTypes["default"].string
|
|
@@ -135,7 +137,8 @@ var MultiSelect_propTypes = {
|
|
|
135
137
|
isFocus: _propTypes["default"].bool,
|
|
136
138
|
allowValueFallback: _propTypes["default"].bool,
|
|
137
139
|
renderCustomClearComponent: _propTypes["default"].func,
|
|
138
|
-
renderCustomToggleIndicator: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].node])
|
|
140
|
+
renderCustomToggleIndicator: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].node]),
|
|
141
|
+
limit: _propTypes["default"].number
|
|
139
142
|
};
|
|
140
143
|
exports.MultiSelect_propTypes = MultiSelect_propTypes;
|
|
141
144
|
var MultiSelectHeader_propTypes = {
|
|
@@ -176,7 +179,8 @@ var SelectedOptions_propTypes = {
|
|
|
176
179
|
})),
|
|
177
180
|
size: _propTypes["default"].oneOf(['medium', 'xmedium']),
|
|
178
181
|
palette: _propTypes["default"].string,
|
|
179
|
-
dataId: _propTypes["default"].string
|
|
182
|
+
dataId: _propTypes["default"].string,
|
|
183
|
+
limit: _propTypes["default"].number
|
|
180
184
|
};
|
|
181
185
|
exports.SelectedOptions_propTypes = SelectedOptions_propTypes;
|
|
182
186
|
var Suggestions_propTypes = {
|
|
@@ -207,7 +211,9 @@ var Suggestions_propTypes = {
|
|
|
207
211
|
logo: _propTypes["default"].string,
|
|
208
212
|
optionType: _propTypes["default"].string,
|
|
209
213
|
listItemProps: _propTypes["default"].object
|
|
210
|
-
}))
|
|
214
|
+
})),
|
|
215
|
+
limit: _propTypes["default"].number,
|
|
216
|
+
limitReachedMessage: _propTypes["default"].string
|
|
211
217
|
};
|
|
212
218
|
exports.Suggestions_propTypes = Suggestions_propTypes;
|
|
213
219
|
var AdvancedGroupMultiSelect_propTypes = (_AdvancedGroupMultiSe = {
|
|
@@ -226,7 +232,8 @@ var AdvancedGroupMultiSelect_propTypes = (_AdvancedGroupMultiSe = {
|
|
|
226
232
|
loadingText: _propTypes["default"].string,
|
|
227
233
|
emptyText: _propTypes["default"].string,
|
|
228
234
|
noMoreText: _propTypes["default"].string,
|
|
229
|
-
searchEmptyText: _propTypes["default"].string
|
|
235
|
+
searchEmptyText: _propTypes["default"].string,
|
|
236
|
+
limitReachedMessage: _propTypes["default"].string
|
|
230
237
|
}),
|
|
231
238
|
a11y: _propTypes["default"].shape({
|
|
232
239
|
clearLabel: _propTypes["default"].string
|
|
@@ -278,7 +285,7 @@ var AdvancedGroupMultiSelect_propTypes = (_AdvancedGroupMultiSe = {
|
|
|
278
285
|
needToCloseOnSelect: _propTypes["default"].func,
|
|
279
286
|
searchStr: _propTypes["default"].string,
|
|
280
287
|
children: _propTypes["default"].node
|
|
281
|
-
}, _defineProperty(_AdvancedGroupMultiSe, "dataSelectorId", _propTypes["default"].string), _defineProperty(_AdvancedGroupMultiSe, "isFocus", _propTypes["default"].bool), _defineProperty(_AdvancedGroupMultiSe, "allowValueFallback", _propTypes["default"].bool), _AdvancedGroupMultiSe);
|
|
288
|
+
}, _defineProperty(_AdvancedGroupMultiSe, "dataSelectorId", _propTypes["default"].string), _defineProperty(_AdvancedGroupMultiSe, "isFocus", _propTypes["default"].bool), _defineProperty(_AdvancedGroupMultiSe, "allowValueFallback", _propTypes["default"].bool), _defineProperty(_AdvancedGroupMultiSe, "limit", _propTypes["default"].number), _AdvancedGroupMultiSe);
|
|
282
289
|
exports.AdvancedGroupMultiSelect_propTypes = AdvancedGroupMultiSelect_propTypes;
|
|
283
290
|
|
|
284
291
|
var AdvancedMultiSelect_propTypes = _objectSpread(_objectSpread({}, MultiSelect_propTypes), {}, {
|
|
@@ -293,70 +300,22 @@ var AdvancedMultiSelect_propTypes = _objectSpread(_objectSpread({}, MultiSelect_
|
|
|
293
300
|
selectedOptions: _propTypes["default"].arrayOf(_propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])).isRequired,
|
|
294
301
|
selectedOptionsLimit: _propTypes["default"].number,
|
|
295
302
|
getSelectedOptionDetails: _propTypes["default"].func,
|
|
296
|
-
emptyMessage: _propTypes["default"].string.isRequired,
|
|
297
|
-
isDisabled: _propTypes["default"].bool,
|
|
298
|
-
isReadOnly: _propTypes["default"].bool,
|
|
299
|
-
needLocalSearch: _propTypes["default"].bool,
|
|
300
|
-
needSelectAll: _propTypes["default"].bool,
|
|
301
|
-
onChange: _propTypes["default"].func.isRequired,
|
|
302
|
-
searchEmptyMessage: _propTypes["default"].string,
|
|
303
|
-
placeHolder: _propTypes["default"].string,
|
|
304
|
-
selectAllText: _propTypes["default"].string,
|
|
305
|
-
textField: _propTypes["default"].string,
|
|
306
|
-
valueField: _propTypes["default"].string,
|
|
307
303
|
imageField: _propTypes["default"].string,
|
|
308
304
|
iconName: _propTypes["default"].string,
|
|
309
305
|
prefixText: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
|
310
306
|
//For grouping multiSelect
|
|
311
307
|
optionType: _propTypes["default"].oneOf(['default', 'avatar', 'icon']),
|
|
312
|
-
needEffect: _propTypes["default"].bool,
|
|
313
308
|
secondaryField: _propTypes["default"].string,
|
|
314
|
-
animationStyle: _propTypes["default"].string,
|
|
315
|
-
defaultDropBoxPosition: _propTypes["default"].oneOf(['bottom', 'top', 'left', 'right']),
|
|
316
|
-
dropBoxSize: _propTypes["default"].oneOf(['small', 'medium', 'large']),
|
|
317
|
-
isAnimate: _propTypes["default"].bool,
|
|
318
|
-
size: _propTypes["default"].oneOf(['medium', 'xmedium']),
|
|
319
|
-
textBoxSize: _propTypes["default"].oneOf(['small', 'medium', 'xmedium']),
|
|
320
|
-
title: _propTypes["default"].string,
|
|
321
|
-
variant: _propTypes["default"].string,
|
|
322
309
|
dataIdClearIcon: _propTypes["default"].string,
|
|
323
310
|
dataIdLoading: _propTypes["default"].string,
|
|
324
311
|
dataIdMultiSelectComp: _propTypes["default"].string,
|
|
325
312
|
dataIdSelectAllEle: _propTypes["default"].string,
|
|
326
|
-
|
|
327
|
-
/**** Popup Props ****/
|
|
328
|
-
isPopupOpen: _propTypes["default"].bool,
|
|
329
|
-
isPopupReady: _propTypes["default"].bool,
|
|
330
|
-
togglePopup: _propTypes["default"].func,
|
|
331
|
-
getContainerRef: _propTypes["default"].func,
|
|
332
|
-
position: _propTypes["default"].string,
|
|
333
|
-
removeClose: _propTypes["default"].func,
|
|
334
313
|
listItemSize: _propTypes["default"].oneOf(['small', 'medium', 'large']),
|
|
335
|
-
needBorder: _propTypes["default"].bool,
|
|
336
|
-
htmlId: _propTypes["default"].string,
|
|
337
|
-
i18nKeys: _propTypes["default"].shape({
|
|
338
|
-
clearText: _propTypes["default"].string,
|
|
339
|
-
loadingText: _propTypes["default"].string,
|
|
340
|
-
emptyText: _propTypes["default"].string,
|
|
341
|
-
noMoreText: _propTypes["default"].string,
|
|
342
|
-
searchEmptyText: _propTypes["default"].string
|
|
343
|
-
}),
|
|
344
|
-
a11y: _propTypes["default"].shape({
|
|
345
|
-
clearLabel: _propTypes["default"].string
|
|
346
|
-
}),
|
|
347
|
-
borderColor: _propTypes["default"].oneOf(['transparent', 'default', 'dark']),
|
|
348
|
-
isBoxPaddingNeed: _propTypes["default"].bool,
|
|
349
|
-
isSearchClearOnSelect: _propTypes["default"].bool,
|
|
350
|
-
disabledOptions: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
351
|
-
getFooter: _propTypes["default"].func,
|
|
352
314
|
customProps: _propTypes["default"].shape({
|
|
353
315
|
SuggestionsProps: _propTypes["default"].object,
|
|
354
316
|
DropBoxProps: _propTypes["default"].object
|
|
355
317
|
}),
|
|
356
|
-
|
|
357
|
-
dataSelectorId: _propTypes["default"].string,
|
|
358
|
-
customClass: _propTypes["default"].object,
|
|
359
|
-
isFocus: _propTypes["default"].bool
|
|
318
|
+
customClass: _propTypes["default"].object
|
|
360
319
|
});
|
|
361
320
|
|
|
362
321
|
exports.AdvancedMultiSelect_propTypes = AdvancedMultiSelect_propTypes;
|
package/lib/Popup/Popup.js
CHANGED
|
@@ -236,7 +236,11 @@ var Popup = function Popup(Component) {
|
|
|
236
236
|
_this.handleDropElementStyleUpdate = _this.handleDropElementStyleUpdate.bind(_assertThisInitialized(_this));
|
|
237
237
|
_this.positionRef = /*#__PURE__*/_react["default"].createRef();
|
|
238
238
|
_this.rootElement = _Registry["default"].getRootElement();
|
|
239
|
-
_this.popupObserver = new _ResizeObserver["default"](_this.handlePopupResize);
|
|
239
|
+
_this.popupObserver = new _ResizeObserver["default"](_this.handlePopupResize);
|
|
240
|
+
_this.cancelRaf = _this.cancelRaf.bind(_assertThisInitialized(_this));
|
|
241
|
+
_this.cancelPendingAnimationFrames = _this.cancelPendingAnimationFrames.bind(_assertThisInitialized(_this));
|
|
242
|
+
_this.setPositionRafId = null;
|
|
243
|
+
_this.resizePositionRafId = null; //dropBoxSize
|
|
240
244
|
|
|
241
245
|
_this.size = null;
|
|
242
246
|
_this.isTargetElementVisible = false;
|
|
@@ -262,18 +266,21 @@ var Popup = function Popup(Component) {
|
|
|
262
266
|
groupPopups.push(this);
|
|
263
267
|
_Registry["default"].popups[group] = groupPopups;
|
|
264
268
|
|
|
265
|
-
if (Object.keys(_Registry["default"].popups).length === 1 && groupPopups.length === 1) {
|
|
266
|
-
|
|
267
|
-
document.addEventListener('keyup', this.documentKeyupHandler, false); // document.addEventListener('scroll', this.handleScroll, true);
|
|
269
|
+
if (Object.keys(_Registry["default"].popups).length === 1 && groupPopups.length === 1 && _Registry["default"].listenerPopupRef === undefined) {
|
|
270
|
+
_Registry["default"].listenerPopupRef = this;
|
|
268
271
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
document.addEventListener('
|
|
272
|
+
_Registry["default"].listenerPopupRef.updateListeners(true, CLICK_EVENTS, document);
|
|
273
|
+
|
|
274
|
+
document.addEventListener('keyup', _Registry["default"].listenerPopupRef.documentKeyupHandler, false); // document.addEventListener('scroll', Registry.listenerPopupRef.handleScroll, true);
|
|
275
|
+
|
|
276
|
+
window.addEventListener('resize', _Registry["default"].listenerPopupRef.handleResize);
|
|
277
|
+
document.addEventListener('mousedown', _Registry["default"].listenerPopupRef.handleDocumentMouseDown, true);
|
|
278
|
+
document.addEventListener('focus', _Registry["default"].listenerPopupRef.handleDocumentFocus, true);
|
|
272
279
|
}
|
|
273
280
|
}
|
|
274
281
|
}, {
|
|
275
|
-
key: "
|
|
276
|
-
value: function
|
|
282
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
283
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
277
284
|
var isPopupOpen = this.state.isPopupOpen;
|
|
278
285
|
|
|
279
286
|
if (typeof nextProps.isPopupOpen !== 'undefined' && nextProps.isPopupOpen !== isPopupOpen) {
|
|
@@ -337,6 +344,22 @@ var Popup = function Popup(Component) {
|
|
|
337
344
|
this.handleIframeEventListeners(shouldAdd, CLICK_EVENTS);
|
|
338
345
|
}
|
|
339
346
|
}
|
|
347
|
+
}, {
|
|
348
|
+
key: "cancelRaf",
|
|
349
|
+
value: function cancelRaf(refName) {
|
|
350
|
+
var id = this[refName];
|
|
351
|
+
|
|
352
|
+
if (id) {
|
|
353
|
+
cancelAnimationFrame(id);
|
|
354
|
+
this[refName] = null;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}, {
|
|
358
|
+
key: "cancelPendingAnimationFrames",
|
|
359
|
+
value: function cancelPendingAnimationFrames() {
|
|
360
|
+
this.cancelRaf('setPositionRafId');
|
|
361
|
+
this.cancelRaf('resizePositionRafId');
|
|
362
|
+
}
|
|
340
363
|
}, {
|
|
341
364
|
key: "componentWillUnmount",
|
|
342
365
|
value: function componentWillUnmount() {
|
|
@@ -371,14 +394,18 @@ var Popup = function Popup(Component) {
|
|
|
371
394
|
this.popupObserver.disconnect();
|
|
372
395
|
}
|
|
373
396
|
|
|
374
|
-
if (noPopups) {
|
|
375
|
-
|
|
376
|
-
document.removeEventListener('keyup', this.documentKeyupHandler); // document.removeEventListener('scroll', this.handleScroll);
|
|
397
|
+
if (noPopups && _Registry["default"].listenerPopupRef !== undefined) {
|
|
398
|
+
_Registry["default"].listenerPopupRef.updateListeners(false, CLICK_EVENTS, document);
|
|
377
399
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
400
|
+
document.removeEventListener('keyup', _Registry["default"].listenerPopupRef.documentKeyupHandler); // document.removeEventListener('scroll', Registry.listenerPopupRef.handleScroll);
|
|
401
|
+
|
|
402
|
+
window.removeEventListener('resize', _Registry["default"].listenerPopupRef.handleResize);
|
|
403
|
+
document.removeEventListener('mousedown', _Registry["default"].listenerPopupRef.handleDocumentMouseDown, true);
|
|
404
|
+
document.removeEventListener('focus', _Registry["default"].listenerPopupRef.handleDocumentFocus, true);
|
|
405
|
+
_Registry["default"].listenerPopupRef = undefined;
|
|
381
406
|
}
|
|
407
|
+
|
|
408
|
+
this.cancelPendingAnimationFrames();
|
|
382
409
|
}
|
|
383
410
|
}, {
|
|
384
411
|
key: "handleAddingScrollBlock",
|
|
@@ -906,13 +933,15 @@ var Popup = function Popup(Component) {
|
|
|
906
933
|
}
|
|
907
934
|
|
|
908
935
|
var setPosition = function setPosition() {
|
|
909
|
-
|
|
936
|
+
_this6.cancelRaf('setPositionRafId');
|
|
937
|
+
|
|
938
|
+
_this6.setPositionRafId = requestAnimationFrame(function () {
|
|
910
939
|
var placeHolderElement = _this6.placeHolderElement,
|
|
911
940
|
dropElement = _this6.dropElement;
|
|
912
941
|
var _this6$state = _this6.state,
|
|
913
942
|
position = _this6$state.position,
|
|
914
943
|
isPopupReady = _this6$state.isPopupReady;
|
|
915
|
-
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
|
|
944
|
+
var scrollContainer = placeHolderElement ? placeHolderElement.closest('[data-scroll=true]') || document.body : document.body;
|
|
916
945
|
|
|
917
946
|
var betterPosition = _viewPort["default"].betterView(dropElement, placeHolderElement, defaultPosition, scrollContainer, {
|
|
918
947
|
needArrow: needArrow,
|
|
@@ -942,6 +971,8 @@ var Popup = function Popup(Component) {
|
|
|
942
971
|
_this6.updatePopupState(view, views, viewsOffset, targetOffset, popupOffset, isAbsolute);
|
|
943
972
|
}
|
|
944
973
|
}
|
|
974
|
+
|
|
975
|
+
_this6.setPositionRafId = null;
|
|
945
976
|
});
|
|
946
977
|
};
|
|
947
978
|
|
|
@@ -974,7 +1005,10 @@ var Popup = function Popup(Component) {
|
|
|
974
1005
|
|
|
975
1006
|
if (placeHolderElement && dropElement) {
|
|
976
1007
|
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
|
|
977
|
-
|
|
1008
|
+
|
|
1009
|
+
_this7.cancelRaf('resizePositionRafId');
|
|
1010
|
+
|
|
1011
|
+
_this7.resizePositionRafId = requestAnimationFrame(function () {
|
|
978
1012
|
var needArrow = _this7.getNeedArrow(popup);
|
|
979
1013
|
|
|
980
1014
|
var isAbsolute = _this7.getIsAbsolutePopup(popup);
|
|
@@ -1045,6 +1079,8 @@ var Popup = function Popup(Component) {
|
|
|
1045
1079
|
// });
|
|
1046
1080
|
// }
|
|
1047
1081
|
|
|
1082
|
+
|
|
1083
|
+
_this7.resizePositionRafId = null;
|
|
1048
1084
|
});
|
|
1049
1085
|
}
|
|
1050
1086
|
}
|
package/lib/Popup/Registry.js
CHANGED
|
@@ -10,6 +10,7 @@ var _Config = require("../Provider/Config.js");
|
|
|
10
10
|
var Registry = {
|
|
11
11
|
lastOpenedGroup: [],
|
|
12
12
|
popups: {},
|
|
13
|
+
listenerPopupRef: undefined,
|
|
13
14
|
scrollBlockedListenerPopupRef: undefined,
|
|
14
15
|
scrollableListenerPopupRef: undefined,
|
|
15
16
|
getOpenedPopups: function getOpenedPopups() {
|
package/lib/Select/Select.js
CHANGED
|
@@ -184,8 +184,8 @@ var SelectComponent = /*#__PURE__*/function (_Component) {
|
|
|
184
184
|
// suggestionContainer.addEventListener('scroll', this.handleScroll);
|
|
185
185
|
}
|
|
186
186
|
}, {
|
|
187
|
-
key: "
|
|
188
|
-
value: function
|
|
187
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
188
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
189
189
|
var selectedValue = nextProps.selectedValue,
|
|
190
190
|
isDefaultSelectValue = nextProps.isDefaultSelectValue,
|
|
191
191
|
valueField = nextProps.valueField,
|
|
@@ -294,7 +294,14 @@ describe('Select -', function () {
|
|
|
294
294
|
|
|
295
295
|
expect(getAllByRole(listItemRole)).toHaveLength(1);
|
|
296
296
|
expect(asFragment()).toMatchSnapshot();
|
|
297
|
-
});
|
|
297
|
+
}); // test('Should render the only options matching search value even with additional spaces before and after', () => {
|
|
298
|
+
// const { getByRole, getAllByRole, asFragment, getByTestId } = render(<Select needSearch options={options} />);
|
|
299
|
+
// userEvent.click(getByRole(selectInputRole));
|
|
300
|
+
// userEvent.type(within(getByTestId(dropboxTestId)).getByRole('textbox'), ' 2 ');
|
|
301
|
+
// expect(getAllByRole(listItemRole)).toHaveLength(1);
|
|
302
|
+
// expect(asFragment()).toMatchSnapshot();
|
|
303
|
+
// });
|
|
304
|
+
|
|
298
305
|
test('Should trigger given onSearch, when type on the search input', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
299
306
|
var mockOnSearch, _render15, getByRole, getByTestId;
|
|
300
307
|
|
|
@@ -52,6 +52,10 @@ var getOptionsOrder = function getOptionsOrder(props) {
|
|
|
52
52
|
return props.optionsOrder || dummyArray;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
+
var getLimit = function getLimit(props) {
|
|
56
|
+
return props.limit || 0;
|
|
57
|
+
};
|
|
58
|
+
|
|
55
59
|
var getSelectedOptionsSel = function getSelectedOptionsSel(props) {
|
|
56
60
|
return props.selectedOptions || dummyArray;
|
|
57
61
|
};
|
|
@@ -339,7 +343,7 @@ var makeFormatOptions = function makeFormatOptions() {
|
|
|
339
343
|
exports.makeFormatOptions = makeFormatOptions;
|
|
340
344
|
|
|
341
345
|
var makeGetMultiSelectSelectedOptions = function makeGetMultiSelectSelectedOptions() {
|
|
342
|
-
return (0, _reselect.createSelector)([getSelectedOptionsSel, getNormalizedFormatOptions, getSelectedOptionsLength, getAllowValueFallback], function (selectedOptions, normalizedFormatOptions, selectedOptionsLength, allowValueFallback) {
|
|
346
|
+
return (0, _reselect.createSelector)([getSelectedOptionsSel, getNormalizedFormatOptions, getSelectedOptionsLength, getAllowValueFallback, getLimit], function (selectedOptions, normalizedFormatOptions, selectedOptionsLength, allowValueFallback, limit) {
|
|
343
347
|
var output = [];
|
|
344
348
|
var revampSelectedOptions = [];
|
|
345
349
|
var normalizedSelectedOptions = {};
|
|
@@ -367,6 +371,12 @@ var makeGetMultiSelectSelectedOptions = function makeGetMultiSelectSelectedOptio
|
|
|
367
371
|
}
|
|
368
372
|
}
|
|
369
373
|
|
|
374
|
+
if (limit && limit > 0) {
|
|
375
|
+
output = output.slice(0, limit);
|
|
376
|
+
revampSelectedOptions = revampSelectedOptions.slice(0, limit);
|
|
377
|
+
normalizedSelectedOptions = Object.fromEntries(Object.entries(normalizedSelectedOptions).slice(0, limit));
|
|
378
|
+
}
|
|
379
|
+
|
|
370
380
|
return {
|
|
371
381
|
formatSelectedOptions: output,
|
|
372
382
|
normalizedSelectedOptions: normalizedSelectedOptions,
|
|
@@ -593,7 +603,8 @@ var filterSelectedOptions = function filterSelectedOptions() {
|
|
|
593
603
|
_ref4$propSelectedOpt = _ref4.propSelectedOptions,
|
|
594
604
|
propSelectedOptions = _ref4$propSelectedOpt === void 0 ? dummyArray : _ref4$propSelectedOpt,
|
|
595
605
|
_ref4$disabledOptions = _ref4.disabledOptions,
|
|
596
|
-
disabledOptions = _ref4$disabledOptions === void 0 ? dummyArray : _ref4$disabledOptions
|
|
606
|
+
disabledOptions = _ref4$disabledOptions === void 0 ? dummyArray : _ref4$disabledOptions,
|
|
607
|
+
limit = _ref4.limit;
|
|
597
608
|
|
|
598
609
|
// eslint-disable-next-line no-param-reassign
|
|
599
610
|
selectedOptions = selectedOptions || dummyArray; // eslint-disable-next-line no-param-reassign
|
|
@@ -617,8 +628,18 @@ var filterSelectedOptions = function filterSelectedOptions() {
|
|
|
617
628
|
|
|
618
629
|
return true;
|
|
619
630
|
});
|
|
631
|
+
var totalSelectedOptions = [].concat(_toConsumableArray(oldValidSelectedOptions), _toConsumableArray(newlyAddedOptions));
|
|
632
|
+
|
|
633
|
+
if (limit && limit > 0) {
|
|
634
|
+
if (totalSelectedOptions.length > limit) {
|
|
635
|
+
return {
|
|
636
|
+
newSelectedOptions: totalSelectedOptions.slice(0, limit)
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
620
641
|
return {
|
|
621
|
-
newSelectedOptions:
|
|
642
|
+
newSelectedOptions: totalSelectedOptions
|
|
622
643
|
};
|
|
623
644
|
};
|
|
624
645
|
|
package/lib/v1/Popup/Popup.js
CHANGED
|
@@ -186,8 +186,8 @@ var Popup = function Popup(Component) {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
}, {
|
|
189
|
-
key: "
|
|
190
|
-
value: function
|
|
189
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
190
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
191
191
|
var isPopupOpen = this.state.isPopupOpen;
|
|
192
192
|
|
|
193
193
|
if (typeof nextProps.isPopupOpen !== 'undefined' && nextProps.isPopupOpen !== isPopupOpen) {
|
package/lib/v1/Select/Select.js
CHANGED
|
@@ -185,8 +185,8 @@ var SelectComponent = /*#__PURE__*/function (_Component) {
|
|
|
185
185
|
// suggestionContainer.addEventListener('scroll', this.handleScroll);
|
|
186
186
|
}
|
|
187
187
|
}, {
|
|
188
|
-
key: "
|
|
189
|
-
value: function
|
|
188
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
189
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
190
190
|
var selectedValue = nextProps.selectedValue,
|
|
191
191
|
isDefaultSelectValue = nextProps.isDefaultSelectValue,
|
|
192
192
|
valueField = nextProps.valueField,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zohodesk/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.9",
|
|
4
4
|
"main": "es/index.js",
|
|
5
5
|
"module": "es/index.js",
|
|
6
6
|
"private": false,
|
|
@@ -18,9 +18,10 @@
|
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build:docs": "react-cli build:docs",
|
|
21
|
-
"
|
|
21
|
+
"_lint": "react-cli lint",
|
|
22
22
|
"lintAll": "react-cli lint ./src",
|
|
23
23
|
"lintAllFix": "npm run lintAll --eslint:fix=true",
|
|
24
|
+
"lint": "npx eslint ./src",
|
|
24
25
|
"clean": "react-cli clean build unittest coverage es lib assets && mkdir assets",
|
|
25
26
|
"dubCheck": "node ./node_modules/@zohodesk-private/node-plugins/es/dublication_css_file_finder node_modules/@zohodesk/icons/es node_modules/@zohodesk/variables/es",
|
|
26
27
|
"init": "npm run clean && cd ../assets && npm run componentsassets && cd ../components && npm run build:variables",
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"snap-update": "npm run test-clean && npm run test -- -u",
|
|
48
49
|
"sstest": "npm run init && react-cli sstest",
|
|
49
50
|
"build:external": "npm run clean && npm run init && npm run docsjs:build && npm run build:externalDocCopy && react-cli build:component:umd && npm run externalDocHTMLChange",
|
|
50
|
-
"download": "react-cli clean ./node_modules ./package-lock.json && npm install",
|
|
51
|
+
"download": "react-cli clean ./node_modules ./package-lock.json && npm install && cd ../ && npm run download",
|
|
51
52
|
"expublish": "npm publish --tag experimental-version",
|
|
52
53
|
"css:lineheight:validate": "node ./node_modules/@zohodesk-private/node-plugins/es/lineheight_automation/lineHeightErrorCheck.js ./src/",
|
|
53
54
|
"cssVariableConvert": "react-cli variableConverter ./lib ./lib && react-cli variableConverter ./es ./es",
|
|
@@ -73,21 +74,22 @@
|
|
|
73
74
|
"@testing-library/react-hooks": "^7.0.2",
|
|
74
75
|
"@testing-library/user-event": "^13.0.10",
|
|
75
76
|
"@zohodesk-private/color-variable-preprocessor": "1.2.0",
|
|
76
|
-
"@zohodesk-private/css-variable-migrator": "
|
|
77
|
+
"@zohodesk-private/css-variable-migrator": "1.0.9",
|
|
77
78
|
"@zohodesk-private/node-plugins": "1.1.13",
|
|
78
79
|
"@zohodesk-private/react-prop-validator": "1.2.3",
|
|
79
|
-
"@zohodesk/a11y": "2.3.
|
|
80
|
+
"@zohodesk/a11y": "2.3.7",
|
|
80
81
|
"@zohodesk/docstool": "1.0.0-alpha-2",
|
|
81
82
|
"@zohodesk/dotkit": "1.0.3",
|
|
82
83
|
"@zohodesk/hooks": "2.0.5",
|
|
83
84
|
"@zohodesk/icons": "1.1.0",
|
|
84
85
|
"@zohodesk/layout": "3.1.0",
|
|
85
|
-
"@zohodesk/svg": "1.2.
|
|
86
|
+
"@zohodesk/svg": "1.2.2",
|
|
86
87
|
"@zohodesk/utils": "1.3.14",
|
|
87
88
|
"@zohodesk/variables": "1.1.0",
|
|
88
89
|
"@zohodesk/virtualizer": "1.0.3",
|
|
89
90
|
"react-sortable-hoc": "^0.8.3",
|
|
90
|
-
"velocity-react": "1.4.3"
|
|
91
|
+
"velocity-react": "1.4.3",
|
|
92
|
+
"@zohodesk/react-cli": "1.1.27"
|
|
91
93
|
},
|
|
92
94
|
"dependencies": {
|
|
93
95
|
"hoist-non-react-statics": "3.0.1",
|
|
@@ -98,13 +100,13 @@
|
|
|
98
100
|
"peerDependencies": {
|
|
99
101
|
"@zohodesk/icons": "1.1.0",
|
|
100
102
|
"@zohodesk/variables": "1.1.0",
|
|
101
|
-
"@zohodesk/svg": "1.2.
|
|
103
|
+
"@zohodesk/svg": "1.2.2",
|
|
102
104
|
"@zohodesk/virtualizer": "1.0.3",
|
|
103
105
|
"velocity-react": "1.4.3",
|
|
104
106
|
"react-sortable-hoc": "^0.8.3",
|
|
105
107
|
"@zohodesk/hooks": "2.0.5",
|
|
106
108
|
"@zohodesk/utils": "1.3.14",
|
|
107
|
-
"@zohodesk/a11y": "2.3.
|
|
109
|
+
"@zohodesk/a11y": "2.3.7",
|
|
108
110
|
"@zohodesk/layout": "3.1.0",
|
|
109
111
|
"@zohodesk/dotkit": "1.0.3"
|
|
110
112
|
}
|