@carbon/react 1.102.0 → 1.103.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 -1011
- package/es/components/Breadcrumb/BreadcrumbItem.js +1 -1
- package/es/components/Button/Button.Skeleton.js +2 -1
- package/es/components/Button/Button.d.ts +4 -4
- package/es/components/Button/Button.js +4 -4
- package/es/components/Button/index.js +1 -1
- package/es/components/ButtonSet/ButtonSet.js +1 -1
- package/es/components/Checkbox/index.js +1 -1
- package/es/components/ComboBox/ComboBox.js +2 -2
- package/es/components/ComposedModal/ComposedModal.js +0 -3
- package/es/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
- package/es/components/ComposedModal/ComposedModalPresence.js +14 -1
- package/es/components/ComposedModal/index.d.ts +1 -1
- package/es/components/ContainedList/index.js +1 -1
- package/es/components/DataTable/TableHeader.js +1 -1
- package/es/components/DataTable/TableRow.js +1 -1
- package/es/components/DataTable/TableToolbarMenu.js +1 -1
- package/es/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
- package/es/components/DatePicker/DatePicker.Skeleton.js +2 -2
- package/es/components/DatePicker/DatePicker.d.ts +4 -2
- package/es/components/DatePicker/DatePicker.js +9 -6
- package/es/components/DatePicker/index.js +1 -1
- package/es/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
- package/es/components/DatePicker/plugins/rangePlugin.js +2 -1
- package/es/components/{UIShell/_utils.d.ts → DatePicker/utils.d.ts} +2 -2
- package/es/components/{UIShell/_utils.js → DatePicker/utils.js} +2 -2
- package/es/components/DatePickerInput/DatePickerInput.js +1 -1
- package/es/components/Dialog/Dialog.js +1 -1
- package/es/components/Dropdown/index.js +1 -1
- package/es/components/ExpandableSearch/ExpandableSearch.js +1 -1
- package/es/components/FeatureFlags/index.d.ts +8 -18
- package/es/components/FeatureFlags/index.js +23 -103
- package/es/components/FileUploader/FileUploader.Skeleton.js +1 -1
- package/es/components/FileUploader/FileUploaderButton.d.ts +1 -1
- package/es/components/FileUploader/FileUploaderButton.js +3 -7
- package/es/components/Icon/Icon.Skeleton.js +1 -1
- package/es/components/IconIndicator/index.js +1 -1
- package/es/components/Menu/MenuItem.js +1 -1
- package/es/components/Modal/ModalPresence.d.ts +9 -1
- package/es/components/Modal/ModalPresence.js +14 -1
- package/es/components/Modal/index.d.ts +2 -2
- package/es/components/MultiSelect/MultiSelect.js +9 -10
- package/es/components/Notification/Notification.js +1 -1
- package/es/components/NumberInput/NumberInput.js +15 -13
- package/es/components/OverflowMenu/OverflowMenu.d.ts +1 -1
- package/es/components/OverflowMenu/OverflowMenu.js +3 -5
- package/es/components/OverflowMenuV2/index.js +1 -1
- package/es/components/PageHeader/PageHeader.js +2 -23
- package/es/components/Pagination/Pagination.Skeleton.js +1 -1
- package/es/components/Pagination/Pagination.d.ts +4 -0
- package/es/components/Pagination/Pagination.js +6 -1
- package/es/components/Pagination/experimental/Pagination.js +12 -1
- package/es/components/Popover/index.js +1 -1
- package/es/components/RadioButton/RadioButton.Skeleton.js +1 -1
- package/es/components/Search/index.js +1 -1
- package/es/components/Select/index.js +1 -1
- package/es/components/ShapeIndicator/index.js +1 -1
- package/es/components/Slider/Slider.js +230 -249
- package/es/components/Slider/SliderHandles.js +65 -53
- package/es/components/Switch/IconSwitch.js +1 -1
- package/es/components/Tabs/Tabs.js +10 -12
- package/es/components/Tag/Tag.Skeleton.js +1 -1
- package/es/components/TextArea/TextArea.js +1 -1
- package/es/components/TextArea/index.js +1 -1
- package/es/components/TextInput/index.js +1 -1
- package/es/components/Tile/Tile.d.ts +2 -2
- package/es/components/Tile/Tile.js +7 -2
- package/es/components/Toggle/Toggle.Skeleton.js +1 -1
- package/es/components/Toggletip/index.js +1 -1
- package/es/components/UIShell/HeaderMenu.js +1 -1
- package/es/components/UIShell/SideNav.d.ts +1 -4
- package/es/components/UIShell/SideNav.js +10 -25
- package/es/components/UIShell/SideNavContext.d.ts +17 -0
- package/es/components/UIShell/SideNavContext.js +24 -0
- package/es/components/UIShell/SideNavItems.d.ts +1 -1
- package/es/components/UIShell/SideNavItems.js +12 -16
- package/es/components/UIShell/SideNavLink.js +8 -4
- package/es/components/UIShell/SideNavMenu.js +7 -5
- package/es/index.js +30 -30
- package/es/internal/useNoInteractiveChildren.js +25 -30
- package/es/internal/usePresence.d.ts +1 -1
- package/es/internal/usePresence.js +14 -17
- package/lib/components/Button/Button.Skeleton.js +2 -1
- package/lib/components/Button/Button.d.ts +4 -4
- package/lib/components/Button/Button.js +4 -4
- package/lib/components/Button/index.js +1 -1
- package/lib/components/ButtonSet/ButtonSet.js +1 -1
- package/lib/components/Checkbox/index.js +1 -1
- package/lib/components/ComboBox/ComboBox.js +2 -2
- package/lib/components/ComposedModal/ComposedModal.js +0 -3
- package/lib/components/ComposedModal/ComposedModalPresence.d.ts +9 -1
- package/lib/components/ComposedModal/ComposedModalPresence.js +14 -0
- package/lib/components/ComposedModal/index.d.ts +1 -1
- package/lib/components/ContainedList/index.js +0 -3
- package/lib/components/DataTable/TableToolbarMenu.js +1 -1
- package/lib/components/DatePicker/DatePicker.Skeleton.d.ts +8 -5
- package/lib/components/DatePicker/DatePicker.Skeleton.js +2 -2
- package/lib/components/DatePicker/DatePicker.d.ts +4 -2
- package/lib/components/DatePicker/DatePicker.js +9 -6
- package/lib/components/DatePicker/index.js +1 -1
- package/lib/components/DatePicker/plugins/rangePlugin.d.ts +1 -1
- package/lib/components/DatePicker/plugins/rangePlugin.js +2 -1
- package/lib/components/{UIShell/_utils.d.ts → DatePicker/utils.d.ts} +2 -2
- package/lib/components/{UIShell/_utils.js → DatePicker/utils.js} +2 -2
- package/lib/components/Dropdown/index.js +1 -1
- package/lib/components/FeatureFlags/index.d.ts +8 -18
- package/lib/components/FeatureFlags/index.js +21 -102
- package/lib/components/FileUploader/FileUploader.Skeleton.js +1 -1
- package/lib/components/FileUploader/FileUploaderButton.d.ts +1 -1
- package/lib/components/FileUploader/FileUploaderButton.js +2 -6
- package/lib/components/Icon/Icon.Skeleton.js +0 -3
- package/lib/components/IconIndicator/index.js +0 -3
- package/lib/components/Modal/ModalPresence.d.ts +9 -1
- package/lib/components/Modal/ModalPresence.js +14 -0
- package/lib/components/Modal/index.d.ts +2 -2
- package/lib/components/MultiSelect/MultiSelect.js +8 -9
- package/lib/components/NumberInput/NumberInput.js +14 -12
- package/lib/components/OverflowMenu/OverflowMenu.d.ts +1 -1
- package/lib/components/OverflowMenu/OverflowMenu.js +2 -7
- package/lib/components/OverflowMenuV2/index.js +1 -1
- package/lib/components/PageHeader/PageHeader.js +2 -23
- package/lib/components/Pagination/Pagination.Skeleton.js +0 -3
- package/lib/components/Pagination/Pagination.d.ts +4 -0
- package/lib/components/Pagination/Pagination.js +6 -1
- package/lib/components/Pagination/experimental/Pagination.js +12 -1
- package/lib/components/RadioButton/RadioButton.Skeleton.js +0 -3
- package/lib/components/Search/index.js +1 -1
- package/lib/components/Select/index.js +1 -1
- package/lib/components/ShapeIndicator/index.js +0 -3
- package/lib/components/Slider/Slider.js +229 -248
- package/lib/components/Slider/SliderHandles.js +64 -52
- package/lib/components/Tabs/Tabs.js +9 -11
- package/lib/components/Tag/Tag.Skeleton.js +0 -3
- package/lib/components/TextArea/index.js +1 -1
- package/lib/components/TextInput/index.js +1 -1
- package/lib/components/Tile/Tile.d.ts +2 -2
- package/lib/components/Tile/Tile.js +6 -1
- package/lib/components/Toggle/Toggle.Skeleton.js +0 -3
- package/lib/components/Toggletip/index.js +0 -3
- package/lib/components/UIShell/SideNav.d.ts +1 -4
- package/lib/components/UIShell/SideNav.js +8 -24
- package/lib/components/UIShell/SideNavContext.d.ts +17 -0
- package/lib/components/UIShell/SideNavContext.js +27 -0
- package/lib/components/UIShell/SideNavItems.d.ts +1 -1
- package/lib/components/UIShell/SideNavItems.js +11 -15
- package/lib/components/UIShell/SideNavLink.js +7 -3
- package/lib/components/UIShell/SideNavMenu.js +8 -6
- package/lib/index.js +102 -100
- package/lib/internal/useNoInteractiveChildren.js +25 -30
- package/lib/internal/usePresence.d.ts +1 -1
- package/lib/internal/usePresence.js +13 -16
- package/package.json +5 -5
- package/telemetry.yml +2 -1
|
@@ -12,58 +12,70 @@ var usePrefix = require('../../internal/usePrefix.js');
|
|
|
12
12
|
var React = require('react');
|
|
13
13
|
|
|
14
14
|
var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path0, _path1, _path10, _path11, _path12;
|
|
15
|
-
const LowerHandle = props =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
})),
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
})
|
|
15
|
+
const LowerHandle = props => {
|
|
16
|
+
const prefix = usePrefix.usePrefix();
|
|
17
|
+
return /*#__PURE__*/React.createElement("svg", _rollupPluginBabelHelpers.extends({
|
|
18
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
19
|
+
viewBox: "0 0 16 24",
|
|
20
|
+
className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower`
|
|
21
|
+
}, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
|
|
22
|
+
d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
|
|
23
|
+
})), _path2 || (_path2 = /*#__PURE__*/React.createElement("path", {
|
|
24
|
+
fill: "none",
|
|
25
|
+
d: "M-4 0h24v24H-4z"
|
|
26
|
+
})));
|
|
27
|
+
};
|
|
28
|
+
const LowerHandleFocus = props => {
|
|
29
|
+
const prefix = usePrefix.usePrefix();
|
|
30
|
+
return /*#__PURE__*/React.createElement("svg", _rollupPluginBabelHelpers.extends({
|
|
31
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
32
|
+
viewBox: "0 0 16 24",
|
|
33
|
+
className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower ${prefix}--slider__thumb-icon--focus`
|
|
34
|
+
}, props), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
|
|
35
|
+
d: "M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"
|
|
36
|
+
})), _path4 || (_path4 = /*#__PURE__*/React.createElement("path", {
|
|
37
|
+
fill: "none",
|
|
38
|
+
d: "M-4 0h24v24H-4z"
|
|
39
|
+
})), _path5 || (_path5 = /*#__PURE__*/React.createElement("path", {
|
|
40
|
+
d: "M15.08 0H16v6.46h-.92z"
|
|
41
|
+
})), _path6 || (_path6 = /*#__PURE__*/React.createElement("path", {
|
|
42
|
+
d: "M0 0h.92v24H0zM15.08 0H16v24h-.92z"
|
|
43
|
+
})), _path7 || (_path7 = /*#__PURE__*/React.createElement("path", {
|
|
44
|
+
d: "M0 .92V0h16v.92zM0 24v-.92h16V24z"
|
|
45
|
+
})));
|
|
46
|
+
};
|
|
47
|
+
const UpperHandle = props => {
|
|
48
|
+
const prefix = usePrefix.usePrefix();
|
|
49
|
+
return /*#__PURE__*/React.createElement("svg", _rollupPluginBabelHelpers.extends({
|
|
50
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
51
|
+
viewBox: "0 0 16 24",
|
|
52
|
+
className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper`
|
|
53
|
+
}, props), _path8 || (_path8 = /*#__PURE__*/React.createElement("path", {
|
|
54
|
+
d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
|
|
55
|
+
})), _path9 || (_path9 = /*#__PURE__*/React.createElement("path", {
|
|
56
|
+
fill: "none",
|
|
57
|
+
d: "M-4 0h24v24H-4z"
|
|
58
|
+
})));
|
|
59
|
+
};
|
|
60
|
+
const UpperHandleFocus = props => {
|
|
61
|
+
const prefix = usePrefix.usePrefix();
|
|
62
|
+
return /*#__PURE__*/React.createElement("svg", _rollupPluginBabelHelpers.extends({
|
|
63
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
64
|
+
viewBox: "0 0 16 24",
|
|
65
|
+
className: `${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper ${prefix}--slider__thumb-icon--focus`
|
|
66
|
+
}, props), _path0 || (_path0 = /*#__PURE__*/React.createElement("path", {
|
|
67
|
+
d: "M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"
|
|
68
|
+
})), _path1 || (_path1 = /*#__PURE__*/React.createElement("path", {
|
|
69
|
+
fill: "none",
|
|
70
|
+
d: "M-4 0h24v24H-4z"
|
|
71
|
+
})), _path10 || (_path10 = /*#__PURE__*/React.createElement("path", {
|
|
72
|
+
d: "M.92 24H0v-6.46h.92z"
|
|
73
|
+
})), _path11 || (_path11 = /*#__PURE__*/React.createElement("path", {
|
|
74
|
+
d: "M16 24h-.92V0H16zM.92 24H0V0h.92z"
|
|
75
|
+
})), _path12 || (_path12 = /*#__PURE__*/React.createElement("path", {
|
|
76
|
+
d: "M16 23.08V24H0v-.92zM16 0v.92H0V0z"
|
|
77
|
+
})));
|
|
78
|
+
};
|
|
67
79
|
|
|
68
80
|
exports.LowerHandle = LowerHandle;
|
|
69
81
|
exports.LowerHandleFocus = LowerHandleFocus;
|
|
@@ -290,6 +290,9 @@ function TabList({
|
|
|
290
290
|
// VISIBLE IF:
|
|
291
291
|
// SCROLLABLE
|
|
292
292
|
// AND SCROLL_LEFT > 0
|
|
293
|
+
//
|
|
294
|
+
// TODO: Hoist `buttonWidth` to a module level constant like
|
|
295
|
+
// `verticalTabHeight`.
|
|
293
296
|
const buttonWidth = 44;
|
|
294
297
|
// Next Button
|
|
295
298
|
// VISIBLE IF:
|
|
@@ -384,14 +387,13 @@ function TabList({
|
|
|
384
387
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- https://github.com/carbon-design-system/carbon/issues/20452
|
|
385
388
|
}, []);
|
|
386
389
|
React.useEffect(() => {
|
|
387
|
-
//adding 1 in calculation for firefox support
|
|
390
|
+
// adding 1 in calculation for firefox support
|
|
388
391
|
setIsNextButtonVisible(ref.current ? scrollLeft + buttonWidth + ref.current.clientWidth + 1 < ref.current.scrollWidth : false);
|
|
389
|
-
if (dismissable) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
392
|
+
if (dismissable && ref.current) {
|
|
393
|
+
// adding 1 in calculation for firefox support
|
|
394
|
+
setIsScrollable(ref.current.scrollWidth > ref.current.clientWidth + 1);
|
|
393
395
|
}
|
|
394
|
-
}, [
|
|
396
|
+
}, [children, dismissable, scrollLeft]);
|
|
395
397
|
React.useEffect(() => {
|
|
396
398
|
if (tabs.current[selectedIndex]?.disabled) {
|
|
397
399
|
const activeTabs = tabs.current.filter(tab => {
|
|
@@ -1040,11 +1042,7 @@ const IconTab = /*#__PURE__*/React.forwardRef(({
|
|
|
1040
1042
|
const value = React.useMemo(() => ({
|
|
1041
1043
|
badgeIndicator
|
|
1042
1044
|
}), [badgeIndicator]);
|
|
1043
|
-
const hasSize20 = /*#__PURE__*/React.isValidElement(children) &&
|
|
1044
|
-
// TODO: The interface allows `size` to be a string. Should this case be
|
|
1045
|
-
// handled here, or should the prop type be restricted to `number`
|
|
1046
|
-
// instead?
|
|
1047
|
-
children.props.size === 20;
|
|
1045
|
+
const hasSize20 = /*#__PURE__*/React.isValidElement(children) && (children.props.size === 20 || children.props.size === '20');
|
|
1048
1046
|
const classNames = cx(`${prefix}--tabs__nav-item--icon-only`, customClassName, {
|
|
1049
1047
|
[`${prefix}--tabs__nav-item--icon-only__20`]: hasSize20
|
|
1050
1048
|
});
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
-
|
|
12
10
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
11
|
var PropTypes = require('prop-types');
|
|
14
12
|
var React = require('react');
|
|
@@ -43,4 +41,3 @@ TagSkeleton.propTypes = {
|
|
|
43
41
|
};
|
|
44
42
|
|
|
45
43
|
exports.TagSkeleton = TagSkeleton;
|
|
46
|
-
exports.default = TagSkeleton;
|
|
@@ -16,4 +16,4 @@ var TextInput_Skeleton = require('./TextInput.Skeleton.js');
|
|
|
16
16
|
|
|
17
17
|
exports.TextInput = TextInput.default;
|
|
18
18
|
exports.default = TextInput.default;
|
|
19
|
-
exports.TextInputSkeleton = TextInput_Skeleton.
|
|
19
|
+
exports.TextInputSkeleton = TextInput_Skeleton.TextInputSkeleton;
|
|
@@ -59,11 +59,11 @@ export interface ClickableTileProps extends HTMLAttributes<HTMLAnchorElement> {
|
|
|
59
59
|
/**
|
|
60
60
|
* Specify the function to run when the ClickableTile is clicked
|
|
61
61
|
*/
|
|
62
|
-
onClick?(event: MouseEvent): void;
|
|
62
|
+
onClick?(event: MouseEvent<HTMLAnchorElement> | KeyboardEvent<HTMLAnchorElement>): void;
|
|
63
63
|
/**
|
|
64
64
|
* Specify the function to run when the ClickableTile is interacted with via a keyboard
|
|
65
65
|
*/
|
|
66
|
-
onKeyDown?(event: KeyboardEvent): void;
|
|
66
|
+
onKeyDown?(event: KeyboardEvent<HTMLAnchorElement>): void;
|
|
67
67
|
/**
|
|
68
68
|
* The rel property for the link.
|
|
69
69
|
*/
|
|
@@ -108,6 +108,9 @@ const ClickableTile = /*#__PURE__*/React.forwardRef(({
|
|
|
108
108
|
[`${prefix}--tile--decorator`]: decorator,
|
|
109
109
|
[`${prefix}--tile--decorator-rounded`]: decorator && hasRoundedCorners
|
|
110
110
|
}, className);
|
|
111
|
+
|
|
112
|
+
// TODO: Can this be removed? Or is cds--tile--is-clicked supposed to use this instead of `clicked`?
|
|
113
|
+
// This state is never used
|
|
111
114
|
const [isSelected, setIsSelected] = React.useState(clicked);
|
|
112
115
|
function handleOnClick(evt) {
|
|
113
116
|
evt?.persist?.();
|
|
@@ -116,8 +119,10 @@ const ClickableTile = /*#__PURE__*/React.forwardRef(({
|
|
|
116
119
|
}
|
|
117
120
|
function handleOnKeyDown(evt) {
|
|
118
121
|
evt?.persist?.();
|
|
119
|
-
if (match.matches(evt, [keys.Enter, keys.Space])) {
|
|
122
|
+
if (!href && match.matches(evt, [keys.Enter, keys.Space])) {
|
|
123
|
+
evt.preventDefault();
|
|
120
124
|
setIsSelected(!isSelected);
|
|
125
|
+
onClick(evt);
|
|
121
126
|
}
|
|
122
127
|
onKeyDown(evt);
|
|
123
128
|
}
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
-
|
|
12
10
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
11
|
var PropTypes = require('prop-types');
|
|
14
12
|
var React = require('react');
|
|
@@ -35,4 +33,3 @@ ToggleSkeleton.propTypes = {
|
|
|
35
33
|
};
|
|
36
34
|
|
|
37
35
|
exports.ToggleSkeleton = ToggleSkeleton;
|
|
38
|
-
exports.default = ToggleSkeleton;
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
|
-
|
|
12
10
|
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
11
|
var cx = require('classnames');
|
|
14
12
|
var PropTypes = require('prop-types');
|
|
@@ -292,4 +290,3 @@ exports.ToggletipActions = ToggletipActions;
|
|
|
292
290
|
exports.ToggletipButton = ToggletipButton;
|
|
293
291
|
exports.ToggletipContent = ToggletipContent;
|
|
294
292
|
exports.ToggletipLabel = ToggletipLabel;
|
|
295
|
-
exports.default = Toggletip;
|
|
@@ -20,9 +20,6 @@ export interface SideNavProps {
|
|
|
20
20
|
onSideNavBlur?: () => void;
|
|
21
21
|
enterDelayMs?: number;
|
|
22
22
|
}
|
|
23
|
-
interface SideNavContextData {
|
|
24
|
-
isRail?: boolean | undefined;
|
|
25
|
-
}
|
|
26
|
-
export declare const SideNavContext: React.Context<SideNavContextData>;
|
|
27
23
|
declare const SideNav: React.ForwardRefExoticComponent<Omit<SideNavProps & React.ClassAttributes<HTMLElement> & React.HTMLAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
28
24
|
export default SideNav;
|
|
25
|
+
export { SideNavContext } from './SideNavContext';
|
|
@@ -14,20 +14,19 @@ var React = require('react');
|
|
|
14
14
|
var cx = require('classnames');
|
|
15
15
|
var PropTypes = require('prop-types');
|
|
16
16
|
var AriaPropTypes = require('../../prop-types/AriaPropTypes.js');
|
|
17
|
-
var _utils = require('./_utils.js');
|
|
18
17
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
19
18
|
var keys = require('../../internal/keyboard/keys.js');
|
|
20
19
|
var match = require('../../internal/keyboard/match.js');
|
|
21
20
|
var useMergedRefs = require('../../internal/useMergedRefs.js');
|
|
22
21
|
var useEvent = require('../../internal/useEvent.js');
|
|
23
22
|
var useDelayedState = require('../../internal/useDelayedState.js');
|
|
23
|
+
var SideNavContext = require('./SideNavContext.js');
|
|
24
24
|
var layout = require('@carbon/layout');
|
|
25
25
|
var useMatchMedia = require('../../internal/useMatchMedia.js');
|
|
26
26
|
|
|
27
27
|
// TODO: comment back in when footer is added for rails
|
|
28
28
|
// import SideNavFooter from './SideNavFooter';
|
|
29
29
|
|
|
30
|
-
const SideNavContext = /*#__PURE__*/React.createContext({});
|
|
31
30
|
const frFn = React.forwardRef;
|
|
32
31
|
const SideNav = frFn((props, ref) => {
|
|
33
32
|
const {
|
|
@@ -94,23 +93,9 @@ const SideNav = frFn((props, ref) => {
|
|
|
94
93
|
[`${prefix}--side-nav__overlay`]: true,
|
|
95
94
|
[`${prefix}--side-nav__overlay-active`]: expanded || expandedViaHoverState
|
|
96
95
|
});
|
|
97
|
-
let childrenToRender = children;
|
|
98
96
|
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
// if we are controlled, check for if we have hovered over or the expanded state, else just use the expanded state (uncontrolled)
|
|
102
|
-
const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
|
|
103
|
-
if (/*#__PURE__*/React.isValidElement(child)) {
|
|
104
|
-
const childJsxElement = child;
|
|
105
|
-
// avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
|
|
106
|
-
return /*#__PURE__*/React.cloneElement(childJsxElement, {
|
|
107
|
-
...(_utils.CARBON_SIDENAV_ITEMS.includes(childJsxElement.type?.displayName ?? childJsxElement.type?.name) ? {
|
|
108
|
-
isSideNavExpanded: currentExpansionState
|
|
109
|
-
} : {})
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
return child;
|
|
113
|
-
});
|
|
97
|
+
// In controlled mode, rail hover can temporarily expand SideNav.
|
|
98
|
+
const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
|
|
114
99
|
const eventHandlers = {};
|
|
115
100
|
if (addFocusListeners) {
|
|
116
101
|
eventHandlers.onFocus = event => {
|
|
@@ -171,10 +156,9 @@ const SideNav = frFn((props, ref) => {
|
|
|
171
156
|
node.removeAttribute('inert');
|
|
172
157
|
}
|
|
173
158
|
}, [inertEnabled]);
|
|
174
|
-
return /*#__PURE__*/React.createElement(SideNavContext.
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
159
|
+
return /*#__PURE__*/React.createElement(SideNavContext.SideNavContextProvider, {
|
|
160
|
+
isRail: isRail,
|
|
161
|
+
isSideNavExpanded: currentExpansionState
|
|
178
162
|
}, isFixedNav ? null :
|
|
179
163
|
/*#__PURE__*/
|
|
180
164
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
@@ -185,7 +169,7 @@ const SideNav = frFn((props, ref) => {
|
|
|
185
169
|
tabIndex: -1,
|
|
186
170
|
ref: navRef,
|
|
187
171
|
className: `${prefix}--side-nav__navigation ${className}`
|
|
188
|
-
}, accessibilityLabel, eventHandlers, other),
|
|
172
|
+
}, accessibilityLabel, eventHandlers, other), children));
|
|
189
173
|
});
|
|
190
174
|
SideNav.displayName = 'SideNav';
|
|
191
175
|
SideNav.propTypes = {
|
|
@@ -268,5 +252,5 @@ SideNav.propTypes = {
|
|
|
268
252
|
// translateById: PropTypes.func,
|
|
269
253
|
};
|
|
270
254
|
|
|
271
|
-
exports.SideNavContext = SideNavContext;
|
|
255
|
+
exports.SideNavContext = SideNavContext.SideNavContext;
|
|
272
256
|
exports.default = SideNav;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React, { type ReactNode } from 'react';
|
|
8
|
+
interface SideNavContextData {
|
|
9
|
+
isRail?: boolean | undefined;
|
|
10
|
+
isSideNavExpanded?: boolean | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare const SideNavContext: React.Context<SideNavContextData>;
|
|
13
|
+
interface SideNavContextProviderProps extends SideNavContextData {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare const SideNavContextProvider: ({ children, isRail, isSideNavExpanded, }: SideNavContextProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var React = require('react');
|
|
11
|
+
|
|
12
|
+
const SideNavContext = /*#__PURE__*/React.createContext({});
|
|
13
|
+
const SideNavContextProvider = ({
|
|
14
|
+
children,
|
|
15
|
+
isRail,
|
|
16
|
+
isSideNavExpanded
|
|
17
|
+
}) => {
|
|
18
|
+
return /*#__PURE__*/React.createElement(SideNavContext.Provider, {
|
|
19
|
+
value: {
|
|
20
|
+
isRail,
|
|
21
|
+
isSideNavExpanded
|
|
22
|
+
}
|
|
23
|
+
}, children);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.SideNavContext = SideNavContext;
|
|
27
|
+
exports.SideNavContextProvider = SideNavContextProvider;
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
12
12
|
var cx = require('classnames');
|
|
13
13
|
var PropTypes = require('prop-types');
|
|
14
14
|
var React = require('react');
|
|
15
|
-
var
|
|
15
|
+
var SideNavContext = require('./SideNavContext.js');
|
|
16
16
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
17
17
|
|
|
18
18
|
const SideNavItems = ({
|
|
@@ -21,22 +21,18 @@ const SideNavItems = ({
|
|
|
21
21
|
isSideNavExpanded
|
|
22
22
|
}) => {
|
|
23
23
|
const prefix = usePrefix.usePrefix();
|
|
24
|
+
const {
|
|
25
|
+
isRail,
|
|
26
|
+
isSideNavExpanded: contextIsSideNavExpanded
|
|
27
|
+
} = React.useContext(SideNavContext.SideNavContext);
|
|
28
|
+
const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
|
|
24
29
|
const className = cx([`${prefix}--side-nav__items`], customClassName);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const childDisplayName = child.type?.displayName;
|
|
30
|
-
return /*#__PURE__*/React.cloneElement(child, {
|
|
31
|
-
...(_utils.CARBON_SIDENAV_ITEMS.includes(childDisplayName) ? {
|
|
32
|
-
isSideNavExpanded
|
|
33
|
-
} : {})
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
return /*#__PURE__*/React.createElement("ul", {
|
|
30
|
+
return /*#__PURE__*/React.createElement(SideNavContext.SideNavContextProvider, {
|
|
31
|
+
isRail: isRail,
|
|
32
|
+
isSideNavExpanded: currentIsSideNavExpanded
|
|
33
|
+
}, /*#__PURE__*/React.createElement("ul", {
|
|
38
34
|
className: className
|
|
39
|
-
},
|
|
35
|
+
}, children));
|
|
40
36
|
};
|
|
41
37
|
SideNavItems.displayName = 'SideNavItems';
|
|
42
38
|
SideNavItems.propTypes = {
|
|
@@ -17,8 +17,8 @@ var Link = require('./Link.js');
|
|
|
17
17
|
var SideNavIcon = require('./SideNavIcon.js');
|
|
18
18
|
var SideNavItem = require('./SideNavItem.js');
|
|
19
19
|
var SideNavLinkText = require('./SideNavLinkText.js');
|
|
20
|
+
var SideNavContext = require('./SideNavContext.js');
|
|
20
21
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
21
|
-
var SideNav = require('./SideNav.js');
|
|
22
22
|
|
|
23
23
|
// First define a non-generic base component to work with forwardRef
|
|
24
24
|
|
|
@@ -34,7 +34,11 @@ const SideNavLink = frFn((props, ref) => {
|
|
|
34
34
|
tabIndex,
|
|
35
35
|
...rest
|
|
36
36
|
} = props;
|
|
37
|
-
const
|
|
37
|
+
const {
|
|
38
|
+
isRail,
|
|
39
|
+
isSideNavExpanded: contextIsSideNavExpanded
|
|
40
|
+
} = React.useContext(SideNavContext.SideNavContext);
|
|
41
|
+
const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
|
|
38
42
|
const prefix = usePrefix.usePrefix();
|
|
39
43
|
const className = cx({
|
|
40
44
|
[`${prefix}--side-nav__link`]: true,
|
|
@@ -46,7 +50,7 @@ const SideNavLink = frFn((props, ref) => {
|
|
|
46
50
|
}, /*#__PURE__*/React.createElement(Link.default, _rollupPluginBabelHelpers.extends({}, rest, {
|
|
47
51
|
className: className,
|
|
48
52
|
ref: ref,
|
|
49
|
-
tabIndex: tabIndex === undefined ? !
|
|
53
|
+
tabIndex: tabIndex === undefined ? !currentIsSideNavExpanded && !isRail ? -1 : 0 : tabIndex
|
|
50
54
|
}), IconElement && /*#__PURE__*/React.createElement(SideNavIcon.default, {
|
|
51
55
|
small: true
|
|
52
56
|
}, /*#__PURE__*/React.createElement(IconElement, null)), /*#__PURE__*/React.createElement(SideNavLinkText.default, null, children)));
|
|
@@ -17,7 +17,7 @@ var SideNavIcon = require('./SideNavIcon.js');
|
|
|
17
17
|
var keys = require('../../internal/keyboard/keys.js');
|
|
18
18
|
var match = require('../../internal/keyboard/match.js');
|
|
19
19
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
20
|
-
var
|
|
20
|
+
var SideNavContext = require('./SideNavContext.js');
|
|
21
21
|
|
|
22
22
|
var _ChevronDown;
|
|
23
23
|
const SideNavMenu = /*#__PURE__*/React.forwardRef(({
|
|
@@ -32,8 +32,10 @@ const SideNavMenu = /*#__PURE__*/React.forwardRef(({
|
|
|
32
32
|
title
|
|
33
33
|
}, ref) => {
|
|
34
34
|
const {
|
|
35
|
-
isRail
|
|
36
|
-
|
|
35
|
+
isRail,
|
|
36
|
+
isSideNavExpanded: contextIsSideNavExpanded
|
|
37
|
+
} = React.useContext(SideNavContext.SideNavContext);
|
|
38
|
+
const currentIsSideNavExpanded = isSideNavExpanded ?? contextIsSideNavExpanded;
|
|
37
39
|
const prefix = usePrefix.usePrefix();
|
|
38
40
|
const [isExpanded, setIsExpanded] = React.useState(defaultExpanded);
|
|
39
41
|
const [prevExpanded, setPrevExpanded] = React.useState(defaultExpanded);
|
|
@@ -44,10 +46,10 @@ const SideNavMenu = /*#__PURE__*/React.forwardRef(({
|
|
|
44
46
|
[`${prefix}--side-nav__item--large`]: large,
|
|
45
47
|
[customClassName]: !!customClassName
|
|
46
48
|
});
|
|
47
|
-
if (!
|
|
49
|
+
if (!currentIsSideNavExpanded && isExpanded && isRail) {
|
|
48
50
|
setIsExpanded(false);
|
|
49
51
|
setPrevExpanded(true);
|
|
50
|
-
} else if (
|
|
52
|
+
} else if (currentIsSideNavExpanded && prevExpanded && isRail) {
|
|
51
53
|
setIsExpanded(true);
|
|
52
54
|
setPrevExpanded(false);
|
|
53
55
|
}
|
|
@@ -69,7 +71,7 @@ const SideNavMenu = /*#__PURE__*/React.forwardRef(({
|
|
|
69
71
|
},
|
|
70
72
|
ref: ref,
|
|
71
73
|
type: "button",
|
|
72
|
-
tabIndex: tabIndex === undefined ? !
|
|
74
|
+
tabIndex: tabIndex === undefined ? !currentIsSideNavExpanded && !isRail ? -1 : 0 : tabIndex
|
|
73
75
|
}, IconElement && /*#__PURE__*/React.createElement(SideNavIcon.default, null, /*#__PURE__*/React.createElement(IconElement, null)), /*#__PURE__*/React.createElement("span", {
|
|
74
76
|
className: `${prefix}--side-nav__submenu-title`
|
|
75
77
|
}, title), /*#__PURE__*/React.createElement(SideNavIcon.default, {
|