@carbon/react 1.92.0 → 1.93.0-rc.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/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +1011 -970
- package/es/components/AILabel/index.js +4 -4
- package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
- package/es/components/Button/Button.js +2 -2
- package/es/components/ChatButton/ChatButton.js +1 -1
- package/es/components/Checkbox/Checkbox.js +1 -1
- package/es/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/es/components/ComboBox/ComboBox.d.ts +3 -11
- package/es/components/ComboBox/ComboBox.js +15 -25
- package/es/components/ComboButton/index.d.ts +5 -8
- package/es/components/ComboButton/index.js +9 -12
- package/es/components/ComposedModal/ComposedModal.js +22 -36
- package/es/components/DataTable/DataTable.d.ts +25 -16
- package/es/components/DataTable/DataTable.js +33 -34
- package/es/components/DataTable/Table.js +2 -2
- package/es/components/DataTable/TableBatchActions.d.ts +49 -10
- package/es/components/DataTable/TableBatchActions.js +26 -21
- package/es/components/DataTable/TableExpandHeader.js +2 -2
- package/es/components/DataTable/TableExpandRow.js +1 -1
- package/es/components/DataTable/TableHeader.d.ts +8 -10
- package/es/components/DataTable/TableHeader.js +11 -13
- package/es/components/DataTable/TableRow.js +5 -5
- package/es/components/DataTable/TableSlugRow.js +1 -1
- package/es/components/DataTable/TableToolbarMenu.js +1 -1
- package/es/components/DataTable/TableToolbarSearch.d.ts +8 -7
- package/es/components/DataTable/TableToolbarSearch.js +11 -11
- package/es/components/DataTable/index.d.ts +2 -2
- package/es/components/DataTable/state/sorting.d.ts +2 -2
- package/es/components/DataTable/state/sorting.js +1 -1
- package/es/components/DataTable/tools/sorting.js +1 -1
- package/es/components/DatePicker/DatePicker.js +9 -9
- package/es/components/DatePickerInput/DatePickerInput.js +5 -5
- package/es/components/Dialog/Dialog.js +6 -6
- package/es/components/Dropdown/Dropdown.d.ts +1 -1
- package/es/components/Dropdown/Dropdown.js +8 -8
- package/es/components/ErrorBoundary/ErrorBoundaryContext.js +1 -1
- package/es/components/FileUploader/FileUploader.js +4 -4
- package/es/components/FileUploader/FileUploaderButton.js +1 -1
- package/es/components/FileUploader/FileUploaderDropContainer.js +1 -1
- package/es/components/FileUploader/FileUploaderItem.js +2 -2
- package/es/components/FluidComboBox/FluidComboBox.d.ts +4 -7
- package/es/components/FluidComboBox/FluidComboBox.js +1 -1
- package/es/components/FluidDropdown/FluidDropdown.d.ts +4 -8
- package/es/components/FluidDropdown/FluidDropdown.js +1 -1
- package/es/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -7
- package/es/components/FluidMultiSelect/FluidMultiSelect.d.ts +3 -7
- package/es/components/FluidMultiSelect/FluidMultiSelect.js +3 -3
- package/es/components/FluidNumberInput/FluidNumberInput.d.ts +4 -7
- package/es/components/FluidNumberInput/FluidNumberInput.js +2 -2
- package/es/components/FluidSearch/FluidSearch.js +1 -1
- package/es/components/FluidSelect/FluidSelect.js +1 -1
- package/es/components/FluidTextInput/FluidTextInput.js +1 -1
- package/es/components/FluidTimePicker/FluidTimePicker.js +3 -3
- package/es/components/FluidTimePickerSelect/FluidTimePickerSelect.js +1 -1
- package/es/components/Grid/CSSGrid.js +3 -3
- package/es/components/Grid/Column.js +2 -2
- package/es/components/Grid/ColumnHang.js +1 -1
- package/es/components/Grid/FlexGrid.js +1 -1
- package/es/components/Grid/Row.js +1 -1
- package/es/components/Heading/index.js +2 -2
- package/es/components/IconButton/index.js +2 -2
- package/es/components/IconIndicator/index.js +2 -2
- package/es/components/InlineCheckbox/InlineCheckbox.js +1 -1
- package/es/components/Layout/index.js +2 -2
- package/es/components/LayoutDirection/LayoutDirection.js +1 -1
- package/es/components/Link/Link.js +2 -2
- package/es/components/ListBox/ListBoxField.d.ts +0 -1
- package/es/components/ListBox/ListBoxMenuIcon.d.ts +8 -4
- package/es/components/ListBox/ListBoxMenuIcon.js +10 -6
- package/es/components/ListBox/ListBoxMenuItem.js +2 -2
- package/es/components/ListBox/ListBoxSelection.d.ts +3 -6
- package/es/components/ListBox/ListBoxSelection.js +5 -10
- package/es/components/ListBox/index.d.ts +5 -3
- package/es/components/ListBox/next/ListBoxSelection.d.ts +6 -13
- package/es/components/ListBox/next/ListBoxSelection.js +16 -8
- package/es/components/ListBox/next/ListBoxTrigger.d.ts +5 -10
- package/es/components/ListBox/next/ListBoxTrigger.js +6 -6
- package/es/components/Menu/MenuContext.js +1 -1
- package/es/components/Menu/MenuItem.js +1 -1
- package/es/components/MenuButton/index.js +5 -5
- package/es/components/Modal/Modal.js +20 -36
- package/es/components/ModalWrapper/ModalWrapper.js +2 -2
- package/es/components/MultiSelect/FilterableMultiSelect.d.ts +3 -12
- package/es/components/MultiSelect/FilterableMultiSelect.js +18 -27
- package/es/components/MultiSelect/MultiSelect.d.ts +2 -2
- package/es/components/MultiSelect/MultiSelect.js +12 -12
- package/es/components/Notification/Notification.js +1 -1
- package/es/components/NumberInput/NumberInput.d.ts +2 -5
- package/es/components/NumberInput/NumberInput.js +13 -18
- package/es/components/OverflowMenu/OverflowMenu.d.ts +2 -2
- package/es/components/OverflowMenu/OverflowMenu.js +4 -4
- package/es/components/OverflowMenu/next/index.d.ts +1 -1
- package/es/components/OverflowMenu/next/index.js +2 -2
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
- package/es/components/PageHeader/PageHeader.js +12 -12
- package/es/components/Pagination/Pagination.js +3 -3
- package/es/components/PaginationNav/PaginationNav.d.ts +6 -9
- package/es/components/PaginationNav/PaginationNav.js +21 -22
- package/es/components/Popover/index.js +8 -8
- package/es/components/ProgressBar/ProgressBar.js +2 -2
- package/es/components/ProgressIndicator/ProgressIndicator.d.ts +11 -15
- package/es/components/ProgressIndicator/ProgressIndicator.js +15 -15
- package/es/components/RadioButton/RadioButton.js +1 -1
- package/es/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
- package/es/components/RadioTile/RadioTile.js +1 -1
- package/es/components/Select/Select.js +7 -5
- package/es/components/ShapeIndicator/index.js +2 -2
- package/es/components/Slider/Slider.d.ts +7 -9
- package/es/components/Slider/Slider.js +16 -20
- package/es/components/Stack/HStack.js +1 -1
- package/es/components/Stack/Stack.js +1 -1
- package/es/components/Stack/VStack.js +1 -1
- package/es/components/StructuredList/StructuredList.js +3 -3
- package/es/components/Tabs/Tabs.js +12 -12
- package/es/components/Tag/DismissibleTag.js +3 -3
- package/es/components/Tag/OperationalTag.js +2 -2
- package/es/components/Tag/SelectableTag.js +2 -2
- package/es/components/Tag/Tag.js +4 -4
- package/es/components/Tag/isEllipsisActive.js +1 -1
- package/es/components/Text/Text.js +1 -1
- package/es/components/TextArea/TextArea.js +1 -1
- package/es/components/TextInput/PasswordInput.js +4 -4
- package/es/components/TextInput/TextInput.js +3 -3
- package/es/components/Theme/index.js +3 -3
- package/es/components/Tile/Tile.js +3 -3
- package/es/components/TimePicker/TimePicker.js +1 -1
- package/es/components/Toggletip/index.js +4 -4
- package/es/components/Tooltip/DefinitionTooltip.js +1 -1
- package/es/components/Tooltip/Tooltip.js +3 -3
- package/es/components/TreeView/TreeNode.js +6 -6
- package/es/components/TreeView/TreeView.js +5 -5
- package/es/components/UIShell/HeaderContainer.js +1 -1
- package/es/components/UIShell/HeaderMenu.js +1 -1
- package/es/components/UIShell/Link.js +2 -2
- package/es/components/UIShell/SideNavItems.js +1 -1
- package/es/components/UIShell/Switcher.js +1 -1
- package/es/components/UIShell/SwitcherItem.js +1 -1
- package/es/index.d.ts +1 -1
- package/es/internal/FloatingMenu.js +4 -4
- package/es/internal/Selection.js +6 -6
- package/es/internal/useMergedRefs.js +1 -1
- package/es/internal/useNoInteractiveChildren.js +4 -4
- package/es/internal/useOutsideClick.js +1 -1
- package/es/internal/useOverflowItems.js +6 -6
- package/es/internal/useResizeObserver.js +3 -3
- package/es/internal/useSavedCallback.js +1 -1
- package/es/internal/warning.js +1 -1
- package/es/prop-types/isRequiredOneOf.js +2 -2
- package/es/tools/events.js +1 -1
- package/es/tools/wrapComponent.js +1 -1
- package/es/types/common.d.ts +6 -2
- package/lib/components/AILabel/index.js +4 -4
- package/lib/components/Breadcrumb/BreadcrumbItem.js +1 -1
- package/lib/components/Button/Button.js +2 -2
- package/lib/components/ChatButton/ChatButton.js +1 -1
- package/lib/components/Checkbox/Checkbox.js +1 -1
- package/lib/components/CheckboxGroup/CheckboxGroup.js +1 -1
- package/lib/components/ComboBox/ComboBox.d.ts +3 -11
- package/lib/components/ComboBox/ComboBox.js +15 -25
- package/lib/components/ComboButton/index.d.ts +5 -8
- package/lib/components/ComboButton/index.js +9 -12
- package/lib/components/ComposedModal/ComposedModal.js +21 -35
- package/lib/components/DataTable/DataTable.d.ts +25 -16
- package/lib/components/DataTable/DataTable.js +33 -34
- package/lib/components/DataTable/Table.js +2 -2
- package/lib/components/DataTable/TableBatchActions.d.ts +49 -10
- package/lib/components/DataTable/TableBatchActions.js +26 -21
- package/lib/components/DataTable/TableExpandHeader.js +2 -2
- package/lib/components/DataTable/TableExpandRow.js +1 -1
- package/lib/components/DataTable/TableHeader.d.ts +8 -10
- package/lib/components/DataTable/TableHeader.js +11 -13
- package/lib/components/DataTable/TableRow.js +5 -5
- package/lib/components/DataTable/TableSlugRow.js +1 -1
- package/lib/components/DataTable/TableToolbarMenu.js +1 -1
- package/lib/components/DataTable/TableToolbarSearch.d.ts +8 -7
- package/lib/components/DataTable/TableToolbarSearch.js +11 -11
- package/lib/components/DataTable/index.d.ts +2 -2
- package/lib/components/DataTable/state/sorting.d.ts +2 -2
- package/lib/components/DataTable/state/sorting.js +1 -1
- package/lib/components/DataTable/tools/sorting.js +1 -1
- package/lib/components/DatePicker/DatePicker.js +9 -9
- package/lib/components/DatePickerInput/DatePickerInput.js +5 -5
- package/lib/components/Dialog/Dialog.js +6 -6
- package/lib/components/Dropdown/Dropdown.d.ts +1 -1
- package/lib/components/Dropdown/Dropdown.js +8 -8
- package/lib/components/ErrorBoundary/ErrorBoundaryContext.js +1 -1
- package/lib/components/FileUploader/FileUploader.js +4 -4
- package/lib/components/FileUploader/FileUploaderButton.js +1 -1
- package/lib/components/FileUploader/FileUploaderDropContainer.js +1 -1
- package/lib/components/FileUploader/FileUploaderItem.js +2 -2
- package/lib/components/FluidComboBox/FluidComboBox.d.ts +4 -7
- package/lib/components/FluidComboBox/FluidComboBox.js +1 -1
- package/lib/components/FluidDropdown/FluidDropdown.d.ts +4 -8
- package/lib/components/FluidDropdown/FluidDropdown.js +1 -1
- package/lib/components/FluidMultiSelect/FluidFilterableMultiSelect.d.ts +3 -7
- package/lib/components/FluidMultiSelect/FluidMultiSelect.d.ts +3 -7
- package/lib/components/FluidMultiSelect/FluidMultiSelect.js +3 -3
- package/lib/components/FluidNumberInput/FluidNumberInput.d.ts +4 -7
- package/lib/components/FluidNumberInput/FluidNumberInput.js +2 -2
- package/lib/components/FluidSearch/FluidSearch.js +1 -1
- package/lib/components/FluidSelect/FluidSelect.js +1 -1
- package/lib/components/FluidTextInput/FluidTextInput.js +1 -1
- package/lib/components/FluidTimePicker/FluidTimePicker.js +3 -3
- package/lib/components/FluidTimePickerSelect/FluidTimePickerSelect.js +1 -1
- package/lib/components/Grid/CSSGrid.js +3 -3
- package/lib/components/Grid/Column.js +2 -2
- package/lib/components/Grid/ColumnHang.js +1 -1
- package/lib/components/Grid/FlexGrid.js +1 -1
- package/lib/components/Grid/Row.js +1 -1
- package/lib/components/Heading/index.js +2 -2
- package/lib/components/IconButton/index.js +2 -2
- package/lib/components/IconIndicator/index.js +2 -2
- package/lib/components/InlineCheckbox/InlineCheckbox.js +1 -1
- package/lib/components/Layout/index.js +2 -2
- package/lib/components/LayoutDirection/LayoutDirection.js +1 -1
- package/lib/components/Link/Link.js +2 -2
- package/lib/components/ListBox/ListBoxField.d.ts +0 -1
- package/lib/components/ListBox/ListBoxMenuIcon.d.ts +8 -4
- package/lib/components/ListBox/ListBoxMenuIcon.js +10 -6
- package/lib/components/ListBox/ListBoxMenuItem.js +2 -2
- package/lib/components/ListBox/ListBoxSelection.d.ts +3 -6
- package/lib/components/ListBox/ListBoxSelection.js +4 -10
- package/lib/components/ListBox/index.d.ts +5 -3
- package/lib/components/ListBox/next/ListBoxSelection.d.ts +6 -13
- package/lib/components/ListBox/next/ListBoxSelection.js +16 -8
- package/lib/components/ListBox/next/ListBoxTrigger.d.ts +5 -10
- package/lib/components/ListBox/next/ListBoxTrigger.js +5 -6
- package/lib/components/Menu/MenuContext.js +1 -1
- package/lib/components/Menu/MenuItem.js +1 -1
- package/lib/components/MenuButton/index.js +5 -5
- package/lib/components/Modal/Modal.js +19 -35
- package/lib/components/ModalWrapper/ModalWrapper.js +2 -2
- package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +3 -12
- package/lib/components/MultiSelect/FilterableMultiSelect.js +18 -27
- package/lib/components/MultiSelect/MultiSelect.d.ts +2 -2
- package/lib/components/MultiSelect/MultiSelect.js +12 -12
- package/lib/components/Notification/Notification.js +1 -1
- package/lib/components/NumberInput/NumberInput.d.ts +2 -5
- package/lib/components/NumberInput/NumberInput.js +12 -18
- package/lib/components/OverflowMenu/OverflowMenu.d.ts +2 -2
- package/lib/components/OverflowMenu/OverflowMenu.js +4 -4
- package/lib/components/OverflowMenu/next/index.d.ts +1 -1
- package/lib/components/OverflowMenu/next/index.js +2 -2
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +2 -2
- package/lib/components/PageHeader/PageHeader.js +12 -12
- package/lib/components/Pagination/Pagination.js +3 -3
- package/lib/components/PaginationNav/PaginationNav.d.ts +6 -9
- package/lib/components/PaginationNav/PaginationNav.js +21 -22
- package/lib/components/Popover/index.js +8 -8
- package/lib/components/ProgressBar/ProgressBar.js +2 -2
- package/lib/components/ProgressIndicator/ProgressIndicator.d.ts +11 -15
- package/lib/components/ProgressIndicator/ProgressIndicator.js +15 -15
- package/lib/components/RadioButton/RadioButton.js +1 -1
- package/lib/components/RadioButtonGroup/RadioButtonGroup.js +1 -1
- package/lib/components/RadioTile/RadioTile.js +1 -1
- package/lib/components/Select/Select.js +7 -5
- package/lib/components/ShapeIndicator/index.js +2 -2
- package/lib/components/Slider/Slider.d.ts +7 -9
- package/lib/components/Slider/Slider.js +16 -20
- package/lib/components/Stack/HStack.js +1 -1
- package/lib/components/Stack/Stack.js +1 -1
- package/lib/components/Stack/VStack.js +1 -1
- package/lib/components/StructuredList/StructuredList.js +3 -3
- package/lib/components/Tabs/Tabs.js +12 -12
- package/lib/components/Tag/DismissibleTag.js +3 -3
- package/lib/components/Tag/OperationalTag.js +2 -2
- package/lib/components/Tag/SelectableTag.js +2 -2
- package/lib/components/Tag/Tag.js +4 -4
- package/lib/components/Tag/isEllipsisActive.js +1 -1
- package/lib/components/Text/Text.js +1 -1
- package/lib/components/TextArea/TextArea.js +1 -1
- package/lib/components/TextInput/PasswordInput.js +4 -4
- package/lib/components/TextInput/TextInput.js +3 -3
- package/lib/components/Theme/index.js +3 -3
- package/lib/components/Tile/Tile.js +3 -3
- package/lib/components/TimePicker/TimePicker.js +1 -1
- package/lib/components/Toggletip/index.js +4 -4
- package/lib/components/Tooltip/DefinitionTooltip.js +1 -1
- package/lib/components/Tooltip/Tooltip.js +3 -3
- package/lib/components/TreeView/TreeNode.js +6 -6
- package/lib/components/TreeView/TreeView.js +5 -5
- package/lib/components/UIShell/HeaderContainer.js +1 -1
- package/lib/components/UIShell/HeaderMenu.js +1 -1
- package/lib/components/UIShell/Link.js +2 -2
- package/lib/components/UIShell/SideNavItems.js +1 -1
- package/lib/components/UIShell/Switcher.js +1 -1
- package/lib/components/UIShell/SwitcherItem.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/internal/FloatingMenu.js +4 -4
- package/lib/internal/Selection.js +6 -6
- package/lib/internal/useMergedRefs.js +1 -1
- package/lib/internal/useNoInteractiveChildren.js +4 -4
- package/lib/internal/useOutsideClick.js +1 -1
- package/lib/internal/useOverflowItems.js +6 -6
- package/lib/internal/useResizeObserver.js +3 -3
- package/lib/internal/useSavedCallback.js +1 -1
- package/lib/internal/warning.js +1 -1
- package/lib/prop-types/isRequiredOneOf.js +2 -2
- package/lib/tools/events.js +1 -1
- package/lib/tools/wrapComponent.js +1 -1
- package/lib/types/common.d.ts +6 -2
- package/package.json +9 -9
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright IBM Corp. 2016,
|
|
2
|
+
* Copyright IBM Corp. 2016, 2025
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
-
|
|
8
|
+
import type { TranslateWithId } from '../../../types/common';
|
|
9
|
+
declare const translationIds: {
|
|
9
10
|
readonly 'close.menu': "close.menu";
|
|
10
11
|
readonly 'open.menu': "open.menu";
|
|
11
12
|
};
|
|
12
|
-
|
|
13
|
-
export interface ListBoxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
13
|
+
type TranslationKey = keyof typeof translationIds;
|
|
14
|
+
export interface ListBoxTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, TranslateWithId<TranslationKey> {
|
|
14
15
|
/**
|
|
15
16
|
* Specify whether the menu is currently open, which will influence the
|
|
16
17
|
* direction of the menu icon
|
|
17
18
|
*/
|
|
18
19
|
isOpen: boolean;
|
|
19
|
-
/**
|
|
20
|
-
* i18n hook used to provide the appropriate description for the given menu
|
|
21
|
-
* icon. This function takes in an id defined in `translationIds` and should
|
|
22
|
-
* return a string message for that given message id.
|
|
23
|
-
*/
|
|
24
|
-
translateWithId?: (id: TranslationKey) => string;
|
|
25
20
|
}
|
|
26
21
|
/**
|
|
27
22
|
* `ListBoxTrigger` is used to orient the icon up or down depending on the
|
|
@@ -25,13 +25,15 @@ const defaultTranslations = {
|
|
|
25
25
|
[translationIds['close.menu']]: 'Close',
|
|
26
26
|
[translationIds['open.menu']]: 'Open'
|
|
27
27
|
};
|
|
28
|
-
const defaultTranslateWithId =
|
|
28
|
+
const defaultTranslateWithId = messageId => {
|
|
29
|
+
return defaultTranslations[messageId];
|
|
30
|
+
};
|
|
29
31
|
/**
|
|
30
32
|
* `ListBoxTrigger` is used to orient the icon up or down depending on the
|
|
31
33
|
* state of the menu for a given `ListBox`
|
|
32
34
|
*/
|
|
33
35
|
|
|
34
|
-
// eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/
|
|
36
|
+
// eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
35
37
|
const ListBoxTrigger = /*#__PURE__*/React.forwardRef(({
|
|
36
38
|
isOpen,
|
|
37
39
|
translateWithId: t = defaultTranslateWithId,
|
|
@@ -59,12 +61,9 @@ ListBoxTrigger.propTypes = {
|
|
|
59
61
|
*/
|
|
60
62
|
isOpen: PropTypes.bool.isRequired,
|
|
61
63
|
/**
|
|
62
|
-
*
|
|
63
|
-
* icon. This function takes in an id defined in `translationIds` and should
|
|
64
|
-
* return a string message for that given message id.
|
|
64
|
+
* Translates component strings using your i18n tool.
|
|
65
65
|
*/
|
|
66
66
|
translateWithId: PropTypes.func
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
exports.default = ListBoxTrigger;
|
|
70
|
-
exports.translationIds = translationIds;
|
|
@@ -46,7 +46,7 @@ function menuReducer(state, action) {
|
|
|
46
46
|
const MenuContext = /*#__PURE__*/React.createContext({
|
|
47
47
|
state: menuDefaultState,
|
|
48
48
|
// 'dispatch' is populated by the root menu
|
|
49
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
50
50
|
dispatch: _ => {}
|
|
51
51
|
});
|
|
52
52
|
|
|
@@ -344,7 +344,7 @@ const MenuItemRadioGroup = /*#__PURE__*/React.forwardRef(function MenuItemRadioG
|
|
|
344
344
|
onChange,
|
|
345
345
|
defaultValue: defaultSelectedItem ?? {}
|
|
346
346
|
});
|
|
347
|
-
//eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
347
|
+
//eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
348
348
|
function handleClick(item, e) {
|
|
349
349
|
setSelection(item);
|
|
350
350
|
}
|
|
@@ -25,7 +25,7 @@ var mergeRefs = require('../../tools/mergeRefs.js');
|
|
|
25
25
|
|
|
26
26
|
const validButtonKinds = ['primary', 'tertiary', 'ghost'];
|
|
27
27
|
const defaultButtonKind = 'primary';
|
|
28
|
-
// eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/
|
|
28
|
+
// eslint-disable-next-line react/display-name -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
29
29
|
const MenuButton = /*#__PURE__*/React.forwardRef(({
|
|
30
30
|
children,
|
|
31
31
|
className,
|
|
@@ -44,7 +44,7 @@ const MenuButton = /*#__PURE__*/React.forwardRef(({
|
|
|
44
44
|
const id = useId.useId('MenuButton');
|
|
45
45
|
const prefix = usePrefix.usePrefix();
|
|
46
46
|
const triggerRef = React.useRef(null);
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
48
48
|
let middlewares = [];
|
|
49
49
|
if (!enableOnlyFloatingStyles) {
|
|
50
50
|
middlewares = [react.flip({
|
|
@@ -163,7 +163,7 @@ MenuButton.propTypes = {
|
|
|
163
163
|
/**
|
|
164
164
|
* Specify the type of button to be used as the base for the trigger button.
|
|
165
165
|
*/
|
|
166
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
166
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
167
167
|
// @ts-ignore-next-line -- avoid spurious (?) TS2322 error
|
|
168
168
|
kind: PropTypes.oneOf(validButtonKinds),
|
|
169
169
|
/**
|
|
@@ -177,13 +177,13 @@ MenuButton.propTypes = {
|
|
|
177
177
|
/**
|
|
178
178
|
* Specify the size of the button and menu.
|
|
179
179
|
*/
|
|
180
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
181
181
|
// @ts-ignore-next-line -- avoid spurious (?) TS2322 error
|
|
182
182
|
size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg']),
|
|
183
183
|
/**
|
|
184
184
|
* Specify the tabIndex of the button.
|
|
185
185
|
*/
|
|
186
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
187
187
|
// @ts-ignore-next-line -- avoid spurious (?) TS2322 error
|
|
188
188
|
tabIndex: PropTypes.number,
|
|
189
189
|
/**
|
|
@@ -22,7 +22,7 @@ var InlineLoading = require('../InlineLoading/InlineLoading.js');
|
|
|
22
22
|
var index$3 = require('../Layer/index.js');
|
|
23
23
|
var requiredIfGivenPropIsTruthy = require('../../prop-types/requiredIfGivenPropIsTruthy.js');
|
|
24
24
|
var wrapFocus = require('../../internal/wrapFocus.js');
|
|
25
|
-
var
|
|
25
|
+
var useResizeObserver = require('../../internal/useResizeObserver.js');
|
|
26
26
|
var useId = require('../../internal/useId.js');
|
|
27
27
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
28
28
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
@@ -41,7 +41,6 @@ var index$1 = require('../AILabel/index.js');
|
|
|
41
41
|
var utils = require('../../internal/utils.js');
|
|
42
42
|
var warning = require('../../internal/warning.js');
|
|
43
43
|
var ModalPresence = require('./ModalPresence.js');
|
|
44
|
-
var debounce = require('../../node_modules/es-toolkit/dist/compat/function/debounce.js');
|
|
45
44
|
|
|
46
45
|
const ModalSizes = ['xs', 'sm', 'md', 'lg'];
|
|
47
46
|
const invalidOutsideClickMessage = '`<Modal>` prop `preventCloseOnClickOutside` should not be `false` when ' + '`passiveModal` is `false`. Transactional, non-passive Modals should ' + 'not be dissmissable by clicking outside. ' + 'See: https://carbondesignsystem.com/components/modal/usage/#transactional-modal';
|
|
@@ -116,7 +115,6 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
|
|
|
116
115
|
const startTrap = React.useRef(null);
|
|
117
116
|
const endTrap = React.useRef(null);
|
|
118
117
|
const wrapFocusTimeout = React.useRef(null);
|
|
119
|
-
const [isScrollable, setIsScrollable] = React.useState(false);
|
|
120
118
|
const modalInstanceId = `modal-${useId.useId()}`;
|
|
121
119
|
const modalLabelId = `${prefix}--modal-header__label--${modalInstanceId}`;
|
|
122
120
|
const modalHeadingId = `${prefix}--modal-header__heading--${modalInstanceId}`;
|
|
@@ -211,21 +209,16 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
|
|
|
211
209
|
if (!modalContent || !modalContent.classList.contains(`${prefix}--modal-scroll-content`) || !currentActiveNode || !modalContent.contains(currentActiveNode)) {
|
|
212
210
|
return;
|
|
213
211
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// eslint-disable-next-line prefer-const -- https://github.com/carbon-design-system/carbon/issues/20071
|
|
218
|
-
for (let elem of modalContent.children) {
|
|
219
|
-
if (elem.contains(currentActiveNode)) {
|
|
220
|
-
const spaceBelow = modalContent.clientHeight - elem.offsetTop + modalContent.scrollTop - elem.clientHeight;
|
|
221
|
-
if (spaceBelow < gradientSpacing) {
|
|
222
|
-
modalContent.scrollTop = modalContent.scrollTop + (gradientSpacing - spaceBelow);
|
|
223
|
-
}
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
212
|
+
currentActiveNode.scrollIntoView({
|
|
213
|
+
block: 'center'
|
|
214
|
+
});
|
|
227
215
|
}
|
|
228
216
|
const onSecondaryButtonClick = onSecondarySubmit ? onSecondarySubmit : onRequestClose;
|
|
217
|
+
const {
|
|
218
|
+
height
|
|
219
|
+
} = useResizeObserver.useResizeObserver({
|
|
220
|
+
ref: contentRef
|
|
221
|
+
});
|
|
229
222
|
const modalClasses = cx(`${prefix}--modal`, {
|
|
230
223
|
[`${prefix}--modal-tall`]: !passiveModal,
|
|
231
224
|
'is-visible': enablePresence || open,
|
|
@@ -238,8 +231,15 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
|
|
|
238
231
|
[`${prefix}--modal-container--${size}`]: size,
|
|
239
232
|
[`${prefix}--modal-container--full-width`]: isFullWidth
|
|
240
233
|
});
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* isScrollable is implicitly dependent on height, when height gets updated
|
|
237
|
+
* via `useResizeObserver`, clientHeight and scrollHeight get updated too
|
|
238
|
+
*/
|
|
239
|
+
const isScrollable = !!contentRef.current && contentRef?.current?.scrollHeight > contentRef?.current?.clientHeight;
|
|
241
240
|
const contentClasses = cx(`${prefix}--modal-content`, {
|
|
242
|
-
[`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable
|
|
241
|
+
[`${prefix}--modal-scroll-content`]: hasScrollingContent || isScrollable,
|
|
242
|
+
[`${prefix}--modal-scroll-content--no-fade`]: height <= 300
|
|
243
243
|
});
|
|
244
244
|
const footerClasses = cx(`${prefix}--modal-footer`, {
|
|
245
245
|
[`${prefix}--modal-footer--three-button`]: Array.isArray(secondaryButtons) && secondaryButtons.length === 2
|
|
@@ -278,7 +278,7 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
|
|
|
278
278
|
return () => {
|
|
279
279
|
document.removeEventListener('keydown', handleEscapeKey, true);
|
|
280
280
|
};
|
|
281
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/
|
|
281
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
282
282
|
}, [open]);
|
|
283
283
|
React.useEffect(() => {
|
|
284
284
|
return () => {
|
|
@@ -333,29 +333,13 @@ const ModalDialog = /*#__PURE__*/React.forwardRef(function ModalDialog({
|
|
|
333
333
|
}
|
|
334
334
|
}
|
|
335
335
|
}, [open, selectorPrimaryFocus, danger, prefix, enableDialogElement]);
|
|
336
|
-
useIsomorphicEffect.default(() => {
|
|
337
|
-
if (contentRef.current) {
|
|
338
|
-
setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
|
|
339
|
-
}
|
|
340
|
-
function handler() {
|
|
341
|
-
if (contentRef.current) {
|
|
342
|
-
setIsScrollable(contentRef.current.scrollHeight > contentRef.current.clientHeight);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
const debouncedHandler = debounce.debounce(handler, 200);
|
|
346
|
-
window.addEventListener('resize', debouncedHandler);
|
|
347
|
-
return () => {
|
|
348
|
-
debouncedHandler.cancel();
|
|
349
|
-
window.removeEventListener('resize', debouncedHandler);
|
|
350
|
-
};
|
|
351
|
-
}, []);
|
|
352
336
|
|
|
353
337
|
// AILabel always size `sm`
|
|
354
338
|
const candidate = slug ?? decorator;
|
|
355
339
|
const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
|
|
356
340
|
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
357
341
|
size: 'sm'
|
|
358
|
-
}) :
|
|
342
|
+
}) : candidate;
|
|
359
343
|
const modalButton = /*#__PURE__*/React.createElement("div", {
|
|
360
344
|
className: `${prefix}--modal-close-button`
|
|
361
345
|
}, /*#__PURE__*/React.createElement(index$2.IconButton, {
|
|
@@ -21,7 +21,7 @@ var keys = require('../../internal/keyboard/keys.js');
|
|
|
21
21
|
var match = require('../../internal/keyboard/match.js');
|
|
22
22
|
|
|
23
23
|
let didWarnAboutDeprecation = false;
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
25
25
|
process.env.NODE_ENV !== 'production';
|
|
26
26
|
class ModalWrapper extends React.Component {
|
|
27
27
|
constructor(...args) {
|
|
@@ -58,7 +58,7 @@ class ModalWrapper extends React.Component {
|
|
|
58
58
|
handleSubmit?.(evt);
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
62
62
|
if(isDev) {
|
|
63
63
|
process.env.NODE_ENV !== "production" ? warning.warning(didWarnAboutDeprecation, '`<ModalWrapper>` has been deprecated in favor of `<ComposedModal/>` and will be removed in the next major version, `@carbon/react@v2.x`') : void 0;
|
|
64
64
|
didWarnAboutDeprecation = true;
|
|
@@ -7,17 +7,9 @@
|
|
|
7
7
|
import { type UseComboboxProps, type UseMultipleSelectionProps } from 'downshift';
|
|
8
8
|
import React, { type FunctionComponent, type ReactElement, type ReactNode } from 'react';
|
|
9
9
|
import { type MultiSelectSortingProps } from './MultiSelectPropTypes';
|
|
10
|
-
import { type ListBoxSize, type ListBoxType } from '../ListBox';
|
|
11
|
-
import { TranslateWithId } from '../../types/common';
|
|
12
|
-
|
|
13
|
-
* Message ids that will be passed to translateWithId().
|
|
14
|
-
* Combination of message ids from ListBox/next/ListBoxSelection.js and
|
|
15
|
-
* ListBox/next/ListBoxTrigger.js, but we can't access those values directly
|
|
16
|
-
* because those components aren't Typescript. (If you try, TranslationKey
|
|
17
|
-
* ends up just being defined as "string".)
|
|
18
|
-
*/
|
|
19
|
-
type TranslationKey = 'close.menu' | 'open.menu' | 'clear.all' | 'clear.selection';
|
|
20
|
-
export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, React.RefAttributes<HTMLDivElement>, TranslateWithId<TranslationKey> {
|
|
10
|
+
import { type ListBoxMenuIconTranslationKey, type ListBoxSelectionTranslationKey, type ListBoxSize, type ListBoxType } from '../ListBox';
|
|
11
|
+
import type { TranslateWithId } from '../../types/common';
|
|
12
|
+
export interface FilterableMultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, React.RefAttributes<HTMLDivElement>, TranslateWithId<ListBoxSelectionTranslationKey | ListBoxMenuIconTranslationKey> {
|
|
21
13
|
/**
|
|
22
14
|
* Specify a label to be read by screen readers on the container node
|
|
23
15
|
* @deprecated
|
|
@@ -209,4 +201,3 @@ export declare const FilterableMultiSelect: {
|
|
|
209
201
|
defaultProps?: any;
|
|
210
202
|
displayName?: any;
|
|
211
203
|
};
|
|
212
|
-
export {};
|
|
@@ -58,15 +58,6 @@ const {
|
|
|
58
58
|
DropdownKeyDownBackspace,
|
|
59
59
|
FunctionRemoveSelectedItem
|
|
60
60
|
} = Downshift.useMultipleSelection.stateChangeTypes;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Message ids that will be passed to translateWithId().
|
|
64
|
-
* Combination of message ids from ListBox/next/ListBoxSelection.js and
|
|
65
|
-
* ListBox/next/ListBoxTrigger.js, but we can't access those values directly
|
|
66
|
-
* because those components aren't Typescript. (If you try, TranslationKey
|
|
67
|
-
* ends up just being defined as "string".)
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
61
|
const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableMultiSelect({
|
|
71
62
|
autoAlign = false,
|
|
72
63
|
className: containerClassName,
|
|
@@ -113,7 +104,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
113
104
|
isFluid
|
|
114
105
|
} = React.useContext(FormContext.FormContext);
|
|
115
106
|
const isFirstRender = React.useRef(true);
|
|
116
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
117
108
|
const [isFocused, setIsFocused] = React.useState(false);
|
|
118
109
|
const [isOpen, setIsOpen] = React.useState(!!open);
|
|
119
110
|
const [prevOpen, setPrevOpen] = React.useState(!!open);
|
|
@@ -125,9 +116,9 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
125
116
|
inputValue
|
|
126
117
|
}), [items, inputValue, itemToString, filterItems]);
|
|
127
118
|
const nonSelectAllItems = React.useMemo(
|
|
128
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
129
120
|
() => filteredItems.filter(item => !item.isSelectAll), [filteredItems]);
|
|
130
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
131
122
|
const selectAll = filteredItems.some(item => item.isSelectAll);
|
|
132
123
|
const {
|
|
133
124
|
selectedItems: controlledSelectedItems,
|
|
@@ -144,7 +135,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
144
135
|
});
|
|
145
136
|
const selectAllStatus = React.useMemo(() => {
|
|
146
137
|
const selectable = nonSelectAllItems.filter(
|
|
147
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
148
139
|
item => !item.disabled);
|
|
149
140
|
const nonSelectedCount = selectable.filter(item => !controlledSelectedItems.some(sel => isEqual(sel, item))).length;
|
|
150
141
|
const totalCount = selectable.length;
|
|
@@ -154,7 +145,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
154
145
|
};
|
|
155
146
|
}, [controlledSelectedItems, nonSelectAllItems]);
|
|
156
147
|
const handleSelectAllClick = React.useCallback(() => {
|
|
157
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
158
149
|
const selectable = nonSelectAllItems.filter(i => !i.disabled);
|
|
159
150
|
const {
|
|
160
151
|
checked,
|
|
@@ -171,7 +162,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
171
162
|
const toSelect = selectable.filter(e => !controlledSelectedItems.some(sel => isEqual(sel, e)));
|
|
172
163
|
toggleAll([...controlledSelectedItems, ...toSelect]);
|
|
173
164
|
}
|
|
174
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/
|
|
165
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
175
166
|
}, [nonSelectAllItems, selectAllStatus, controlledSelectedItems, toggleAll]);
|
|
176
167
|
const {
|
|
177
168
|
refs,
|
|
@@ -222,14 +213,14 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
222
213
|
|
|
223
214
|
// memoize sorted items to reduce unnecessary expensive sort on rerender
|
|
224
215
|
const sortedItems = React.useMemo(() => {
|
|
225
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
216
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
226
217
|
const selectAllItem = items.find(item => item.isSelectAll);
|
|
227
218
|
const selectableRealItems = nonSelectAllItems.filter(
|
|
228
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
229
220
|
item => !item.disabled);
|
|
230
221
|
|
|
231
222
|
// Sort only non-select-all items, select-all item must stay at the top
|
|
232
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/
|
|
223
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
233
224
|
const sortedReal = sortItems(nonSelectAllItems, {
|
|
234
225
|
selectedItems: {
|
|
235
226
|
top: controlledSelectedItems,
|
|
@@ -246,7 +237,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
246
237
|
return [selectAllItem, ...sortedReal];
|
|
247
238
|
}
|
|
248
239
|
return sortedReal;
|
|
249
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/
|
|
240
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
250
241
|
}, [items, inputValue, controlledSelectedItems, topItems, selectionFeedback, itemToString, compareItems, locale, sortItems, nonSelectAllItems]);
|
|
251
242
|
const inline = type === 'inline';
|
|
252
243
|
const showWarning = !invalid && warn;
|
|
@@ -330,7 +321,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
330
321
|
return () => {
|
|
331
322
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
332
323
|
};
|
|
333
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/
|
|
324
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
334
325
|
}, [isOpen, inputFocused]);
|
|
335
326
|
const {
|
|
336
327
|
getToggleButtonProps,
|
|
@@ -353,9 +344,9 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
353
344
|
inputId,
|
|
354
345
|
inputValue,
|
|
355
346
|
stateReducer,
|
|
356
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
347
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
357
348
|
isItemDisabled(item, _index) {
|
|
358
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
349
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
359
350
|
return item?.disabled;
|
|
360
351
|
}
|
|
361
352
|
});
|
|
@@ -523,11 +514,11 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
523
514
|
const candidateIsAILabel = utils.isComponentElement(candidate, index.AILabel);
|
|
524
515
|
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
525
516
|
size: 'mini'
|
|
526
|
-
}) :
|
|
517
|
+
}) : candidate;
|
|
527
518
|
|
|
528
519
|
// exclude the select-all item from the count
|
|
529
520
|
const selectedItemsLength = controlledSelectedItems.filter(
|
|
530
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
521
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
531
522
|
item => !item.isSelectAll).length;
|
|
532
523
|
const className = cx(`${prefix}--multi-select`, `${prefix}--combo-box`, `${prefix}--multi-select--filterable`, {
|
|
533
524
|
[`${prefix}--multi-select--invalid`]: invalid,
|
|
@@ -709,7 +700,7 @@ const FilterableMultiSelect = /*#__PURE__*/React.forwardRef(function FilterableM
|
|
|
709
700
|
}, normalizedDecorator) : '', /*#__PURE__*/React.createElement(index$1.default.Menu, menuProps, isOpen ? sortedItems.map((item, index) => {
|
|
710
701
|
let isChecked;
|
|
711
702
|
let isIndeterminate = false;
|
|
712
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
703
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
713
704
|
if (item.isSelectAll) {
|
|
714
705
|
isChecked = selectAllStatus.checked;
|
|
715
706
|
isIndeterminate = selectAllStatus.indeterminate;
|
|
@@ -807,7 +798,7 @@ FilterableMultiSelect.propTypes = {
|
|
|
807
798
|
* change, and in some cases they can not be shimmed by Carbon to shield you
|
|
808
799
|
* from potentially breaking changes.
|
|
809
800
|
*/
|
|
810
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/
|
|
801
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
811
802
|
// @ts-ignore
|
|
812
803
|
downshiftProps: PropTypes.shape(Downshift.propTypes),
|
|
813
804
|
/**
|
|
@@ -899,7 +890,7 @@ FilterableMultiSelect.propTypes = {
|
|
|
899
890
|
*/
|
|
900
891
|
titleText: PropTypes.node,
|
|
901
892
|
/**
|
|
902
|
-
*
|
|
893
|
+
* Translates component strings using your i18n tool.
|
|
903
894
|
*/
|
|
904
895
|
translateWithId: PropTypes.func,
|
|
905
896
|
type: ListBoxPropTypes.ListBoxTypePropType,
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { UseSelectProps } from 'downshift';
|
|
8
8
|
import React, { type ReactNode } from 'react';
|
|
9
|
-
import { type ListBoxSize, type ListBoxType } from '../ListBox';
|
|
9
|
+
import { type ListBoxMenuIconTranslationKey, type ListBoxSelectionTranslationKey, type ListBoxSize, type ListBoxType } from '../ListBox';
|
|
10
10
|
import { MultiSelectSortingProps } from './MultiSelectPropTypes';
|
|
11
11
|
import { ListBoxProps } from '../ListBox/ListBox';
|
|
12
12
|
import type { TranslateWithId } from '../../types/common';
|
|
13
13
|
interface OnChangeData<ItemType> {
|
|
14
14
|
selectedItems: ItemType[] | null;
|
|
15
15
|
}
|
|
16
|
-
export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, TranslateWithId<
|
|
16
|
+
export interface MultiSelectProps<ItemType> extends MultiSelectSortingProps<ItemType>, TranslateWithId<ListBoxMenuIconTranslationKey | ListBoxSelectionTranslationKey> {
|
|
17
17
|
/**
|
|
18
18
|
* **Experimental**: Will attempt to automatically align the floating
|
|
19
19
|
* element to avoid collisions with the viewport and being clipped by
|
|
@@ -103,14 +103,14 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
103
103
|
});
|
|
104
104
|
}, [items]);
|
|
105
105
|
|
|
106
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
107
107
|
const selectAll = filteredItems.some(item => item.isSelectAll);
|
|
108
108
|
const prefix = usePrefix.usePrefix();
|
|
109
109
|
const {
|
|
110
110
|
isFluid
|
|
111
111
|
} = React.useContext(FormContext.FormContext);
|
|
112
112
|
const multiSelectInstanceId = useId.useId();
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
114
114
|
const [isFocused, setIsFocused] = React.useState(false);
|
|
115
115
|
const [inputFocused, setInputFocused] = React.useState(false);
|
|
116
116
|
const [isOpen, setIsOpen] = React.useState(open || false);
|
|
@@ -185,9 +185,9 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
185
185
|
},
|
|
186
186
|
selectedItem: controlledSelectedItems,
|
|
187
187
|
items: filteredItems,
|
|
188
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/
|
|
188
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
189
189
|
isItemDisabled(item, _index) {
|
|
190
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
191
191
|
return item?.disabled;
|
|
192
192
|
},
|
|
193
193
|
...downshiftProps
|
|
@@ -383,7 +383,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
383
383
|
[`${prefix}--list-box__field--wrapper--input-focused`]: inputFocused
|
|
384
384
|
});
|
|
385
385
|
const handleFocus = evt => {
|
|
386
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/
|
|
386
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
387
387
|
evt.target.classList.contains(`${prefix}--tag__close-icon`) ? setIsFocused(false) : setIsFocused(evt.type === 'focus' ? true : false);
|
|
388
388
|
};
|
|
389
389
|
const readOnlyEventHandlers = readOnly ? {
|
|
@@ -409,10 +409,10 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
409
409
|
const candidateIsAILabel = utils.isComponentElement(candidate, index$1.AILabel);
|
|
410
410
|
const normalizedDecorator = candidateIsAILabel ? /*#__PURE__*/React.cloneElement(candidate, {
|
|
411
411
|
size: 'mini'
|
|
412
|
-
}) :
|
|
412
|
+
}) : candidate;
|
|
413
413
|
const itemsSelectedText = selectedItems.length > 0 && selectedItems.map(item => item?.text);
|
|
414
414
|
const selectedItemsLength = selectAll ?
|
|
415
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
415
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
416
416
|
selectedItems.filter(item => !item.isSelectAll).length : selectedItems.length;
|
|
417
417
|
|
|
418
418
|
// Memoize the value of getMenuProps to avoid an infinite loop
|
|
@@ -433,7 +433,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
433
433
|
totalSelectableCount
|
|
434
434
|
};
|
|
435
435
|
},
|
|
436
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/
|
|
436
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
437
437
|
[selectedItems, filteredItems]);
|
|
438
438
|
return /*#__PURE__*/React.createElement("div", {
|
|
439
439
|
className: wrapperClasses
|
|
@@ -487,7 +487,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
487
487
|
})), slug ? normalizedDecorator : decorator ? /*#__PURE__*/React.createElement("div", {
|
|
488
488
|
className: `${prefix}--list-box__inner-wrapper--decorator`
|
|
489
489
|
}, normalizedDecorator) : ''), /*#__PURE__*/React.createElement(index$2.default.Menu, menuProps, isOpen &&
|
|
490
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/
|
|
490
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
491
491
|
sortItems(filteredItems, sortOptions).map((item, index) => {
|
|
492
492
|
const {
|
|
493
493
|
hasIndividualSelections,
|
|
@@ -495,10 +495,10 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
|
|
|
495
495
|
totalSelectableCount
|
|
496
496
|
} = getSelectionStats(selectedItems, filteredItems);
|
|
497
497
|
|
|
498
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
498
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
499
499
|
const isChecked = item.isSelectAll ? nonSelectAllSelectedCount === totalSelectableCount && totalSelectableCount > 0 : selectedItems.some(selected => isEqual(selected, item));
|
|
500
500
|
const isIndeterminate =
|
|
501
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/
|
|
501
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
502
502
|
item.isSelectAll && hasIndividualSelections && nonSelectAllSelectedCount < totalSelectableCount;
|
|
503
503
|
const itemProps = getItemProps({
|
|
504
504
|
item,
|
|
@@ -702,7 +702,7 @@ MultiSelect.propTypes = {
|
|
|
702
702
|
*/
|
|
703
703
|
titleText: PropTypes.node,
|
|
704
704
|
/**
|
|
705
|
-
*
|
|
705
|
+
* Translates component strings using your i18n tool.
|
|
706
706
|
*/
|
|
707
707
|
translateWithId: PropTypes.func,
|
|
708
708
|
/**
|
|
@@ -809,7 +809,7 @@ Callout.propTypes = {
|
|
|
809
809
|
/**
|
|
810
810
|
* @deprecated Use `CalloutProps` instead.
|
|
811
811
|
*/
|
|
812
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/
|
|
812
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
813
813
|
|
|
814
814
|
let didWarnAboutDeprecation = false;
|
|
815
815
|
const StaticNotification = props => {
|
|
@@ -5,15 +5,12 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
import React, { type ReactNode } from 'react';
|
|
8
|
-
import { TranslateWithId } from '../../types/common';
|
|
8
|
+
import type { TranslateWithId } from '../../types/common';
|
|
9
9
|
import { type NumberFormatOptions } from '@carbon/utilities';
|
|
10
|
-
|
|
10
|
+
declare const translationIds: {
|
|
11
11
|
readonly 'increment.number': "increment.number";
|
|
12
12
|
readonly 'decrement.number': "decrement.number";
|
|
13
13
|
};
|
|
14
|
-
/**
|
|
15
|
-
* Message ids that will be passed to translateWithId().
|
|
16
|
-
*/
|
|
17
14
|
type TranslationKey = keyof typeof translationIds;
|
|
18
15
|
type ExcludedAttributes = 'defaultValue' | 'id' | 'min' | 'max' | 'onChange' | 'onClick' | 'size' | 'step' | 'value';
|
|
19
16
|
export interface NumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes>, TranslateWithId<TranslationKey> {
|