@carbon-labs/react-ui-shell 0.60.0 → 0.62.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/es/components/HeaderContainer.js +10 -11
- package/es/components/HeaderDivider.js +6 -7
- package/es/components/HeaderPopover.js +28 -31
- package/es/components/Link.js +10 -11
- package/es/components/Profile.js +31 -34
- package/es/components/SharkFinIcon.js +10 -11
- package/es/components/SideNav.js +46 -40
- package/es/components/SideNavFlyoutMenu.js +29 -31
- package/es/components/SideNavItems.js +12 -13
- package/es/components/SideNavLink.js +18 -19
- package/es/components/SideNavLinkPopover.js +8 -9
- package/es/components/SideNavMenu.js +40 -42
- package/es/components/SideNavMenuItem.js +9 -9
- package/es/components/SideNavSlot.js +10 -11
- package/es/components/SideNavToggle.js +11 -12
- package/es/components/TrialCountdown.js +10 -11
- package/es/internal/keyboard/match.js +6 -7
- package/es/internal/useDelayedState.js +1 -2
- package/es/internal/useId.js +4 -6
- package/es/internal/useIdPrefix.js +3 -3
- package/es/internal/usePrefix.js +3 -3
- package/es/internal/warning.js +1 -4
- package/es/node_modules/@carbon/ibm-products/es/components/TooltipTrigger/TooltipTrigger.js +4 -4
- package/es/node_modules/@carbon/ibm-products/es/components/UserAvatar/UserAvatar.js +10 -10
- package/es/node_modules/@carbon/ibm-products/es/components/_Canary/Canary.js +5 -5
- package/es/node_modules/@carbon/ibm-products/es/settings.js +2 -2
- package/es/prop-types/deprecate.js +1 -4
- package/es/prop-types/isRequiredOneOf.js +1 -4
- package/lib/components/HeaderContainer.js +18 -19
- package/lib/components/HeaderDivider.js +7 -8
- package/lib/components/HeaderPopover.js +34 -37
- package/lib/components/Link.js +11 -12
- package/lib/components/Profile.js +34 -37
- package/lib/components/SharkFinIcon.js +11 -12
- package/lib/components/SideNav.js +62 -56
- package/lib/components/SideNavFlyoutMenu.js +44 -46
- package/lib/components/SideNavItems.js +16 -17
- package/lib/components/SideNavLink.js +20 -21
- package/lib/components/SideNavLinkPopover.js +9 -10
- package/lib/components/SideNavMenu.js +60 -62
- package/lib/components/SideNavMenuItem.js +12 -12
- package/lib/components/SideNavSlot.js +11 -12
- package/lib/components/SideNavToggle.js +12 -13
- package/lib/components/TrialCountdown.js +11 -12
- package/lib/internal/keyboard/match.js +6 -7
- package/lib/internal/useDelayedState.js +5 -6
- package/lib/internal/useEvent.js +4 -4
- package/lib/internal/useId.js +7 -9
- package/lib/internal/useIdPrefix.js +3 -3
- package/lib/internal/useMatchMedia.js +3 -3
- package/lib/internal/useMergedRefs.js +2 -2
- package/lib/internal/usePrefix.js +3 -3
- package/lib/internal/warning.js +1 -4
- package/lib/node_modules/@carbon/ibm-products/es/components/TooltipTrigger/TooltipTrigger.js +8 -8
- package/lib/node_modules/@carbon/ibm-products/es/components/UserAvatar/UserAvatar.js +11 -11
- package/lib/node_modules/@carbon/ibm-products/es/components/_Canary/Canary.js +9 -9
- package/lib/node_modules/@carbon/ibm-products/es/settings.js +2 -2
- package/lib/prop-types/deprecate.js +1 -4
- package/lib/prop-types/isRequiredOneOf.js +1 -4
- package/package.json +3 -3
- package/es/_virtual/_commonjsHelpers.js +0 -12
- package/es/_virtual/index.js +0 -14
- package/es/_virtual/index2.js +0 -10
- package/es/node_modules/@carbon/icons-react/es/Icon.js +0 -71
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -2956
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-15.js +0 -3043
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3181
- package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -14
- package/es/node_modules/@carbon/icons-react/node_modules/@carbon/icon-helpers/es/index.js +0 -125
- package/es/node_modules/classnames/index.js +0 -71
- package/lib/_virtual/_commonjsHelpers.js +0 -14
- package/lib/_virtual/index.js +0 -18
- package/lib/_virtual/index2.js +0 -12
- package/lib/node_modules/@carbon/icons-react/es/Icon.js +0 -75
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -3082
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-15.js +0 -3169
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3307
- package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -16
- package/lib/node_modules/@carbon/icons-react/node_modules/@carbon/icon-helpers/es/index.js +0 -128
- package/lib/node_modules/classnames/index.js +0 -73
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var React__default = require('react');
|
|
12
|
+
var cx = require('classnames');
|
|
13
13
|
var PropTypes = require('prop-types');
|
|
14
14
|
var AriaPropTypes = require('../prop-types/AriaPropTypes.js');
|
|
15
15
|
var _utils = require('./_utils.js');
|
|
@@ -19,10 +19,10 @@ var match = require('../internal/keyboard/match.js');
|
|
|
19
19
|
var useMergedRefs = require('../internal/useMergedRefs.js');
|
|
20
20
|
var useEvent = require('../internal/useEvent.js');
|
|
21
21
|
var useDelayedState = require('../internal/useDelayedState.js');
|
|
22
|
-
var index
|
|
22
|
+
var index = require('../node_modules/@carbon/layout/es/index.js');
|
|
23
23
|
var useMatchMedia = require('../internal/useMatchMedia.js');
|
|
24
|
+
var iconsReact = require('@carbon/icons-react');
|
|
24
25
|
var SideNavToggle = require('./SideNavToggle.js');
|
|
25
|
-
var bucket15 = require('../node_modules/@carbon/icons-react/es/generated/bucket-15.js');
|
|
26
26
|
|
|
27
27
|
let SIDE_NAV_TYPE = /*#__PURE__*/function (SIDE_NAV_TYPE) {
|
|
28
28
|
SIDE_NAV_TYPE["DEFAULT"] = "default";
|
|
@@ -39,48 +39,46 @@ const defaultTranslations = {
|
|
|
39
39
|
[translationIds['expand.sidenav']]: 'Expand'
|
|
40
40
|
};
|
|
41
41
|
const defaultTranslateWithId = id => defaultTranslations[id];
|
|
42
|
-
const SideNavContext = /*#__PURE__*/
|
|
43
|
-
function SideNavRenderFunction(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const [internalIsTreeview, setInternalIsTreeview] = React.useState(isTreeviewProp ?? false);
|
|
42
|
+
const SideNavContext = /*#__PURE__*/React__default.createContext({});
|
|
43
|
+
function SideNavRenderFunction({
|
|
44
|
+
expanded: expandedProp,
|
|
45
|
+
defaultExpanded = false,
|
|
46
|
+
isChildOfHeader = true,
|
|
47
|
+
'aria-label': ariaLabel,
|
|
48
|
+
'aria-labelledby': ariaLabelledBy,
|
|
49
|
+
children,
|
|
50
|
+
onToggle,
|
|
51
|
+
className: customClassName,
|
|
52
|
+
hideRailBreakpointDown,
|
|
53
|
+
href,
|
|
54
|
+
isFixedNav = false,
|
|
55
|
+
isRail,
|
|
56
|
+
isPersistent = true,
|
|
57
|
+
isTreeview: isTreeviewProp,
|
|
58
|
+
navType = SIDE_NAV_TYPE.DEFAULT,
|
|
59
|
+
addFocusListeners = true,
|
|
60
|
+
addMouseListeners = true,
|
|
61
|
+
onOverlayClick,
|
|
62
|
+
onSideNavBlur,
|
|
63
|
+
enterDelayMs = 100,
|
|
64
|
+
isCollapsible = false,
|
|
65
|
+
hideOverlay = false,
|
|
66
|
+
translateWithId: t = defaultTranslateWithId,
|
|
67
|
+
...other
|
|
68
|
+
}, ref) {
|
|
69
|
+
const [internalIsTreeview, setInternalIsTreeview] = React__default.useState(isTreeviewProp ?? false);
|
|
71
70
|
const prefix = usePrefix.usePrefix();
|
|
72
71
|
const {
|
|
73
72
|
current: controlled
|
|
74
|
-
} =
|
|
73
|
+
} = React__default.useRef(expandedProp !== undefined);
|
|
75
74
|
const [expandedState, setExpandedState] = useDelayedState.useDelayedState(defaultExpanded);
|
|
76
75
|
const [expandedViaHoverState, setExpandedViaHoverState] = useDelayedState.useDelayedState(defaultExpanded);
|
|
77
76
|
const expanded = controlled ? expandedProp : expandedState;
|
|
78
|
-
const sideNavRef =
|
|
77
|
+
const sideNavRef = React__default.useRef(null);
|
|
79
78
|
const navRef = useMergedRefs.useMergedRefs([sideNavRef, ref]);
|
|
80
|
-
const [currentPrimaryMenu, setCurrentPrimaryMenu] =
|
|
79
|
+
const [currentPrimaryMenu, setCurrentPrimaryMenu] = React__default.useState();
|
|
81
80
|
const sideNavToggleText = expandedState ? t('collapse.sidenav') : t('expand.sidenav');
|
|
82
|
-
const handleToggle =
|
|
83
|
-
let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !expanded;
|
|
81
|
+
const handleToggle = (event, value = !expanded) => {
|
|
84
82
|
if (!controlled) {
|
|
85
83
|
setExpandedState(value, enterDelayMs);
|
|
86
84
|
}
|
|
@@ -95,7 +93,7 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
95
93
|
'aria-label': ariaLabel,
|
|
96
94
|
'aria-labelledby': ariaLabelledBy
|
|
97
95
|
};
|
|
98
|
-
const className =
|
|
96
|
+
const className = cx(customClassName, {
|
|
99
97
|
[`${prefix}--side-nav`]: true,
|
|
100
98
|
[`${prefix}--side-nav--expanded`]: expanded || expandedViaHoverState,
|
|
101
99
|
[`${prefix}--side-nav--collapsed`]: !expanded && isFixedNav,
|
|
@@ -107,20 +105,20 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
107
105
|
[`${prefix}--side-nav--collapsible`]: isCollapsible,
|
|
108
106
|
[`${prefix}--side-nav--with-overlay`]: !hideOverlay
|
|
109
107
|
});
|
|
110
|
-
const overlayClassName =
|
|
108
|
+
const overlayClassName = cx({
|
|
111
109
|
[`${prefix}--side-nav__overlay`]: true,
|
|
112
110
|
[`${prefix}--side-nav__overlay-active`]: expanded || expandedViaHoverState
|
|
113
111
|
});
|
|
114
112
|
let childrenToRender = children;
|
|
115
113
|
|
|
116
114
|
// Pass the expansion state as a prop, so children can update themselves to match
|
|
117
|
-
childrenToRender =
|
|
115
|
+
childrenToRender = React__default.Children.map(children, child => {
|
|
118
116
|
// if we are controlled, check for if we have hovered over or the expanded state, else just use the expanded state (uncontrolled)
|
|
119
117
|
const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
|
|
120
|
-
if (/*#__PURE__*/
|
|
118
|
+
if (/*#__PURE__*/React__default.isValidElement(child)) {
|
|
121
119
|
const childJsxElement = child;
|
|
122
120
|
// avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
|
|
123
|
-
return /*#__PURE__*/
|
|
121
|
+
return /*#__PURE__*/React__default.cloneElement(childJsxElement, {
|
|
124
122
|
...(_utils.CARBON_SIDENAV_ITEMS.includes(childJsxElement.type?.displayName ?? childJsxElement.type?.name) ? {
|
|
125
123
|
isSideNavExpanded: currentExpansionState,
|
|
126
124
|
...(childJsxElement.type?.displayName === 'SideNavItems' && {
|
|
@@ -132,8 +130,8 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
132
130
|
return child;
|
|
133
131
|
});
|
|
134
132
|
const eventHandlers = {};
|
|
135
|
-
const treeWalkerRef =
|
|
136
|
-
|
|
133
|
+
const treeWalkerRef = React__default.useRef(null);
|
|
134
|
+
React__default.useEffect(() => {
|
|
137
135
|
if (internalIsTreeview) {
|
|
138
136
|
treeWalkerRef.current = treeWalkerRef.current ?? document.createTreeWalker(sideNavRef?.current, NodeFilter.SHOW_ELEMENT, {
|
|
139
137
|
acceptNode: function (node) {
|
|
@@ -152,9 +150,9 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
152
150
|
resetNodeTabIndices();
|
|
153
151
|
}
|
|
154
152
|
}, [prefix, internalIsTreeview]);
|
|
155
|
-
const smMediaQuery = `(min-width: ${index
|
|
153
|
+
const smMediaQuery = `(min-width: ${index.breakpoints.sm.width})`;
|
|
156
154
|
const isSm = useMatchMedia.useMatchMedia(smMediaQuery);
|
|
157
|
-
|
|
155
|
+
React__default.useEffect(() => {
|
|
158
156
|
if (sideNavRef.current) {
|
|
159
157
|
const backButton = sideNavRef?.current.querySelector(`.${prefix}--side-nav__back-button`);
|
|
160
158
|
const slotElement = sideNavRef?.current.querySelector(`.${prefix}--side-nav__slot`);
|
|
@@ -345,6 +343,14 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
345
343
|
handleToggle(true, true);
|
|
346
344
|
};
|
|
347
345
|
}
|
|
346
|
+
useEvent.useWindowEvent('click', event => {
|
|
347
|
+
const target = event.target;
|
|
348
|
+
const isNavItemClick = target.closest(`.${prefix}--side-nav a, .${prefix}--side-nav button`);
|
|
349
|
+
const isInRail = isNavItemClick?.closest(`.${prefix}--side-nav--rail`);
|
|
350
|
+
if (isNavItemClick) {
|
|
351
|
+
isInRail ? handleToggle(false, false) : onSideNavBlur?.();
|
|
352
|
+
}
|
|
353
|
+
});
|
|
348
354
|
useEvent.useWindowEvent('keydown', event => {
|
|
349
355
|
const focusedElement = document.activeElement;
|
|
350
356
|
|
|
@@ -353,7 +359,7 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
353
359
|
sideNavRef.current.focus();
|
|
354
360
|
}
|
|
355
361
|
});
|
|
356
|
-
const lgMediaQuery = `(min-width: ${index
|
|
362
|
+
const lgMediaQuery = `(min-width: ${index.breakpoints.lg.width})`;
|
|
357
363
|
const isLg = useMatchMedia.useMatchMedia(lgMediaQuery);
|
|
358
364
|
function resetNodeTabIndices() {
|
|
359
365
|
const items = sideNavRef?.current?.querySelectorAll('[tabIndex="0"]') ?? [];
|
|
@@ -366,7 +372,7 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
366
372
|
}
|
|
367
373
|
|
|
368
374
|
// ensure that changes are in sync with internal treeview prop
|
|
369
|
-
|
|
375
|
+
React__default.useEffect(() => {
|
|
370
376
|
if (isTreeviewProp !== undefined) {
|
|
371
377
|
setInternalIsTreeview(isTreeviewProp);
|
|
372
378
|
}
|
|
@@ -378,12 +384,12 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
378
384
|
setInternalIsTreeview(value);
|
|
379
385
|
}
|
|
380
386
|
};
|
|
381
|
-
const SideNavToggleButton = /*#__PURE__*/
|
|
387
|
+
const SideNavToggleButton = /*#__PURE__*/React__default.createElement(SideNavToggle.SideNavToggle, {
|
|
382
388
|
className: !expandedState ? `${prefix}--side-nav__toggle--collapsed` : '',
|
|
383
|
-
renderIcon: expandedState ?
|
|
389
|
+
renderIcon: expandedState ? iconsReact.SidePanelClose : iconsReact.SidePanelOpen,
|
|
384
390
|
onClick: () => setExpandedState(!expandedState)
|
|
385
391
|
}, sideNavToggleText);
|
|
386
|
-
return /*#__PURE__*/
|
|
392
|
+
return /*#__PURE__*/React__default.createElement(SideNavContext.Provider, {
|
|
387
393
|
value: {
|
|
388
394
|
expanded,
|
|
389
395
|
isRail,
|
|
@@ -396,20 +402,20 @@ function SideNavRenderFunction(_ref, ref) {
|
|
|
396
402
|
}, isFixedNav || hideOverlay ? null :
|
|
397
403
|
/*#__PURE__*/
|
|
398
404
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
399
|
-
|
|
405
|
+
React__default.createElement("div", {
|
|
400
406
|
className: overlayClassName,
|
|
401
407
|
onClick: onOverlayClick
|
|
402
|
-
}), /*#__PURE__*/
|
|
408
|
+
}), /*#__PURE__*/React__default.createElement("nav", _rollupPluginBabelHelpers.extends({
|
|
403
409
|
role: 'navigation',
|
|
404
410
|
tabIndex: -1,
|
|
405
411
|
ref: navRef,
|
|
406
412
|
className: `${prefix}--side-nav__navigation ${className}`,
|
|
407
413
|
inert: !isRail && navType !== SIDE_NAV_TYPE.PANEL && !(expanded || isLg) ? -1 : undefined
|
|
408
|
-
}, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && (expandedState ? SideNavToggleButton : /*#__PURE__*/
|
|
414
|
+
}, accessibilityLabel, eventHandlers, other), childrenToRender, navType === SIDE_NAV_TYPE.PANEL && (expandedState ? SideNavToggleButton : /*#__PURE__*/React__default.createElement("div", {
|
|
409
415
|
className: `${prefix}--side-nav__toggle-container`
|
|
410
416
|
}, SideNavToggleButton))));
|
|
411
417
|
}
|
|
412
|
-
const SideNav = /*#__PURE__*/
|
|
418
|
+
const SideNav = /*#__PURE__*/React__default.forwardRef(SideNavRenderFunction);
|
|
413
419
|
SideNav.displayName = 'SideNav';
|
|
414
420
|
SideNav.propTypes = {
|
|
415
421
|
/**
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
-
var
|
|
11
|
+
var cx = require('classnames');
|
|
12
12
|
var PropTypes = require('prop-types');
|
|
13
|
-
var
|
|
13
|
+
var React__default = require('react');
|
|
14
14
|
var react = require('@carbon/react');
|
|
15
15
|
var keys = require('../internal/keyboard/keys.js');
|
|
16
16
|
var match = require('../internal/keyboard/match.js');
|
|
@@ -22,39 +22,38 @@ var usePrefix = require('../internal/usePrefix.js');
|
|
|
22
22
|
* Event types that trigger a "drag" to stop.
|
|
23
23
|
*/
|
|
24
24
|
const DRAG_STOP_EVENT_TYPES = new Set(['mouseup', 'touchend', 'touchcancel']);
|
|
25
|
-
function SideNavFlyoutMenu(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const popoverRef = React.useRef(null);
|
|
25
|
+
function SideNavFlyoutMenu({
|
|
26
|
+
align = 'right-start',
|
|
27
|
+
className: customClassName,
|
|
28
|
+
children,
|
|
29
|
+
label,
|
|
30
|
+
description,
|
|
31
|
+
enterDelayMs = 100,
|
|
32
|
+
leaveDelayMs = 300,
|
|
33
|
+
defaultOpen = false,
|
|
34
|
+
dropShadow = true,
|
|
35
|
+
highContrast = false,
|
|
36
|
+
menuContent,
|
|
37
|
+
selected = false,
|
|
38
|
+
title,
|
|
39
|
+
...rest
|
|
40
|
+
}) {
|
|
41
|
+
const popoverRef = React__default.useRef(null);
|
|
43
42
|
const [open, setOpen] = useDelayedState.useDelayedState(defaultOpen);
|
|
44
|
-
const [isDragging, setIsDragging] =
|
|
45
|
-
const [focusByMouse, setFocusByMouse] =
|
|
46
|
-
const [isPointerIntersecting, setIsPointerIntersecting] =
|
|
43
|
+
const [isDragging, setIsDragging] = React__default.useState(false);
|
|
44
|
+
const [focusByMouse, setFocusByMouse] = React__default.useState(false);
|
|
45
|
+
const [isPointerIntersecting, setIsPointerIntersecting] = React__default.useState(false);
|
|
47
46
|
const id = useId.useId('tooltip');
|
|
48
47
|
const prefix = usePrefix.usePrefix();
|
|
49
|
-
const child =
|
|
50
|
-
const menuButton =
|
|
51
|
-
const [clickMode, setClickMode] =
|
|
52
|
-
const isFocusedInsideRef =
|
|
53
|
-
const popoverMenuLinks =
|
|
54
|
-
const [isButtonFocused, setIsButtonFocused] =
|
|
55
|
-
const flyoutMenuItems =
|
|
56
|
-
if (/*#__PURE__*/
|
|
57
|
-
return /*#__PURE__*/
|
|
48
|
+
const child = React__default.Children.only(children);
|
|
49
|
+
const menuButton = React__default.useRef();
|
|
50
|
+
const [clickMode, setClickMode] = React__default.useState(false);
|
|
51
|
+
const isFocusedInsideRef = React__default.useRef(false);
|
|
52
|
+
const popoverMenuLinks = React__default.useRef(null);
|
|
53
|
+
const [isButtonFocused, setIsButtonFocused] = React__default.useState(false);
|
|
54
|
+
const flyoutMenuItems = React__default.Children.map(menuContent, child => {
|
|
55
|
+
if (/*#__PURE__*/React__default.isValidElement(child)) {
|
|
56
|
+
return /*#__PURE__*/React__default.cloneElement(child, {
|
|
58
57
|
...{
|
|
59
58
|
isFlyoutMenuItem: true
|
|
60
59
|
}
|
|
@@ -166,7 +165,7 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
166
165
|
function onDragStart() {
|
|
167
166
|
setIsDragging(true);
|
|
168
167
|
}
|
|
169
|
-
const onDragStop =
|
|
168
|
+
const onDragStop = React__default.useCallback(() => {
|
|
170
169
|
setIsDragging(false);
|
|
171
170
|
// Close the tooltip, unless the mouse pointer is within the bounds of the
|
|
172
171
|
// trigger.
|
|
@@ -175,7 +174,7 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
175
174
|
setOpen(false, leaveDelayMs);
|
|
176
175
|
}
|
|
177
176
|
}, [isPointerIntersecting, leaveDelayMs, setOpen]);
|
|
178
|
-
|
|
177
|
+
React__default.useEffect(() => {
|
|
179
178
|
if (isDragging) {
|
|
180
179
|
// Register drag stop handlers.
|
|
181
180
|
DRAG_STOP_EVENT_TYPES.forEach(eventType => {
|
|
@@ -206,10 +205,9 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
206
205
|
closeMenu();
|
|
207
206
|
}
|
|
208
207
|
}
|
|
209
|
-
function closeMenu(
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
208
|
+
function closeMenu({
|
|
209
|
+
revertFocus = false
|
|
210
|
+
} = {}) {
|
|
213
211
|
if (revertFocus) {
|
|
214
212
|
menuButton.current?.focus();
|
|
215
213
|
setOpen(true);
|
|
@@ -226,7 +224,7 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
226
224
|
}
|
|
227
225
|
|
|
228
226
|
// initiate menu content to be untabbable
|
|
229
|
-
|
|
227
|
+
React__default.useEffect(() => {
|
|
230
228
|
if (popoverRef.current) {
|
|
231
229
|
popoverMenuLinks.current = popoverRef.current.querySelectorAll(`.${prefix}--side-nav-menu--popover-content a`);
|
|
232
230
|
setContentTabIndex('-1');
|
|
@@ -235,7 +233,7 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
235
233
|
}, []);
|
|
236
234
|
|
|
237
235
|
// set menu content to be untabbable
|
|
238
|
-
|
|
236
|
+
React__default.useEffect(() => {
|
|
239
237
|
if (popoverRef.current && !popoverMenuLinks.current) {
|
|
240
238
|
popoverMenuLinks.current = popoverRef.current.querySelectorAll(`.${prefix}--side-nav-menu--popover-content a`);
|
|
241
239
|
setContentTabIndex('-1');
|
|
@@ -244,11 +242,11 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
244
242
|
return (
|
|
245
243
|
/*#__PURE__*/
|
|
246
244
|
// @ts-ignore-error Popover throws a TS error everytime is imported
|
|
247
|
-
|
|
245
|
+
React__default.createElement(react.Popover, _rollupPluginBabelHelpers.extends({
|
|
248
246
|
ref: popoverRef
|
|
249
247
|
}, rest, {
|
|
250
248
|
align: isButtonFocused ? 'right' : align,
|
|
251
|
-
className:
|
|
249
|
+
className: cx(customClassName, {
|
|
252
250
|
[`${prefix}--flyout-menu`]: true,
|
|
253
251
|
[`${prefix}--flyout-menu-clicked`]: clickMode,
|
|
254
252
|
[`${prefix}--flyout-menu-selected`]: selected,
|
|
@@ -260,19 +258,19 @@ function SideNavFlyoutMenu(_ref) {
|
|
|
260
258
|
onKeyDown: onKeyDown,
|
|
261
259
|
onMouseLeave: onMouseLeave,
|
|
262
260
|
open: open
|
|
263
|
-
}), child !== undefined ? /*#__PURE__*/
|
|
261
|
+
}), child !== undefined ? /*#__PURE__*/React__default.cloneElement(child, {
|
|
264
262
|
...triggerProps,
|
|
265
263
|
...getChildEventHandlers(child.props)
|
|
266
|
-
}) : null, /*#__PURE__*/
|
|
264
|
+
}) : null, /*#__PURE__*/React__default.createElement(react.PopoverContent, {
|
|
267
265
|
"aria-hidden": open ? 'false' : 'true',
|
|
268
|
-
className:
|
|
266
|
+
className: cx({
|
|
269
267
|
[`${prefix}--side-nav-menu--popover-content`]: !isButtonFocused,
|
|
270
268
|
[`${prefix}--flyout-tooltip-content ${prefix}--tooltip-content`]: isButtonFocused
|
|
271
269
|
}),
|
|
272
270
|
id: id,
|
|
273
271
|
onMouseEnter: onMouseEnter,
|
|
274
272
|
role: "tooltip"
|
|
275
|
-
}, !isButtonFocused ? /*#__PURE__*/
|
|
273
|
+
}, !isButtonFocused ? /*#__PURE__*/React__default.createElement(react.FormLabel, null, title) : title, /*#__PURE__*/React__default.createElement("div", {
|
|
276
274
|
style: {
|
|
277
275
|
display: isButtonFocused ? 'none' : 'block'
|
|
278
276
|
}
|
|
@@ -8,35 +8,34 @@
|
|
|
8
8
|
'use strict';
|
|
9
9
|
|
|
10
10
|
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
11
|
-
var
|
|
11
|
+
var cx = require('classnames');
|
|
12
12
|
var PropTypes = require('prop-types');
|
|
13
|
-
var
|
|
13
|
+
var React__default = require('react');
|
|
14
14
|
var _utils = require('./_utils.js');
|
|
15
15
|
var usePrefix = require('../internal/usePrefix.js');
|
|
16
16
|
var SideNav = require('./SideNav.js');
|
|
17
17
|
|
|
18
|
-
const SideNavItems =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} = _ref;
|
|
18
|
+
const SideNavItems = ({
|
|
19
|
+
className: customClassName,
|
|
20
|
+
children,
|
|
21
|
+
isSideNavExpanded,
|
|
22
|
+
accessibilityLabel: accessibilityLabel
|
|
23
|
+
}) => {
|
|
25
24
|
const {
|
|
26
25
|
isTreeview,
|
|
27
26
|
currentPrimaryMenu
|
|
28
|
-
} =
|
|
29
|
-
const listRef =
|
|
27
|
+
} = React__default.useContext(SideNav.SideNavContext);
|
|
28
|
+
const listRef = React__default.useRef(null); // Adjust type if necessary
|
|
30
29
|
const prefix = usePrefix.usePrefix();
|
|
31
|
-
const className =
|
|
32
|
-
const childrenWithExpandedState =
|
|
33
|
-
if (/*#__PURE__*/
|
|
30
|
+
const className = cx([`${prefix}--side-nav__items`], customClassName);
|
|
31
|
+
const childrenWithExpandedState = React__default.Children.map(children, child => {
|
|
32
|
+
if (/*#__PURE__*/React__default.isValidElement(child)) {
|
|
34
33
|
// avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
|
|
35
34
|
const childJsxElement = child;
|
|
36
35
|
const childDisplayName = childJsxElement.type?.displayName ?? childJsxElement.type?.name;
|
|
37
36
|
const isCarbonSideNavItem = _utils.CARBON_SIDENAV_ITEMS.includes(childDisplayName);
|
|
38
37
|
const isSideNavMenu = childDisplayName === 'SideNavMenu';
|
|
39
|
-
return /*#__PURE__*/
|
|
38
|
+
return /*#__PURE__*/React__default.cloneElement(child, {
|
|
40
39
|
...(isCarbonSideNavItem && {
|
|
41
40
|
isSideNavExpanded: isSideNavExpanded
|
|
42
41
|
}),
|
|
@@ -46,7 +45,7 @@ const SideNavItems = _ref => {
|
|
|
46
45
|
});
|
|
47
46
|
}
|
|
48
47
|
});
|
|
49
|
-
|
|
48
|
+
React__default.useEffect(() => {
|
|
50
49
|
// set SideNavLink's role without needing to extend original component
|
|
51
50
|
if (isTreeview && listRef.current) {
|
|
52
51
|
const sideNavItem = listRef.current.querySelectorAll(`.${prefix}--side-nav__item a`);
|
|
@@ -57,7 +56,7 @@ const SideNavItems = _ref => {
|
|
|
57
56
|
});
|
|
58
57
|
}
|
|
59
58
|
}, [isTreeview]);
|
|
60
|
-
return /*#__PURE__*/
|
|
59
|
+
return /*#__PURE__*/React__default.createElement("ul", _rollupPluginBabelHelpers.extends({}, isTreeview && accessibilityLabel, {
|
|
61
60
|
ref: listRef,
|
|
62
61
|
className: className,
|
|
63
62
|
tabIndex: currentPrimaryMenu ? -1 : undefined,
|
|
@@ -10,53 +10,52 @@
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
12
|
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
|
-
var
|
|
13
|
+
var cx = require('classnames');
|
|
14
14
|
var PropTypes = require('prop-types');
|
|
15
|
-
var
|
|
15
|
+
var React__default = require('react');
|
|
16
16
|
var Link = require('./Link.js');
|
|
17
17
|
var react = require('@carbon/react');
|
|
18
18
|
var usePrefix = require('../internal/usePrefix.js');
|
|
19
19
|
var SideNav = require('./SideNav.js');
|
|
20
20
|
var SideNavLinkPopover = require('./SideNavLinkPopover.js');
|
|
21
21
|
|
|
22
|
-
const SideNavLink = /*#__PURE__*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
} = _ref;
|
|
22
|
+
const SideNavLink = /*#__PURE__*/React__default.forwardRef(function SideNavLink({
|
|
23
|
+
children,
|
|
24
|
+
className: customClassName,
|
|
25
|
+
renderIcon: IconElement,
|
|
26
|
+
isActive,
|
|
27
|
+
isSideNavExpanded,
|
|
28
|
+
large = false,
|
|
29
|
+
tabIndex,
|
|
30
|
+
...rest
|
|
31
|
+
}, ref) {
|
|
33
32
|
const {
|
|
34
33
|
expanded,
|
|
35
34
|
isRail,
|
|
36
35
|
navType
|
|
37
|
-
} =
|
|
36
|
+
} = React__default.useContext(SideNav.SideNavContext);
|
|
38
37
|
const prefix = usePrefix.usePrefix();
|
|
39
|
-
const className =
|
|
38
|
+
const className = cx({
|
|
40
39
|
[`${prefix}--side-nav__link`]: true,
|
|
41
40
|
[`${prefix}--side-nav__link--current`]: isActive,
|
|
42
41
|
[customClassName]: !!customClassName
|
|
43
42
|
});
|
|
44
|
-
const SideNavLinkIcon = IconElement && /*#__PURE__*/
|
|
43
|
+
const SideNavLinkIcon = IconElement && /*#__PURE__*/React__default.createElement(react.SideNavIcon, {
|
|
45
44
|
small: true
|
|
46
|
-
}, /*#__PURE__*/
|
|
45
|
+
}, /*#__PURE__*/React__default.createElement(IconElement, null));
|
|
47
46
|
if (!expanded && navType === 'panel') {
|
|
48
|
-
return /*#__PURE__*/
|
|
47
|
+
return /*#__PURE__*/React__default.createElement(SideNavLinkPopover.SideNavLinkPopover, _rollupPluginBabelHelpers.extends({
|
|
49
48
|
align: "right",
|
|
50
49
|
label: children
|
|
51
50
|
}, rest), SideNavLinkIcon);
|
|
52
51
|
}
|
|
53
|
-
return /*#__PURE__*/
|
|
52
|
+
return /*#__PURE__*/React__default.createElement(react.SideNavItem, {
|
|
54
53
|
large: large
|
|
55
|
-
}, /*#__PURE__*/
|
|
54
|
+
}, /*#__PURE__*/React__default.createElement(Link.default, _rollupPluginBabelHelpers.extends({}, rest, {
|
|
56
55
|
className: className,
|
|
57
56
|
ref: ref,
|
|
58
57
|
tabIndex: tabIndex === undefined ? !isSideNavExpanded && !isRail ? -1 : 0 : tabIndex
|
|
59
|
-
}), SideNavLinkIcon, /*#__PURE__*/
|
|
58
|
+
}), SideNavLinkIcon, /*#__PURE__*/React__default.createElement(react.SideNavLinkText, null, children)));
|
|
60
59
|
});
|
|
61
60
|
SideNavLink.displayName = 'SideNavLink';
|
|
62
61
|
SideNavLink.propTypes = {
|
|
@@ -10,21 +10,20 @@
|
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
11
11
|
|
|
12
12
|
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
13
|
-
var
|
|
13
|
+
var cx = require('classnames');
|
|
14
14
|
var PropTypes = require('prop-types');
|
|
15
|
-
var
|
|
15
|
+
var React__default = require('react');
|
|
16
16
|
var react = require('@carbon/react');
|
|
17
17
|
var usePrefix = require('../internal/usePrefix.js');
|
|
18
18
|
|
|
19
|
-
function SideNavLinkPopover(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} = _ref;
|
|
19
|
+
function SideNavLinkPopover({
|
|
20
|
+
className,
|
|
21
|
+
children,
|
|
22
|
+
...rest
|
|
23
|
+
}) {
|
|
25
24
|
const prefix = usePrefix.usePrefix();
|
|
26
|
-
return /*#__PURE__*/
|
|
27
|
-
className:
|
|
25
|
+
return /*#__PURE__*/React__default.createElement(react.IconButton, _rollupPluginBabelHelpers.extends({
|
|
26
|
+
className: cx(className, `${prefix}--side-nav-link-popover`),
|
|
28
27
|
dropShadow: true,
|
|
29
28
|
highContrast: false,
|
|
30
29
|
kind: "ghost"
|