@innovaccer/design-system 2.28.3 → 2.29.0
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/CHANGELOG.md +41 -0
- package/css/dist/index.css +245 -0
- package/css/dist/index.css.map +1 -1
- package/css/src/components/avatarSelection.css +111 -0
- package/css/src/components/select.css +127 -0
- package/dist/.lib/tsconfig.type.tsbuildinfo +669 -22
- package/dist/core/common.type.d.ts +7 -0
- package/dist/core/components/atoms/avatar/Avatar.d.ts +1 -0
- package/dist/core/components/atoms/avatar/avatarIcon/AvatarIcon.d.ts +0 -4
- package/dist/core/components/atoms/avatarSelection/AvatarSelection.d.ts +59 -0
- package/dist/core/components/atoms/avatarSelection/AvatarSelectionContext.d.ts +19 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionEmptyState.d.ts +8 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionInput.d.ts +3 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionList.d.ts +20 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionOption.d.ts +15 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionPopover.d.ts +15 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/index.d.ts +5 -0
- package/dist/core/components/atoms/avatarSelection/avatarPopover/utils.d.ts +3 -0
- package/dist/core/components/atoms/avatarSelection/avatarsSelection/AvatarSelectionCount.d.ts +13 -0
- package/dist/core/components/atoms/avatarSelection/avatarsSelection/SelectionAvatar.d.ts +15 -0
- package/dist/core/components/atoms/avatarSelection/avatarsSelection/SelectionAvatarsWrapper.d.ts +15 -0
- package/dist/core/components/atoms/avatarSelection/avatarsSelection/index.d.ts +2 -0
- package/dist/core/components/atoms/avatarSelection/avatarsSelection/utils.d.ts +3 -0
- package/dist/core/components/atoms/avatarSelection/index.d.ts +2 -0
- package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +19 -19
- package/dist/core/components/molecules/popover/Popover.d.ts +1 -1
- package/dist/core/components/molecules/tooltip/Tooltip.d.ts +2 -0
- package/dist/core/components/organisms/combobox/Combobox.d.ts +45 -0
- package/dist/core/components/organisms/combobox/ComboboxContext.d.ts +23 -0
- package/dist/core/components/organisms/combobox/ComboboxList.d.ts +20 -0
- package/dist/core/components/organisms/combobox/ComboboxOption.d.ts +18 -0
- package/dist/core/components/organisms/combobox/index.d.ts +2 -0
- package/dist/core/components/organisms/combobox/trigger/ChipInputBox.d.ts +3 -0
- package/dist/core/components/organisms/combobox/trigger/ComboboxTrigger.d.ts +20 -0
- package/dist/core/components/organisms/combobox/trigger/InputBox.d.ts +3 -0
- package/dist/core/components/organisms/combobox/trigger/MultiselectTrigger.d.ts +40 -0
- package/dist/core/components/organisms/combobox/trigger/index.d.ts +1 -0
- package/dist/core/components/organisms/combobox/trigger/utils.d.ts +3 -0
- package/dist/core/components/organisms/combobox/utils.d.ts +2 -0
- package/dist/core/components/organisms/listbox/Listbox.d.ts +2 -2
- package/dist/core/components/organisms/listbox/listboxItem/ListboxItem.d.ts +2 -1
- package/dist/core/components/organisms/select/SearchInput.d.ts +8 -0
- package/dist/core/components/organisms/select/Select.d.ts +35 -0
- package/dist/core/components/organisms/select/SelectContext.d.ts +24 -0
- package/dist/core/components/organisms/select/SelectEmptyTemplate.d.ts +9 -0
- package/dist/core/components/organisms/select/SelectFooter.d.ts +7 -0
- package/dist/core/components/organisms/select/SelectList.d.ts +20 -0
- package/dist/core/components/organisms/select/SelectOption.d.ts +19 -0
- package/dist/core/components/organisms/select/SelectTrigger.d.ts +24 -0
- package/dist/core/components/organisms/select/__test__/Select.test.d.ts +1 -0
- package/dist/core/components/organisms/select/__test__/utils.test.d.ts +1 -0
- package/dist/core/components/organisms/select/index.d.ts +2 -0
- package/dist/core/components/organisms/select/utils.d.ts +12 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.type.d.ts +5 -0
- package/dist/index.esm.js +2146 -107
- package/dist/index.js +2010 -16
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.br +0 -0
- package/dist/index.umd.js.gz +0 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
* Generated on:
|
|
3
|
+
* Generated on: 1710344054873
|
|
4
4
|
* Package: @innovaccer/design-system
|
|
5
|
-
* Version: v2.
|
|
5
|
+
* Version: v2.29.0
|
|
6
6
|
* License: MIT
|
|
7
7
|
* Docs: https://innovaccer.github.io/design-system
|
|
8
8
|
*/
|
|
@@ -547,7 +547,9 @@
|
|
|
547
547
|
lastName = props.lastName,
|
|
548
548
|
className = props.className,
|
|
549
549
|
appearance = props.appearance,
|
|
550
|
-
shape = props.shape
|
|
550
|
+
shape = props.shape,
|
|
551
|
+
_e = props.role,
|
|
552
|
+
role = _e === void 0 ? 'presentation' : _e;
|
|
551
553
|
var baseProps = extractBaseProps(props);
|
|
552
554
|
var initials = children && typeof children === 'string' ? children.trim().slice(0, initialsLength) : "" + (firstName ? firstName.trim()[0] : '') + (lastName ? lastName.trim()[0] : '');
|
|
553
555
|
var tooltip = children && typeof children === 'string' ? children : (firstName || '') + " " + (lastName || '') || '';
|
|
@@ -569,7 +571,8 @@
|
|
|
569
571
|
if (children && typeof children !== 'string') {
|
|
570
572
|
return /*#__PURE__*/React__namespace.createElement("span", {
|
|
571
573
|
"data-test": "DesignSystem-AvatarWrapper",
|
|
572
|
-
className: AvatarWrapperClassNames
|
|
574
|
+
className: AvatarWrapperClassNames,
|
|
575
|
+
role: role
|
|
573
576
|
}, /*#__PURE__*/React__namespace.createElement(AvatarProvider, {
|
|
574
577
|
value: sharedProp
|
|
575
578
|
}, /*#__PURE__*/React__namespace.createElement("span", __assign({
|
|
@@ -581,7 +584,8 @@
|
|
|
581
584
|
|
|
582
585
|
return /*#__PURE__*/React__namespace.createElement("span", {
|
|
583
586
|
"data-test": "DesignSystem-AvatarWrapper",
|
|
584
|
-
className: AvatarWrapperClassNames
|
|
587
|
+
className: AvatarWrapperClassNames,
|
|
588
|
+
role: role
|
|
585
589
|
}, /*#__PURE__*/React__namespace.createElement("span", __assign({
|
|
586
590
|
"data-test": "DesignSystem-Avatar"
|
|
587
591
|
}, baseProps, {
|
|
@@ -1871,7 +1875,9 @@
|
|
|
1871
1875
|
var prevYear = yearNavVal;
|
|
1872
1876
|
var prevMonthDayRange = getDaysInMonth(prevYear, prevMonth);
|
|
1873
1877
|
var dayRange = getDaysInMonth(yearNavVal, monthNavVal);
|
|
1874
|
-
var
|
|
1878
|
+
var firstDayIndex = getFirstDayOfMonth(yearNavVal, monthNavVal);
|
|
1879
|
+
var desiredFirstDayIndex = getIndexOfDay(firstDayOfWeek);
|
|
1880
|
+
var dayDiff = (firstDayIndex - desiredFirstDayIndex + 7) % 7;
|
|
1875
1881
|
var dummyDays = Math.abs(dayDiff);
|
|
1876
1882
|
var noOfRows = Math.ceil((dayRange + dummyDays) / daysInRow);
|
|
1877
1883
|
|
|
@@ -8786,7 +8792,7 @@
|
|
|
8786
8792
|
customStyle: {}
|
|
8787
8793
|
});
|
|
8788
8794
|
|
|
8789
|
-
var keyCodes = {
|
|
8795
|
+
var keyCodes$1 = {
|
|
8790
8796
|
BACKSPACE: 'Backspace',
|
|
8791
8797
|
DELETE: 'Delete',
|
|
8792
8798
|
ENTER: 'Enter'
|
|
@@ -8873,15 +8879,15 @@
|
|
|
8873
8879
|
var chipsLength = chips.length;
|
|
8874
8880
|
|
|
8875
8881
|
switch (event.key) {
|
|
8876
|
-
case keyCodes.DELETE:
|
|
8877
|
-
case keyCodes.BACKSPACE:
|
|
8882
|
+
case keyCodes$1.DELETE:
|
|
8883
|
+
case keyCodes$1.BACKSPACE:
|
|
8878
8884
|
if (inputValue === '' && chipsLength > 0) {
|
|
8879
8885
|
onChipDeleteHandler(chipsLength - 1);
|
|
8880
8886
|
}
|
|
8881
8887
|
|
|
8882
8888
|
break;
|
|
8883
8889
|
|
|
8884
|
-
case keyCodes.ENTER:
|
|
8890
|
+
case keyCodes$1.ENTER:
|
|
8885
8891
|
event.preventDefault();
|
|
8886
8892
|
onChipAddHandler();
|
|
8887
8893
|
break;
|
|
@@ -17497,7 +17503,8 @@
|
|
|
17497
17503
|
className = props.className,
|
|
17498
17504
|
disabled = props.disabled,
|
|
17499
17505
|
selected = props.selected,
|
|
17500
|
-
activated = props.activated
|
|
17506
|
+
activated = props.activated,
|
|
17507
|
+
tabIndex = props.tabIndex;
|
|
17501
17508
|
var contextProp = React__namespace.useContext(ListboxContext);
|
|
17502
17509
|
var size = contextProp.size,
|
|
17503
17510
|
type = contextProp.type,
|
|
@@ -17508,7 +17515,7 @@
|
|
|
17508
17515
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
17509
17516
|
"data-disabled": disabled,
|
|
17510
17517
|
"data-test": "DesignSystem-Listbox-ItemWrapper",
|
|
17511
|
-
tabIndex: draggable ? -1 : 0,
|
|
17518
|
+
tabIndex: draggable ? -1 : tabIndex || 0,
|
|
17512
17519
|
className: itemClass,
|
|
17513
17520
|
onKeyDown: onKeyDown,
|
|
17514
17521
|
role: "tablist"
|
|
@@ -17619,13 +17626,13 @@
|
|
|
17619
17626
|
var tagClass = classNames__default["default"]((_a = {}, _a['Listbox-item-wrapper'] = !draggable, _a));
|
|
17620
17627
|
return /*#__PURE__*/React__namespace.createElement(Tag, __assign({
|
|
17621
17628
|
id: id,
|
|
17622
|
-
key: id
|
|
17629
|
+
key: id,
|
|
17630
|
+
"data-test": "DesignSystem-Listbox-Item"
|
|
17623
17631
|
}, rest, {
|
|
17624
|
-
"data-test": "DesignSystem-Listbox-Item",
|
|
17625
17632
|
onClick: onClickHandler,
|
|
17626
17633
|
"data-value": value,
|
|
17627
17634
|
className: tagClass
|
|
17628
|
-
}), /*#__PURE__*/React__namespace.createElement(ListBody, __assign({}, props)), nestedBody && /*#__PURE__*/React__namespace.createElement(NestedList, {
|
|
17635
|
+
}, rest), /*#__PURE__*/React__namespace.createElement(ListBody, __assign({}, props)), nestedBody && /*#__PURE__*/React__namespace.createElement(NestedList, {
|
|
17629
17636
|
expanded: expanded,
|
|
17630
17637
|
nestedBody: nestedBody
|
|
17631
17638
|
}), showDivider && /*#__PURE__*/React__namespace.createElement(Divider, {
|
|
@@ -17842,11 +17849,1996 @@
|
|
|
17842
17849
|
};
|
|
17843
17850
|
TextField.displayName = 'TextField';
|
|
17844
17851
|
|
|
17845
|
-
var
|
|
17852
|
+
var SelectionAvatar = function SelectionAvatar(props) {
|
|
17853
|
+
var icon = props.icon,
|
|
17854
|
+
image = props.image,
|
|
17855
|
+
rest = __rest(props, ["icon", "image"]);
|
|
17856
|
+
|
|
17857
|
+
return /*#__PURE__*/React__namespace.createElement(Avatar, __assign({
|
|
17858
|
+
role: "checkbox"
|
|
17859
|
+
}, rest, {
|
|
17860
|
+
withTooltip: true,
|
|
17861
|
+
className: "cursor-pointer"
|
|
17862
|
+
}), image || icon);
|
|
17863
|
+
};
|
|
17864
|
+
|
|
17865
|
+
var AvatarSelectionContext = /*#__PURE__*/React__namespace.createContext({});
|
|
17866
|
+
|
|
17867
|
+
var SelectionAvatarsWrapper = function SelectionAvatarsWrapper(props) {
|
|
17868
|
+
var avatarList = props.avatarList,
|
|
17869
|
+
avatarStyle = props.avatarStyle,
|
|
17870
|
+
tooltipPosition = props.tooltipPosition,
|
|
17871
|
+
size = props.size,
|
|
17872
|
+
avatarRenderer = props.avatarRenderer;
|
|
17873
|
+
var contextProp = React__namespace.useContext(AvatarSelectionContext);
|
|
17874
|
+
var setSelectedItems = contextProp.setSelectedItems,
|
|
17875
|
+
selectedItems = contextProp.selectedItems,
|
|
17876
|
+
onSelect = contextProp.onSelect;
|
|
17877
|
+
|
|
17878
|
+
var onClickHandler = function onClickHandler(item) {
|
|
17879
|
+
var list = selectedItems;
|
|
17880
|
+
|
|
17881
|
+
if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(item)) {
|
|
17882
|
+
list = selectedItems.filter(function (selectedItem) {
|
|
17883
|
+
return selectedItem !== item;
|
|
17884
|
+
});
|
|
17885
|
+
} else {
|
|
17886
|
+
list === null || list === void 0 ? void 0 : list.push(item);
|
|
17887
|
+
}
|
|
17888
|
+
|
|
17889
|
+
list && (setSelectedItems === null || setSelectedItems === void 0 ? void 0 : setSelectedItems(__spreadArrays(list)));
|
|
17890
|
+
onSelect && onSelect(list);
|
|
17891
|
+
};
|
|
17892
|
+
|
|
17893
|
+
var handleKeyDown = function handleKeyDown(event, item) {
|
|
17894
|
+
switch (event.key) {
|
|
17895
|
+
case 'Enter':
|
|
17896
|
+
onClickHandler(item);
|
|
17897
|
+
break;
|
|
17898
|
+
}
|
|
17899
|
+
};
|
|
17900
|
+
|
|
17901
|
+
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, avatarList.map(function (avatarItem, index) {
|
|
17902
|
+
var _a;
|
|
17903
|
+
|
|
17904
|
+
var appearance = avatarItem.appearance,
|
|
17905
|
+
firstName = avatarItem.firstName,
|
|
17906
|
+
lastName = avatarItem.lastName,
|
|
17907
|
+
icon = avatarItem.icon,
|
|
17908
|
+
image = avatarItem.image;
|
|
17909
|
+
var GroupClass = classNames__default["default"]((_a = {}, _a["SelectionAvatarGroup-item"] = true, _a["SelectionAvatarGroup-item--selected"] = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarItem), _a));
|
|
17910
|
+
|
|
17911
|
+
if (avatarRenderer) {
|
|
17912
|
+
return avatarRenderer(avatarItem);
|
|
17913
|
+
}
|
|
17914
|
+
|
|
17915
|
+
return /*#__PURE__*/React__namespace.createElement("span", {
|
|
17916
|
+
key: index,
|
|
17917
|
+
className: "SelectionAvatarGroup-wrapper"
|
|
17918
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
17919
|
+
tabIndex: 0,
|
|
17920
|
+
role: "checkbox",
|
|
17921
|
+
style: avatarStyle,
|
|
17922
|
+
className: GroupClass,
|
|
17923
|
+
"data-test": "DesignSystem-AvatarSelection--Avatar",
|
|
17924
|
+
"aria-checked": selectedItems && selectedItems.includes(avatarItem),
|
|
17925
|
+
onClick: function onClick() {
|
|
17926
|
+
return onClickHandler(avatarItem);
|
|
17927
|
+
},
|
|
17928
|
+
onKeyDown: function onKeyDown(event) {
|
|
17929
|
+
return handleKeyDown(event, avatarItem);
|
|
17930
|
+
}
|
|
17931
|
+
}, /*#__PURE__*/React__namespace.createElement(SelectionAvatar, {
|
|
17932
|
+
size: size,
|
|
17933
|
+
appearance: appearance,
|
|
17934
|
+
firstName: firstName,
|
|
17935
|
+
lastName: lastName,
|
|
17936
|
+
withTooltip: true,
|
|
17937
|
+
tooltipPosition: tooltipPosition,
|
|
17938
|
+
icon: icon,
|
|
17939
|
+
image: image
|
|
17940
|
+
})));
|
|
17941
|
+
}));
|
|
17942
|
+
};
|
|
17943
|
+
|
|
17944
|
+
var handleKeyDown$4 = function handleKeyDown(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
|
|
17945
|
+
switch (event.key) {
|
|
17946
|
+
case 'Enter':
|
|
17947
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
17948
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
|
|
17949
|
+
break;
|
|
17950
|
+
|
|
17951
|
+
case 'ArrowDown':
|
|
17952
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
17953
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
|
|
17954
|
+
break;
|
|
17955
|
+
|
|
17956
|
+
case 'ArrowUp':
|
|
17957
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
17958
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
|
|
17959
|
+
break;
|
|
17960
|
+
}
|
|
17961
|
+
};
|
|
17962
|
+
var focusListItem$2 = function focusListItem(position, setFocusedOption, listRef, withSearch) {
|
|
17963
|
+
var _a, _b, _c, _d, _e;
|
|
17964
|
+
|
|
17965
|
+
if (withSearch && position === 'down') {
|
|
17966
|
+
var searchInput = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-AvatarSelection--Input"]');
|
|
17967
|
+
searchInput && ((_b = searchInput[0]) === null || _b === void 0 ? void 0 : _b.focus());
|
|
17968
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(searchInput);
|
|
17969
|
+
return;
|
|
17970
|
+
}
|
|
17971
|
+
|
|
17972
|
+
var listItems = (_c = listRef.current) === null || _c === void 0 ? void 0 : _c.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
17973
|
+
var targetOption;
|
|
17974
|
+
|
|
17975
|
+
if (position === 'down') {
|
|
17976
|
+
targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[0];
|
|
17977
|
+
} else {
|
|
17978
|
+
targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[listItems.length - 1];
|
|
17979
|
+
}
|
|
17980
|
+
|
|
17981
|
+
(_d = targetOption) === null || _d === void 0 ? void 0 : _d.focus();
|
|
17982
|
+
(_e = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _e === void 0 ? void 0 : _e.call(targetOption, {
|
|
17983
|
+
block: 'center'
|
|
17984
|
+
});
|
|
17985
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
17986
|
+
};
|
|
17987
|
+
|
|
17988
|
+
var AvatarSelectionCount = function AvatarSelectionCount(props) {
|
|
17989
|
+
var _a;
|
|
17990
|
+
|
|
17991
|
+
var hiddenAvatarCount = props.hiddenAvatarCount,
|
|
17992
|
+
avatarStyle = props.avatarStyle,
|
|
17993
|
+
size = props.size,
|
|
17994
|
+
hiddenAvatarList = props.hiddenAvatarList;
|
|
17995
|
+
var contextProp = React__namespace.useContext(AvatarSelectionContext);
|
|
17996
|
+
var selectedItems = contextProp.selectedItems,
|
|
17997
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
17998
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
17999
|
+
triggerRef = contextProp.triggerRef,
|
|
18000
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18001
|
+
openPopover = contextProp.openPopover,
|
|
18002
|
+
popoverId = contextProp.popoverId;
|
|
18003
|
+
|
|
18004
|
+
var _b = React__namespace.useState(0),
|
|
18005
|
+
selectedItemCount = _b[0],
|
|
18006
|
+
setSelectedItemCount = _b[1];
|
|
18007
|
+
|
|
18008
|
+
var wrapperClassName = classNames__default["default"]((_a = {}, _a['SelectionAvatarCount-wrapper'] = true, _a['SelectionAvatarCount--selected'] = selectedItemCount > 0, _a));
|
|
18009
|
+
React__namespace.useEffect(function () {
|
|
18010
|
+
var selectedList = hiddenAvatarList.filter(function (data1) {
|
|
18011
|
+
return selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.some(function (data2) {
|
|
18012
|
+
return data2 === data1;
|
|
18013
|
+
});
|
|
18014
|
+
});
|
|
18015
|
+
setSelectedItemCount(selectedList.length);
|
|
18016
|
+
}, [selectedItems]);
|
|
18017
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
18018
|
+
"data-test": "DesignSystem-AvatarSelection--TriggerAvatar",
|
|
18019
|
+
className: wrapperClassName,
|
|
18020
|
+
onKeyDown: function onKeyDown(event) {
|
|
18021
|
+
return handleKeyDown$4(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
|
|
18022
|
+
},
|
|
18023
|
+
style: avatarStyle,
|
|
18024
|
+
tabIndex: 0,
|
|
18025
|
+
role: "button",
|
|
18026
|
+
"aria-haspopup": "listbox",
|
|
18027
|
+
"aria-expanded": openPopover,
|
|
18028
|
+
"aria-controls": popoverId,
|
|
18029
|
+
ref: triggerRef
|
|
18030
|
+
}, /*#__PURE__*/React__namespace.createElement(Avatar, {
|
|
18031
|
+
size: size,
|
|
18032
|
+
appearance: "secondary",
|
|
18033
|
+
className: "SelectionAvatarCount cursor-pointer"
|
|
18034
|
+
}, /*#__PURE__*/React__namespace.createElement(Text, {
|
|
18035
|
+
className: "overflow-hidden"
|
|
18036
|
+
}, "+" + hiddenAvatarCount)));
|
|
18037
|
+
};
|
|
18038
|
+
|
|
18039
|
+
var handleKeyDown$3 = function handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef) {
|
|
18040
|
+
switch (event.key) {
|
|
18041
|
+
case 'ArrowUp':
|
|
18042
|
+
event.preventDefault();
|
|
18043
|
+
navigateOptions$2('up', focusedOption, setFocusedOption, listRef, withSearch);
|
|
18044
|
+
break;
|
|
18045
|
+
|
|
18046
|
+
case 'ArrowDown':
|
|
18047
|
+
event.preventDefault();
|
|
18048
|
+
navigateOptions$2('down', focusedOption, setFocusedOption, listRef, withSearch);
|
|
18049
|
+
break;
|
|
18050
|
+
|
|
18051
|
+
case 'Enter':
|
|
18052
|
+
handleEnterKey$2(focusedOption);
|
|
18053
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
|
|
18054
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
|
|
18055
|
+
break;
|
|
18056
|
+
|
|
18057
|
+
case 'Escape':
|
|
18058
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
18059
|
+
triggerRef.current.focus();
|
|
18060
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
|
|
18061
|
+
break;
|
|
18062
|
+
}
|
|
18063
|
+
};
|
|
18064
|
+
|
|
18065
|
+
var handleEnterKey$2 = function handleEnterKey(focusedOption) {
|
|
18066
|
+
var _a;
|
|
18067
|
+
|
|
18068
|
+
(_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
|
|
18069
|
+
};
|
|
18070
|
+
|
|
18071
|
+
var navigateOptions$2 = function navigateOptions(direction, focusedOption, setFocusedOption, listRef, withSearch) {
|
|
18072
|
+
var listItems = listRef === null || listRef === void 0 ? void 0 : listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
18073
|
+
var index = Array.from(listItems).findIndex(function (item) {
|
|
18074
|
+
return item == focusedOption;
|
|
18075
|
+
});
|
|
18076
|
+
|
|
18077
|
+
if (index === -1) {
|
|
18078
|
+
index = direction === 'up' ? listItems.length - 1 : 0;
|
|
18079
|
+
} else if (withSearch && index === 0 && direction === 'up' || withSearch && index === listItems.length - 1 && direction === 'down') {
|
|
18080
|
+
var searchInput = listRef.current.querySelector('[data-test="DesignSystem-AvatarSelection--Input"]');
|
|
18081
|
+
searchInput.focus();
|
|
18082
|
+
setFocusedOption && setFocusedOption(searchInput);
|
|
18083
|
+
} else {
|
|
18084
|
+
index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
|
|
18085
|
+
var targetOption = listItems[index];
|
|
18086
|
+
targetOption.focus();
|
|
18087
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
18088
|
+
targetOption.scrollIntoView({
|
|
18089
|
+
block: 'center'
|
|
18090
|
+
});
|
|
18091
|
+
}
|
|
18092
|
+
};
|
|
18093
|
+
|
|
18094
|
+
var handleInputKeyDown$1 = function handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef) {
|
|
18095
|
+
var _a, _b, _c;
|
|
18096
|
+
|
|
18097
|
+
var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
18098
|
+
var targetOption;
|
|
18099
|
+
|
|
18100
|
+
switch (event.key) {
|
|
18101
|
+
case 'ArrowUp':
|
|
18102
|
+
event.preventDefault();
|
|
18103
|
+
targetOption = listItems[listItems.length - 1];
|
|
18104
|
+
break;
|
|
18105
|
+
|
|
18106
|
+
case 'ArrowDown':
|
|
18107
|
+
event.preventDefault();
|
|
18108
|
+
targetOption = listItems[0];
|
|
18109
|
+
break;
|
|
18110
|
+
|
|
18111
|
+
case 'Escape':
|
|
18112
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
18113
|
+
triggerRef.current.focus();
|
|
18114
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
|
|
18115
|
+
break;
|
|
18116
|
+
}
|
|
18117
|
+
|
|
18118
|
+
(_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
|
|
18119
|
+
(_c = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _c === void 0 ? void 0 : _c.call(targetOption, {
|
|
18120
|
+
block: 'center'
|
|
18121
|
+
});
|
|
18122
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
18123
|
+
};
|
|
18124
|
+
|
|
18125
|
+
var AvatarSelectionInput = function AvatarSelectionInput(props) {
|
|
18126
|
+
var contextProp = React__namespace.useContext(AvatarSelectionContext);
|
|
18127
|
+
var listRef = contextProp.listRef,
|
|
18128
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
18129
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18130
|
+
triggerRef = contextProp.triggerRef;
|
|
18131
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
18132
|
+
className: "SelectionAvatar-inputWrapper"
|
|
18133
|
+
}, /*#__PURE__*/React__namespace.createElement(Input, __assign({
|
|
18134
|
+
icon: "search",
|
|
18135
|
+
onKeyDown: function onKeyDown(event) {
|
|
18136
|
+
return handleInputKeyDown$1(event, listRef, setFocusedOption, setOpenPopover, triggerRef);
|
|
18137
|
+
},
|
|
18138
|
+
className: "w-100 SelectionAvatar-input",
|
|
18139
|
+
"data-test": "DesignSystem-AvatarSelection--Input"
|
|
18140
|
+
}, props)));
|
|
18141
|
+
};
|
|
18142
|
+
|
|
18143
|
+
var AvatarSelectionList = function AvatarSelectionList(props) {
|
|
18144
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({}, props), props.children);
|
|
18145
|
+
};
|
|
18146
|
+
AvatarSelectionList.defaultProps = {
|
|
18147
|
+
type: 'option',
|
|
18148
|
+
showDivider: false,
|
|
18149
|
+
size: 'compressed',
|
|
18150
|
+
tagName: 'ul'
|
|
18151
|
+
};
|
|
18152
|
+
|
|
18153
|
+
var AvatarSelectionOption = function AvatarSelectionOption(props) {
|
|
18154
|
+
var children = props.children,
|
|
18155
|
+
value = props.value,
|
|
18156
|
+
rest = __rest(props, ["children", "value"]);
|
|
18157
|
+
|
|
18158
|
+
var contextProp = React__namespace.useContext(AvatarSelectionContext);
|
|
18159
|
+
var setSelectedItems = contextProp.setSelectedItems,
|
|
18160
|
+
selectedItems = contextProp.selectedItems,
|
|
18161
|
+
onSelect = contextProp.onSelect,
|
|
18162
|
+
focusedOption = contextProp.focusedOption,
|
|
18163
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
18164
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
18165
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
18166
|
+
listRef = contextProp.listRef,
|
|
18167
|
+
withSearch = contextProp.withSearch,
|
|
18168
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18169
|
+
triggerRef = contextProp.triggerRef;
|
|
18170
|
+
|
|
18171
|
+
var onSelectHandler = function onSelectHandler(event, avatarData) {
|
|
18172
|
+
event.preventDefault();
|
|
18173
|
+
var list = selectedItems ? __spreadArrays(selectedItems) : [];
|
|
18174
|
+
|
|
18175
|
+
if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarData)) {
|
|
18176
|
+
list = selectedItems.filter(function (selectedItem) {
|
|
18177
|
+
return selectedItem !== avatarData;
|
|
18178
|
+
});
|
|
18179
|
+
} else {
|
|
18180
|
+
list.push(avatarData);
|
|
18181
|
+
}
|
|
18182
|
+
|
|
18183
|
+
setSelectedItems === null || setSelectedItems === void 0 ? void 0 : setSelectedItems(__spreadArrays(list));
|
|
18184
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18185
|
+
onSelect && onSelect(list);
|
|
18186
|
+
};
|
|
18187
|
+
|
|
18188
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
18189
|
+
handleKeyDown$3(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef);
|
|
18190
|
+
};
|
|
18191
|
+
|
|
18192
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
|
|
18193
|
+
onClick: function onClick(event) {
|
|
18194
|
+
return onSelectHandler(event, value);
|
|
18195
|
+
},
|
|
18196
|
+
onKeyDown: function onKeyDown(event) {
|
|
18197
|
+
return onKeyDownHandler(event);
|
|
18198
|
+
},
|
|
18199
|
+
selected: selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(value),
|
|
18200
|
+
"data-test": "DesignSystem-AvatarSelection--Option",
|
|
18201
|
+
tabIndex: -1
|
|
18202
|
+
}, rest), children);
|
|
18203
|
+
};
|
|
18204
|
+
AvatarSelectionOption.defaultProps = {
|
|
18205
|
+
tagName: 'li'
|
|
18206
|
+
};
|
|
18207
|
+
|
|
18208
|
+
var AvatarSelectionEmptyState = function AvatarSelectionEmptyState(props) {
|
|
18209
|
+
var height = props.height,
|
|
18210
|
+
title = props.title,
|
|
18211
|
+
description = props.description;
|
|
18212
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
18213
|
+
className: "d-flex flex-column justify-content-center align-items-center",
|
|
18214
|
+
style: {
|
|
18215
|
+
height: height ? height - 4 : ''
|
|
18216
|
+
},
|
|
18217
|
+
"data-test": "DesignSystem-AvatarSelection--EmptyState"
|
|
18218
|
+
}, title && /*#__PURE__*/React__namespace.createElement(Text, {
|
|
18219
|
+
className: "text-align-center mb-3",
|
|
18220
|
+
weight: "strong"
|
|
18221
|
+
}, title), description && /*#__PURE__*/React__namespace.createElement(Text, {
|
|
18222
|
+
className: "text-align-center mb-6",
|
|
18223
|
+
weight: "medium",
|
|
18224
|
+
size: "small",
|
|
18225
|
+
appearance: "subtle"
|
|
18226
|
+
}, description));
|
|
18227
|
+
};
|
|
18228
|
+
|
|
18229
|
+
var AvatarSelectionPopover = function AvatarSelectionPopover(props) {
|
|
18230
|
+
var _a;
|
|
18231
|
+
|
|
18232
|
+
var hiddenAvatarList = props.hiddenAvatarList,
|
|
18233
|
+
customStyle = props.customStyle,
|
|
18234
|
+
searchPlaceholder = props.searchPlaceholder,
|
|
18235
|
+
searchComparator = props.searchComparator,
|
|
18236
|
+
children = props.children;
|
|
18237
|
+
|
|
18238
|
+
var _b = React__namespace.useState(hiddenAvatarList),
|
|
18239
|
+
searchList = _b[0],
|
|
18240
|
+
setSearchList = _b[1];
|
|
18241
|
+
|
|
18242
|
+
var _c = React__namespace.useState(''),
|
|
18243
|
+
searchValue = _c[0],
|
|
18244
|
+
setSearchValue = _c[1];
|
|
18245
|
+
|
|
18246
|
+
var contextProp = React__namespace.useContext(AvatarSelectionContext);
|
|
18247
|
+
var selectedItems = contextProp.selectedItems,
|
|
18248
|
+
listRef = contextProp.listRef,
|
|
18249
|
+
withSearch = contextProp.withSearch,
|
|
18250
|
+
popoverId = contextProp.popoverId;
|
|
18251
|
+
|
|
18252
|
+
if (children) {
|
|
18253
|
+
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, children);
|
|
18254
|
+
}
|
|
18255
|
+
|
|
18256
|
+
var onSearchHandler = function onSearchHandler(event) {
|
|
18257
|
+
var searchValue = event.target.value;
|
|
18258
|
+
var list = hiddenAvatarList === null || hiddenAvatarList === void 0 ? void 0 : hiddenAvatarList.filter(function (avatarData) {
|
|
18259
|
+
var _a, _b;
|
|
18260
|
+
|
|
18261
|
+
var firstName = avatarData.firstName,
|
|
18262
|
+
lastName = avatarData.lastName;
|
|
18263
|
+
|
|
18264
|
+
if (searchComparator) {
|
|
18265
|
+
return searchComparator(searchValue, avatarData);
|
|
18266
|
+
}
|
|
18267
|
+
|
|
18268
|
+
return ((_a = firstName === null || firstName === void 0 ? void 0 : firstName.toLowerCase()) === null || _a === void 0 ? void 0 : _a.startsWith(searchValue.toLowerCase())) || ((_b = lastName === null || lastName === void 0 ? void 0 : lastName.toLowerCase()) === null || _b === void 0 ? void 0 : _b.startsWith(searchValue.toLowerCase()));
|
|
18269
|
+
});
|
|
18270
|
+
setSearchValue(searchValue);
|
|
18271
|
+
setSearchList(list);
|
|
18272
|
+
};
|
|
18273
|
+
|
|
18274
|
+
var onClearHandler = function onClearHandler() {
|
|
18275
|
+
setSearchValue('');
|
|
18276
|
+
setSearchList(hiddenAvatarList);
|
|
18277
|
+
};
|
|
18278
|
+
|
|
18279
|
+
var popperClassName = classNames__default["default"]((_a = {}, _a['py-3'] = !withSearch, _a['pb-3'] = withSearch, _a['SelectionAvatarGroup-popper'] = true, _a['overflow-hidden'] = true, _a));
|
|
18280
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
18281
|
+
style: {
|
|
18282
|
+
width: customStyle.width
|
|
18283
|
+
},
|
|
18284
|
+
ref: listRef,
|
|
18285
|
+
"data-test": "DesignSystem-AvatarSelection--Popover",
|
|
18286
|
+
id: popoverId
|
|
18287
|
+
}, withSearch && /*#__PURE__*/React__namespace.createElement(AvatarSelectionInput, {
|
|
18288
|
+
placeholder: searchPlaceholder,
|
|
18289
|
+
onChange: onSearchHandler,
|
|
18290
|
+
value: searchValue,
|
|
18291
|
+
onClear: onClearHandler
|
|
18292
|
+
}), /*#__PURE__*/React__namespace.createElement("div", {
|
|
18293
|
+
style: customStyle,
|
|
18294
|
+
className: popperClassName
|
|
18295
|
+
}, searchList.length === 0 && /*#__PURE__*/React__namespace.createElement(AvatarSelectionEmptyState, {
|
|
18296
|
+
height: customStyle.maxHeight,
|
|
18297
|
+
title: "No users found",
|
|
18298
|
+
description: "Try modifying your search to find what you are looking for."
|
|
18299
|
+
}), /*#__PURE__*/React__namespace.createElement(AvatarSelectionList, null, searchList.map(function (avatarData, index) {
|
|
18300
|
+
var _a = avatarData.firstName,
|
|
18301
|
+
firstName = _a === void 0 ? '' : _a,
|
|
18302
|
+
_b = avatarData.lastName,
|
|
18303
|
+
lastName = _b === void 0 ? '' : _b;
|
|
18304
|
+
var name = firstName + " " + lastName;
|
|
18305
|
+
var isSelected = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarData);
|
|
18306
|
+
return /*#__PURE__*/React__namespace.createElement(AvatarSelectionOption, {
|
|
18307
|
+
key: index,
|
|
18308
|
+
value: avatarData
|
|
18309
|
+
}, /*#__PURE__*/React__namespace.createElement(Checkbox, {
|
|
18310
|
+
defaultChecked: isSelected,
|
|
18311
|
+
checked: isSelected,
|
|
18312
|
+
label: name,
|
|
18313
|
+
size: "regular",
|
|
18314
|
+
tabIndex: -1,
|
|
18315
|
+
className: "ellipsis--noWrap",
|
|
18316
|
+
"data-test": "DesignSystem-AvatarSelection--Checkbox"
|
|
18317
|
+
}));
|
|
18318
|
+
}))));
|
|
18319
|
+
};
|
|
18320
|
+
|
|
18321
|
+
var AvatarSelection = function AvatarSelection(props) {
|
|
18322
|
+
var _a;
|
|
18323
|
+
|
|
18324
|
+
var max = props.max,
|
|
18325
|
+
borderColor = props.borderColor,
|
|
18326
|
+
tooltipPosition = props.tooltipPosition,
|
|
18327
|
+
list = props.list,
|
|
18328
|
+
className = props.className,
|
|
18329
|
+
size = props.size,
|
|
18330
|
+
avatarRenderer = props.avatarRenderer,
|
|
18331
|
+
onSelect = props.onSelect,
|
|
18332
|
+
width = props.width,
|
|
18333
|
+
maxHeight = props.maxHeight,
|
|
18334
|
+
minHeight = props.minHeight,
|
|
18335
|
+
searchPlaceholder = props.searchPlaceholder,
|
|
18336
|
+
withSearch = props.withSearch,
|
|
18337
|
+
searchComparator = props.searchComparator,
|
|
18338
|
+
children = props.children;
|
|
18339
|
+
|
|
18340
|
+
var _b = React__namespace.useState([]),
|
|
18341
|
+
selectedItems = _b[0],
|
|
18342
|
+
setSelectedItems = _b[1];
|
|
18343
|
+
|
|
18344
|
+
var _c = React__namespace.useState(false),
|
|
18345
|
+
openPopover = _c[0],
|
|
18346
|
+
setOpenPopover = _c[1];
|
|
18347
|
+
|
|
18348
|
+
var _d = React__namespace.useState(),
|
|
18349
|
+
focusedOption = _d[0],
|
|
18350
|
+
setFocusedOption = _d[1];
|
|
18351
|
+
|
|
18352
|
+
var _e = React__namespace.useState(false),
|
|
18353
|
+
highlightFirstItem = _e[0],
|
|
18354
|
+
setHighlightFirstItem = _e[1];
|
|
18355
|
+
|
|
18356
|
+
var _f = React__namespace.useState(false),
|
|
18357
|
+
highlightLastItem = _f[0],
|
|
18358
|
+
setHighlightLastItem = _f[1];
|
|
18359
|
+
|
|
18360
|
+
var listRef = /*#__PURE__*/React__namespace.createRef();
|
|
18361
|
+
var triggerRef = /*#__PURE__*/React__namespace.createRef();
|
|
18362
|
+
React__namespace.useEffect(function () {
|
|
18363
|
+
var selectedList = [];
|
|
18364
|
+
list.forEach(function (avatarItem) {
|
|
18365
|
+
if (avatarItem.selected) {
|
|
18366
|
+
selectedList.push(avatarItem);
|
|
18367
|
+
}
|
|
18368
|
+
});
|
|
18369
|
+
setSelectedItems(selectedList);
|
|
18370
|
+
}, []);
|
|
18371
|
+
React__namespace.useEffect(function () {
|
|
18372
|
+
if (!openPopover) {
|
|
18373
|
+
setHighlightFirstItem(false);
|
|
18374
|
+
setHighlightLastItem(false);
|
|
18375
|
+
} else {
|
|
18376
|
+
setHighlightFirstItem(true);
|
|
18377
|
+
}
|
|
18378
|
+
}, [openPopover]);
|
|
18379
|
+
React__namespace.useEffect(function () {
|
|
18380
|
+
if (highlightFirstItem && openPopover) {
|
|
18381
|
+
requestAnimationFrame(function () {
|
|
18382
|
+
return focusListItem$2('down', setFocusedOption, listRef, withSearch);
|
|
18383
|
+
});
|
|
18384
|
+
}
|
|
18385
|
+
}, [highlightFirstItem]);
|
|
18386
|
+
React__namespace.useEffect(function () {
|
|
18387
|
+
if (highlightLastItem && openPopover) {
|
|
18388
|
+
requestAnimationFrame(function () {
|
|
18389
|
+
return focusListItem$2('up', setFocusedOption, listRef, withSearch);
|
|
18390
|
+
});
|
|
18391
|
+
}
|
|
18392
|
+
}, [highlightLastItem]);
|
|
18393
|
+
var baseProps = extractBaseProps(props);
|
|
18394
|
+
var hiddenAvatarCount = list.length - max;
|
|
18395
|
+
var avatarStyle = {
|
|
18396
|
+
backgroundColor: "" + borderColor,
|
|
18397
|
+
boxShadow: "0 0 0 calc(var(--spacing-xs) + var(--spacing-s)) " + borderColor
|
|
18398
|
+
};
|
|
18399
|
+
var AvatarSelectionClass = classNames__default["default"]((_a = {}, _a['SelectionAvatarGroup'] = true, _a), className);
|
|
18400
|
+
var searchInputHeight = 36;
|
|
18401
|
+
var searchBorder = 1;
|
|
18402
|
+
var customStyle = {
|
|
18403
|
+
width: width,
|
|
18404
|
+
minHeight: minHeight,
|
|
18405
|
+
maxHeight: withSearch ? maxHeight - searchInputHeight - searchBorder : maxHeight
|
|
18406
|
+
};
|
|
18407
|
+
var hiddenAvatarList = list.slice(max, list.length);
|
|
18408
|
+
var popoverId = "DesignSystem-AvatarSelection-Popover-" + uidGenerator();
|
|
18409
|
+
var popoverProps = {
|
|
18410
|
+
hiddenAvatarList: hiddenAvatarList,
|
|
18411
|
+
customStyle: customStyle,
|
|
18412
|
+
searchPlaceholder: searchPlaceholder,
|
|
18413
|
+
searchComparator: searchComparator,
|
|
18414
|
+
children: children
|
|
18415
|
+
};
|
|
18416
|
+
var triggerProps = {
|
|
18417
|
+
size: size,
|
|
18418
|
+
avatarStyle: avatarStyle,
|
|
18419
|
+
hiddenAvatarCount: hiddenAvatarCount,
|
|
18420
|
+
hiddenAvatarList: hiddenAvatarList
|
|
18421
|
+
};
|
|
18422
|
+
|
|
18423
|
+
var onToggleHandler = function onToggleHandler(open) {
|
|
18424
|
+
open ? setOpenPopover(true) : setOpenPopover(false);
|
|
18425
|
+
};
|
|
18426
|
+
|
|
18427
|
+
var contextProp = {
|
|
18428
|
+
listRef: listRef,
|
|
18429
|
+
onSelect: onSelect,
|
|
18430
|
+
withSearch: withSearch,
|
|
18431
|
+
triggerRef: triggerRef,
|
|
18432
|
+
selectedItems: selectedItems,
|
|
18433
|
+
focusedOption: focusedOption,
|
|
18434
|
+
openPopover: openPopover,
|
|
18435
|
+
setSelectedItems: setSelectedItems,
|
|
18436
|
+
setFocusedOption: setFocusedOption,
|
|
18437
|
+
setHighlightFirstItem: setHighlightFirstItem,
|
|
18438
|
+
setHighlightLastItem: setHighlightLastItem,
|
|
18439
|
+
setOpenPopover: setOpenPopover,
|
|
18440
|
+
popoverId: popoverId
|
|
18441
|
+
};
|
|
18442
|
+
return /*#__PURE__*/React__namespace.createElement(AvatarSelectionContext.Provider, {
|
|
18443
|
+
value: contextProp
|
|
18444
|
+
}, /*#__PURE__*/React__namespace.createElement("div", __assign({
|
|
18445
|
+
"data-test": "DesignSystem-AvatarSelection"
|
|
18446
|
+
}, baseProps, {
|
|
18447
|
+
className: AvatarSelectionClass
|
|
18448
|
+
}), /*#__PURE__*/React__namespace.createElement(SelectionAvatarsWrapper, {
|
|
18449
|
+
size: size,
|
|
18450
|
+
avatarStyle: avatarStyle,
|
|
18451
|
+
avatarList: list.slice(0, max),
|
|
18452
|
+
avatarRenderer: avatarRenderer,
|
|
18453
|
+
tooltipPosition: tooltipPosition
|
|
18454
|
+
}), (hiddenAvatarCount > 0 || children && hiddenAvatarCount > 0) && /*#__PURE__*/React__namespace.createElement(Popover, {
|
|
18455
|
+
open: openPopover,
|
|
18456
|
+
position: "bottom-end",
|
|
18457
|
+
trigger: /*#__PURE__*/React__namespace.createElement(AvatarSelectionCount, __assign({}, triggerProps)),
|
|
18458
|
+
triggerClass: "flex-grow-0",
|
|
18459
|
+
onToggle: onToggleHandler
|
|
18460
|
+
}, /*#__PURE__*/React__namespace.createElement(AvatarSelectionPopover, __assign({}, popoverProps)))));
|
|
18461
|
+
};
|
|
18462
|
+
AvatarSelection.displayName = 'AvatarSelection';
|
|
18463
|
+
AvatarSelection.defaultProps = {
|
|
18464
|
+
max: 5,
|
|
18465
|
+
tooltipPosition: 'bottom',
|
|
18466
|
+
borderColor: 'white',
|
|
18467
|
+
size: 'regular',
|
|
18468
|
+
width: 176,
|
|
18469
|
+
maxHeight: 256
|
|
18470
|
+
};
|
|
18471
|
+
AvatarSelection.Input = AvatarSelectionInput;
|
|
18472
|
+
AvatarSelection.List = AvatarSelectionList;
|
|
18473
|
+
AvatarSelection.Option = AvatarSelectionOption;
|
|
18474
|
+
AvatarSelection.EmptyState = AvatarSelectionEmptyState;
|
|
18475
|
+
|
|
18476
|
+
var ComboboxList = function ComboboxList(props) {
|
|
18477
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({
|
|
18478
|
+
className: "py-3"
|
|
18479
|
+
}, props, {
|
|
18480
|
+
role: "listbox"
|
|
18481
|
+
}), props.children);
|
|
18482
|
+
};
|
|
18483
|
+
ComboboxList.defaultProps = {
|
|
18484
|
+
type: 'option',
|
|
18485
|
+
showDivider: false,
|
|
18486
|
+
tagName: 'ul',
|
|
18487
|
+
size: 'compressed'
|
|
18488
|
+
};
|
|
18489
|
+
|
|
18490
|
+
var ComboboxContext = /*#__PURE__*/React__namespace.createContext({});
|
|
18491
|
+
|
|
18492
|
+
var handleKeyDown$2 = function handleKeyDown(event, focusedOption, setFocusedOption, setOpenPopover, inputTriggerRef, setHighlightFirstItem, setHighlightLastItem, multiSelect, listRef) {
|
|
18493
|
+
switch (event.key) {
|
|
18494
|
+
case 'ArrowUp':
|
|
18495
|
+
event.preventDefault();
|
|
18496
|
+
navigateOptions$1('up', focusedOption, setFocusedOption, listRef);
|
|
18497
|
+
break;
|
|
18498
|
+
|
|
18499
|
+
case 'ArrowDown':
|
|
18500
|
+
event.preventDefault();
|
|
18501
|
+
navigateOptions$1('down', focusedOption, setFocusedOption, listRef);
|
|
18502
|
+
break;
|
|
18503
|
+
|
|
18504
|
+
case 'Enter':
|
|
18505
|
+
handleEnterKey$1(focusedOption, multiSelect, inputTriggerRef, listRef, setFocusedOption);
|
|
18506
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
|
|
18507
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
|
|
18508
|
+
break;
|
|
18509
|
+
|
|
18510
|
+
case 'Escape':
|
|
18511
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
18512
|
+
inputTriggerRef.current.focus();
|
|
18513
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
|
|
18514
|
+
break;
|
|
18515
|
+
}
|
|
18516
|
+
};
|
|
18517
|
+
|
|
18518
|
+
var handleEnterKey$1 = function handleEnterKey(focusedOption, multiSelect, inputTriggerRef, listRef, setFocusedOption) {
|
|
18519
|
+
var _a;
|
|
18520
|
+
|
|
18521
|
+
(_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
|
|
18522
|
+
|
|
18523
|
+
if (!multiSelect) {
|
|
18524
|
+
inputTriggerRef.current.focus();
|
|
18525
|
+
} else {
|
|
18526
|
+
var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
18527
|
+
var listArr = Array.from(listItems);
|
|
18528
|
+
var index = listArr.findIndex(function (item) {
|
|
18529
|
+
return item == focusedOption;
|
|
18530
|
+
});
|
|
18531
|
+
|
|
18532
|
+
if (index === listArr.length - 1) {
|
|
18533
|
+
listItems[0].focus();
|
|
18534
|
+
setFocusedOption && setFocusedOption(listItems[0]);
|
|
18535
|
+
listItems[0].scrollIntoView({
|
|
18536
|
+
block: 'center'
|
|
18537
|
+
});
|
|
18538
|
+
}
|
|
18539
|
+
}
|
|
18540
|
+
};
|
|
18541
|
+
|
|
18542
|
+
var navigateOptions$1 = function navigateOptions(direction, focusedOption, setFocusedOption, listRef) {
|
|
18543
|
+
var _a;
|
|
18544
|
+
|
|
18545
|
+
var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
18546
|
+
var index = Array.from(listItems).findIndex(function (item) {
|
|
18547
|
+
return item == focusedOption;
|
|
18548
|
+
});
|
|
18549
|
+
|
|
18550
|
+
if (index === -1) {
|
|
18551
|
+
index = direction === 'up' ? listItems.length - 1 : 0;
|
|
18552
|
+
} else {
|
|
18553
|
+
index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
|
|
18554
|
+
}
|
|
18555
|
+
|
|
18556
|
+
var targetOption = listItems[index];
|
|
18557
|
+
targetOption.focus();
|
|
18558
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
18559
|
+
(_a = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(targetOption, {
|
|
18560
|
+
block: 'center'
|
|
18561
|
+
});
|
|
18562
|
+
};
|
|
18563
|
+
|
|
18564
|
+
var ComboboxOption = function ComboboxOption(props) {
|
|
18565
|
+
var children = props.children,
|
|
18566
|
+
option = props.option,
|
|
18567
|
+
onClick = props.onClick,
|
|
18568
|
+
rest = __rest(props, ["children", "option", "onClick"]);
|
|
18569
|
+
|
|
18570
|
+
var contextProp = React__namespace.useContext(ComboboxContext);
|
|
18571
|
+
var onOptionClick = contextProp.onOptionClick,
|
|
18572
|
+
inputValue = contextProp.inputValue,
|
|
18573
|
+
focusedOption = contextProp.focusedOption,
|
|
18574
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
18575
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18576
|
+
inputTriggerRef = contextProp.inputTriggerRef,
|
|
18577
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
18578
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
18579
|
+
multiSelect = contextProp.multiSelect,
|
|
18580
|
+
listRef = contextProp.listRef;
|
|
18581
|
+
|
|
18582
|
+
var onClickHandler = function onClickHandler() {
|
|
18583
|
+
if (onClick) {
|
|
18584
|
+
return onClick(option);
|
|
18585
|
+
}
|
|
18586
|
+
|
|
18587
|
+
return onOptionClick && onOptionClick(__assign(__assign({}, option), {
|
|
18588
|
+
isSelectedOption: true
|
|
18589
|
+
}));
|
|
18590
|
+
};
|
|
18591
|
+
|
|
18592
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
18593
|
+
handleKeyDown$2(event, focusedOption, setFocusedOption, setOpenPopover, inputTriggerRef, setHighlightFirstItem, setHighlightLastItem, multiSelect, listRef);
|
|
18594
|
+
};
|
|
18595
|
+
|
|
18596
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
|
|
18597
|
+
onClick: onClickHandler,
|
|
18598
|
+
selected: option.label === (inputValue === null || inputValue === void 0 ? void 0 : inputValue.label),
|
|
18599
|
+
onKeyDown: onKeyDownHandler,
|
|
18600
|
+
tabIndex: -1,
|
|
18601
|
+
role: "option",
|
|
18602
|
+
"data-test": "DesignSystem-Combobox-Option"
|
|
18603
|
+
}, rest), children);
|
|
18604
|
+
};
|
|
18605
|
+
ComboboxOption.defaultProps = {
|
|
18606
|
+
tagName: 'li'
|
|
18607
|
+
};
|
|
18608
|
+
|
|
18609
|
+
var handleKeyDown$1 = function handleKeyDown(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
|
|
18610
|
+
switch (event.key) {
|
|
18611
|
+
case 'ArrowUp':
|
|
18612
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18613
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
|
|
18614
|
+
break;
|
|
18615
|
+
|
|
18616
|
+
case 'ArrowDown':
|
|
18617
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18618
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
|
|
18619
|
+
break;
|
|
18620
|
+
|
|
18621
|
+
case 'Escape':
|
|
18622
|
+
case 'Tab':
|
|
18623
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
18624
|
+
break;
|
|
18625
|
+
}
|
|
18626
|
+
};
|
|
18627
|
+
var focusListItem$1 = function focusListItem(position, setFocusedOption, listRef) {
|
|
18628
|
+
var _a, _b, _c;
|
|
18629
|
+
|
|
18630
|
+
var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
18631
|
+
var targetOption;
|
|
18632
|
+
|
|
18633
|
+
if (position === 'down') {
|
|
18634
|
+
targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[0];
|
|
18635
|
+
} else {
|
|
18636
|
+
targetOption = listItems[listItems.length - 1];
|
|
18637
|
+
}
|
|
18638
|
+
|
|
18639
|
+
(_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
|
|
18640
|
+
|
|
18641
|
+
if (targetOption && typeof targetOption.scrollIntoView === 'function') {
|
|
18642
|
+
(_c = targetOption) === null || _c === void 0 ? void 0 : _c.scrollIntoView({
|
|
18643
|
+
block: 'center',
|
|
18644
|
+
behavior: 'smooth'
|
|
18645
|
+
});
|
|
18646
|
+
}
|
|
18647
|
+
|
|
18648
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
18649
|
+
};
|
|
18650
|
+
|
|
18651
|
+
var InputBox = function InputBox(props) {
|
|
18652
|
+
var contextProp = React__namespace.useContext(ComboboxContext);
|
|
18653
|
+
var inputValue = contextProp.inputValue,
|
|
18654
|
+
setInputValue = contextProp.setInputValue,
|
|
18655
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
18656
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18657
|
+
inputTriggerRef = contextProp.inputTriggerRef,
|
|
18658
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
18659
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
18660
|
+
openPopover = contextProp.openPopover,
|
|
18661
|
+
popoverId = contextProp.popoverId;
|
|
18662
|
+
|
|
18663
|
+
var onChangeHandler = function onChangeHandler(event) {
|
|
18664
|
+
var value = event.target.value;
|
|
18665
|
+
setFocusedOption && setFocusedOption(undefined);
|
|
18666
|
+
var newValue = {
|
|
18667
|
+
label: value,
|
|
18668
|
+
value: value,
|
|
18669
|
+
isSelectedOption: false
|
|
18670
|
+
};
|
|
18671
|
+
setInputValue && setInputValue(newValue);
|
|
18672
|
+
|
|
18673
|
+
if (value !== '') {
|
|
18674
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18675
|
+
}
|
|
18676
|
+
};
|
|
18677
|
+
|
|
18678
|
+
var onClearHandler = function onClearHandler(event) {
|
|
18679
|
+
var _a;
|
|
18680
|
+
|
|
18681
|
+
event.stopPropagation();
|
|
18682
|
+
var newValue = {
|
|
18683
|
+
label: '',
|
|
18684
|
+
value: '',
|
|
18685
|
+
isSelectedOption: false
|
|
18686
|
+
};
|
|
18687
|
+
setInputValue && setInputValue(newValue);
|
|
18688
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18689
|
+
(_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
18690
|
+
};
|
|
18691
|
+
|
|
18692
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
18693
|
+
handleKeyDown$1(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
|
|
18694
|
+
};
|
|
18695
|
+
|
|
18696
|
+
return /*#__PURE__*/React__namespace.createElement(Input, __assign({}, props, {
|
|
18697
|
+
ref: inputTriggerRef,
|
|
18698
|
+
value: inputValue === null || inputValue === void 0 ? void 0 : inputValue.label,
|
|
18699
|
+
onChange: onChangeHandler,
|
|
18700
|
+
onKeyDown: onKeyDownHandler,
|
|
18701
|
+
onClear: onClearHandler,
|
|
18702
|
+
role: "combobox",
|
|
18703
|
+
"aria-haspopup": "listbox",
|
|
18704
|
+
"aria-controls": popoverId,
|
|
18705
|
+
"aria-label": props.placeholder || 'Combobox-Input-Trigger',
|
|
18706
|
+
"aria-expanded": openPopover,
|
|
18707
|
+
"data-test": "DesignSystem-Combobox-Input"
|
|
18708
|
+
}));
|
|
18709
|
+
};
|
|
18710
|
+
|
|
18711
|
+
var keyCodes = {
|
|
18712
|
+
BACKSPACE: 'Backspace',
|
|
18713
|
+
DELETE: 'Delete',
|
|
18714
|
+
ENTER: 'Enter'
|
|
18715
|
+
};
|
|
18716
|
+
var MultiSelectTrigger = function MultiSelectTrigger(props) {
|
|
18717
|
+
var _a, _b;
|
|
18718
|
+
|
|
18719
|
+
var chipOptions = props.chipOptions,
|
|
18720
|
+
allowDuplicates = props.allowDuplicates,
|
|
18721
|
+
disabled = props.disabled,
|
|
18722
|
+
error = props.error,
|
|
18723
|
+
placeholder = props.placeholder,
|
|
18724
|
+
defaultValue = props.defaultValue,
|
|
18725
|
+
value = props.value,
|
|
18726
|
+
className = props.className,
|
|
18727
|
+
autoFocus = props.autoFocus,
|
|
18728
|
+
onChange = props.onChange,
|
|
18729
|
+
onBlur = props.onBlur,
|
|
18730
|
+
onFocus = props.onFocus,
|
|
18731
|
+
onKeyDown = props.onKeyDown,
|
|
18732
|
+
onInputChange = props.onInputChange,
|
|
18733
|
+
tabIndex = props.tabIndex,
|
|
18734
|
+
role = props.role,
|
|
18735
|
+
rest = __rest(props, ["chipOptions", "allowDuplicates", "disabled", "error", "placeholder", "defaultValue", "value", "className", "autoFocus", "onChange", "onBlur", "onFocus", "onKeyDown", "onInputChange", "tabIndex", "role"]);
|
|
18736
|
+
|
|
18737
|
+
var inputRef = /*#__PURE__*/React__namespace.createRef();
|
|
18738
|
+
|
|
18739
|
+
var _c = React__namespace.useState(value || defaultValue),
|
|
18740
|
+
chips = _c[0],
|
|
18741
|
+
setChips = _c[1];
|
|
18742
|
+
|
|
18743
|
+
var _d = React__namespace.useState(''),
|
|
18744
|
+
inputValue = _d[0],
|
|
18745
|
+
setInputValue = _d[1];
|
|
18746
|
+
|
|
18747
|
+
var baseProps = extractBaseProps(props);
|
|
18748
|
+
React__namespace.useEffect(function () {
|
|
18749
|
+
if (value !== undefined) {
|
|
18750
|
+
setChips(value);
|
|
18751
|
+
setInputValue('');
|
|
18752
|
+
}
|
|
18753
|
+
}, [value]);
|
|
18754
|
+
var ChipInputBorderClass = classNames__default["default"]((_a = {}, _a['ChipInput-border'] = true, _a['ChipInput-border--error'] = error, _a));
|
|
18755
|
+
var ChipInputClass = classNames__default["default"]((_b = {
|
|
18756
|
+
ChipInput: true
|
|
18757
|
+
}, _b['ChipInput--disabled'] = disabled, _b['ChipInput--withChips'] = chips && chips.length > 0, _b['ChipInput--error'] = error, _b), className);
|
|
18758
|
+
|
|
18759
|
+
var onUpdateChips = function onUpdateChips(updatedChips) {
|
|
18760
|
+
if (onChange) onChange(updatedChips);
|
|
18761
|
+
};
|
|
18762
|
+
|
|
18763
|
+
var onChipDeleteHandler = function onChipDeleteHandler(index) {
|
|
18764
|
+
var updatedChips = __spreadArrays(chips);
|
|
18765
|
+
|
|
18766
|
+
updatedChips.splice(index, 1);
|
|
18767
|
+
|
|
18768
|
+
if (!value) {
|
|
18769
|
+
setChips(updatedChips);
|
|
18770
|
+
}
|
|
18771
|
+
|
|
18772
|
+
onUpdateChips(updatedChips);
|
|
18773
|
+
};
|
|
18774
|
+
|
|
18775
|
+
var onChipAddHandler = function onChipAddHandler() {
|
|
18776
|
+
if (!inputValue) return;
|
|
18777
|
+
var chip = inputValue.trim();
|
|
18778
|
+
var isChipExist = chips.filter(function (item) {
|
|
18779
|
+
return item.label === chip;
|
|
18780
|
+
}).length > 0;
|
|
18781
|
+
|
|
18782
|
+
if ((allowDuplicates || !isChipExist) && chip) {
|
|
18783
|
+
var updatedChips = __spreadArrays(chips, [{
|
|
18784
|
+
label: chip,
|
|
18785
|
+
value: chip,
|
|
18786
|
+
isSelectedOption: false
|
|
18787
|
+
}]);
|
|
18788
|
+
|
|
18789
|
+
if (!value) {
|
|
18790
|
+
setChips(updatedChips);
|
|
18791
|
+
}
|
|
18792
|
+
|
|
18793
|
+
onUpdateChips(updatedChips);
|
|
18794
|
+
setInputValue('');
|
|
18795
|
+
}
|
|
18796
|
+
};
|
|
18797
|
+
|
|
18798
|
+
var onDeleteAllHandler = function onDeleteAllHandler(e) {
|
|
18799
|
+
e.stopPropagation();
|
|
18800
|
+
var updatedChips = [];
|
|
18801
|
+
|
|
18802
|
+
if (!value) {
|
|
18803
|
+
setChips(updatedChips);
|
|
18804
|
+
}
|
|
18805
|
+
|
|
18806
|
+
onUpdateChips(updatedChips);
|
|
18807
|
+
setInputValue('');
|
|
18808
|
+
onInputChange && onInputChange();
|
|
18809
|
+
};
|
|
18810
|
+
|
|
18811
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
18812
|
+
var chipsLength = chips.length;
|
|
18813
|
+
|
|
18814
|
+
switch (event.key) {
|
|
18815
|
+
case keyCodes.DELETE:
|
|
18816
|
+
case keyCodes.BACKSPACE:
|
|
18817
|
+
if (inputValue === '' && chipsLength > 0) {
|
|
18818
|
+
onChipDeleteHandler(chipsLength - 1);
|
|
18819
|
+
}
|
|
18820
|
+
|
|
18821
|
+
break;
|
|
18822
|
+
|
|
18823
|
+
case keyCodes.ENTER:
|
|
18824
|
+
event.preventDefault();
|
|
18825
|
+
onChipAddHandler();
|
|
18826
|
+
break;
|
|
18827
|
+
}
|
|
18828
|
+
|
|
18829
|
+
onKeyDown && onKeyDown(event);
|
|
18830
|
+
};
|
|
18831
|
+
|
|
18832
|
+
var onInputChangeHandler = function onInputChangeHandler(event) {
|
|
18833
|
+
setInputValue(event.target.value);
|
|
18834
|
+
onInputChange && onInputChange(event);
|
|
18835
|
+
};
|
|
18836
|
+
|
|
18837
|
+
var onClickHandler = function onClickHandler() {
|
|
18838
|
+
var _a;
|
|
18839
|
+
|
|
18840
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
18841
|
+
};
|
|
18842
|
+
|
|
18843
|
+
var chipComponents = chips.map(function (chip, index) {
|
|
18844
|
+
var _a = chipOptions.type,
|
|
18845
|
+
type = _a === void 0 ? 'input' : _a,
|
|
18846
|
+
_onClick = chipOptions.onClick,
|
|
18847
|
+
rest = __rest(chipOptions, ["type", "onClick"]);
|
|
18848
|
+
|
|
18849
|
+
var chipLabel = typeof chip === 'string' ? chip : chip === null || chip === void 0 ? void 0 : chip.label;
|
|
18850
|
+
return /*#__PURE__*/React__namespace.createElement(Chip, __assign({
|
|
18851
|
+
"data-test": "DesignSystem-MultiSelectTrigger--Chip",
|
|
18852
|
+
label: chipLabel,
|
|
18853
|
+
name: chip,
|
|
18854
|
+
type: type,
|
|
18855
|
+
disabled: disabled,
|
|
18856
|
+
key: index,
|
|
18857
|
+
className: "my-3 mx-2",
|
|
18858
|
+
onClick: function onClick() {
|
|
18859
|
+
return _onClick && _onClick(chip, index);
|
|
18860
|
+
},
|
|
18861
|
+
onClose: function onClose() {
|
|
18862
|
+
return onChipDeleteHandler(index);
|
|
18863
|
+
}
|
|
18864
|
+
}, rest));
|
|
18865
|
+
});
|
|
18866
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
18867
|
+
"data-test": "DesignSystem-MultiSelectTrigger--Border",
|
|
18868
|
+
className: ChipInputBorderClass
|
|
18869
|
+
}, /*#__PURE__*/React__namespace.createElement("div", __assign({
|
|
18870
|
+
"data-test": "DesignSystem-MultiSelectTrigger"
|
|
18871
|
+
}, baseProps, {
|
|
18872
|
+
className: ChipInputClass,
|
|
18873
|
+
onClick: onClickHandler,
|
|
18874
|
+
tabIndex: disabled ? -1 : tabIndex || 0
|
|
18875
|
+
}), /*#__PURE__*/React__namespace.createElement("div", {
|
|
18876
|
+
className: "ChipInput-wrapper"
|
|
18877
|
+
}, chips && chips.length > 0 && chipComponents, /*#__PURE__*/React__namespace.createElement("input", __assign({}, rest, {
|
|
18878
|
+
"data-test": "DesignSystem-MultiSelectTrigger--Input",
|
|
18879
|
+
ref: props.forwardedRef || inputRef,
|
|
18880
|
+
className: "ChipInput-input",
|
|
18881
|
+
autoFocus: autoFocus,
|
|
18882
|
+
placeholder: chips && chips.length > 0 ? '' : placeholder,
|
|
18883
|
+
disabled: disabled,
|
|
18884
|
+
value: inputValue,
|
|
18885
|
+
onBlur: onBlur,
|
|
18886
|
+
onFocus: onFocus,
|
|
18887
|
+
onChange: onInputChangeHandler,
|
|
18888
|
+
onKeyDown: onKeyDownHandler,
|
|
18889
|
+
role: role
|
|
18890
|
+
}))), (chips.length > 0 || inputValue.length > 0) && /*#__PURE__*/React__namespace.createElement(Icon, {
|
|
18891
|
+
"data-test": "DesignSystem-MultiSelectTrigger--Icon",
|
|
18892
|
+
name: "close",
|
|
18893
|
+
appearance: disabled ? 'disabled' : 'subtle',
|
|
18894
|
+
className: "ChipInput-icon",
|
|
18895
|
+
onClick: onDeleteAllHandler,
|
|
18896
|
+
tabIndex: disabled ? -1 : 0
|
|
18897
|
+
})));
|
|
18898
|
+
};
|
|
18899
|
+
MultiSelectTrigger.displayName = 'MultiSelectTrigger';
|
|
18900
|
+
MultiSelectTrigger.defaultProps = {
|
|
18901
|
+
chipOptions: {},
|
|
18902
|
+
defaultValue: [],
|
|
18903
|
+
allowDuplicates: false,
|
|
18904
|
+
autoFocus: false
|
|
18905
|
+
};
|
|
18906
|
+
|
|
18907
|
+
var ChipInputBox = function ChipInputBox(props) {
|
|
18908
|
+
var contextProp = React__default["default"].useContext(ComboboxContext);
|
|
18909
|
+
var chipInputValue = contextProp.chipInputValue,
|
|
18910
|
+
setChipInputValue = contextProp.setChipInputValue,
|
|
18911
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
18912
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
18913
|
+
setChipInputText = contextProp.setChipInputText,
|
|
18914
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
18915
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
18916
|
+
inputTriggerRef = contextProp.inputTriggerRef,
|
|
18917
|
+
openPopover = contextProp.openPopover,
|
|
18918
|
+
popoverId = contextProp.popoverId;
|
|
18919
|
+
|
|
18920
|
+
var onChangeHandler = function onChangeHandler(chips) {
|
|
18921
|
+
setFocusedOption && setFocusedOption(undefined);
|
|
18922
|
+
setChipInputValue && setChipInputValue(chips);
|
|
18923
|
+
|
|
18924
|
+
if (chips.length === 0) {
|
|
18925
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18926
|
+
}
|
|
18927
|
+
};
|
|
18928
|
+
|
|
18929
|
+
var onUpdateHandler = function onUpdateHandler(event) {
|
|
18930
|
+
var _a;
|
|
18931
|
+
|
|
18932
|
+
var value = (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value;
|
|
18933
|
+
|
|
18934
|
+
if (!value) {
|
|
18935
|
+
setChipInputText === null || setChipInputText === void 0 ? void 0 : setChipInputText('');
|
|
18936
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18937
|
+
inputTriggerRef === null || inputTriggerRef === void 0 ? void 0 : inputTriggerRef.current.focus();
|
|
18938
|
+
return;
|
|
18939
|
+
}
|
|
18940
|
+
|
|
18941
|
+
setChipInputText && setChipInputText(value);
|
|
18942
|
+
|
|
18943
|
+
if (value !== '') {
|
|
18944
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
18945
|
+
}
|
|
18946
|
+
};
|
|
18947
|
+
|
|
18948
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
18949
|
+
handleKeyDown$1(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
|
|
18950
|
+
};
|
|
18951
|
+
|
|
18952
|
+
return /*#__PURE__*/React__default["default"].createElement(MultiSelectTrigger, __assign({}, props, {
|
|
18953
|
+
value: chipInputValue,
|
|
18954
|
+
onChange: onChangeHandler,
|
|
18955
|
+
onInputChange: onUpdateHandler,
|
|
18956
|
+
onKeyDown: onKeyDownHandler,
|
|
18957
|
+
tabIndex: -1,
|
|
18958
|
+
forwardedRef: inputTriggerRef,
|
|
18959
|
+
role: "combobox",
|
|
18960
|
+
"aria-haspopup": "listbox",
|
|
18961
|
+
"aria-controls": popoverId,
|
|
18962
|
+
"aria-label": props.placeholder || 'Combobox-ChipInput-Trigger',
|
|
18963
|
+
"aria-expanded": openPopover,
|
|
18964
|
+
"data-test": "DesignSystem-Combobox-ChipInput"
|
|
18965
|
+
}));
|
|
18966
|
+
};
|
|
18967
|
+
|
|
18968
|
+
var ComboboxTrigger = function ComboboxTrigger(props) {
|
|
18969
|
+
var multiSelect = props.multiSelect,
|
|
18970
|
+
chipValue = props.chipValue,
|
|
18971
|
+
value = props.value,
|
|
18972
|
+
rest = __rest(props, ["multiSelect", "chipValue", "value"]);
|
|
18973
|
+
|
|
18974
|
+
if (multiSelect) {
|
|
18975
|
+
var icon = props.icon,
|
|
18976
|
+
clearButton = props.clearButton,
|
|
18977
|
+
iconType = props.iconType;
|
|
18978
|
+
var chipInputOptions = {
|
|
18979
|
+
icon: icon,
|
|
18980
|
+
clearButton: clearButton,
|
|
18981
|
+
iconType: iconType
|
|
18982
|
+
};
|
|
18983
|
+
return /*#__PURE__*/React__namespace.createElement(ChipInputBox, __assign({
|
|
18984
|
+
defaultValue: [],
|
|
18985
|
+
chipOptions: __assign({}, chipInputOptions)
|
|
18986
|
+
}, rest, {
|
|
18987
|
+
value: chipValue
|
|
18988
|
+
}));
|
|
18989
|
+
}
|
|
18990
|
+
|
|
18991
|
+
return /*#__PURE__*/React__namespace.createElement(InputBox, __assign({}, props, {
|
|
18992
|
+
value: value === null || value === void 0 ? void 0 : value.label
|
|
18993
|
+
}));
|
|
18994
|
+
};
|
|
18995
|
+
|
|
18996
|
+
var Combobox = function Combobox(props) {
|
|
18997
|
+
var children = props.children,
|
|
18998
|
+
onChange = props.onChange,
|
|
18999
|
+
multiSelect = props.multiSelect,
|
|
19000
|
+
className = props.className,
|
|
19001
|
+
maxHeight = props.maxHeight,
|
|
19002
|
+
width = props.width,
|
|
19003
|
+
value = props.value,
|
|
19004
|
+
placeholder = props.placeholder,
|
|
19005
|
+
disabled = props.disabled,
|
|
19006
|
+
error = props.error,
|
|
19007
|
+
onBlur = props.onBlur,
|
|
19008
|
+
onFocus = props.onFocus,
|
|
19009
|
+
onClear = props.onClear,
|
|
19010
|
+
icon = props.icon,
|
|
19011
|
+
iconType = props.iconType,
|
|
19012
|
+
size = props.size,
|
|
19013
|
+
chipValue = props.chipValue,
|
|
19014
|
+
clearButton = props.clearButton,
|
|
19015
|
+
onSearch = props.onSearch;
|
|
19016
|
+
|
|
19017
|
+
var _a = React__namespace.useState(),
|
|
19018
|
+
popoverStyle = _a[0],
|
|
19019
|
+
setPopoverStyle = _a[1];
|
|
19020
|
+
|
|
19021
|
+
var _b = React__namespace.useState({}),
|
|
19022
|
+
wrapperStyle = _b[0],
|
|
19023
|
+
setWrapperStyle = _b[1];
|
|
19024
|
+
|
|
19025
|
+
var triggerRef = /*#__PURE__*/React__namespace.createRef();
|
|
19026
|
+
var listRef = /*#__PURE__*/React__namespace.createRef();
|
|
19027
|
+
|
|
19028
|
+
var _c = React__namespace.useState(false),
|
|
19029
|
+
openPopover = _c[0],
|
|
19030
|
+
setOpenPopover = _c[1];
|
|
19031
|
+
|
|
19032
|
+
var _d = React__namespace.useState(false),
|
|
19033
|
+
isOptionSelected = _d[0],
|
|
19034
|
+
setIsOptionSelected = _d[1];
|
|
19035
|
+
|
|
19036
|
+
var _e = React__namespace.useState(),
|
|
19037
|
+
focusedOption = _e[0],
|
|
19038
|
+
setFocusedOption = _e[1];
|
|
19039
|
+
|
|
19040
|
+
var _f = React__namespace.useState(value || {
|
|
19041
|
+
label: '',
|
|
19042
|
+
value: ''
|
|
19043
|
+
}),
|
|
19044
|
+
inputValue = _f[0],
|
|
19045
|
+
setInputValue = _f[1];
|
|
19046
|
+
|
|
19047
|
+
var _g = React__namespace.useState(chipValue),
|
|
19048
|
+
chipInputValue = _g[0],
|
|
19049
|
+
setChipInputValue = _g[1];
|
|
19050
|
+
|
|
19051
|
+
var _h = React__namespace.useState(''),
|
|
19052
|
+
chipInputText = _h[0],
|
|
19053
|
+
setChipInputText = _h[1];
|
|
19054
|
+
|
|
19055
|
+
var _j = React__namespace.useState(false),
|
|
19056
|
+
highlightFirstItem = _j[0],
|
|
19057
|
+
setHighlightFirstItem = _j[1];
|
|
19058
|
+
|
|
19059
|
+
var _k = React__namespace.useState(false),
|
|
19060
|
+
highlightLastItem = _k[0],
|
|
19061
|
+
setHighlightLastItem = _k[1];
|
|
19062
|
+
|
|
19063
|
+
var inputTriggerRef = React__namespace.useRef();
|
|
19064
|
+
var popoverId = "DesignSystem-Combobox--Popover-" + uidGenerator();
|
|
19065
|
+
React__namespace.useEffect(function () {
|
|
19066
|
+
var _a;
|
|
19067
|
+
|
|
19068
|
+
var popperWidth = (_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
|
|
19069
|
+
var popperWrapperStyle = {
|
|
19070
|
+
width: width || popperWidth
|
|
19071
|
+
};
|
|
19072
|
+
var wrapperStyle = {
|
|
19073
|
+
maxHeight: maxHeight || 'var(--spacing-9)',
|
|
19074
|
+
overflowY: 'auto',
|
|
19075
|
+
boxSizing: 'border-box'
|
|
19076
|
+
};
|
|
19077
|
+
setWrapperStyle(wrapperStyle);
|
|
19078
|
+
setPopoverStyle(popperWrapperStyle);
|
|
19079
|
+
}, []);
|
|
19080
|
+
React__namespace.useEffect(function () {
|
|
19081
|
+
if (isOptionSelected) {
|
|
19082
|
+
multiSelect ? setOpenPopover(true) : setOpenPopover(false);
|
|
19083
|
+
setIsOptionSelected(false);
|
|
19084
|
+
}
|
|
19085
|
+
|
|
19086
|
+
var value = multiSelect ? chipInputValue : inputValue;
|
|
19087
|
+
onChange && !isOptionSelected && onChange(value);
|
|
19088
|
+
}, [inputValue, chipInputValue]);
|
|
19089
|
+
React__namespace.useEffect(function () {
|
|
19090
|
+
if (highlightFirstItem && openPopover) {
|
|
19091
|
+
requestAnimationFrame(function () {
|
|
19092
|
+
return focusListItem$1('down', setFocusedOption, listRef);
|
|
19093
|
+
});
|
|
19094
|
+
}
|
|
19095
|
+
}, [highlightFirstItem]);
|
|
19096
|
+
React__namespace.useEffect(function () {
|
|
19097
|
+
if (highlightLastItem && openPopover) {
|
|
19098
|
+
requestAnimationFrame(function () {
|
|
19099
|
+
return focusListItem$1('up', setFocusedOption, listRef);
|
|
19100
|
+
});
|
|
19101
|
+
}
|
|
19102
|
+
}, [highlightLastItem]);
|
|
19103
|
+
React__namespace.useEffect(function () {
|
|
19104
|
+
if (!openPopover) {
|
|
19105
|
+
setHighlightFirstItem(false);
|
|
19106
|
+
setHighlightLastItem(false);
|
|
19107
|
+
}
|
|
19108
|
+
}, [openPopover]);
|
|
19109
|
+
React__namespace.useEffect(function () {
|
|
19110
|
+
onSearch && onSearch(chipInputText);
|
|
19111
|
+
}, [chipInputText]);
|
|
19112
|
+
|
|
19113
|
+
var onOptionClick = function onOptionClick(option) {
|
|
19114
|
+
setIsOptionSelected(true);
|
|
19115
|
+
|
|
19116
|
+
if (!multiSelect) {
|
|
19117
|
+
setInputValue(option);
|
|
19118
|
+
onChange && onChange(option);
|
|
19119
|
+
} else {
|
|
19120
|
+
var chipList = chipInputValue ? __spreadArrays(chipInputValue, [option]) : [option];
|
|
19121
|
+
setChipInputValue(chipList);
|
|
19122
|
+
onChange && onChange(chipList);
|
|
19123
|
+
}
|
|
19124
|
+
};
|
|
19125
|
+
|
|
19126
|
+
var outsideClickHandler = function outsideClickHandler() {
|
|
19127
|
+
!multiSelect && setOpenPopover(false);
|
|
19128
|
+
};
|
|
19129
|
+
|
|
19130
|
+
var onToggleHandler = function onToggleHandler(open) {
|
|
19131
|
+
open ? setOpenPopover(true) : setOpenPopover(false);
|
|
19132
|
+
};
|
|
19133
|
+
|
|
19134
|
+
var triggerProps = {
|
|
19135
|
+
value: value,
|
|
19136
|
+
placeholder: placeholder,
|
|
19137
|
+
disabled: disabled,
|
|
19138
|
+
error: error,
|
|
19139
|
+
onBlur: onBlur,
|
|
19140
|
+
onFocus: onFocus,
|
|
19141
|
+
onClear: onClear,
|
|
19142
|
+
icon: icon,
|
|
19143
|
+
iconType: iconType,
|
|
19144
|
+
size: size,
|
|
19145
|
+
multiSelect: multiSelect,
|
|
19146
|
+
chipValue: chipValue,
|
|
19147
|
+
clearButton: clearButton
|
|
19148
|
+
};
|
|
19149
|
+
var contextProp = {
|
|
19150
|
+
inputValue: inputValue,
|
|
19151
|
+
setInputValue: setInputValue,
|
|
19152
|
+
onOptionClick: onOptionClick,
|
|
19153
|
+
openPopover: openPopover,
|
|
19154
|
+
setOpenPopover: setOpenPopover,
|
|
19155
|
+
isOptionSelected: isOptionSelected,
|
|
19156
|
+
setIsOptionSelected: setIsOptionSelected,
|
|
19157
|
+
chipInputValue: chipInputValue,
|
|
19158
|
+
setChipInputValue: setChipInputValue,
|
|
19159
|
+
focusedOption: focusedOption,
|
|
19160
|
+
setFocusedOption: setFocusedOption,
|
|
19161
|
+
chipInputText: chipInputText,
|
|
19162
|
+
setChipInputText: setChipInputText,
|
|
19163
|
+
inputTriggerRef: inputTriggerRef,
|
|
19164
|
+
setHighlightFirstItem: setHighlightFirstItem,
|
|
19165
|
+
setHighlightLastItem: setHighlightLastItem,
|
|
19166
|
+
multiSelect: multiSelect,
|
|
19167
|
+
listRef: listRef,
|
|
19168
|
+
onSearch: onSearch,
|
|
19169
|
+
popoverId: popoverId
|
|
19170
|
+
};
|
|
19171
|
+
return /*#__PURE__*/React__namespace.createElement(ComboboxContext.Provider, {
|
|
19172
|
+
value: contextProp
|
|
19173
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
19174
|
+
ref: triggerRef,
|
|
19175
|
+
className: className
|
|
19176
|
+
}, /*#__PURE__*/React__namespace.createElement(OutsideClick, {
|
|
19177
|
+
onOutsideClick: outsideClickHandler
|
|
19178
|
+
}, /*#__PURE__*/React__namespace.createElement(Popover, {
|
|
19179
|
+
open: openPopover && !disabled,
|
|
19180
|
+
triggerClass: "d-block",
|
|
19181
|
+
customStyle: popoverStyle,
|
|
19182
|
+
onToggle: onToggleHandler,
|
|
19183
|
+
trigger: /*#__PURE__*/React__namespace.createElement(ComboboxTrigger, __assign({}, triggerProps))
|
|
19184
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
19185
|
+
style: wrapperStyle,
|
|
19186
|
+
ref: listRef,
|
|
19187
|
+
id: popoverId
|
|
19188
|
+
}, children && typeof children === 'function' ? children(contextProp) : children)))));
|
|
19189
|
+
};
|
|
19190
|
+
Combobox.List = ComboboxList;
|
|
19191
|
+
Combobox.Option = ComboboxOption;
|
|
19192
|
+
|
|
19193
|
+
var SelectContext = /*#__PURE__*/React__namespace.createContext({});
|
|
19194
|
+
|
|
19195
|
+
var SelectList = function SelectList(props) {
|
|
19196
|
+
var contextProp = React__namespace.useContext(SelectContext);
|
|
19197
|
+
var withSearch = contextProp.withSearch,
|
|
19198
|
+
minHeight = contextProp.minHeight,
|
|
19199
|
+
maxHeight = contextProp.maxHeight,
|
|
19200
|
+
multiSelect = contextProp.multiSelect;
|
|
19201
|
+
|
|
19202
|
+
var children = props.children,
|
|
19203
|
+
rest = __rest(props, ["children"]);
|
|
19204
|
+
|
|
19205
|
+
var searchInputHeight = 33;
|
|
19206
|
+
var wrapperStyle = {
|
|
19207
|
+
maxHeight: withSearch ? maxHeight - searchInputHeight : maxHeight,
|
|
19208
|
+
overflowY: 'auto',
|
|
19209
|
+
minHeight: minHeight
|
|
19210
|
+
};
|
|
19211
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({
|
|
19212
|
+
"aria-label": "Options item list",
|
|
19213
|
+
"aria-multiselectable": multiSelect,
|
|
19214
|
+
className: "my-3"
|
|
19215
|
+
}, rest), /*#__PURE__*/React__namespace.createElement("div", {
|
|
19216
|
+
style: wrapperStyle
|
|
19217
|
+
}, children));
|
|
19218
|
+
};
|
|
19219
|
+
SelectList.defaultProps = {
|
|
19220
|
+
type: 'option',
|
|
19221
|
+
showDivider: false,
|
|
19222
|
+
size: 'compressed',
|
|
19223
|
+
tagName: 'ul'
|
|
19224
|
+
};
|
|
19225
|
+
|
|
19226
|
+
var mapInitialValue = function mapInitialValue(multiSelect, selectedValue) {
|
|
19227
|
+
if (multiSelect) {
|
|
19228
|
+
return selectedValue && !Array.isArray(selectedValue) ? [selectedValue] : selectedValue || [];
|
|
19229
|
+
} else {
|
|
19230
|
+
return selectedValue || {
|
|
19231
|
+
label: '',
|
|
19232
|
+
value: ''
|
|
19233
|
+
};
|
|
19234
|
+
}
|
|
19235
|
+
};
|
|
19236
|
+
var elementExist = function elementExist(targetObject, mainList) {
|
|
19237
|
+
if (!Array.isArray(mainList)) {
|
|
19238
|
+
return targetObject.value === (mainList === null || mainList === void 0 ? void 0 : mainList.value) ? 0 : -1;
|
|
19239
|
+
}
|
|
19240
|
+
|
|
19241
|
+
return mainList.findIndex(function (item) {
|
|
19242
|
+
return item.value === targetObject.value;
|
|
19243
|
+
});
|
|
19244
|
+
};
|
|
19245
|
+
var removeOrAddToList = function removeOrAddToList(targetObject, prevList) {
|
|
19246
|
+
var newList = __spreadArrays(prevList);
|
|
19247
|
+
|
|
19248
|
+
var existingIndex = elementExist(targetObject, newList);
|
|
19249
|
+
|
|
19250
|
+
if (existingIndex !== -1) {
|
|
19251
|
+
newList.splice(existingIndex, 1);
|
|
19252
|
+
} else {
|
|
19253
|
+
newList.push(targetObject);
|
|
19254
|
+
}
|
|
19255
|
+
|
|
19256
|
+
return newList;
|
|
19257
|
+
};
|
|
19258
|
+
var computeValue = function computeValue(multiSelect, selectValue, setLabel) {
|
|
19259
|
+
if (!multiSelect) {
|
|
19260
|
+
return (selectValue === null || selectValue === void 0 ? void 0 : selectValue.label.trim()) || '';
|
|
19261
|
+
}
|
|
19262
|
+
|
|
19263
|
+
var label = setLabel === null || setLabel === void 0 ? void 0 : setLabel(selectValue.length);
|
|
19264
|
+
|
|
19265
|
+
if (label) {
|
|
19266
|
+
return label;
|
|
19267
|
+
}
|
|
19268
|
+
|
|
19269
|
+
if (selectValue.length <= 2) {
|
|
19270
|
+
return selectValue.map(function (pair) {
|
|
19271
|
+
return "" + pair.label;
|
|
19272
|
+
}).join(', ');
|
|
19273
|
+
} else {
|
|
19274
|
+
return selectValue.length + " Selected";
|
|
19275
|
+
}
|
|
19276
|
+
};
|
|
19277
|
+
var handleKeyDownTrigger = function handleKeyDownTrigger(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
|
|
19278
|
+
switch (event.key) {
|
|
19279
|
+
case 'Enter':
|
|
19280
|
+
event.preventDefault();
|
|
19281
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
19282
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
|
|
19283
|
+
break;
|
|
19284
|
+
|
|
19285
|
+
case 'ArrowDown':
|
|
19286
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
19287
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
|
|
19288
|
+
break;
|
|
19289
|
+
|
|
19290
|
+
case 'ArrowUp':
|
|
19291
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
|
|
19292
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
|
|
19293
|
+
break;
|
|
19294
|
+
}
|
|
19295
|
+
};
|
|
19296
|
+
var focusListItem = function focusListItem(position, setFocusedOption, listRef) {
|
|
19297
|
+
var _a, _b, _c;
|
|
19298
|
+
|
|
19299
|
+
var searchInput = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Select--Input"]');
|
|
19300
|
+
var listItems = (_b = listRef.current) === null || _b === void 0 ? void 0 : _b.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
19301
|
+
var targetOption;
|
|
19302
|
+
|
|
19303
|
+
if (position === 'down') {
|
|
19304
|
+
targetOption = (searchInput === null || searchInput === void 0 ? void 0 : searchInput[0]) || (listItems === null || listItems === void 0 ? void 0 : listItems[0]);
|
|
19305
|
+
} else {
|
|
19306
|
+
targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[listItems.length - 1];
|
|
19307
|
+
}
|
|
19308
|
+
|
|
19309
|
+
(_c = targetOption) === null || _c === void 0 ? void 0 : _c.focus();
|
|
19310
|
+
targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView({
|
|
19311
|
+
block: 'center'
|
|
19312
|
+
});
|
|
19313
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
19314
|
+
};
|
|
19315
|
+
var handleKeyDown = function handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef) {
|
|
19316
|
+
switch (event.key) {
|
|
19317
|
+
case 'ArrowUp':
|
|
19318
|
+
event.preventDefault();
|
|
19319
|
+
navigateOptions('up', focusedOption, setFocusedOption, listRef, withSearch);
|
|
19320
|
+
break;
|
|
19321
|
+
|
|
19322
|
+
case 'ArrowDown':
|
|
19323
|
+
event.preventDefault();
|
|
19324
|
+
navigateOptions('down', focusedOption, setFocusedOption, listRef, withSearch);
|
|
19325
|
+
break;
|
|
19326
|
+
|
|
19327
|
+
case 'Enter':
|
|
19328
|
+
handleEnterKey(focusedOption);
|
|
19329
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
|
|
19330
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
|
|
19331
|
+
break;
|
|
19332
|
+
|
|
19333
|
+
case 'Tab':
|
|
19334
|
+
setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
|
|
19335
|
+
setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
|
|
19336
|
+
break;
|
|
19337
|
+
|
|
19338
|
+
case 'Escape':
|
|
19339
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
19340
|
+
triggerRef.current.focus();
|
|
19341
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
|
|
19342
|
+
break;
|
|
19343
|
+
}
|
|
19344
|
+
};
|
|
19345
|
+
var handleEnterKey = function handleEnterKey(focusedOption) {
|
|
19346
|
+
var _a;
|
|
19347
|
+
|
|
19348
|
+
(_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
|
|
19349
|
+
};
|
|
19350
|
+
var navigateOptions = function navigateOptions(direction, focusedOption, setFocusedOption, listRef, withSearch) {
|
|
19351
|
+
var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
19352
|
+
var index = Array.from(listItems).findIndex(function (item) {
|
|
19353
|
+
return item == focusedOption;
|
|
19354
|
+
});
|
|
19355
|
+
|
|
19356
|
+
if (index === -1) {
|
|
19357
|
+
index = direction === 'up' ? listItems.length - 1 : 0;
|
|
19358
|
+
} else if (withSearch && index === 0 && direction === 'up' || withSearch && index === listItems.length - 1 && direction === 'down') {
|
|
19359
|
+
var searchInput = listRef.current.querySelector('[data-test="DesignSystem-Select--Input"]');
|
|
19360
|
+
searchInput.focus();
|
|
19361
|
+
setFocusedOption && setFocusedOption(searchInput);
|
|
19362
|
+
} else {
|
|
19363
|
+
index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
|
|
19364
|
+
var targetOption = listItems[index];
|
|
19365
|
+
targetOption.focus();
|
|
19366
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
19367
|
+
targetOption.scrollIntoView({
|
|
19368
|
+
block: 'center'
|
|
19369
|
+
});
|
|
19370
|
+
}
|
|
19371
|
+
};
|
|
19372
|
+
var handleInputKeyDown = function handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef) {
|
|
19373
|
+
var _a, _b;
|
|
19374
|
+
|
|
19375
|
+
var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
|
|
19376
|
+
var targetOption;
|
|
19377
|
+
|
|
19378
|
+
switch (event.key) {
|
|
19379
|
+
case 'ArrowUp':
|
|
19380
|
+
event.preventDefault();
|
|
19381
|
+
targetOption = listItems[listItems.length - 1];
|
|
19382
|
+
break;
|
|
19383
|
+
|
|
19384
|
+
case 'ArrowDown':
|
|
19385
|
+
event.preventDefault();
|
|
19386
|
+
targetOption = listItems[0];
|
|
19387
|
+
break;
|
|
19388
|
+
|
|
19389
|
+
case 'Escape':
|
|
19390
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
|
|
19391
|
+
triggerRef.current.focus();
|
|
19392
|
+
setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
|
|
19393
|
+
break;
|
|
19394
|
+
}
|
|
19395
|
+
|
|
19396
|
+
(_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
|
|
19397
|
+
targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView({
|
|
19398
|
+
block: 'center'
|
|
19399
|
+
});
|
|
19400
|
+
setFocusedOption && setFocusedOption(targetOption);
|
|
19401
|
+
};
|
|
19402
|
+
|
|
19403
|
+
var SelectOption = function SelectOption(props) {
|
|
19404
|
+
var children = props.children,
|
|
19405
|
+
option = props.option,
|
|
19406
|
+
checkedState = props.checkedState,
|
|
19407
|
+
onClick = props.onClick,
|
|
19408
|
+
_a = props.withCheckbox,
|
|
19409
|
+
withCheckbox = _a === void 0 ? true : _a,
|
|
19410
|
+
disabled = props.disabled,
|
|
19411
|
+
rest = __rest(props, ["children", "option", "checkedState", "onClick", "withCheckbox", "disabled"]);
|
|
19412
|
+
|
|
19413
|
+
var contextProp = React__namespace.useContext(SelectContext);
|
|
19414
|
+
var onOptionClick = contextProp.onOptionClick,
|
|
19415
|
+
selectValue = contextProp.selectValue,
|
|
19416
|
+
setSelectValue = contextProp.setSelectValue,
|
|
19417
|
+
multiSelect = contextProp.multiSelect,
|
|
19418
|
+
setIsOptionSelected = contextProp.setIsOptionSelected,
|
|
19419
|
+
focusedOption = contextProp.focusedOption,
|
|
19420
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
19421
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
19422
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
19423
|
+
listRef = contextProp.listRef,
|
|
19424
|
+
withSearch = contextProp.withSearch,
|
|
19425
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
19426
|
+
triggerRef = contextProp.triggerRef;
|
|
19427
|
+
|
|
19428
|
+
var onClickHandler = function onClickHandler() {
|
|
19429
|
+
if (disabled) return;
|
|
19430
|
+
|
|
19431
|
+
if (onClick) {
|
|
19432
|
+
onClick(option);
|
|
19433
|
+
return;
|
|
19434
|
+
}
|
|
19435
|
+
|
|
19436
|
+
var newList = multiSelect && Array.isArray(selectValue) ? removeOrAddToList(option, selectValue) : option;
|
|
19437
|
+
setIsOptionSelected === null || setIsOptionSelected === void 0 ? void 0 : setIsOptionSelected(Array.isArray(newList) ? newList.length !== 0 : true);
|
|
19438
|
+
setSelectValue === null || setSelectValue === void 0 ? void 0 : setSelectValue(newList);
|
|
19439
|
+
onOptionClick === null || onOptionClick === void 0 ? void 0 : onOptionClick(newList);
|
|
19440
|
+
};
|
|
19441
|
+
|
|
19442
|
+
var checked = checkedState === 'checked' || elementExist(option, selectValue) !== -1;
|
|
19443
|
+
var indeterminate = checkedState === 'indeterminate';
|
|
19444
|
+
|
|
19445
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
19446
|
+
handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef);
|
|
19447
|
+
};
|
|
19448
|
+
|
|
19449
|
+
return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
|
|
19450
|
+
role: "option",
|
|
19451
|
+
onClick: onClickHandler,
|
|
19452
|
+
"aria-selected": checked,
|
|
19453
|
+
"aria-label": "option item",
|
|
19454
|
+
onKeyDown: function onKeyDown(event) {
|
|
19455
|
+
return onKeyDownHandler(event);
|
|
19456
|
+
},
|
|
19457
|
+
selected: checked,
|
|
19458
|
+
tabIndex: -1,
|
|
19459
|
+
disabled: disabled,
|
|
19460
|
+
"data-test": "DesignSystem-Select-Option"
|
|
19461
|
+
}, rest), /*#__PURE__*/React__namespace.createElement("div", {
|
|
19462
|
+
className: "d-flex align-items-center"
|
|
19463
|
+
}, multiSelect && withCheckbox && /*#__PURE__*/React__namespace.createElement(Checkbox, {
|
|
19464
|
+
tabIndex: -1,
|
|
19465
|
+
"aria-checked": indeterminate ? 'mixed' : checked,
|
|
19466
|
+
checked: checked,
|
|
19467
|
+
indeterminate: indeterminate
|
|
19468
|
+
}), /*#__PURE__*/React__namespace.createElement("div", {
|
|
19469
|
+
className: multiSelect ? 'Select-trigger-text pt-2' : 'Select-trigger-text'
|
|
19470
|
+
}, children)));
|
|
19471
|
+
};
|
|
19472
|
+
SelectOption.defaultProps = {
|
|
19473
|
+
withCheckbox: true
|
|
19474
|
+
};
|
|
19475
|
+
|
|
19476
|
+
var SelectTrigger = function SelectTrigger(props) {
|
|
19477
|
+
var _a, _b;
|
|
19478
|
+
|
|
19479
|
+
var triggerSize = props.triggerSize,
|
|
19480
|
+
placeholder = props.placeholder,
|
|
19481
|
+
withClearButton = props.withClearButton,
|
|
19482
|
+
icon = props.icon,
|
|
19483
|
+
disabled = props.disabled,
|
|
19484
|
+
inlineLabel = props.inlineLabel,
|
|
19485
|
+
iconType = props.iconType,
|
|
19486
|
+
onClear = props.onClear,
|
|
19487
|
+
setLabel = props.setLabel,
|
|
19488
|
+
rest = __rest(props, ["triggerSize", "placeholder", "withClearButton", "icon", "disabled", "inlineLabel", "iconType", "onClear", "setLabel"]);
|
|
19489
|
+
|
|
19490
|
+
var contextProp = React__namespace.useContext(SelectContext);
|
|
19491
|
+
var openPopover = contextProp.openPopover,
|
|
19492
|
+
selectValue = contextProp.selectValue,
|
|
19493
|
+
setSelectValue = contextProp.setSelectValue,
|
|
19494
|
+
isOptionSelected = contextProp.isOptionSelected,
|
|
19495
|
+
setIsOptionSelected = contextProp.setIsOptionSelected,
|
|
19496
|
+
multiSelect = contextProp.multiSelect,
|
|
19497
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
19498
|
+
setHighlightFirstItem = contextProp.setHighlightFirstItem,
|
|
19499
|
+
setHighlightLastItem = contextProp.setHighlightLastItem,
|
|
19500
|
+
triggerRef = contextProp.triggerRef;
|
|
19501
|
+
var buttonDisabled = disabled ? 'disabled' : 'default';
|
|
19502
|
+
var trimmedPlaceholder = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim();
|
|
19503
|
+
var displayValue = computeValue(multiSelect, selectValue, setLabel);
|
|
19504
|
+
var value = isOptionSelected && displayValue.length > 0 ? displayValue : trimmedPlaceholder;
|
|
19505
|
+
var iconName = openPopover ? 'keyboard_arrow_up' : 'keyboard_arrow_down';
|
|
19506
|
+
|
|
19507
|
+
var onClearHandler = function onClearHandler(event) {
|
|
19508
|
+
event.stopPropagation();
|
|
19509
|
+
var emptyValue = multiSelect ? [] : {
|
|
19510
|
+
label: '',
|
|
19511
|
+
value: ''
|
|
19512
|
+
};
|
|
19513
|
+
setSelectValue === null || setSelectValue === void 0 ? void 0 : setSelectValue(emptyValue);
|
|
19514
|
+
setIsOptionSelected === null || setIsOptionSelected === void 0 ? void 0 : setIsOptionSelected(false);
|
|
19515
|
+
|
|
19516
|
+
if (onClear) {
|
|
19517
|
+
onClear(event);
|
|
19518
|
+
}
|
|
19519
|
+
};
|
|
19520
|
+
|
|
19521
|
+
var buttonClass = classNames__default["default"]((_a = {}, _a['Button'] = true, _a['Select-trigger'] = true, _a["Select-trigger--" + triggerSize] = triggerSize, _a['Select-trigger--placeholder'] = !isOptionSelected, _a['Select-trigger--icon'] = icon, _a['Select-trigger--open'] = openPopover, _a));
|
|
19522
|
+
var textClass = classNames__default["default"]((_b = {}, _b['Text'] = true, _b['Text--regular'] = true, _b['Select-trigger-text'] = true, _b));
|
|
19523
|
+
return /*#__PURE__*/React__namespace.createElement("button", __assign({
|
|
19524
|
+
ref: triggerRef,
|
|
19525
|
+
onKeyDown: function onKeyDown(event) {
|
|
19526
|
+
return handleKeyDownTrigger(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
|
|
19527
|
+
},
|
|
19528
|
+
type: "button",
|
|
19529
|
+
className: buttonClass,
|
|
19530
|
+
disabled: disabled,
|
|
19531
|
+
tabIndex: 0,
|
|
19532
|
+
"aria-haspopup": "listbox",
|
|
19533
|
+
"aria-expanded": openPopover,
|
|
19534
|
+
"aria-label": "trigger",
|
|
19535
|
+
"data-test": "DesignSystem-Select-trigger"
|
|
19536
|
+
}, rest), /*#__PURE__*/React__namespace.createElement("div", {
|
|
19537
|
+
className: "Select-trigger-wrapper"
|
|
19538
|
+
}, inlineLabel && /*#__PURE__*/React__namespace.createElement(Text, {
|
|
19539
|
+
appearance: "subtle",
|
|
19540
|
+
className: "mr-4 white-space-nowrap"
|
|
19541
|
+
}, "" + inlineLabel.trim().charAt(0).toUpperCase() + inlineLabel.trim().slice(1)), icon && !inlineLabel && /*#__PURE__*/React__namespace.createElement(Icon, {
|
|
19542
|
+
appearance: buttonDisabled,
|
|
19543
|
+
className: "d-flex align-items-center mr-4",
|
|
19544
|
+
name: icon,
|
|
19545
|
+
type: iconType
|
|
19546
|
+
}), value && /*#__PURE__*/React__namespace.createElement("span", {
|
|
19547
|
+
className: textClass
|
|
19548
|
+
}, value)), isOptionSelected && withClearButton && /*#__PURE__*/React__namespace.createElement(Icon, {
|
|
19549
|
+
appearance: buttonDisabled,
|
|
19550
|
+
onClick: onClearHandler,
|
|
19551
|
+
className: "align-items-center mr-2 ml-3 Select-crossButton",
|
|
19552
|
+
size: 12,
|
|
19553
|
+
name: "close",
|
|
19554
|
+
"aria-label": "clear selected",
|
|
19555
|
+
type: iconType,
|
|
19556
|
+
"data-test": "DesignSystem-Select--closeIcon"
|
|
19557
|
+
}), /*#__PURE__*/React__namespace.createElement(Icon, {
|
|
19558
|
+
appearance: buttonDisabled,
|
|
19559
|
+
name: iconName,
|
|
19560
|
+
type: iconType
|
|
19561
|
+
}));
|
|
19562
|
+
};
|
|
19563
|
+
|
|
19564
|
+
SelectTrigger.defaultProps = {
|
|
19565
|
+
triggerSize: 'regular',
|
|
19566
|
+
placeholder: 'Select',
|
|
19567
|
+
withClearButton: true
|
|
19568
|
+
};
|
|
19569
|
+
|
|
19570
|
+
var SearchInput = function SearchInput(props) {
|
|
19571
|
+
var contextProp = React__namespace.useContext(SelectContext);
|
|
19572
|
+
var setWithSearch = contextProp.setWithSearch,
|
|
19573
|
+
maxHeight = contextProp.maxHeight,
|
|
19574
|
+
listRef = contextProp.listRef,
|
|
19575
|
+
setFocusedOption = contextProp.setFocusedOption,
|
|
19576
|
+
setOpenPopover = contextProp.setOpenPopover,
|
|
19577
|
+
triggerRef = contextProp.triggerRef;
|
|
19578
|
+
|
|
19579
|
+
var onChange = props.onChange,
|
|
19580
|
+
onClear = props.onClear,
|
|
19581
|
+
rest = __rest(props, ["onChange", "onClear"]);
|
|
19582
|
+
|
|
19583
|
+
React__namespace.useEffect(function () {
|
|
19584
|
+
setWithSearch === null || setWithSearch === void 0 ? void 0 : setWithSearch(true);
|
|
19585
|
+
}, [maxHeight]);
|
|
19586
|
+
|
|
19587
|
+
var searchHandler = function searchHandler(event) {
|
|
19588
|
+
if (onChange) onChange(event.target.value);
|
|
19589
|
+
};
|
|
19590
|
+
|
|
19591
|
+
var searchClearHandler = function searchClearHandler(event) {
|
|
19592
|
+
if (onClear) onClear(event);
|
|
19593
|
+
};
|
|
19594
|
+
|
|
19595
|
+
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
19596
|
+
className: "Select-inputWrapper"
|
|
19597
|
+
}, /*#__PURE__*/React__namespace.createElement(Input, __assign({}, rest, {
|
|
19598
|
+
icon: 'search',
|
|
19599
|
+
onKeyDown: function onKeyDown(event) {
|
|
19600
|
+
return handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef);
|
|
19601
|
+
},
|
|
19602
|
+
autoFocus: true,
|
|
19603
|
+
onChange: searchHandler,
|
|
19604
|
+
onClear: searchClearHandler,
|
|
19605
|
+
autoComplete: 'off',
|
|
19606
|
+
"aria-label": "Search",
|
|
19607
|
+
"aria-haspopup": "listbox",
|
|
19608
|
+
className: "Select-input",
|
|
19609
|
+
"data-test": "DesignSystem-Select--Input"
|
|
19610
|
+
})));
|
|
19611
|
+
};
|
|
19612
|
+
|
|
19613
|
+
var SelectEmptyTemplate = function SelectEmptyTemplate(props) {
|
|
19614
|
+
var contextProp = React__namespace.useContext(SelectContext);
|
|
19615
|
+
var maxHeight = contextProp.maxHeight,
|
|
19616
|
+
withSearch = contextProp.withSearch;
|
|
19617
|
+
|
|
19618
|
+
var title = props.title,
|
|
19619
|
+
description = props.description,
|
|
19620
|
+
children = props.children,
|
|
19621
|
+
rest = __rest(props, ["title", "description", "children"]);
|
|
19622
|
+
|
|
19623
|
+
var searchInputHeight = 33;
|
|
19624
|
+
var wrapperStyle = {
|
|
19625
|
+
minHeight: withSearch ? maxHeight - searchInputHeight : maxHeight
|
|
19626
|
+
};
|
|
19627
|
+
return /*#__PURE__*/React__namespace.createElement("div", __assign({
|
|
19628
|
+
className: "px-7 d-flex justify-content-center align-items-center",
|
|
19629
|
+
style: wrapperStyle,
|
|
19630
|
+
"data-test": "DesignSystem-Select-EmptyState--wrapper",
|
|
19631
|
+
"aria-live": "polite",
|
|
19632
|
+
role: "alert"
|
|
19633
|
+
}, rest), /*#__PURE__*/React__namespace.createElement("div", {
|
|
19634
|
+
"aria-labelledby": title,
|
|
19635
|
+
"aria-describedby": description,
|
|
19636
|
+
className: "d-flex flex-column justify-content-center align-items-center"
|
|
19637
|
+
}, title && /*#__PURE__*/React__namespace.createElement(Text, {
|
|
19638
|
+
id: title,
|
|
19639
|
+
role: "heading",
|
|
19640
|
+
className: "text-align-center mb-3",
|
|
19641
|
+
weight: "strong"
|
|
19642
|
+
}, title), description && /*#__PURE__*/React__namespace.createElement(Text, {
|
|
19643
|
+
id: description,
|
|
19644
|
+
className: "text-align-center mb-6",
|
|
19645
|
+
weight: "medium",
|
|
19646
|
+
size: "small",
|
|
19647
|
+
appearance: "subtle"
|
|
19648
|
+
}, description), children && children));
|
|
19649
|
+
};
|
|
19650
|
+
|
|
19651
|
+
var SelectFooter = function SelectFooter(props) {
|
|
19652
|
+
var children = props.children,
|
|
19653
|
+
rest = __rest(props, ["children"]);
|
|
19654
|
+
|
|
19655
|
+
return /*#__PURE__*/React__namespace.createElement("div", __assign({
|
|
19656
|
+
className: "Select-buttonWrapper"
|
|
19657
|
+
}, rest), children);
|
|
19658
|
+
};
|
|
19659
|
+
|
|
19660
|
+
var Select = /*#__PURE__*/React__namespace.forwardRef(function (props, ref) {
|
|
19661
|
+
var children = props.children,
|
|
19662
|
+
onSelect = props.onSelect,
|
|
19663
|
+
width = props.width,
|
|
19664
|
+
maxHeight = props.maxHeight,
|
|
19665
|
+
minHeight = props.minHeight,
|
|
19666
|
+
value = props.value,
|
|
19667
|
+
_a = props.multiSelect,
|
|
19668
|
+
multiSelect = _a === void 0 ? false : _a,
|
|
19669
|
+
onOutsideClick = props.onOutsideClick,
|
|
19670
|
+
triggerOptions = props.triggerOptions,
|
|
19671
|
+
popoverWidth = props.popoverWidth;
|
|
19672
|
+
|
|
19673
|
+
var _b = React__namespace.useState(false),
|
|
19674
|
+
openPopover = _b[0],
|
|
19675
|
+
setOpenPopover = _b[1];
|
|
19676
|
+
|
|
19677
|
+
var mapValue = mapInitialValue(multiSelect, value);
|
|
19678
|
+
|
|
19679
|
+
var _c = React__namespace.useState(mapValue),
|
|
19680
|
+
selectValue = _c[0],
|
|
19681
|
+
setSelectValue = _c[1];
|
|
19682
|
+
|
|
19683
|
+
var _d = React__namespace.useState(false),
|
|
19684
|
+
isOptionSelected = _d[0],
|
|
19685
|
+
setIsOptionSelected = _d[1];
|
|
19686
|
+
|
|
19687
|
+
var triggerRef = /*#__PURE__*/React__namespace.createRef();
|
|
19688
|
+
var listRef = React__namespace.useRef(null);
|
|
19689
|
+
|
|
19690
|
+
var _e = React__namespace.useState(false),
|
|
19691
|
+
withSearch = _e[0],
|
|
19692
|
+
setWithSearch = _e[1];
|
|
19693
|
+
|
|
19694
|
+
var _f = React__namespace.useState(),
|
|
19695
|
+
focusedOption = _f[0],
|
|
19696
|
+
setFocusedOption = _f[1];
|
|
19697
|
+
|
|
19698
|
+
var _g = React__namespace.useState(false),
|
|
19699
|
+
highlightFirstItem = _g[0],
|
|
19700
|
+
setHighlightFirstItem = _g[1];
|
|
19701
|
+
|
|
19702
|
+
var _h = React__namespace.useState(false),
|
|
19703
|
+
highlightLastItem = _h[0],
|
|
19704
|
+
setHighlightLastItem = _h[1];
|
|
19705
|
+
|
|
19706
|
+
var triggerStyle = {
|
|
19707
|
+
width: width
|
|
19708
|
+
};
|
|
19709
|
+
var popoverStyle = {
|
|
19710
|
+
width: popoverWidth ? popoverWidth : width
|
|
19711
|
+
};
|
|
19712
|
+
React__namespace.useImperativeHandle(ref, function () {
|
|
19713
|
+
return {
|
|
19714
|
+
setOpen: function setOpen(open) {
|
|
19715
|
+
setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(open);
|
|
19716
|
+
},
|
|
19717
|
+
setFocusFirstItem: function setFocusFirstItem() {
|
|
19718
|
+
if (openPopover) {
|
|
19719
|
+
requestAnimationFrame(function () {
|
|
19720
|
+
return focusListItem('down', setFocusedOption, listRef);
|
|
19721
|
+
});
|
|
19722
|
+
setHighlightFirstItem(true);
|
|
19723
|
+
}
|
|
19724
|
+
},
|
|
19725
|
+
setFocusLastItem: function setFocusLastItem() {
|
|
19726
|
+
if (openPopover) {
|
|
19727
|
+
requestAnimationFrame(function () {
|
|
19728
|
+
return focusListItem('up', setFocusedOption, listRef);
|
|
19729
|
+
});
|
|
19730
|
+
setHighlightLastItem(true);
|
|
19731
|
+
}
|
|
19732
|
+
}
|
|
19733
|
+
};
|
|
19734
|
+
});
|
|
19735
|
+
React__namespace.useEffect(function () {
|
|
19736
|
+
if (!openPopover) {
|
|
19737
|
+
setHighlightFirstItem(false);
|
|
19738
|
+
setHighlightLastItem(false);
|
|
19739
|
+
}
|
|
19740
|
+
}, [openPopover]);
|
|
19741
|
+
React__namespace.useEffect(function () {
|
|
19742
|
+
if (highlightFirstItem && openPopover) {
|
|
19743
|
+
requestAnimationFrame(function () {
|
|
19744
|
+
return focusListItem('down', setFocusedOption, listRef);
|
|
19745
|
+
});
|
|
19746
|
+
}
|
|
19747
|
+
}, [highlightFirstItem]);
|
|
19748
|
+
React__namespace.useEffect(function () {
|
|
19749
|
+
if (highlightLastItem && openPopover) {
|
|
19750
|
+
requestAnimationFrame(function () {
|
|
19751
|
+
return focusListItem('up', setFocusedOption, listRef);
|
|
19752
|
+
});
|
|
19753
|
+
}
|
|
19754
|
+
}, [highlightLastItem]);
|
|
19755
|
+
React__namespace.useEffect(function () {
|
|
19756
|
+
if (value) {
|
|
19757
|
+
setSelectValue(value);
|
|
19758
|
+
setIsOptionSelected(Array.isArray(value) ? value.length > 0 : value.value.trim().length > 0);
|
|
19759
|
+
}
|
|
19760
|
+
}, [value]);
|
|
19761
|
+
|
|
19762
|
+
var onToggleHandler = function onToggleHandler(open) {
|
|
19763
|
+
if (triggerOptions && triggerOptions.disabled) {
|
|
19764
|
+
setOpenPopover(false);
|
|
19765
|
+
} else {
|
|
19766
|
+
setHighlightFirstItem(open);
|
|
19767
|
+
setOpenPopover(open);
|
|
19768
|
+
}
|
|
19769
|
+
};
|
|
19770
|
+
|
|
19771
|
+
var onOptionClick = function onOptionClick(option) {
|
|
19772
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(option);
|
|
19773
|
+
!multiSelect && setOpenPopover(false);
|
|
19774
|
+
};
|
|
19775
|
+
|
|
19776
|
+
var onOutsideClickHandler = function onOutsideClickHandler() {
|
|
19777
|
+
onOutsideClick === null || onOutsideClick === void 0 ? void 0 : onOutsideClick();
|
|
19778
|
+
};
|
|
19779
|
+
|
|
19780
|
+
var contextProp = {
|
|
19781
|
+
openPopover: openPopover,
|
|
19782
|
+
setOpenPopover: setOpenPopover,
|
|
19783
|
+
selectValue: selectValue,
|
|
19784
|
+
setSelectValue: setSelectValue,
|
|
19785
|
+
isOptionSelected: isOptionSelected,
|
|
19786
|
+
setIsOptionSelected: setIsOptionSelected,
|
|
19787
|
+
onOptionClick: onOptionClick,
|
|
19788
|
+
maxHeight: maxHeight,
|
|
19789
|
+
minHeight: minHeight,
|
|
19790
|
+
withSearch: withSearch,
|
|
19791
|
+
setWithSearch: setWithSearch,
|
|
19792
|
+
multiSelect: multiSelect,
|
|
19793
|
+
listRef: listRef,
|
|
19794
|
+
triggerRef: triggerRef,
|
|
19795
|
+
focusedOption: focusedOption,
|
|
19796
|
+
setFocusedOption: setFocusedOption,
|
|
19797
|
+
setHighlightFirstItem: setHighlightFirstItem,
|
|
19798
|
+
setHighlightLastItem: setHighlightLastItem
|
|
19799
|
+
};
|
|
19800
|
+
return /*#__PURE__*/React__namespace.createElement(SelectContext.Provider, {
|
|
19801
|
+
value: contextProp
|
|
19802
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
19803
|
+
"data-test": "DesignSystem-Select",
|
|
19804
|
+
"aria-haspopup": "listbox",
|
|
19805
|
+
"aria-expanded": openPopover,
|
|
19806
|
+
style: triggerStyle
|
|
19807
|
+
}, /*#__PURE__*/React__namespace.createElement(Popover, {
|
|
19808
|
+
open: openPopover,
|
|
19809
|
+
onToggle: onToggleHandler,
|
|
19810
|
+
className: "mt-3",
|
|
19811
|
+
triggerClass: "d-block",
|
|
19812
|
+
customStyle: popoverStyle,
|
|
19813
|
+
trigger: /*#__PURE__*/React__namespace.createElement(SelectTrigger, __assign({
|
|
19814
|
+
"aria-controls": "select-listbox"
|
|
19815
|
+
}, triggerOptions))
|
|
19816
|
+
}, /*#__PURE__*/React__namespace.createElement(OutsideClick, {
|
|
19817
|
+
onOutsideClick: onOutsideClickHandler
|
|
19818
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
19819
|
+
role: "listbox",
|
|
19820
|
+
id: "select-listbox",
|
|
19821
|
+
tabIndex: 0,
|
|
19822
|
+
ref: listRef
|
|
19823
|
+
}, children)))));
|
|
19824
|
+
});
|
|
19825
|
+
Select.displayName = 'Select';
|
|
19826
|
+
Select.defaultProps = {
|
|
19827
|
+
maxHeight: 256,
|
|
19828
|
+
width: 176
|
|
19829
|
+
};
|
|
19830
|
+
Select.Option = SelectOption;
|
|
19831
|
+
Select.List = SelectList;
|
|
19832
|
+
Select.SearchInput = SearchInput;
|
|
19833
|
+
Select.EmptyTemplate = SelectEmptyTemplate;
|
|
19834
|
+
Select.Footer = SelectFooter;
|
|
19835
|
+
|
|
19836
|
+
var version = "2.29.0";
|
|
17846
19837
|
|
|
17847
19838
|
exports.ActionCard = ActionCard;
|
|
17848
19839
|
exports.Avatar = Avatar;
|
|
17849
19840
|
exports.AvatarGroup = AvatarGroup;
|
|
19841
|
+
exports.AvatarSelection = AvatarSelection;
|
|
17850
19842
|
exports.Backdrop = Backdrop;
|
|
17851
19843
|
exports.Badge = Badge;
|
|
17852
19844
|
exports.Breadcrumbs = Breadcrumbs;
|
|
@@ -17866,6 +19858,7 @@
|
|
|
17866
19858
|
exports.ChoiceList = ChoiceList;
|
|
17867
19859
|
exports.Collapsible = Collapsible;
|
|
17868
19860
|
exports.Column = Column;
|
|
19861
|
+
exports.Combobox = Combobox;
|
|
17869
19862
|
exports.DatePicker = DatePicker;
|
|
17870
19863
|
exports.DateRangePicker = DateRangePicker;
|
|
17871
19864
|
exports.Dialog = Dialog;
|
|
@@ -17919,6 +19912,7 @@
|
|
|
17919
19912
|
exports.Radio = Radio;
|
|
17920
19913
|
exports.RangeSlider = RangeSlider;
|
|
17921
19914
|
exports.Row = Row;
|
|
19915
|
+
exports.Select = Select;
|
|
17922
19916
|
exports.SelectionCard = SelectionCard;
|
|
17923
19917
|
exports.Sidesheet = Sidesheet;
|
|
17924
19918
|
exports.Slider = Slider;
|