@televet/kibble-ui 1.12.7 → 1.12.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/Forms/Checkbox/components/CheckboxGroup/checkboxGroup.component.d.ts +1 -1
- package/build/components/Forms/FormControl/formControl.argTypes.d.ts +8 -0
- package/build/components/Forms/Radio/components/RadioGroup/radioGroup.component.d.ts +1 -1
- package/build/components/Forms/Radio/radio.component.d.ts +2 -1
- package/build/components/Forms/Select/select.component.d.ts +9 -1
- package/build/components/Forms/Select/select.types.d.ts +2 -3
- package/build/components/Forms/Switch/switch.component.d.ts +1 -1
- package/build/components/Overlay/Modal/{modalCloseButton.component.d.ts → components/ModalCloseButton/modalCloseButton.component.d.ts} +1 -1
- package/build/components/Overlay/Modal/{modalFooterButtons.component.d.ts → components/ModalFooterButtons/modalFooterButtons.component.d.ts} +2 -1
- package/build/components/Overlay/Modal/{modalHeader.component.d.ts → components/ModalHeader/modalHeader.component.d.ts} +1 -1
- package/build/components/Overlay/Modal/index.d.ts +5 -5
- package/build/index.js +383 -324
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- /package/build/components/Overlay/Modal/{modalBody.component.d.ts → components/ModalBody/modalBody.component.d.ts} +0 -0
- /package/build/components/Overlay/Modal/{modalFooter.component.d.ts → components/ModalFooter/modalFooter.component.d.ts} +0 -0
package/build/index.js
CHANGED
|
@@ -3595,7 +3595,7 @@ function withFormControl(Component) {
|
|
|
3595
3595
|
var shouldShowBottomContent = isInvalid || helperText;
|
|
3596
3596
|
return (React__default["default"].createElement(react.FormControl, __assign({}, formControlStyle, { isInvalid: isInvalid, isRequired: isRequired, isReadOnly: isReadOnly, isDisabled: isDisabled }),
|
|
3597
3597
|
label && (React__default["default"].createElement(react.FormLabel, __assign({ display: isFieldInline ? 'inline-block' : 'block', color: colors.text.light.default }, labelStyle), label)),
|
|
3598
|
-
React__default["default"].createElement(Component, __assign({}, props, {
|
|
3598
|
+
React__default["default"].createElement(Component, __assign({}, props, { isFieldInline: isFieldInline, errorBorderColor: colors.border.light.error, focusBorderColor: colors.border.light.focus })),
|
|
3599
3599
|
shouldShowBottomContent && (React__default["default"].createElement(react.Flex, { mt: 2, w: "100%", justifyContent: alignment, alignItems: "center" },
|
|
3600
3600
|
React__default["default"].createElement(react.FormErrorMessage, { m: 0, fontSize: fontSizes.xs, color: colors.text.light.error }, errorText),
|
|
3601
3601
|
helperText && (React__default["default"].createElement(react.FormHelperText, { m: 0, color: isInvalid ? colors.text.light.error : colors.text.light.subtle, fontSize: fontSizes.xs }, helperText))))));
|
|
@@ -3612,7 +3612,7 @@ var Checkbox = function (_a) {
|
|
|
3612
3612
|
|
|
3613
3613
|
var CheckboxGroup = function (_a) {
|
|
3614
3614
|
var checkboxes = _a.checkboxes, _b = _a.size, size = _b === void 0 ? 'md' : _b, _c = _a.direction, direction = _c === void 0 ? 'row' : _c, spacing = _a.spacing, variant = _a.variant, rest = __rest(_a, ["checkboxes", "size", "direction", "spacing", "variant"]);
|
|
3615
|
-
rest
|
|
3615
|
+
rest.isFieldInline; var domProps = __rest(rest, ["isFieldInline"]);
|
|
3616
3616
|
return (React__default["default"].createElement(react.CheckboxGroup, __assign({}, domProps),
|
|
3617
3617
|
React__default["default"].createElement(react.Stack, { direction: direction, spacing: spacing, display: "inline-flex" }, checkboxes.map(function (checkbox, index) { return (React__default["default"].createElement(Checkbox, __assign({ key: index }, checkbox, { size: size, variant: variant || checkbox.variant }))); }))));
|
|
3618
3618
|
};
|
|
@@ -3765,7 +3765,8 @@ var CheckboxConfig = {
|
|
|
3765
3765
|
};
|
|
3766
3766
|
|
|
3767
3767
|
var Textarea = function (props) {
|
|
3768
|
-
|
|
3768
|
+
props.isFieldInline; var domProps = __rest(props, ["isFieldInline"]);
|
|
3769
|
+
return React__default["default"].createElement(react.Textarea, __assign({ background: colors.background.light }, domProps));
|
|
3769
3770
|
};
|
|
3770
3771
|
Textarea.displayName = 'Textarea';
|
|
3771
3772
|
var WrappedTextArea = withFormControl(Textarea);
|
|
@@ -3832,7 +3833,7 @@ var TextareaConfig = __assign({}, FormControlConfig);
|
|
|
3832
3833
|
|
|
3833
3834
|
var TextInput = withFormControl(function (props) {
|
|
3834
3835
|
// the disabled styles coming from the FormControlConfig weren't getting applied to the TextInput, so they're added inline instead
|
|
3835
|
-
var leftElement = props.leftElement, rightElement = props.rightElement, inputRef = props.inputRef
|
|
3836
|
+
var leftElement = props.leftElement, rightElement = props.rightElement, inputRef = props.inputRef; props.isFieldInline; var domProps = __rest(props, ["leftElement", "rightElement", "inputRef", "isFieldInline"]);
|
|
3836
3837
|
return (React__default["default"].createElement(react.InputGroup, null,
|
|
3837
3838
|
leftElement ? React__default["default"].createElement(react.InputLeftElement, { children: leftElement, h: "100%" }) : null,
|
|
3838
3839
|
React__default["default"].createElement(react.Input, __assign({ background: colors.background.light, _disabled: {
|
|
@@ -3852,13 +3853,13 @@ WrappedTextInput.displayName = 'TextInput';
|
|
|
3852
3853
|
var TextInputConfig = __assign({}, FormControlConfig);
|
|
3853
3854
|
|
|
3854
3855
|
var Radio = function (_a) {
|
|
3855
|
-
var children = _a.children, _b = _a.size, size = _b === void 0 ? 'md' : _b
|
|
3856
|
+
var children = _a.children, _b = _a.size, size = _b === void 0 ? 'md' : _b; _a.isFieldInline; var rest = __rest(_a, ["children", "size", "isFieldInline"]);
|
|
3856
3857
|
return (React__default["default"].createElement(react.Radio, __assign({}, rest, { size: size, alignItems: "flex-start" }), children));
|
|
3857
3858
|
};
|
|
3858
3859
|
|
|
3859
3860
|
var RadioGroup = function (_a) {
|
|
3860
3861
|
var radios = _a.radios, _b = _a.size, size = _b === void 0 ? 'md' : _b, _c = _a.direction, direction = _c === void 0 ? 'row' : _c, spacing = _a.spacing, rest = __rest(_a, ["radios", "size", "direction", "spacing"]);
|
|
3861
|
-
rest
|
|
3862
|
+
rest.isFieldInline; var domProps = __rest(rest, ["isFieldInline"]);
|
|
3862
3863
|
return (React__default["default"].createElement(react.RadioGroup, __assign({}, domProps),
|
|
3863
3864
|
React__default["default"].createElement(react.Stack, { direction: direction, spacing: spacing, maxW: rest.maxW || 'max-content' }, radios.map(function (radio, index) { return (React__default["default"].createElement(Radio, __assign({ key: index }, radio, { size: size }))); }))));
|
|
3864
3865
|
};
|
|
@@ -4156,9 +4157,9 @@ var TruncatedText = function (_a) {
|
|
|
4156
4157
|
var checkValue = onCheckTextOverFlowing(containerRef);
|
|
4157
4158
|
setIsTextOverFlowing(checkValue);
|
|
4158
4159
|
}, [containerRef, onCheckTextOverFlowing]);
|
|
4159
|
-
return (React__default["default"].createElement(react.Box, { ref: containerRef },
|
|
4160
|
-
React__default["default"].createElement(Tooltip, { label: textContent || '', isDisabled: !isTextOverFlowing, placement: placement },
|
|
4161
|
-
React__default["default"].createElement(react.Text, __assign({ noOfLines: noOfLines, as: "p" }, rest), textContent))));
|
|
4160
|
+
return (React__default["default"].createElement(react.Box, { ref: containerRef, className: "TruncatedText__Wrapper" },
|
|
4161
|
+
React__default["default"].createElement(Tooltip, { className: "TruncatedText__Tooltip", label: textContent || '', isDisabled: !isTextOverFlowing, placement: placement },
|
|
4162
|
+
React__default["default"].createElement(react.Text, __assign({ className: "TruncatedText__TextContent", noOfLines: noOfLines, as: "p" }, rest), textContent))));
|
|
4162
4163
|
};
|
|
4163
4164
|
|
|
4164
4165
|
var RatingDots = function (_a) {
|
|
@@ -4185,9 +4186,356 @@ var RatingDots = function (_a) {
|
|
|
4185
4186
|
React__default["default"].createElement(Text, { size: "sm" }, "".concat(roundedMax, " - Very likely")))));
|
|
4186
4187
|
};
|
|
4187
4188
|
|
|
4189
|
+
// TODO: Figure out how to document this functionality
|
|
4190
|
+
var MenuContext = React.createContext({
|
|
4191
|
+
allMenuItems: [],
|
|
4192
|
+
filteredMenuItems: [],
|
|
4193
|
+
focusedItemIndex: -1,
|
|
4194
|
+
groups: [],
|
|
4195
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4196
|
+
handleOnClose: function () {
|
|
4197
|
+
throw new Error('handleOnClose(): Promise<void> not implemented');
|
|
4198
|
+
},
|
|
4199
|
+
setFilteredMenuItems: function () {
|
|
4200
|
+
throw new Error('setFilteredMenuItems(): Promise<void> not implemented');
|
|
4201
|
+
},
|
|
4202
|
+
setFocusedItemIndex: function () {
|
|
4203
|
+
throw new Error('setFocusedItemIndex(): Promise<void> not implemented');
|
|
4204
|
+
},
|
|
4205
|
+
setGroups: function () {
|
|
4206
|
+
throw new Error('setGroups(): Promise<void> not implemented');
|
|
4207
|
+
},
|
|
4208
|
+
});
|
|
4209
|
+
var useMenuContext = function () { return React.useContext(MenuContext); };
|
|
4210
|
+
var MenuProvider = function (_a) {
|
|
4211
|
+
var menuItems = _a.menuItems, onMenuClose = _a.onMenuClose, children = _a.children;
|
|
4212
|
+
var _b = __read(React.useState(menuItems || []), 2), filteredMenuItems = _b[0], setFilteredMenuItems = _b[1];
|
|
4213
|
+
var _c = __read(React.useState(null), 2), groups = _c[0], setGroups = _c[1];
|
|
4214
|
+
var _d = __read(React.useState(-1), 2), focusedItemIndex = _d[0], setFocusedItemIndex = _d[1];
|
|
4215
|
+
var searchInputRef = React.useRef(null);
|
|
4216
|
+
var menuItemRefs = React.useRef([]);
|
|
4217
|
+
var handleOnClose = React.useCallback(function () {
|
|
4218
|
+
var selectedItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.isSelected === true; }).map(function (item) { return item.value; });
|
|
4219
|
+
setFocusedItemIndex(-1);
|
|
4220
|
+
if (onMenuClose) {
|
|
4221
|
+
onMenuClose(selectedItems);
|
|
4222
|
+
}
|
|
4223
|
+
}, [filteredMenuItems, onMenuClose]);
|
|
4224
|
+
return (React__default["default"].createElement(MenuContext.Provider, { value: {
|
|
4225
|
+
allMenuItems: menuItems,
|
|
4226
|
+
filteredMenuItems: filteredMenuItems,
|
|
4227
|
+
focusedItemIndex: focusedItemIndex,
|
|
4228
|
+
groups: groups,
|
|
4229
|
+
menuItemRefs: menuItemRefs,
|
|
4230
|
+
handleOnClose: handleOnClose,
|
|
4231
|
+
searchInputRef: searchInputRef,
|
|
4232
|
+
setFilteredMenuItems: setFilteredMenuItems,
|
|
4233
|
+
setFocusedItemIndex: setFocusedItemIndex,
|
|
4234
|
+
setGroups: setGroups,
|
|
4235
|
+
} }, children));
|
|
4236
|
+
};
|
|
4237
|
+
|
|
4238
|
+
var MenuContainer = function (_a) {
|
|
4239
|
+
var children = _a.children; _a.onMenuClose; var rest = __rest(_a, ["children", "onMenuClose"]);
|
|
4240
|
+
var handleOnClose = useMenuContext().handleOnClose;
|
|
4241
|
+
return (React__default["default"].createElement(react.Menu, __assign({ onClose: handleOnClose }, rest), children));
|
|
4242
|
+
};
|
|
4243
|
+
|
|
4244
|
+
var MenuItemConfig = {
|
|
4245
|
+
color: adaptiveColors.text.light.subtle,
|
|
4246
|
+
cursor: 'pointer',
|
|
4247
|
+
fontSize: fontSizes.sm,
|
|
4248
|
+
px: '20px',
|
|
4249
|
+
py: '8px',
|
|
4250
|
+
outline: 0,
|
|
4251
|
+
transitionDuration: 'ultra-fast',
|
|
4252
|
+
transitionProperty: 'background',
|
|
4253
|
+
transitionTimingFunction: 'ease-in',
|
|
4254
|
+
_hover: {
|
|
4255
|
+
bg: semanticColors.background.hover,
|
|
4256
|
+
},
|
|
4257
|
+
_focus: {
|
|
4258
|
+
bg: semanticColors.background.hover,
|
|
4259
|
+
},
|
|
4260
|
+
_active: {
|
|
4261
|
+
color: adaptiveColors.text.light.link,
|
|
4262
|
+
},
|
|
4263
|
+
_expanded: {
|
|
4264
|
+
bg: semanticColors.background.hover,
|
|
4265
|
+
},
|
|
4266
|
+
_disabled: {
|
|
4267
|
+
opacity: 0.4,
|
|
4268
|
+
cursor: 'not-allowed',
|
|
4269
|
+
bg: 'transparent',
|
|
4270
|
+
color: adaptiveColors.text.light.subtle,
|
|
4271
|
+
},
|
|
4272
|
+
};
|
|
4273
|
+
var MenuConfig = {
|
|
4274
|
+
baseStyle: {
|
|
4275
|
+
item: MenuItemConfig,
|
|
4276
|
+
list: {
|
|
4277
|
+
p: '8px 0',
|
|
4278
|
+
boxShadow: shadows.md,
|
|
4279
|
+
borderColor: colors.border.light.default,
|
|
4280
|
+
},
|
|
4281
|
+
},
|
|
4282
|
+
};
|
|
4283
|
+
|
|
4284
|
+
var MenuItem = function (_a) {
|
|
4285
|
+
var isMultiSelect = _a.isMultiSelect, canSelectAll = _a.canSelectAll, children = _a.children, _b = _a.closeOnSelect, closeOnSelect = _b === void 0 ? !isMultiSelect : _b; _a.groupLabel; var _c = _a.handleKeyboardNavigation, handleKeyboardNavigation = _c === void 0 ? function () { } : _c, isDisabled = _a.isDisabled, isSelected = _a.isSelected, _d = _a.itemIndex, itemIndex = _d === void 0 ? '0' : _d, label = _a.label, leftElement = _a.leftElement, menuItemRefs = _a.menuItemRefs, onSelectItem = _a.onSelectItem, value = _a.value, rest = __rest(_a, ["isMultiSelect", "canSelectAll", "children", "closeOnSelect", "groupLabel", "handleKeyboardNavigation", "isDisabled", "isSelected", "itemIndex", "label", "leftElement", "menuItemRefs", "onSelectItem", "value"]);
|
|
4286
|
+
// TODO: Add truncated text functionality with tooltip on hover
|
|
4287
|
+
var colors = useTheme().colors;
|
|
4288
|
+
var onClose = react.useMenuState().onClose;
|
|
4289
|
+
var handleSelect = React.useCallback(function () {
|
|
4290
|
+
if (isDisabled)
|
|
4291
|
+
return;
|
|
4292
|
+
if (value && onSelectItem) {
|
|
4293
|
+
onSelectItem(value);
|
|
4294
|
+
}
|
|
4295
|
+
if (closeOnSelect) {
|
|
4296
|
+
onClose();
|
|
4297
|
+
}
|
|
4298
|
+
}, [value, onSelectItem, onClose, closeOnSelect, isDisabled]);
|
|
4299
|
+
return (React__default["default"].createElement(react.Box, __assign({}, MenuItemConfig, { className: "menu-list__item", onClick: handleSelect, onKeyDown: function (e) { return handleKeyboardNavigation(e, false); }, tabIndex: parseInt(canSelectAll ? (itemIndex += 2) : itemIndex), ref: function (el) {
|
|
4300
|
+
return menuItemRefs && itemIndex ? (menuItemRefs.current[parseInt(itemIndex)] = el) : null;
|
|
4301
|
+
},
|
|
4302
|
+
// @ts-ignore
|
|
4303
|
+
disabled: isDisabled }, rest), children ? (children) : (React__default["default"].createElement(react.HStack, { spacing: "12px", minH: "21px" },
|
|
4304
|
+
isMultiSelect && (React__default["default"].createElement(react.Box, { width: "12px", height: "12px", borderRadius: "12px", position: "relative", background: colors.background.grayDark, className: "menu-list__item-checkbox" },
|
|
4305
|
+
React__default["default"].createElement(react.Box, { position: "absolute", top: "-2px", left: "-2px" }, isSelected && React__default["default"].createElement(Icon, { name: "checkmarkCircle", color: "success", size: "sm" })))),
|
|
4306
|
+
React__default["default"].createElement(react.HStack, { color: isSelected && !isMultiSelect ? colors.text.light.link : colors.text.light.default },
|
|
4307
|
+
leftElement && React__default["default"].createElement(react.Box, { className: "menu-list__item-leftElement" }, leftElement),
|
|
4308
|
+
React__default["default"].createElement(react.Box, { className: "menu-list__item-label" },
|
|
4309
|
+
React__default["default"].createElement(TruncatedText, { textContent: label || '', noOfLines: 1 })))))));
|
|
4310
|
+
};
|
|
4311
|
+
|
|
4312
|
+
var MenuSearchBar = function (_a) {
|
|
4313
|
+
var handleKeyboardNavigation = _a.handleKeyboardNavigation, menuItems = _a.menuItems, onSearchCallback = _a.onSearchCallback, searchInputRef = _a.searchInputRef, setFilteredMenuItems = _a.setFilteredMenuItems, _b = _a.placeholder, placeholder = _b === void 0 ? 'Search...' : _b;
|
|
4314
|
+
var handleSearch = React.useCallback(function (e) {
|
|
4315
|
+
var searchInput = e.target.value;
|
|
4316
|
+
if (searchInput === '' || !searchInput) {
|
|
4317
|
+
setFilteredMenuItems(menuItems);
|
|
4318
|
+
}
|
|
4319
|
+
else {
|
|
4320
|
+
var filterdItems = menuItems.filter(function (item) { var _a; return (_a = item.label) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchInput.toLowerCase()); });
|
|
4321
|
+
setFilteredMenuItems(filterdItems);
|
|
4322
|
+
}
|
|
4323
|
+
if (onSearchCallback) {
|
|
4324
|
+
onSearchCallback(e);
|
|
4325
|
+
}
|
|
4326
|
+
}, [menuItems, onSearchCallback, setFilteredMenuItems]);
|
|
4327
|
+
return (React__default["default"].createElement(WrappedTextInput, { className: "menu-list__searchbar", placeholder: placeholder, onChange: handleSearch, mt: 1, onKeyDown: function (e) { return handleKeyboardNavigation(e, true); }, size: "sm", ref: searchInputRef }));
|
|
4328
|
+
};
|
|
4329
|
+
|
|
4330
|
+
var MenuSelectAllButtons = function (_a) {
|
|
4331
|
+
var groupName = _a.groupName, handleToggleAllItems = _a.handleToggleAllItems, hasSelectedItems = _a.hasSelectedItems, isGrouped = _a.isGrouped;
|
|
4332
|
+
if (isGrouped) {
|
|
4333
|
+
return (React__default["default"].createElement(react.Box, { textAlign: "right", w: "50%", className: "menu-list-item__select-all-button" }, hasSelectedItems ? (React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all")) : (React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: false }); } }, "Select all"))));
|
|
4334
|
+
}
|
|
4335
|
+
return (React__default["default"].createElement(react.Box, { mt: "8px", className: "menu-list__select-all-buttons" },
|
|
4336
|
+
React__default["default"].createElement(react.Flex, { justifyContent: "space-between" },
|
|
4337
|
+
React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ clear: false }); } }, "Select all"),
|
|
4338
|
+
React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all"))));
|
|
4339
|
+
};
|
|
4340
|
+
|
|
4341
|
+
var MenuList = function (_a) {
|
|
4342
|
+
var _b = _a.canSelectAll, canSelectAll = _b === void 0 ? false : _b, _c = _a.canSelectGroups, canSelectGroups = _c === void 0 ? false : _c, children = _a.children, _d = _a.isGrouped, isGrouped = _d === void 0 ? false : _d, isMatchWidthSet = _a.isMatchWidthSet, _e = _a.isMultiSelect, isMultiSelect = _e === void 0 ? false : _e, _f = _a.isSearchable, isSearchable = _f === void 0 ? false : _f, menuItems = _a.menuItems, onMenuItemSelect = _a.onMenuItemSelect, onMenuItemSelectAll = _a.onMenuItemSelectAll, searchPlaceholder = _a.searchPlaceholder, _g = _a.minW, minW = _g === void 0 ? '240px' : _g, maxW = _a.maxW, _h = _a.maxH, maxH = _h === void 0 ? '480px' : _h, rest = __rest(_a, ["canSelectAll", "canSelectGroups", "children", "isGrouped", "isMatchWidthSet", "isMultiSelect", "isSearchable", "menuItems", "onMenuItemSelect", "onMenuItemSelectAll", "searchPlaceholder", "minW", "maxW", "maxH"]);
|
|
4343
|
+
var _j = useMenuContext(), filteredMenuItems = _j.filteredMenuItems, setFilteredMenuItems = _j.setFilteredMenuItems, groups = _j.groups, setGroups = _j.setGroups, focusedItemIndex = _j.focusedItemIndex, setFocusedItemIndex = _j.setFocusedItemIndex, searchInputRef = _j.searchInputRef, menuItemRefs = _j.menuItemRefs;
|
|
4344
|
+
var focusNextListItem = React.useCallback(function (direction) {
|
|
4345
|
+
var _a, _b;
|
|
4346
|
+
if (!(menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current))
|
|
4347
|
+
return;
|
|
4348
|
+
var isFirstOption = focusedItemIndex === 0;
|
|
4349
|
+
var isLastOption = focusedItemIndex === (menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current.length) - 1;
|
|
4350
|
+
var newIndex = -1;
|
|
4351
|
+
if (direction === 'ArrowDown') {
|
|
4352
|
+
if (isLastOption) {
|
|
4353
|
+
if (isSearchable) {
|
|
4354
|
+
(_a = searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
4355
|
+
setFocusedItemIndex(-1);
|
|
4356
|
+
return;
|
|
4357
|
+
}
|
|
4358
|
+
newIndex = 0;
|
|
4359
|
+
}
|
|
4360
|
+
else {
|
|
4361
|
+
newIndex = focusedItemIndex + 1;
|
|
4362
|
+
}
|
|
4363
|
+
}
|
|
4364
|
+
else if (direction === 'ArrowUp') {
|
|
4365
|
+
if (isFirstOption) {
|
|
4366
|
+
if (isSearchable) {
|
|
4367
|
+
(_b = searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
4368
|
+
setFocusedItemIndex(-1);
|
|
4369
|
+
return;
|
|
4370
|
+
}
|
|
4371
|
+
newIndex = menuItemRefs.current.length - 1;
|
|
4372
|
+
}
|
|
4373
|
+
else {
|
|
4374
|
+
newIndex = focusedItemIndex - 1;
|
|
4375
|
+
}
|
|
4376
|
+
}
|
|
4377
|
+
var nextListItem = menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current[newIndex];
|
|
4378
|
+
if (nextListItem) {
|
|
4379
|
+
nextListItem === null || nextListItem === void 0 ? void 0 : nextListItem.focus();
|
|
4380
|
+
setFocusedItemIndex(newIndex);
|
|
4381
|
+
}
|
|
4382
|
+
else {
|
|
4383
|
+
setFocusedItemIndex(-1);
|
|
4384
|
+
}
|
|
4385
|
+
}, [focusedItemIndex, isSearchable, menuItemRefs, searchInputRef, setFocusedItemIndex]);
|
|
4386
|
+
var handleKeyboardNavigation = React.useCallback(function (e, elementIsInputField) {
|
|
4387
|
+
e.persist();
|
|
4388
|
+
if (!(menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current))
|
|
4389
|
+
return;
|
|
4390
|
+
if (e.key === 'ArrowDown' || e.key === 'Tab') {
|
|
4391
|
+
focusNextListItem('ArrowDown');
|
|
4392
|
+
}
|
|
4393
|
+
if (e.key === 'ArrowUp') {
|
|
4394
|
+
focusNextListItem('ArrowUp');
|
|
4395
|
+
}
|
|
4396
|
+
if (e.key === 'Enter') {
|
|
4397
|
+
e.preventDefault();
|
|
4398
|
+
e.target.click();
|
|
4399
|
+
}
|
|
4400
|
+
}, [focusNextListItem, menuItemRefs]);
|
|
4401
|
+
var handleToggleSingleItem = React.useCallback(function (selectedValue) {
|
|
4402
|
+
if (filteredMenuItems) {
|
|
4403
|
+
var _filteredMenuItemsCopy = __spreadArray([], __read(filteredMenuItems), false);
|
|
4404
|
+
var selectedItem = _filteredMenuItemsCopy.find(function (item) { return item.value === selectedValue; });
|
|
4405
|
+
if (!isMultiSelect) {
|
|
4406
|
+
_filteredMenuItemsCopy.filter(function (item) { return item.isSelected === true; }).map(function (item) { return (item.isSelected = false); });
|
|
4407
|
+
}
|
|
4408
|
+
if (selectedItem) {
|
|
4409
|
+
selectedItem.isSelected = !selectedItem.isSelected;
|
|
4410
|
+
}
|
|
4411
|
+
setFilteredMenuItems(_filteredMenuItemsCopy);
|
|
4412
|
+
if (onMenuItemSelect && selectedItem) {
|
|
4413
|
+
onMenuItemSelect(selectedItem);
|
|
4414
|
+
}
|
|
4415
|
+
}
|
|
4416
|
+
}, [filteredMenuItems, isMultiSelect, onMenuItemSelect, setFilteredMenuItems]);
|
|
4417
|
+
var handleToggleAllItems = React.useCallback(function (_a) {
|
|
4418
|
+
var groupName = _a.groupName, _b = _a.clear, clear = _b === void 0 ? false : _b;
|
|
4419
|
+
if (filteredMenuItems) {
|
|
4420
|
+
var _filteredMenuItemsCopy = __spreadArray([], __read(filteredMenuItems), false);
|
|
4421
|
+
var value_1 = [];
|
|
4422
|
+
_filteredMenuItemsCopy.forEach(function (item) {
|
|
4423
|
+
if (groupName) {
|
|
4424
|
+
if (groupName === item.groupLabel) {
|
|
4425
|
+
item.isSelected = !clear;
|
|
4426
|
+
if (item.value && item.isSelected) {
|
|
4427
|
+
value_1.push(item.value);
|
|
4428
|
+
}
|
|
4429
|
+
}
|
|
4430
|
+
}
|
|
4431
|
+
else {
|
|
4432
|
+
item.isSelected = !clear;
|
|
4433
|
+
if (item.value && item.isSelected) {
|
|
4434
|
+
value_1.push(item.value);
|
|
4435
|
+
}
|
|
4436
|
+
}
|
|
4437
|
+
});
|
|
4438
|
+
setFilteredMenuItems(_filteredMenuItemsCopy);
|
|
4439
|
+
if (onMenuItemSelectAll) {
|
|
4440
|
+
onMenuItemSelectAll(_filteredMenuItemsCopy.filter(function (item) { return item.isSelected; }));
|
|
4441
|
+
}
|
|
4442
|
+
}
|
|
4443
|
+
}, [filteredMenuItems, onMenuItemSelectAll, setFilteredMenuItems]);
|
|
4444
|
+
React.useEffect(function () {
|
|
4445
|
+
if (isGrouped) {
|
|
4446
|
+
var groupNames = __spreadArray([], __read(new Set(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item) { return item.groupLabel; }))), false);
|
|
4447
|
+
if (groupNames.length) {
|
|
4448
|
+
setGroups(groupNames);
|
|
4449
|
+
}
|
|
4450
|
+
}
|
|
4451
|
+
}, [filteredMenuItems, isGrouped, setGroups]);
|
|
4452
|
+
// Return default Chakra menu if user passes in custom child elements
|
|
4453
|
+
if (children) {
|
|
4454
|
+
return React__default["default"].createElement(react.MenuList, __assign({}, rest), children);
|
|
4455
|
+
}
|
|
4456
|
+
if (!isMatchWidthSet) {
|
|
4457
|
+
maxW = '320px';
|
|
4458
|
+
}
|
|
4459
|
+
return (React__default["default"].createElement(react.MenuList, __assign({}, rest, { maxW: maxW, maxH: maxH, minW: minW, overflow: "hidden auto" }),
|
|
4460
|
+
(isSearchable || (canSelectAll && isMultiSelect)) && (React__default["default"].createElement(react.Box, { className: "menu-list__header", m: "0 12px 8px" },
|
|
4461
|
+
isSearchable && (React__default["default"].createElement(MenuSearchBar, { handleKeyboardNavigation: handleKeyboardNavigation, menuItems: menuItems || [], searchInputRef: searchInputRef, setFilteredMenuItems: setFilteredMenuItems, placeholder: searchPlaceholder })),
|
|
4462
|
+
canSelectAll && isMultiSelect && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.find(function (item) { return item.isSelected; })), isGrouped: false })))),
|
|
4463
|
+
React__default["default"].createElement(react.Box, { className: "menu-list__body" }, isGrouped
|
|
4464
|
+
? groups === null || groups === void 0 ? void 0 : groups.map(function (groupName) {
|
|
4465
|
+
var menuItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.groupLabel === groupName; });
|
|
4466
|
+
return (React__default["default"].createElement(react.MenuOptionGroup, { key: groupName, className: "menu-list__group" },
|
|
4467
|
+
React__default["default"].createElement(react.HStack, { minH: "32px", p: "4px 12px 4px 20px", justifyContent: "space-between" },
|
|
4468
|
+
React__default["default"].createElement(react.Box, { textAlign: "left", className: "menu-list__group-title" },
|
|
4469
|
+
React__default["default"].createElement(Heading, { size: "xs" }, groupName)),
|
|
4470
|
+
isMultiSelect && canSelectGroups && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(menuItems === null || menuItems === void 0 ? void 0 : menuItems.find(function (item) { return item.isSelected; })), isGrouped: true, groupName: groupName }))), menuItems === null || menuItems === void 0 ? void 0 :
|
|
4471
|
+
menuItems.map(function (item, index) {
|
|
4472
|
+
return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
|
|
4473
|
+
})));
|
|
4474
|
+
})
|
|
4475
|
+
: filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item, index) {
|
|
4476
|
+
return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
|
|
4477
|
+
}))));
|
|
4478
|
+
};
|
|
4479
|
+
|
|
4188
4480
|
var Select = function (props) {
|
|
4189
|
-
var
|
|
4190
|
-
|
|
4481
|
+
var _a;
|
|
4482
|
+
var colors = useTheme().colors;
|
|
4483
|
+
var selectRef = React.useRef(null);
|
|
4484
|
+
var options = props.options; props.isFieldInline; var useBrowserDefaultMenu = props.useBrowserDefaultMenu, placeholder = props.placeholder, listConfig = props.listConfig, value = props.value, domProps = __rest(props, ["options", "isFieldInline", "useBrowserDefaultMenu", "placeholder", "listConfig", "value"]);
|
|
4485
|
+
var _b = __read(React.useState({
|
|
4486
|
+
label: placeholder,
|
|
4487
|
+
value: '',
|
|
4488
|
+
leftElement: null,
|
|
4489
|
+
}), 2), selectedOption = _b[0], setSelectedOption = _b[1];
|
|
4490
|
+
React.useEffect(function () {
|
|
4491
|
+
if (value) {
|
|
4492
|
+
var defaultValue = options.find(function (option) { return option.value === value; });
|
|
4493
|
+
if (defaultValue) {
|
|
4494
|
+
setSelectedOption(defaultValue);
|
|
4495
|
+
}
|
|
4496
|
+
}
|
|
4497
|
+
}, [value, options]);
|
|
4498
|
+
if (useBrowserDefaultMenu) {
|
|
4499
|
+
return (React__default["default"].createElement(react.Select, __assign({ value: value, placeholder: placeholder }, domProps, { _hover: {
|
|
4500
|
+
borderWidth: '1px',
|
|
4501
|
+
borderColor: colors.border.light.heavy,
|
|
4502
|
+
}, _focus: {
|
|
4503
|
+
borderWidth: '2px',
|
|
4504
|
+
borderColor: colors.border.light.focus,
|
|
4505
|
+
} }), options.map(function (option, index) { return (React__default["default"].createElement("option", { key: "options-".concat(index), value: option.value }, option.label)); })));
|
|
4506
|
+
}
|
|
4507
|
+
var handleSelectOption = function (selectedOption) {
|
|
4508
|
+
setSelectedOption(selectedOption);
|
|
4509
|
+
if (listConfig === null || listConfig === void 0 ? void 0 : listConfig.onSelectOption) {
|
|
4510
|
+
listConfig === null || listConfig === void 0 ? void 0 : listConfig.onSelectOption(selectedOption);
|
|
4511
|
+
}
|
|
4512
|
+
};
|
|
4513
|
+
var handleMenuClose = function (selectedOption) {
|
|
4514
|
+
if (listConfig === null || listConfig === void 0 ? void 0 : listConfig.onMenuClose) {
|
|
4515
|
+
listConfig === null || listConfig === void 0 ? void 0 : listConfig.onMenuClose(selectedOption);
|
|
4516
|
+
}
|
|
4517
|
+
};
|
|
4518
|
+
return (React__default["default"].createElement(MenuProvider, { menuItems: options, onMenuClose: handleMenuClose },
|
|
4519
|
+
React__default["default"].createElement(MenuContainer, { matchWidth: true, isLazy: true },
|
|
4520
|
+
React__default["default"].createElement(react.Select, __assign({ as: react.MenuButton }, domProps, { _hover: {
|
|
4521
|
+
borderWidth: '1px',
|
|
4522
|
+
borderColor: colors.border.light.heavy,
|
|
4523
|
+
}, _focus: {
|
|
4524
|
+
borderWidth: '2px',
|
|
4525
|
+
borderColor: colors.border.light.focus,
|
|
4526
|
+
}, ref: selectRef, onClick: function (event) { return event.stopPropagation(); } }),
|
|
4527
|
+
React__default["default"].createElement(react.HStack, null,
|
|
4528
|
+
(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leftElement)
|
|
4529
|
+
? selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leftElement
|
|
4530
|
+
: (listConfig === null || listConfig === void 0 ? void 0 : listConfig.defaultLeftElement)
|
|
4531
|
+
? listConfig === null || listConfig === void 0 ? void 0 : listConfig.defaultLeftElement
|
|
4532
|
+
: null,
|
|
4533
|
+
React__default["default"].createElement(TruncatedText, { textContent: selectedOption.label || '', noOfLines: 1 }))),
|
|
4534
|
+
React__default["default"].createElement(react.Portal, null,
|
|
4535
|
+
React__default["default"].createElement(MenuList, { maxW: "".concat((_a = selectRef === null || selectRef === void 0 ? void 0 : selectRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth, "px") || '0px', isGrouped: listConfig === null || listConfig === void 0 ? void 0 : listConfig.isGrouped, isSearchable: listConfig === null || listConfig === void 0 ? void 0 : listConfig.isSearchable, menuItems: options.map(function (option) {
|
|
4536
|
+
option.isSelected = option.value === selectedOption.value;
|
|
4537
|
+
return option;
|
|
4538
|
+
}), onMenuItemSelect: handleSelectOption, isMatchWidthSet: true })))));
|
|
4191
4539
|
};
|
|
4192
4540
|
Select.displayName = 'Select';
|
|
4193
4541
|
var WrappedSelect = withFormControl(Select);
|
|
@@ -4195,8 +4543,8 @@ var WrappedSelect = withFormControl(Select);
|
|
|
4195
4543
|
var SelectConfig = __assign({}, FormControlConfig);
|
|
4196
4544
|
|
|
4197
4545
|
var Switch = function (props) {
|
|
4198
|
-
var isChecked = props.isChecked,
|
|
4199
|
-
return (React__default["default"].createElement(react.Switch, __assign({ colorScheme: "teal", isChecked: isChecked, display:
|
|
4546
|
+
var isChecked = props.isChecked, isFieldInline = props.isFieldInline, domProps = __rest(props, ["isChecked", "isFieldInline"]);
|
|
4547
|
+
return (React__default["default"].createElement(react.Switch, __assign({ colorScheme: "teal", isChecked: isChecked, display: isFieldInline ? 'inline-block' : 'block' }, domProps)));
|
|
4200
4548
|
};
|
|
4201
4549
|
Switch.displayName = 'Switch';
|
|
4202
4550
|
var WrappedSwitch = withFormControl(Switch);
|
|
@@ -6403,83 +6751,28 @@ var SwitchConfig = {
|
|
|
6403
6751
|
_b),
|
|
6404
6752
|
},
|
|
6405
6753
|
lg: {
|
|
6406
|
-
container: (_c = {},
|
|
6407
|
-
_c[$thumbWidth.variable] = '19.5px',
|
|
6408
|
-
_c[$thumbHeight.variable] = '19.5px',
|
|
6409
|
-
_c[$trackWidth.variable] = '33px',
|
|
6410
|
-
_c[$trackHeight.variable] = '10.5px',
|
|
6411
|
-
_c),
|
|
6412
|
-
},
|
|
6413
|
-
},
|
|
6414
|
-
};
|
|
6415
|
-
|
|
6416
|
-
var DrawerConfig = {
|
|
6417
|
-
variants: {
|
|
6418
|
-
alwaysOpen: {
|
|
6419
|
-
parts: ['dialog, dialogContainer'],
|
|
6420
|
-
dialog: {
|
|
6421
|
-
pointerEvents: 'auto',
|
|
6422
|
-
},
|
|
6423
|
-
dialogContainer: {
|
|
6424
|
-
pointerEvents: 'none',
|
|
6425
|
-
},
|
|
6426
|
-
},
|
|
6427
|
-
},
|
|
6428
|
-
};
|
|
6429
|
-
|
|
6430
|
-
// TODO: Figure out how to document this functionality
|
|
6431
|
-
var MenuContext = React.createContext({
|
|
6432
|
-
allMenuItems: [],
|
|
6433
|
-
filteredMenuItems: [],
|
|
6434
|
-
focusedItemIndex: -1,
|
|
6435
|
-
groups: [],
|
|
6436
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6437
|
-
handleOnClose: function () {
|
|
6438
|
-
throw new Error('handleOnClose(): Promise<void> not implemented');
|
|
6439
|
-
},
|
|
6440
|
-
setFilteredMenuItems: function () {
|
|
6441
|
-
throw new Error('setFilteredMenuItems(): Promise<void> not implemented');
|
|
6442
|
-
},
|
|
6443
|
-
setFocusedItemIndex: function () {
|
|
6444
|
-
throw new Error('setFocusedItemIndex(): Promise<void> not implemented');
|
|
6445
|
-
},
|
|
6446
|
-
setGroups: function () {
|
|
6447
|
-
throw new Error('setGroups(): Promise<void> not implemented');
|
|
6448
|
-
},
|
|
6449
|
-
});
|
|
6450
|
-
var useMenuContext = function () { return React.useContext(MenuContext); };
|
|
6451
|
-
var MenuProvider = function (_a) {
|
|
6452
|
-
var menuItems = _a.menuItems, onMenuClose = _a.onMenuClose, children = _a.children;
|
|
6453
|
-
var _b = __read(React.useState(menuItems || []), 2), filteredMenuItems = _b[0], setFilteredMenuItems = _b[1];
|
|
6454
|
-
var _c = __read(React.useState(null), 2), groups = _c[0], setGroups = _c[1];
|
|
6455
|
-
var _d = __read(React.useState(-1), 2), focusedItemIndex = _d[0], setFocusedItemIndex = _d[1];
|
|
6456
|
-
var searchInputRef = React.useRef(null);
|
|
6457
|
-
var menuItemRefs = React.useRef([]);
|
|
6458
|
-
var handleOnClose = React.useCallback(function () {
|
|
6459
|
-
var selectedItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.isSelected === true; }).map(function (item) { return item.value; });
|
|
6460
|
-
setFocusedItemIndex(-1);
|
|
6461
|
-
if (onMenuClose) {
|
|
6462
|
-
onMenuClose(selectedItems);
|
|
6463
|
-
}
|
|
6464
|
-
}, [filteredMenuItems, onMenuClose]);
|
|
6465
|
-
return (React__default["default"].createElement(MenuContext.Provider, { value: {
|
|
6466
|
-
allMenuItems: menuItems,
|
|
6467
|
-
filteredMenuItems: filteredMenuItems,
|
|
6468
|
-
focusedItemIndex: focusedItemIndex,
|
|
6469
|
-
groups: groups,
|
|
6470
|
-
menuItemRefs: menuItemRefs,
|
|
6471
|
-
handleOnClose: handleOnClose,
|
|
6472
|
-
searchInputRef: searchInputRef,
|
|
6473
|
-
setFilteredMenuItems: setFilteredMenuItems,
|
|
6474
|
-
setFocusedItemIndex: setFocusedItemIndex,
|
|
6475
|
-
setGroups: setGroups,
|
|
6476
|
-
} }, children));
|
|
6754
|
+
container: (_c = {},
|
|
6755
|
+
_c[$thumbWidth.variable] = '19.5px',
|
|
6756
|
+
_c[$thumbHeight.variable] = '19.5px',
|
|
6757
|
+
_c[$trackWidth.variable] = '33px',
|
|
6758
|
+
_c[$trackHeight.variable] = '10.5px',
|
|
6759
|
+
_c),
|
|
6760
|
+
},
|
|
6761
|
+
},
|
|
6477
6762
|
};
|
|
6478
6763
|
|
|
6479
|
-
var
|
|
6480
|
-
|
|
6481
|
-
|
|
6482
|
-
|
|
6764
|
+
var DrawerConfig = {
|
|
6765
|
+
variants: {
|
|
6766
|
+
alwaysOpen: {
|
|
6767
|
+
parts: ['dialog, dialogContainer'],
|
|
6768
|
+
dialog: {
|
|
6769
|
+
pointerEvents: 'auto',
|
|
6770
|
+
},
|
|
6771
|
+
dialogContainer: {
|
|
6772
|
+
pointerEvents: 'none',
|
|
6773
|
+
},
|
|
6774
|
+
},
|
|
6775
|
+
},
|
|
6483
6776
|
};
|
|
6484
6777
|
|
|
6485
6778
|
var MenuButton = function (_a) {
|
|
@@ -6544,240 +6837,6 @@ var MenuButton = function (_a) {
|
|
|
6544
6837
|
React__default["default"].createElement(Icon, { name: rightIconName, size: size === 'lg' ? 'sm' : 'xs' }))))));
|
|
6545
6838
|
};
|
|
6546
6839
|
|
|
6547
|
-
var MenuItemConfig = {
|
|
6548
|
-
color: adaptiveColors.text.light.subtle,
|
|
6549
|
-
cursor: 'pointer',
|
|
6550
|
-
fontSize: fontSizes.sm,
|
|
6551
|
-
px: '20px',
|
|
6552
|
-
py: '8px',
|
|
6553
|
-
outline: 0,
|
|
6554
|
-
transitionDuration: 'ultra-fast',
|
|
6555
|
-
transitionProperty: 'background',
|
|
6556
|
-
transitionTimingFunction: 'ease-in',
|
|
6557
|
-
_hover: {
|
|
6558
|
-
bg: semanticColors.background.hover,
|
|
6559
|
-
},
|
|
6560
|
-
_focus: {
|
|
6561
|
-
bg: semanticColors.background.hover,
|
|
6562
|
-
},
|
|
6563
|
-
_active: {
|
|
6564
|
-
color: adaptiveColors.text.light.link,
|
|
6565
|
-
},
|
|
6566
|
-
_expanded: {
|
|
6567
|
-
bg: semanticColors.background.hover,
|
|
6568
|
-
},
|
|
6569
|
-
_disabled: {
|
|
6570
|
-
opacity: 0.4,
|
|
6571
|
-
cursor: 'not-allowed',
|
|
6572
|
-
bg: 'transparent',
|
|
6573
|
-
color: adaptiveColors.text.light.subtle,
|
|
6574
|
-
},
|
|
6575
|
-
};
|
|
6576
|
-
var MenuConfig = {
|
|
6577
|
-
baseStyle: {
|
|
6578
|
-
item: MenuItemConfig,
|
|
6579
|
-
list: {
|
|
6580
|
-
p: '8px 0',
|
|
6581
|
-
boxShadow: shadows.md,
|
|
6582
|
-
borderColor: colors.border.light.default,
|
|
6583
|
-
},
|
|
6584
|
-
},
|
|
6585
|
-
};
|
|
6586
|
-
|
|
6587
|
-
var MenuItem = function (_a) {
|
|
6588
|
-
var isMultiSelect = _a.isMultiSelect, canSelectAll = _a.canSelectAll, children = _a.children, _b = _a.closeOnSelect, closeOnSelect = _b === void 0 ? !isMultiSelect : _b; _a.groupLabel; var _c = _a.handleKeyboardNavigation, handleKeyboardNavigation = _c === void 0 ? function () { } : _c, isDisabled = _a.isDisabled, isSelected = _a.isSelected, _d = _a.itemIndex, itemIndex = _d === void 0 ? '0' : _d, label = _a.label, leftElement = _a.leftElement, menuItemRefs = _a.menuItemRefs, onSelectItem = _a.onSelectItem, value = _a.value, rest = __rest(_a, ["isMultiSelect", "canSelectAll", "children", "closeOnSelect", "groupLabel", "handleKeyboardNavigation", "isDisabled", "isSelected", "itemIndex", "label", "leftElement", "menuItemRefs", "onSelectItem", "value"]);
|
|
6589
|
-
// TODO: Add truncated text functionality with tooltip on hover
|
|
6590
|
-
var colors = useTheme().colors;
|
|
6591
|
-
var onClose = react.useMenuState().onClose;
|
|
6592
|
-
var handleSelect = React.useCallback(function () {
|
|
6593
|
-
if (isDisabled)
|
|
6594
|
-
return;
|
|
6595
|
-
if (value && onSelectItem) {
|
|
6596
|
-
onSelectItem(value);
|
|
6597
|
-
}
|
|
6598
|
-
if (closeOnSelect) {
|
|
6599
|
-
onClose();
|
|
6600
|
-
}
|
|
6601
|
-
}, [value, onSelectItem, onClose, closeOnSelect, isDisabled]);
|
|
6602
|
-
return (React__default["default"].createElement(react.Box, __assign({}, MenuItemConfig, { className: "menu-list__item", onClick: handleSelect, onKeyDown: function (e) { return handleKeyboardNavigation(e, false); }, tabIndex: parseInt(canSelectAll ? (itemIndex += 2) : itemIndex), ref: function (el) {
|
|
6603
|
-
return menuItemRefs && itemIndex ? (menuItemRefs.current[parseInt(itemIndex)] = el) : null;
|
|
6604
|
-
},
|
|
6605
|
-
// @ts-ignore
|
|
6606
|
-
disabled: isDisabled }, rest), children ? (children) : (React__default["default"].createElement(react.HStack, { spacing: "12px", minH: "21px" },
|
|
6607
|
-
isMultiSelect && (React__default["default"].createElement(react.Box, { width: "12px", height: "12px", borderRadius: "12px", position: "relative", background: colors.background.grayDark, className: "menu-list__item-checkbox" },
|
|
6608
|
-
React__default["default"].createElement(react.Box, { position: "absolute", top: "-2px", left: "-2px" }, isSelected && React__default["default"].createElement(Icon, { name: "checkmarkCircle", color: "success", size: "sm" })))),
|
|
6609
|
-
leftElement && React__default["default"].createElement(react.Box, { className: "menu-list__item-leftElement" }, leftElement),
|
|
6610
|
-
React__default["default"].createElement(react.Box, { className: "menu-list__item-label" }, label)))));
|
|
6611
|
-
};
|
|
6612
|
-
|
|
6613
|
-
var MenuSearchBar = function (_a) {
|
|
6614
|
-
var handleKeyboardNavigation = _a.handleKeyboardNavigation, menuItems = _a.menuItems, onSearchCallback = _a.onSearchCallback, searchInputRef = _a.searchInputRef, setFilteredMenuItems = _a.setFilteredMenuItems, _b = _a.placeholder, placeholder = _b === void 0 ? 'Search...' : _b;
|
|
6615
|
-
var handleSearch = React.useCallback(function (e) {
|
|
6616
|
-
var searchInput = e.target.value;
|
|
6617
|
-
if (searchInput === '' || !searchInput) {
|
|
6618
|
-
setFilteredMenuItems(menuItems);
|
|
6619
|
-
}
|
|
6620
|
-
else {
|
|
6621
|
-
var filterdItems = menuItems.filter(function (item) { var _a; return (_a = item.label) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchInput.toLowerCase()); });
|
|
6622
|
-
setFilteredMenuItems(filterdItems);
|
|
6623
|
-
}
|
|
6624
|
-
if (onSearchCallback) {
|
|
6625
|
-
onSearchCallback(e);
|
|
6626
|
-
}
|
|
6627
|
-
}, [menuItems, onSearchCallback, setFilteredMenuItems]);
|
|
6628
|
-
return (React__default["default"].createElement(WrappedTextInput, { className: "menu-list__searchbar", placeholder: placeholder, onChange: handleSearch, mt: 1, onKeyDown: function (e) { return handleKeyboardNavigation(e, true); }, size: "sm", ref: searchInputRef }));
|
|
6629
|
-
};
|
|
6630
|
-
|
|
6631
|
-
var MenuSelectAllButtons = function (_a) {
|
|
6632
|
-
var groupName = _a.groupName, handleToggleAllItems = _a.handleToggleAllItems, hasSelectedItems = _a.hasSelectedItems, isGrouped = _a.isGrouped;
|
|
6633
|
-
if (isGrouped) {
|
|
6634
|
-
return (React__default["default"].createElement(react.Box, { textAlign: "right", w: "50%", className: "menu-list-item__select-all-button" }, hasSelectedItems ? (React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all")) : (React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: false }); } }, "Select all"))));
|
|
6635
|
-
}
|
|
6636
|
-
return (React__default["default"].createElement(react.Box, { mt: "8px", className: "menu-list__select-all-buttons" },
|
|
6637
|
-
React__default["default"].createElement(react.Flex, { justifyContent: "space-between" },
|
|
6638
|
-
React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ clear: false }); } }, "Select all"),
|
|
6639
|
-
React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all"))));
|
|
6640
|
-
};
|
|
6641
|
-
|
|
6642
|
-
var MenuList = function (_a) {
|
|
6643
|
-
var _b = _a.canSelectAll, canSelectAll = _b === void 0 ? false : _b, _c = _a.canSelectGroups, canSelectGroups = _c === void 0 ? false : _c, children = _a.children, _d = _a.isGrouped, isGrouped = _d === void 0 ? false : _d, isMatchWidthSet = _a.isMatchWidthSet, _e = _a.isMultiSelect, isMultiSelect = _e === void 0 ? false : _e, _f = _a.isSearchable, isSearchable = _f === void 0 ? false : _f, menuItems = _a.menuItems, onMenuItemSelect = _a.onMenuItemSelect, onMenuItemSelectAll = _a.onMenuItemSelectAll, searchPlaceholder = _a.searchPlaceholder, _g = _a.minW, minW = _g === void 0 ? '240px' : _g, maxW = _a.maxW, _h = _a.maxH, maxH = _h === void 0 ? '480px' : _h, rest = __rest(_a, ["canSelectAll", "canSelectGroups", "children", "isGrouped", "isMatchWidthSet", "isMultiSelect", "isSearchable", "menuItems", "onMenuItemSelect", "onMenuItemSelectAll", "searchPlaceholder", "minW", "maxW", "maxH"]);
|
|
6644
|
-
var _j = useMenuContext(), filteredMenuItems = _j.filteredMenuItems, setFilteredMenuItems = _j.setFilteredMenuItems, groups = _j.groups, setGroups = _j.setGroups, focusedItemIndex = _j.focusedItemIndex, setFocusedItemIndex = _j.setFocusedItemIndex, searchInputRef = _j.searchInputRef, menuItemRefs = _j.menuItemRefs;
|
|
6645
|
-
var focusNextListItem = React.useCallback(function (direction) {
|
|
6646
|
-
var _a, _b;
|
|
6647
|
-
if (!(menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current))
|
|
6648
|
-
return;
|
|
6649
|
-
var isFirstOption = focusedItemIndex === 0;
|
|
6650
|
-
var isLastOption = focusedItemIndex === (menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current.length) - 1;
|
|
6651
|
-
var newIndex = -1;
|
|
6652
|
-
if (direction === 'ArrowDown') {
|
|
6653
|
-
if (isLastOption) {
|
|
6654
|
-
if (isSearchable) {
|
|
6655
|
-
(_a = searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
6656
|
-
setFocusedItemIndex(-1);
|
|
6657
|
-
return;
|
|
6658
|
-
}
|
|
6659
|
-
newIndex = 0;
|
|
6660
|
-
}
|
|
6661
|
-
else {
|
|
6662
|
-
newIndex = focusedItemIndex + 1;
|
|
6663
|
-
}
|
|
6664
|
-
}
|
|
6665
|
-
else if (direction === 'ArrowUp') {
|
|
6666
|
-
if (isFirstOption) {
|
|
6667
|
-
if (isSearchable) {
|
|
6668
|
-
(_b = searchInputRef === null || searchInputRef === void 0 ? void 0 : searchInputRef.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
6669
|
-
setFocusedItemIndex(-1);
|
|
6670
|
-
return;
|
|
6671
|
-
}
|
|
6672
|
-
newIndex = menuItemRefs.current.length - 1;
|
|
6673
|
-
}
|
|
6674
|
-
else {
|
|
6675
|
-
newIndex = focusedItemIndex - 1;
|
|
6676
|
-
}
|
|
6677
|
-
}
|
|
6678
|
-
var nextListItem = menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current[newIndex];
|
|
6679
|
-
if (nextListItem) {
|
|
6680
|
-
nextListItem === null || nextListItem === void 0 ? void 0 : nextListItem.focus();
|
|
6681
|
-
setFocusedItemIndex(newIndex);
|
|
6682
|
-
}
|
|
6683
|
-
else {
|
|
6684
|
-
setFocusedItemIndex(-1);
|
|
6685
|
-
}
|
|
6686
|
-
}, [focusedItemIndex, isSearchable, menuItemRefs, searchInputRef, setFocusedItemIndex]);
|
|
6687
|
-
var handleKeyboardNavigation = React.useCallback(function (e, elementIsInputField) {
|
|
6688
|
-
e.persist();
|
|
6689
|
-
if (!(menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current))
|
|
6690
|
-
return;
|
|
6691
|
-
if (e.key === 'ArrowDown' || e.key === 'Tab') {
|
|
6692
|
-
focusNextListItem('ArrowDown');
|
|
6693
|
-
}
|
|
6694
|
-
if (e.key === 'ArrowUp') {
|
|
6695
|
-
focusNextListItem('ArrowUp');
|
|
6696
|
-
}
|
|
6697
|
-
if (e.key === 'Enter') {
|
|
6698
|
-
e.preventDefault();
|
|
6699
|
-
e.target.click();
|
|
6700
|
-
}
|
|
6701
|
-
}, [focusNextListItem, menuItemRefs]);
|
|
6702
|
-
var handleToggleSingleItem = React.useCallback(function (selectedValue) {
|
|
6703
|
-
if (filteredMenuItems) {
|
|
6704
|
-
var _filteredMenuItemsCopy = __spreadArray([], __read(filteredMenuItems), false);
|
|
6705
|
-
var selectedItem = _filteredMenuItemsCopy.find(function (item) { return item.value === selectedValue; });
|
|
6706
|
-
if (!isMultiSelect) {
|
|
6707
|
-
_filteredMenuItemsCopy.filter(function (item) { return item.isSelected === true; }).map(function (item) { return (item.isSelected = false); });
|
|
6708
|
-
}
|
|
6709
|
-
if (selectedItem) {
|
|
6710
|
-
selectedItem.isSelected = !selectedItem.isSelected;
|
|
6711
|
-
}
|
|
6712
|
-
setFilteredMenuItems(_filteredMenuItemsCopy);
|
|
6713
|
-
if (onMenuItemSelect && selectedItem) {
|
|
6714
|
-
onMenuItemSelect(selectedItem);
|
|
6715
|
-
}
|
|
6716
|
-
}
|
|
6717
|
-
}, [filteredMenuItems, isMultiSelect, onMenuItemSelect, setFilteredMenuItems]);
|
|
6718
|
-
var handleToggleAllItems = React.useCallback(function (_a) {
|
|
6719
|
-
var groupName = _a.groupName, _b = _a.clear, clear = _b === void 0 ? false : _b;
|
|
6720
|
-
if (filteredMenuItems) {
|
|
6721
|
-
var _filteredMenuItemsCopy = __spreadArray([], __read(filteredMenuItems), false);
|
|
6722
|
-
var value_1 = [];
|
|
6723
|
-
_filteredMenuItemsCopy.forEach(function (item) {
|
|
6724
|
-
if (groupName) {
|
|
6725
|
-
if (groupName === item.groupLabel) {
|
|
6726
|
-
item.isSelected = !clear;
|
|
6727
|
-
if (item.value && item.isSelected) {
|
|
6728
|
-
value_1.push(item.value);
|
|
6729
|
-
}
|
|
6730
|
-
}
|
|
6731
|
-
}
|
|
6732
|
-
else {
|
|
6733
|
-
item.isSelected = !clear;
|
|
6734
|
-
if (item.value && item.isSelected) {
|
|
6735
|
-
value_1.push(item.value);
|
|
6736
|
-
}
|
|
6737
|
-
}
|
|
6738
|
-
});
|
|
6739
|
-
setFilteredMenuItems(_filteredMenuItemsCopy);
|
|
6740
|
-
if (onMenuItemSelectAll) {
|
|
6741
|
-
onMenuItemSelectAll(_filteredMenuItemsCopy.filter(function (item) { return item.isSelected; }));
|
|
6742
|
-
}
|
|
6743
|
-
}
|
|
6744
|
-
}, [filteredMenuItems, onMenuItemSelectAll, setFilteredMenuItems]);
|
|
6745
|
-
React.useEffect(function () {
|
|
6746
|
-
if (isGrouped) {
|
|
6747
|
-
var groupNames = __spreadArray([], __read(new Set(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item) { return item.groupLabel; }))), false);
|
|
6748
|
-
if (groupNames.length) {
|
|
6749
|
-
setGroups(groupNames);
|
|
6750
|
-
}
|
|
6751
|
-
}
|
|
6752
|
-
}, [filteredMenuItems, isGrouped, setGroups]);
|
|
6753
|
-
// Return default Chakra menu if user passes in custom child elements
|
|
6754
|
-
if (children) {
|
|
6755
|
-
return React__default["default"].createElement(react.MenuList, __assign({}, rest), children);
|
|
6756
|
-
}
|
|
6757
|
-
if (!isMatchWidthSet) {
|
|
6758
|
-
maxW = '320px';
|
|
6759
|
-
}
|
|
6760
|
-
return (React__default["default"].createElement(react.MenuList, __assign({}, rest, { maxW: maxW, maxH: maxH, minW: minW, overflow: "hidden auto" }),
|
|
6761
|
-
(isSearchable || (canSelectAll && isMultiSelect)) && (React__default["default"].createElement(react.Box, { className: "menu-list__header", m: "0 12px 8px" },
|
|
6762
|
-
isSearchable && (React__default["default"].createElement(MenuSearchBar, { handleKeyboardNavigation: handleKeyboardNavigation, menuItems: menuItems || [], searchInputRef: searchInputRef, setFilteredMenuItems: setFilteredMenuItems, placeholder: searchPlaceholder })),
|
|
6763
|
-
canSelectAll && isMultiSelect && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.find(function (item) { return item.isSelected; })), isGrouped: false })))),
|
|
6764
|
-
React__default["default"].createElement(react.Box, { className: "menu-list__body" }, isGrouped
|
|
6765
|
-
? groups === null || groups === void 0 ? void 0 : groups.map(function (groupName) {
|
|
6766
|
-
var menuItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.groupLabel === groupName; });
|
|
6767
|
-
return (React__default["default"].createElement(react.MenuOptionGroup, { key: groupName, className: "menu-list__group" },
|
|
6768
|
-
React__default["default"].createElement(react.HStack, { minH: "32px", p: "4px 12px 4px 20px", justifyContent: "space-between" },
|
|
6769
|
-
React__default["default"].createElement(react.Box, { textAlign: "left", className: "menu-list__group-title" },
|
|
6770
|
-
React__default["default"].createElement(Heading, { size: "xs" }, groupName)),
|
|
6771
|
-
isMultiSelect && canSelectGroups && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(menuItems === null || menuItems === void 0 ? void 0 : menuItems.find(function (item) { return item.isSelected; })), isGrouped: true, groupName: groupName }))), menuItems === null || menuItems === void 0 ? void 0 :
|
|
6772
|
-
menuItems.map(function (item, index) {
|
|
6773
|
-
return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
|
|
6774
|
-
})));
|
|
6775
|
-
})
|
|
6776
|
-
: filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item, index) {
|
|
6777
|
-
return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
|
|
6778
|
-
}))));
|
|
6779
|
-
};
|
|
6780
|
-
|
|
6781
6840
|
var BetaMenu = function (_a) {
|
|
6782
6841
|
var buttonConfig = _a.buttonConfig, CustomTriggerElement = _a.CustomTriggerElement, listConfig = _a.listConfig, menuItems = _a.menuItems, onMenuClose = _a.onMenuClose, _b = _a.isLazy, isLazy = _b === void 0 ? true : _b, props = __rest(_a, ["buttonConfig", "CustomTriggerElement", "listConfig", "menuItems", "onMenuClose", "isLazy"]);
|
|
6783
6842
|
return (React__default["default"].createElement(MenuProvider, { menuItems: menuItems, onMenuClose: onMenuClose },
|
|
@@ -6835,7 +6894,7 @@ var ModalFooter = function (_a) {
|
|
|
6835
6894
|
};
|
|
6836
6895
|
|
|
6837
6896
|
var ModalFooterButtons = function (_a) {
|
|
6838
|
-
var _b = _a.submitText, submitText = _b === void 0 ? 'Submit' : _b, isLoading = _a.isLoading, isDestructive = _a.isDestructive; _a.children; var onSubmit = _a.onSubmit, _c = _a.allowCancel, allowCancel = _c === void 0 ? true : _c, onCancel = _a.onCancel, rest = __rest(_a, ["submitText", "isLoading", "isDestructive", "children", "onSubmit", "allowCancel", "onCancel"]);
|
|
6897
|
+
var _b = _a.submitText, submitText = _b === void 0 ? 'Submit' : _b, isLoading = _a.isLoading, isDisabled = _a.isDisabled, isDestructive = _a.isDestructive; _a.children; var onSubmit = _a.onSubmit, _c = _a.allowCancel, allowCancel = _c === void 0 ? true : _c, onCancel = _a.onCancel, rest = __rest(_a, ["submitText", "isLoading", "isDisabled", "isDestructive", "children", "onSubmit", "allowCancel", "onCancel"]);
|
|
6839
6898
|
var onClose = react.useModalContext().onClose;
|
|
6840
6899
|
var handleCancel = function () {
|
|
6841
6900
|
if (onCancel) {
|
|
@@ -6847,7 +6906,7 @@ var ModalFooterButtons = function (_a) {
|
|
|
6847
6906
|
React__default["default"].createElement(react.Flex, { w: "100%" },
|
|
6848
6907
|
allowCancel && (React__default["default"].createElement(Button, { variant: "tertiary", onClick: handleCancel }, "Cancel")),
|
|
6849
6908
|
React__default["default"].createElement(react.Spacer, null),
|
|
6850
|
-
React__default["default"].createElement(Button, { onClick: onSubmit, isLoading: isLoading, variant: isDestructive ? 'primaryDestructive' : 'primary' }, submitText))));
|
|
6909
|
+
React__default["default"].createElement(Button, { onClick: onSubmit, isLoading: isLoading, isDisabled: isDisabled, variant: isDestructive ? 'primaryDestructive' : 'primary' }, submitText))));
|
|
6851
6910
|
};
|
|
6852
6911
|
|
|
6853
6912
|
// @ts-ignore
|