@carbon/react 1.114.0 → 1.115.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 +2700 -1188
- package/es/components/Accordion/AccordionItem.d.ts +5 -0
- package/es/components/Accordion/AccordionItem.js +0 -6
- package/es/components/BigNumber/BigNumber.d.ts +82 -0
- package/es/components/BigNumber/BigNumberSkeleton.d.ts +16 -0
- package/es/components/BigNumber/constants.d.ts +19 -0
- package/es/components/BigNumber/index.d.ts +9 -0
- package/es/components/Card/Card.d.ts +1 -1
- package/es/components/Card/Card.js +19 -7
- package/es/components/Card/Card.types.d.ts +38 -7
- package/es/components/Card/CardActions.js +1 -1
- package/es/components/Card/CardBody.d.ts +2 -1
- package/es/components/Card/CardBody.js +3 -2
- package/es/components/Card/CardFooter.d.ts +5 -1
- package/es/components/Card/CardFooter.js +13 -2
- package/es/components/Card/CardTitle.d.ts +1 -1
- package/es/components/ComboBox/ComboBox.js +2 -2
- package/es/components/ComposedModal/ComposedModal.js +2 -2
- package/es/components/ContentSwitcher/ContentSwitcher.js +2 -2
- package/es/components/DatePicker/DatePicker.d.ts +1 -1
- package/es/components/DatePicker/DatePicker.js +2 -2
- package/es/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
- package/es/components/FileUploader/FileUploader.js +1 -1
- package/es/components/FileUploader/FileUploaderButton.js +2 -2
- package/es/components/FileUploader/FileUploaderDropContainer.js +13 -7
- package/es/components/FileUploader/FileUploaderItem.js +2 -2
- package/es/components/FormLabel/FormLabel.d.ts +2 -2
- package/es/components/FormLabel/FormLabel.js +1 -1
- package/es/components/Loading/Loading.js +82 -2
- package/es/components/Menu/Menu.js +2 -2
- package/es/components/Menu/MenuItem.js +2 -2
- package/es/components/Modal/Modal.js +3 -3
- package/es/components/MultiSelect/FilterableMultiSelect.js +2 -2
- package/es/components/MultiSelect/MultiSelect.js +2 -2
- package/es/components/Notification/Notification.js +2 -2
- package/es/components/NumberInput/NumberInput.js +2 -2
- package/es/components/OverflowMenu/OverflowMenu.js +2 -2
- package/es/components/OverflowMenuItem/OverflowMenuItem.js +1 -1
- package/es/components/Pagination/Pagination.d.ts +1 -1
- package/es/components/Pagination/Pagination.js +52 -53
- package/es/components/Popover/index.js +1 -1
- package/es/components/RadioTile/RadioTile.js +2 -2
- package/es/components/Search/Search.js +2 -2
- package/es/components/Slider/Slider.js +2 -2
- package/es/components/Tabs/Tabs.js +15 -4
- package/es/components/Tile/Tile.js +3 -3
- package/es/components/Toggletip/index.js +2 -2
- package/es/components/Tooltip/DefinitionTooltip.js +2 -2
- package/es/components/Tooltip/Tooltip.js +2 -2
- package/es/components/TreeView/TreeNode.js +2 -2
- package/es/components/TreeView/TreeView.js +1 -1
- package/es/components/UIShell/HeaderContainer.js +1 -1
- package/es/components/UIShell/HeaderMenu.js +2 -2
- package/es/components/UIShell/HeaderPanel.js +2 -2
- package/es/components/UIShell/SideNav.js +2 -2
- package/es/index.d.ts +2 -1
- package/es/index.js +1 -1
- package/es/internal/DisplayBox.d.ts +14 -0
- package/es/internal/getSupportedLocale.d.ts +12 -0
- package/lib/components/Accordion/AccordionItem.d.ts +5 -0
- package/lib/components/Accordion/AccordionItem.js +0 -6
- package/lib/components/BigNumber/BigNumber.d.ts +82 -0
- package/lib/components/BigNumber/BigNumberSkeleton.d.ts +16 -0
- package/lib/components/BigNumber/constants.d.ts +19 -0
- package/lib/components/BigNumber/index.d.ts +9 -0
- package/lib/components/Card/Card.d.ts +1 -1
- package/lib/components/Card/Card.js +19 -7
- package/lib/components/Card/Card.types.d.ts +38 -7
- package/lib/components/Card/CardActions.js +1 -1
- package/lib/components/Card/CardBody.d.ts +2 -1
- package/lib/components/Card/CardBody.js +3 -2
- package/lib/components/Card/CardFooter.d.ts +5 -1
- package/lib/components/Card/CardFooter.js +13 -2
- package/lib/components/Card/CardTitle.d.ts +1 -1
- package/lib/components/ComboBox/ComboBox.js +2 -2
- package/lib/components/ComposedModal/ComposedModal.js +2 -2
- package/lib/components/ContentSwitcher/ContentSwitcher.js +2 -2
- package/lib/components/DatePicker/DatePicker.d.ts +1 -1
- package/lib/components/DatePicker/DatePicker.js +2 -2
- package/lib/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
- package/lib/components/FileUploader/FileUploader.js +1 -1
- package/lib/components/FileUploader/FileUploaderButton.js +2 -2
- package/lib/components/FileUploader/FileUploaderDropContainer.js +13 -7
- package/lib/components/FileUploader/FileUploaderItem.js +2 -2
- package/lib/components/FormLabel/FormLabel.d.ts +2 -2
- package/lib/components/FormLabel/FormLabel.js +1 -1
- package/lib/components/Loading/Loading.js +81 -1
- package/lib/components/Menu/Menu.js +2 -2
- package/lib/components/Menu/MenuItem.js +2 -2
- package/lib/components/Modal/Modal.js +3 -3
- package/lib/components/MultiSelect/FilterableMultiSelect.js +2 -2
- package/lib/components/MultiSelect/MultiSelect.js +2 -2
- package/lib/components/Notification/Notification.js +2 -2
- package/lib/components/NumberInput/NumberInput.js +2 -2
- package/lib/components/OverflowMenu/OverflowMenu.js +2 -2
- package/lib/components/OverflowMenuItem/OverflowMenuItem.js +1 -1
- package/lib/components/Pagination/Pagination.d.ts +1 -1
- package/lib/components/Pagination/Pagination.js +52 -53
- package/lib/components/Popover/index.js +1 -1
- package/lib/components/RadioTile/RadioTile.js +2 -2
- package/lib/components/Search/Search.js +2 -2
- package/lib/components/Slider/Slider.js +2 -2
- package/lib/components/Tabs/Tabs.js +15 -4
- package/lib/components/Tile/Tile.js +3 -3
- package/lib/components/Toggletip/index.js +2 -2
- package/lib/components/Tooltip/DefinitionTooltip.js +2 -2
- package/lib/components/Tooltip/Tooltip.js +2 -2
- package/lib/components/TreeView/TreeNode.js +2 -2
- package/lib/components/TreeView/TreeView.js +1 -1
- package/lib/components/UIShell/HeaderContainer.js +1 -1
- package/lib/components/UIShell/HeaderMenu.js +2 -2
- package/lib/components/UIShell/HeaderPanel.js +2 -2
- package/lib/components/UIShell/SideNav.js +2 -2
- package/lib/index.d.ts +2 -1
- package/lib/index.js +1 -1
- package/lib/internal/DisplayBox.d.ts +14 -0
- package/lib/internal/getSupportedLocale.d.ts +12 -0
- package/package.json +21 -21
- package/scss/_border-radius.scss +9 -0
- package/scss/components/OptionsTile/_index.scss +5 -0
- package/scss/components/OptionsTile/_options-tile.scss +5 -0
- package/scss/components/big-number/_big-number.scss +9 -0
- package/scss/components/big-number/_index.scss +9 -0
- package/scss/components/coachmark/_coachmark.scss +5 -0
- package/scss/components/coachmark/_index.scss +5 -0
- package/scss/components/edit-in-place/_edit-in-place.scss +5 -0
- package/scss/components/edit-in-place/_index.scss +5 -0
- package/scss/components/full-page-error/_full-page-error.scss +5 -0
- package/scss/components/full-page-error/_index.scss +5 -0
- package/scss/components/interstitial-screen/_index.scss +6 -0
- package/scss/components/interstitial-screen/_interstitial-screen.scss +12 -0
- package/scss/components/scroll-gradient/_index.scss +9 -0
- package/scss/components/scroll-gradient/_scroll-gradient.scss +9 -0
- package/scss/components/user-avatar/_index.scss +9 -0
- package/scss/components/user-avatar/_user-avatar.scss +9 -0
- package/telemetry.yml +91 -3
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
13
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
14
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
15
15
|
const require_Button = require("../Button/Button.js");
|
|
16
16
|
let react = require("react");
|
|
17
17
|
react = require_runtime.__toESM(react);
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
13
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
14
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
15
15
|
const require_events = require("../../tools/events.js");
|
|
16
16
|
let react = require("react");
|
|
17
17
|
react = require_runtime.__toESM(react);
|
|
@@ -57,13 +57,13 @@ function FileUploaderDropContainer({ accept = [], className, id, disabled, label
|
|
|
57
57
|
return acc.concat([curr]);
|
|
58
58
|
}, []);
|
|
59
59
|
}
|
|
60
|
-
const
|
|
61
|
-
if (!files.length) return
|
|
62
|
-
return
|
|
60
|
+
const getAddedFiles = (files) => {
|
|
61
|
+
if (!files.length) return [];
|
|
62
|
+
return validateFiles(multiple ? files : [files[0]]);
|
|
63
63
|
};
|
|
64
64
|
const handleChange = (event) => {
|
|
65
65
|
const files = [...event.target.files ?? []];
|
|
66
|
-
return
|
|
66
|
+
return onAddFiles(event, { addedFiles: getAddedFiles(files) });
|
|
67
67
|
};
|
|
68
68
|
const handleDrop = (event) => {
|
|
69
69
|
const items = [...event.dataTransfer.items ?? []];
|
|
@@ -74,7 +74,13 @@ function FileUploaderDropContainer({ accept = [], className, id, disabled, label
|
|
|
74
74
|
if (file) acc.push(file);
|
|
75
75
|
return acc;
|
|
76
76
|
}, []) : [...event.dataTransfer.files];
|
|
77
|
-
|
|
77
|
+
const addedFiles = getAddedFiles(files);
|
|
78
|
+
if (inputRef.current) try {
|
|
79
|
+
const dataTransfer = new DataTransfer();
|
|
80
|
+
addedFiles.forEach((file) => dataTransfer.items.add(file));
|
|
81
|
+
inputRef.current.files = dataTransfer.files;
|
|
82
|
+
} catch {}
|
|
83
|
+
return onAddFiles(event, { addedFiles });
|
|
78
84
|
};
|
|
79
85
|
const handleClick = () => {
|
|
80
86
|
if (!disabled) inputRef.current?.click();
|
|
@@ -9,10 +9,10 @@ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
11
|
const require_Text = require("../Text/Text.js");
|
|
12
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
13
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
14
12
|
const require_useIsomorphicEffect = require("../../internal/useIsomorphicEffect.js");
|
|
15
13
|
const require_useId = require("../../internal/useId.js");
|
|
14
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
15
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
16
16
|
const require_Tooltip = require("../Tooltip/Tooltip.js");
|
|
17
17
|
const require_Filename = require("./Filename.js");
|
|
18
18
|
let react = require("react");
|
|
@@ -16,7 +16,7 @@ export interface FormLabelProps extends Omit<React.LabelHTMLAttributes<HTMLLabel
|
|
|
16
16
|
*/
|
|
17
17
|
className?: string;
|
|
18
18
|
/**
|
|
19
|
-
* Provide a unique id for the given
|
|
19
|
+
* Provide a unique id for the given `FormLabel`
|
|
20
20
|
*/
|
|
21
21
|
id?: string;
|
|
22
22
|
}
|
|
@@ -32,7 +32,7 @@ declare namespace FormLabel {
|
|
|
32
32
|
*/
|
|
33
33
|
className: PropTypes.Requireable<string>;
|
|
34
34
|
/**
|
|
35
|
-
* Provide a unique id for the given
|
|
35
|
+
* Provide a unique id for the given `FormLabel`
|
|
36
36
|
*/
|
|
37
37
|
id: PropTypes.Requireable<string>;
|
|
38
38
|
};
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
10
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
11
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
11
13
|
let react = require("react");
|
|
12
14
|
react = require_runtime.__toESM(react);
|
|
13
15
|
let classnames = require("classnames");
|
|
@@ -22,8 +24,78 @@ let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
22
24
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
23
25
|
* LICENSE file in the root directory of this source tree.
|
|
24
26
|
*/
|
|
27
|
+
const isModalDialog = (element) => {
|
|
28
|
+
if (element.matches("[aria-modal=\"true\"]")) return true;
|
|
29
|
+
if (!(element instanceof HTMLDialogElement) || !element.open) return false;
|
|
30
|
+
try {
|
|
31
|
+
return element.matches(":modal");
|
|
32
|
+
} catch {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const isLayeredOnTop = (target, overlay) => {
|
|
37
|
+
if (!(target instanceof Element)) return false;
|
|
38
|
+
for (let element = target; element; element = element.parentElement) if (isModalDialog(element)) return !element.contains(overlay);
|
|
39
|
+
return false;
|
|
40
|
+
};
|
|
41
|
+
const focusWithBorrowedTabIndex = (element) => {
|
|
42
|
+
const hadTabIndex = element.hasAttribute("tabindex");
|
|
43
|
+
if (!hadTabIndex) element.setAttribute("tabindex", "-1");
|
|
44
|
+
element.focus();
|
|
45
|
+
if (hadTabIndex) return;
|
|
46
|
+
if (document.activeElement === element) element.addEventListener("blur", () => element.removeAttribute("tabindex"), { once: true });
|
|
47
|
+
else element.removeAttribute("tabindex");
|
|
48
|
+
};
|
|
49
|
+
const restoreFocus = (overlay, previouslyFocused) => {
|
|
50
|
+
const activeElement = document.activeElement;
|
|
51
|
+
if (!(!activeElement || activeElement === document.body || overlay.contains(activeElement)) || !previouslyFocused?.isConnected) return;
|
|
52
|
+
previouslyFocused.focus();
|
|
53
|
+
if (document.activeElement === previouslyFocused) return;
|
|
54
|
+
const fallback = previouslyFocused.parentElement;
|
|
55
|
+
if (!fallback || fallback === document.body || fallback === document.documentElement) return;
|
|
56
|
+
focusWithBorrowedTabIndex(fallback);
|
|
57
|
+
};
|
|
58
|
+
const useFocusTrap = (overlayRef, active) => {
|
|
59
|
+
(0, react.useEffect)(() => {
|
|
60
|
+
const overlay = overlayRef.current;
|
|
61
|
+
if (!active || !overlay) return;
|
|
62
|
+
const previouslyFocused = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
63
|
+
if (!isLayeredOnTop(previouslyFocused, overlay)) overlay.focus();
|
|
64
|
+
let reclaiming = false;
|
|
65
|
+
const reclaimFocus = () => {
|
|
66
|
+
if (reclaiming) return;
|
|
67
|
+
reclaiming = true;
|
|
68
|
+
try {
|
|
69
|
+
overlay.focus();
|
|
70
|
+
} finally {
|
|
71
|
+
reclaiming = false;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const handleFocusIn = (event) => {
|
|
75
|
+
const { target } = event;
|
|
76
|
+
if (!(target instanceof Node) || overlay.contains(target)) return;
|
|
77
|
+
if (isLayeredOnTop(target, overlay)) return;
|
|
78
|
+
reclaimFocus();
|
|
79
|
+
};
|
|
80
|
+
const handleKeyDown = (event) => {
|
|
81
|
+
if (!require_match.match(event, require_keys.Tab)) return;
|
|
82
|
+
if (isLayeredOnTop(event.target, overlay)) return;
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
reclaimFocus();
|
|
85
|
+
};
|
|
86
|
+
document.addEventListener("focusin", handleFocusIn, true);
|
|
87
|
+
document.addEventListener("keydown", handleKeyDown, true);
|
|
88
|
+
return () => {
|
|
89
|
+
document.removeEventListener("focusin", handleFocusIn, true);
|
|
90
|
+
document.removeEventListener("keydown", handleKeyDown, true);
|
|
91
|
+
restoreFocus(overlay, previouslyFocused);
|
|
92
|
+
};
|
|
93
|
+
}, [overlayRef, active]);
|
|
94
|
+
};
|
|
25
95
|
function Loading({ active = true, className: customClassName, withOverlay = true, small = false, description = "loading", ...rest }) {
|
|
26
96
|
const prefix = require_usePrefix.usePrefix();
|
|
97
|
+
const overlayRef = (0, react.useRef)(null);
|
|
98
|
+
useFocusTrap(overlayRef, withOverlay && active);
|
|
27
99
|
const loadingClassName = (0, classnames.default)(customClassName, {
|
|
28
100
|
[`${prefix}--loading`]: true,
|
|
29
101
|
[`${prefix}--loading--small`]: small,
|
|
@@ -62,7 +134,15 @@ function Loading({ active = true, className: customClassName, withOverlay = true
|
|
|
62
134
|
});
|
|
63
135
|
return withOverlay ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
64
136
|
className: overlayClassName,
|
|
65
|
-
|
|
137
|
+
role: "presentation",
|
|
138
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
139
|
+
ref: overlayRef,
|
|
140
|
+
role: active ? "dialog" : void 0,
|
|
141
|
+
"aria-modal": active ? "true" : void 0,
|
|
142
|
+
"aria-label": active ? description : void 0,
|
|
143
|
+
tabIndex: active ? -1 : void 0,
|
|
144
|
+
children: loading
|
|
145
|
+
})
|
|
66
146
|
}) : loading;
|
|
67
147
|
}
|
|
68
148
|
Loading.propTypes = {
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
11
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
12
10
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
13
11
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
12
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
13
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
14
14
|
const require_MenuContext = require("./MenuContext.js");
|
|
15
15
|
const require_useLayoutDirection = require("../LayoutDirection/useLayoutDirection.js");
|
|
16
16
|
const require_environment = require("../../internal/environment.js");
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
10
|
const require_Text = require("../Text/Text.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_defaultItemToString = require("../../internal/defaultItemToString.js");
|
|
15
13
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
14
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
15
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
16
16
|
const require_MenuContext = require("./MenuContext.js");
|
|
17
17
|
const require_useLayoutDirection = require("../LayoutDirection/useLayoutDirection.js");
|
|
18
18
|
const require_Menu = require("./Menu.js");
|
|
@@ -10,13 +10,13 @@ const require_noopFn = require("../../internal/noopFn.js");
|
|
|
10
10
|
const require_warning = require("../../internal/warning.js");
|
|
11
11
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
12
12
|
const require_Text = require("../Text/Text.js");
|
|
13
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
14
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
15
|
-
const require_navigation = require("../../internal/keyboard/navigation.js");
|
|
16
13
|
const require_useId = require("../../internal/useId.js");
|
|
17
14
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
18
15
|
const require_utils = require("../../internal/utils.js");
|
|
19
16
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
17
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
18
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
19
|
+
const require_navigation = require("../../internal/keyboard/navigation.js");
|
|
20
20
|
const require_index = require("../FeatureFlags/index.js");
|
|
21
21
|
const require_index$1 = require("../IconButton/index.js");
|
|
22
22
|
const require_index$2 = require("../Button/index.js");
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
11
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
12
10
|
const require_useIsomorphicEffect = require("../../internal/useIsomorphicEffect.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
15
13
|
const require_defaultItemToString = require("../../internal/defaultItemToString.js");
|
|
16
14
|
const require_isItemDisabled = require("../../internal/isItemDisabled.js");
|
|
17
15
|
const require_utils = require("../../internal/utils.js");
|
|
16
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
17
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
18
18
|
const require_index = require("../AILabel/index.js");
|
|
19
19
|
const require_mergeRefs = require("../../tools/mergeRefs.js");
|
|
20
20
|
const require_hasHelperText = require("../../internal/hasHelperText.js");
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useIsomorphicEffect = require("../../internal/useIsomorphicEffect.js");
|
|
14
12
|
const require_useId = require("../../internal/useId.js");
|
|
15
13
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
16
14
|
const require_defaultItemToString = require("../../internal/defaultItemToString.js");
|
|
17
15
|
const require_isItemDisabled = require("../../internal/isItemDisabled.js");
|
|
18
16
|
const require_utils = require("../../internal/utils.js");
|
|
17
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
18
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
19
19
|
const require_index = require("../FeatureFlags/index.js");
|
|
20
20
|
const require_index$1 = require("../AILabel/index.js");
|
|
21
21
|
const require_mergeRefs = require("../../tools/mergeRefs.js");
|
|
@@ -10,12 +10,12 @@ const require_noopFn = require("../../internal/noopFn.js");
|
|
|
10
10
|
const require_warning = require("../../internal/warning.js");
|
|
11
11
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
12
12
|
const require_Text = require("../Text/Text.js");
|
|
13
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
14
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
15
13
|
const require_useIsomorphicEffect = require("../../internal/useIsomorphicEffect.js");
|
|
16
14
|
const require_useId = require("../../internal/useId.js");
|
|
17
15
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
18
16
|
const require_deprecateValuesWithin = require("../../prop-types/deprecateValuesWithin.js");
|
|
17
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
18
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
19
19
|
const require_index = require("../FeatureFlags/index.js");
|
|
20
20
|
const require_useNoInteractiveChildren = require("../../internal/useNoInteractiveChildren.js");
|
|
21
21
|
const require_index$1 = require("../Button/index.js");
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
10
|
const require_Text = require("../Text/Text.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
14
12
|
const require_utils = require("../../internal/utils.js");
|
|
15
13
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
14
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
15
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
16
16
|
const require_index = require("../AILabel/index.js");
|
|
17
17
|
const require_useControllableState = require("../../internal/useControllableState.js");
|
|
18
18
|
const require_useNormalizedInputProps = require("../../internal/useNormalizedInputProps.js");
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_setupGetInstanceId = require("../../tools/setupGetInstanceId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
15
13
|
const require_deprecateValuesWithin = require("../../prop-types/deprecateValuesWithin.js");
|
|
14
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
15
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
16
16
|
const require_mapPopoverAlign = require("../../tools/mapPopoverAlign.js");
|
|
17
17
|
const require_index = require("../IconButton/index.js");
|
|
18
18
|
const require_mergeRefs = require("../../tools/mergeRefs.js");
|
|
@@ -9,9 +9,9 @@ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
|
9
9
|
const require_warning = require("../../internal/warning.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
11
|
const require_Text = require("../Text/Text.js");
|
|
12
|
+
const require_useId = require("../../internal/useId.js");
|
|
12
13
|
const require_keys = require("../../internal/keyboard/keys.js");
|
|
13
14
|
const require_match = require("../../internal/keyboard/match.js");
|
|
14
|
-
const require_useId = require("../../internal/useId.js");
|
|
15
15
|
let react = require("react");
|
|
16
16
|
react = require_runtime.__toESM(react);
|
|
17
17
|
let classnames = require("classnames");
|
|
@@ -108,7 +108,7 @@ export interface PaginationProps extends Omit<React.HTMLAttributes<HTMLDivElemen
|
|
|
108
108
|
/**
|
|
109
109
|
* The choices for `pageSize`.
|
|
110
110
|
*/
|
|
111
|
-
pageSizes
|
|
111
|
+
pageSizes?: Array<number | PaginationPageSize>;
|
|
112
112
|
/**
|
|
113
113
|
* The translatable text showing the current page.
|
|
114
114
|
*/
|
|
@@ -30,14 +30,11 @@ react_fast_compare = require_runtime.__toESM(react_fast_compare);
|
|
|
30
30
|
* This source code is licensed under the Apache-2.0 license found in the
|
|
31
31
|
* LICENSE file in the root directory of this source tree.
|
|
32
32
|
*/
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
value: size
|
|
39
|
-
}));
|
|
40
|
-
};
|
|
33
|
+
const mapPageSizesToObject = (sizes) => sizes && sizes.length ? sizes.map((size) => typeof size === "object" ? size : {
|
|
34
|
+
text: String(size),
|
|
35
|
+
value: size
|
|
36
|
+
}) : void 0;
|
|
37
|
+
const DEFAULT_PAGE_SIZE = 10;
|
|
41
38
|
function renderSelectItems(total) {
|
|
42
39
|
let counter = 1;
|
|
43
40
|
const itemArr = [];
|
|
@@ -51,12 +48,11 @@ function renderSelectItems(total) {
|
|
|
51
48
|
return itemArr;
|
|
52
49
|
}
|
|
53
50
|
const getPageSize = (pageSizes, pageSize) => {
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
})) return pageSize;
|
|
51
|
+
if (!pageSizes) {
|
|
52
|
+
const resolved = pageSize ?? DEFAULT_PAGE_SIZE;
|
|
53
|
+
return resolved > 0 ? resolved : DEFAULT_PAGE_SIZE;
|
|
58
54
|
}
|
|
59
|
-
return pageSizes[0].value;
|
|
55
|
+
return typeof pageSize !== "undefined" && pageSizes.some((size) => pageSize === size.value) ? pageSize : pageSizes[0].value;
|
|
60
56
|
};
|
|
61
57
|
const Pagination = react.default.forwardRef(({ backwardText = "Previous page", backwardTextTooltipPosition = "top", className: customClassName = "", disabled = false, forwardText = "Next page", forwardTextTooltipPosition = "top", id, isLastPage = false, itemText = (min, max) => `${min}–${max} items`, itemRangeText = (min, max, total) => `${min}–${max} of ${total} items`, itemsPerPageText = "Items per page:", onChange, pageNumberText: _pageNumberText, pageRangeText = (_current, total) => `of ${total} ${total === 1 ? "page" : "pages"}`, pageSelectLabelText = (total) => `Page of ${total} ${total === 1 ? "page" : "pages"}`, page: controlledPage = 1, pageInputDisabled, renderPageSelect, pageSize: controlledPageSize, pageSizeInputDisabled, pageSizes: controlledPageSizes, pageText = (page) => `page ${page}`, pagesUnknown = false, size = "md", totalItems, ...rest }, ref) => {
|
|
62
58
|
const prefix = require_usePrefix.usePrefix();
|
|
@@ -93,6 +89,13 @@ const Pagination = react.default.forwardRef(({ backwardText = "Previous page", b
|
|
|
93
89
|
[`${prefix}--pagination__button--no-index`]: forwardButtonDisabled
|
|
94
90
|
});
|
|
95
91
|
const selectItems = renderPageSelect ? [] : renderSelectItems(totalPages);
|
|
92
|
+
const pageSelectNode = pagesUnknown ? null : renderPageSelect?.({
|
|
93
|
+
currentPage: page,
|
|
94
|
+
totalPages,
|
|
95
|
+
currentPageSize: pageSize,
|
|
96
|
+
pageSelectLabelText: pageSelectLabelText(totalPages),
|
|
97
|
+
onSetPage: handleSetPage
|
|
98
|
+
}) ?? null;
|
|
96
99
|
const focusMap = {
|
|
97
100
|
backward: backBtnRef,
|
|
98
101
|
forward: forwardBtnRef
|
|
@@ -121,7 +124,13 @@ const Pagination = react.default.forwardRef(({ backwardText = "Previous page", b
|
|
|
121
124
|
setPage(controlledPage);
|
|
122
125
|
}, [controlledPage]);
|
|
123
126
|
(0, react.useEffect)(() => {
|
|
124
|
-
if (
|
|
127
|
+
if ((0, react_fast_compare.default)(prevControlledPageSizes, normalizedControlledPageSizes)) return;
|
|
128
|
+
if (!normalizedControlledPageSizes) {
|
|
129
|
+
const nextPageSize = getPageSize(void 0, controlledPageSize);
|
|
130
|
+
setPageSizes(void 0);
|
|
131
|
+
setPageSize(nextPageSize);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
125
134
|
setPageSizes((prev) => (0, react_fast_compare.default)(normalizedControlledPageSizes, prev) ? prev : normalizedControlledPageSizes);
|
|
126
135
|
const nextPageSize = getPageSize(normalizedControlledPageSizes, controlledPageSize ?? pageSize);
|
|
127
136
|
const hasPageSize = normalizedControlledPageSizes.some((size) => {
|
|
@@ -209,46 +218,36 @@ const Pagination = react.default.forwardRef(({ backwardText = "Previous page", b
|
|
|
209
218
|
ref,
|
|
210
219
|
...rest,
|
|
211
220
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
212
|
-
className: `${prefix}--pagination__left`,
|
|
213
|
-
children: [
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
value:
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
className: `${prefix}--pagination__text ${prefix}--pagination__items-count`,
|
|
237
|
-
children: pagesUnknown || !totalItems ? totalItems === 0 ? itemRangeText(0, 0, 0) : itemText(pageSize * (page - 1) + 1, page * pageSize) : itemRangeText(Math.min(pageSize * (page - 1) + 1, totalItems), Math.min(page * pageSize, totalItems), totalItems)
|
|
238
|
-
})
|
|
239
|
-
]
|
|
221
|
+
className: (0, classnames.default)(`${prefix}--pagination__left`, { [`${prefix}--pagination__left--no-sizer`]: !pageSizes }),
|
|
222
|
+
children: [pageSizes && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
223
|
+
id: `${prefix}-pagination-select-${inputId}-count-label`,
|
|
224
|
+
className: `${prefix}--pagination__text`,
|
|
225
|
+
htmlFor: `${prefix}-pagination-select-${inputId}`,
|
|
226
|
+
children: itemsPerPageText
|
|
227
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index$1.default, {
|
|
228
|
+
id: `${prefix}-pagination-select-${inputId}`,
|
|
229
|
+
className: `${prefix}--select__item-count`,
|
|
230
|
+
labelText: "",
|
|
231
|
+
hideLabel: true,
|
|
232
|
+
noLabel: true,
|
|
233
|
+
inline: true,
|
|
234
|
+
onChange: handleSizeChange,
|
|
235
|
+
disabled: pageSizeInputDisabled || disabled,
|
|
236
|
+
value: pageSize,
|
|
237
|
+
children: pageSizes.map((sizeObj) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index$2.default, {
|
|
238
|
+
value: sizeObj.value,
|
|
239
|
+
text: String(sizeObj.text)
|
|
240
|
+
}, sizeObj.value))
|
|
241
|
+
})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
242
|
+
className: `${prefix}--pagination__text ${prefix}--pagination__items-count`,
|
|
243
|
+
children: pagesUnknown || !totalItems ? totalItems === 0 ? itemRangeText(0, 0, 0) : itemText(pageSize * (page - 1) + 1, page * pageSize) : itemRangeText(Math.min(pageSize * (page - 1) + 1, totalItems), Math.min(page * pageSize, totalItems), totalItems)
|
|
244
|
+
})]
|
|
240
245
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
241
|
-
className: `${prefix}--pagination__right`,
|
|
246
|
+
className: (0, classnames.default)(`${prefix}--pagination__right`, { [`${prefix}--pagination__right--no-content`]: !pagesUnknown && !!renderPageSelect }),
|
|
242
247
|
children: [pagesUnknown ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
243
248
|
className: `${prefix}--pagination__text ${prefix}--pagination__page-text ${prefix}--pagination__unknown-pages-text`,
|
|
244
249
|
children: pageText(page)
|
|
245
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [renderPageSelect ?
|
|
246
|
-
currentPage: page,
|
|
247
|
-
totalPages,
|
|
248
|
-
currentPageSize: pageSize,
|
|
249
|
-
pageSelectLabelText: pageSelectLabelText(totalPages),
|
|
250
|
-
onSetPage: handleSetPage
|
|
251
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index$1.default, {
|
|
250
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [renderPageSelect ? pageSelectNode : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index$1.default, {
|
|
252
251
|
id: `${prefix}-pagination-select-${inputId}-right`,
|
|
253
252
|
className: `${prefix}--select__page-number`,
|
|
254
253
|
labelText: pageSelectLabelText(totalPages),
|
|
@@ -260,7 +259,7 @@ const Pagination = react.default.forwardRef(({ backwardText = "Previous page", b
|
|
|
260
259
|
children: selectItems
|
|
261
260
|
}, page), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
262
261
|
className: `${prefix}--pagination__text`,
|
|
263
|
-
children: pageRangeText(page, totalPages)
|
|
262
|
+
children: pageSelectNode == null && renderPageSelect ? `${page} ${pageRangeText(page, totalPages)}` : pageRangeText(page, totalPages)
|
|
264
263
|
})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
265
264
|
className: `${prefix}--pagination__control-buttons`,
|
|
266
265
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index.IconButton, {
|
|
@@ -381,10 +380,10 @@ Pagination.propTypes = {
|
|
|
381
380
|
/**
|
|
382
381
|
* The choices for `pageSize`.
|
|
383
382
|
*/
|
|
384
|
-
pageSizes: prop_types.default.
|
|
383
|
+
pageSizes: prop_types.default.arrayOf(prop_types.default.oneOfType([prop_types.default.number, prop_types.default.shape({
|
|
385
384
|
text: prop_types.default.string.isRequired,
|
|
386
385
|
value: prop_types.default.number.isRequired
|
|
387
|
-
})
|
|
386
|
+
})])),
|
|
388
387
|
/**
|
|
389
388
|
* The translatable text showing the current page.
|
|
390
389
|
*/
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
|
-
const require_navigation = require("../../internal/keyboard/navigation.js");
|
|
11
10
|
const require_useIsomorphicEffect = require("../../internal/useIsomorphicEffect.js");
|
|
12
11
|
const require_deprecateValuesWithin = require("../../prop-types/deprecateValuesWithin.js");
|
|
13
12
|
const require_utils = require("../../internal/utils.js");
|
|
14
13
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
15
14
|
const require_useEvent = require("../../internal/useEvent.js");
|
|
15
|
+
const require_navigation = require("../../internal/keyboard/navigation.js");
|
|
16
16
|
const require_mapPopoverAlign = require("../../tools/mapPopoverAlign.js");
|
|
17
17
|
const require_index = require("../FeatureFlags/index.js");
|
|
18
18
|
let react = require("react");
|
|
@@ -9,11 +9,11 @@ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
11
|
const require_Text = require("../Text/Text.js");
|
|
12
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
13
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
14
12
|
const require_useId = require("../../internal/useId.js");
|
|
15
13
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
16
14
|
const require_utils = require("../../internal/utils.js");
|
|
15
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
16
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
17
17
|
const require_index = require("../FeatureFlags/index.js");
|
|
18
18
|
const require_index$1 = require("../AILabel/index.js");
|
|
19
19
|
let react = require("react");
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_noopFn = require("../../internal/noopFn.js");
|
|
10
10
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
15
13
|
const require_useMergedRefs = require("../../internal/useMergedRefs.js");
|
|
14
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
15
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
16
16
|
const require_Tooltip = require("../Tooltip/Tooltip.js");
|
|
17
17
|
const require_events = require("../../tools/events.js");
|
|
18
18
|
const require_FormContext = require("../FluidForm/FormContext.js");
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
9
9
|
const require_usePrefix = require("../../internal/usePrefix.js");
|
|
10
10
|
const require_Text = require("../Text/Text.js");
|
|
11
|
-
const require_keys = require("../../internal/keyboard/keys.js");
|
|
12
|
-
const require_match = require("../../internal/keyboard/match.js");
|
|
13
11
|
const require_useId = require("../../internal/useId.js");
|
|
14
12
|
const require_deprecate = require("../../prop-types/deprecate.js");
|
|
13
|
+
const require_keys = require("../../internal/keyboard/keys.js");
|
|
14
|
+
const require_match = require("../../internal/keyboard/match.js");
|
|
15
15
|
const require_Tooltip = require("../Tooltip/Tooltip.js");
|
|
16
16
|
const require_useNormalizedInputProps = require("../../internal/useNormalizedInputProps.js");
|
|
17
17
|
const require_clamp = require("../../internal/clamp.js");
|