@carbon/react 1.102.0 → 1.103.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 +973 -973
- 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/index.js +1 -1
- 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 +2 -6
- 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.js +1 -1
- 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/index.js +1 -1
- 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 +1 -5
- 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/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
- package/es/components/UIShell/_utils.d.ts +0 -7
- package/es/components/UIShell/_utils.js +0 -10
- package/lib/components/UIShell/_utils.d.ts +0 -7
- package/lib/components/UIShell/_utils.js +0 -12
|
@@ -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;
|
|
@@ -1040,11 +1040,7 @@ const IconTab = /*#__PURE__*/React.forwardRef(({
|
|
|
1040
1040
|
const value = React.useMemo(() => ({
|
|
1041
1041
|
badgeIndicator
|
|
1042
1042
|
}), [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;
|
|
1043
|
+
const hasSize20 = /*#__PURE__*/React.isValidElement(children) && (children.props.size === 20 || children.props.size === '20');
|
|
1048
1044
|
const classNames = cx(`${prefix}--tabs__nav-item--icon-only`, customClassName, {
|
|
1049
1045
|
[`${prefix}--tabs__nav-item--icon-only__20`]: hasSize20
|
|
1050
1046
|
});
|
|
@@ -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;
|
|
@@ -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, {
|