@razorpay/blade 12.4.1 → 12.5.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/build/lib/web/development/components/SideNav/SideNav.web.js +52 -17
- package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +71 -35
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNav.web.js +52 -17
- package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +71 -35
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/types/components/index.d.ts +20 -1
- package/build/types/components/index.native.d.ts +16 -0
- package/package.json +1 -1
|
@@ -28,7 +28,7 @@ import { MetaConstants } from '../../utils/metaAttribute/metaConstants.js';
|
|
|
28
28
|
import { getStyledProps } from '../Box/styledProps/getStyledProps.js';
|
|
29
29
|
import { makeAnalyticsAttribute } from '../../utils/makeAnalyticsAttribute/makeAnalyticsAttribute.js';
|
|
30
30
|
|
|
31
|
-
var _excluded = ["children", "isOpen", "onDismiss", "banner", "testID"];
|
|
31
|
+
var _excluded = ["children", "isOpen", "onDismiss", "onVisibleLevelChange", "banner", "testID"];
|
|
32
32
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
33
33
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
34
34
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
@@ -122,6 +122,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
122
122
|
var children = _ref4.children,
|
|
123
123
|
isOpen = _ref4.isOpen,
|
|
124
124
|
onDismiss = _ref4.onDismiss,
|
|
125
|
+
onVisibleLevelChange = _ref4.onVisibleLevelChange,
|
|
125
126
|
banner = _ref4.banner,
|
|
126
127
|
testID = _ref4.testID,
|
|
127
128
|
rest = _objectWithoutProperties(_ref4, _excluded);
|
|
@@ -158,6 +159,9 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
158
159
|
if (isMobile) {
|
|
159
160
|
setIsMobileL2Open(false);
|
|
160
161
|
onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
|
|
162
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
163
|
+
visibleLevel: 0
|
|
164
|
+
});
|
|
161
165
|
}
|
|
162
166
|
};
|
|
163
167
|
var cleanupTransition = function cleanupTransition() {
|
|
@@ -168,6 +172,41 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
168
172
|
}, TRANSITION_CLEANUP_DELAY);
|
|
169
173
|
timeoutIdsRef.current.push(clearTransitionTimeout);
|
|
170
174
|
};
|
|
175
|
+
var collapseL1 = function collapseL1(title) {
|
|
176
|
+
if (isMobile) {
|
|
177
|
+
setL2DrawerTitle(title);
|
|
178
|
+
setIsMobileL2Open(true);
|
|
179
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
180
|
+
visibleLevel: 2
|
|
181
|
+
});
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (!isL1Collapsed) {
|
|
185
|
+
setIsL1Collapsed(true);
|
|
186
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
187
|
+
visibleLevel: 2
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var expandL1 = function expandL1() {
|
|
192
|
+
if (isMobile) {
|
|
193
|
+
setIsMobileL2Open(false);
|
|
194
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
195
|
+
visibleLevel: 1
|
|
196
|
+
});
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// Ensures that if Normal L1 item is clicked, the L1 stays expanded
|
|
200
|
+
if (isL1Collapsed) {
|
|
201
|
+
setIsL1Collapsed(false);
|
|
202
|
+
// We want to avoid calling onVisibleLevelChange twice when L1 is hovered and then item on L1 is selected
|
|
203
|
+
if (!isL1Hovered) {
|
|
204
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
205
|
+
visibleLevel: 1
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
171
210
|
|
|
172
211
|
/**
|
|
173
212
|
* Handles L1 -> L2 menu changes based on active item
|
|
@@ -177,12 +216,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
177
216
|
if (isL1ItemActive) {
|
|
178
217
|
if (args.isL2Trigger) {
|
|
179
218
|
// Click on L2 Trigger
|
|
180
|
-
|
|
181
|
-
setL2DrawerTitle(args.title);
|
|
182
|
-
setIsMobileL2Open(true);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
setIsL1Collapsed(true);
|
|
219
|
+
collapseL1(args.title);
|
|
186
220
|
|
|
187
221
|
// `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change
|
|
188
222
|
if (!args.isFirstRender) {
|
|
@@ -198,12 +232,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
198
232
|
}
|
|
199
233
|
} else {
|
|
200
234
|
// Click on normal L1 Item
|
|
201
|
-
|
|
202
|
-
if (isMobile) {
|
|
203
|
-
setIsMobileL2Open(false);
|
|
204
|
-
}
|
|
205
|
-
// Ensures that if Normal L1 item is clicked, the L1 stays expanded
|
|
206
|
-
setIsL1Collapsed(false);
|
|
235
|
+
expandL1();
|
|
207
236
|
}
|
|
208
237
|
}
|
|
209
238
|
};
|
|
@@ -217,7 +246,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
217
246
|
};
|
|
218
247
|
},
|
|
219
248
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
220
|
-
[isL1Collapsed, isMobile, isMobileL2Open]);
|
|
249
|
+
[isL1Collapsed, isMobile, isMobileL2Open, isL1Hovered]);
|
|
221
250
|
React__default.useEffect(function () {
|
|
222
251
|
return function () {
|
|
223
252
|
var _iterator = _createForOfIteratorHelper(timeoutIdsRef.current),
|
|
@@ -240,7 +269,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
240
269
|
children: isMobile && onDismiss ? /*#__PURE__*/jsxs(Fragment, {
|
|
241
270
|
children: [/*#__PURE__*/jsxs(Drawer, {
|
|
242
271
|
isOpen: isOpen !== null && isOpen !== void 0 ? isOpen : false,
|
|
243
|
-
onDismiss:
|
|
272
|
+
onDismiss: closeMobileNav,
|
|
244
273
|
children: [/*#__PURE__*/jsx(DrawerHeader, {
|
|
245
274
|
title: "Main Menu"
|
|
246
275
|
}), /*#__PURE__*/jsx(DrawerBody, {
|
|
@@ -260,7 +289,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
260
289
|
}), /*#__PURE__*/jsxs(Drawer, {
|
|
261
290
|
isOpen: isMobileL2Open,
|
|
262
291
|
onDismiss: function onDismiss() {
|
|
263
|
-
return
|
|
292
|
+
return expandL1();
|
|
264
293
|
},
|
|
265
294
|
isLazy: false,
|
|
266
295
|
children: [/*#__PURE__*/jsx(DrawerHeader, {
|
|
@@ -351,8 +380,11 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
351
380
|
if (mouseOverTimeoutRef.current) {
|
|
352
381
|
clearTimeout(mouseOverTimeoutRef.current);
|
|
353
382
|
}
|
|
354
|
-
if (isL1Collapsed && isHoverAgainEnabled) {
|
|
383
|
+
if (isL1Collapsed && isHoverAgainEnabled && !isL1Hovered) {
|
|
355
384
|
setIsL1Hovered(true);
|
|
385
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
386
|
+
visibleLevel: 1
|
|
387
|
+
});
|
|
356
388
|
}
|
|
357
389
|
},
|
|
358
390
|
onMouseLeave: function onMouseLeave() {
|
|
@@ -361,6 +393,9 @@ var _SideNav = function _SideNav(_ref4, ref) {
|
|
|
361
393
|
setIsL1Hovered(false);
|
|
362
394
|
setIsTransitioning(true);
|
|
363
395
|
cleanupTransition();
|
|
396
|
+
onVisibleLevelChange === null || onVisibleLevelChange === void 0 ? void 0 : onVisibleLevelChange({
|
|
397
|
+
visibleLevel: 2
|
|
398
|
+
});
|
|
364
399
|
}, L1_EXIT_HOVER_DELAY);
|
|
365
400
|
}
|
|
366
401
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNav.web.js","sources":["../../../../../../src/components/SideNav/SideNav.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { SideNavContext } from './SideNavContext';\nimport type { SideNavContextType, SideNavProps } from './types';\nimport {\n classes,\n COLLAPSED_L1_WIDTH,\n HOVER_AGAIN_DELAY,\n L1_EXIT_HOVER_DELAY,\n SKIP_NAV_ID,\n TRANSITION_CLEANUP_DELAY,\n SIDE_NAV_EXPANDED_L1_WIDTH_BASE,\n SIDE_NAV_EXPANDED_L1_WIDTH_XL,\n} from './tokens';\nimport BaseBox from '~components/Box/BaseBox';\nimport { makeBorderSize, makeMotionTime, makeSize, makeSpace } from '~utils';\nimport { Drawer, DrawerBody, DrawerHeader } from '~components/Drawer';\nimport { SkipNavContent, SkipNavLink } from '~components/SkipNav/SkipNav';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { size as sizeTokens } from '~tokens/global';\n\nconst {\n COLLAPSED,\n SHOW_WHEN_COLLAPSED,\n HIDE_WHEN_COLLAPSED,\n TRANSITIONING,\n L1_ITEM_WRAPPER,\n} = classes;\n\nconst MobileL1Container = styled(BaseBox)(() => {\n return {\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n };\n});\n\nconst StyledL1Menu = styled(BaseBox)((props) => {\n const quick = makeMotionTime(props.theme.motion.duration.quick);\n const xmoderate = makeMotionTime(props.theme.motion.duration.xmoderate);\n const easing = props.theme.motion.easing;\n\n const l1Expand = `width ${xmoderate} ${easing.entrance}`;\n const l1Collapse = `width ${quick} ${easing.exit}`;\n\n return {\n width: '100%',\n transition: l1Expand,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: makeSpace(props.theme.spacing[3]),\n },\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&.${COLLAPSED}`]: {\n width: makeSize(COLLAPSED_L1_WIDTH),\n transition: l1Collapse,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: `${makeSpace(props.theme.spacing[3])} ${makeSpace(props.theme.spacing[3])}`,\n },\n [`&:not(.${TRANSITIONING}) .${HIDE_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&:not(.${TRANSITIONING}) .${SHOW_WHEN_COLLAPSED}`]: {\n display: 'initial',\n },\n },\n };\n});\n\nconst getL1MenuClassName = ({\n isL1Collapsed,\n isL1Hovered,\n isTransitioning,\n}: {\n isL1Collapsed: boolean;\n isL1Hovered: boolean;\n isTransitioning: boolean;\n}): string => {\n const isMenuCollapsed = isL1Collapsed && !isL1Hovered;\n\n if (isMenuCollapsed) {\n if (isTransitioning) {\n return `${COLLAPSED} ${TRANSITIONING}`;\n }\n\n return COLLAPSED;\n }\n\n return '';\n};\n\nconst BannerContainer = styled(BaseBox)((props) => {\n return {\n '&:not(:empty)': {\n borderBottom: makeBorderSize(props.theme.border.width.thin),\n borderBottomStyle: 'solid',\n borderBottomColor: props.theme.colors.surface.border.gray.muted,\n borderRight: makeBorderSize(props.theme.border.width.thin),\n borderRightStyle: 'solid',\n borderRightColor: props.theme.colors.surface.border.gray.muted,\n padding: makeSpace(props.theme.spacing[3]),\n maxHeight: makeSize(sizeTokens['100']),\n width: '100%',\n },\n };\n});\n\n/**\n * ### SideNav component\n *\n * The side navigation is positioned along the left side of the screen that provides quick access to different sections or functionalities of the application.\n *\n * ---\n *\n * #### Usage\n *\n * SideNav requires handling active state with React Router, Checkout Usage with React Router v6 at - [SideNav Documentation](https://blade.razorpay.com/?path=/docs/components-sidenav--docs)\n *\n */\nconst _SideNav = (\n { children, isOpen, onDismiss, banner, testID, ...rest }: SideNavProps,\n ref: React.Ref<BladeElementRef>,\n): React.ReactElement => {\n const l2PortalContainerRef = React.useRef(null);\n const l1ContainerRef = React.useRef<HTMLDivElement>(null);\n const timeoutIdsRef = React.useRef<NodeJS.Timeout[]>([]);\n const mouseOverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const [isL1Collapsed, setIsL1Collapsed] = React.useState(false);\n const [isMobileL2Open, setIsMobileL2Open] = React.useState(false);\n const [isL1Hovered, setIsL1Hovered] = React.useState(false);\n const [isHoverAgainEnabled, setIsHoverAgainEnabled] = React.useState(true);\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n const [l2DrawerTitle, setL2DrawerTitle] = React.useState('');\n\n const isMobile = useIsMobile();\n\n const closeMobileNav = (): void => {\n if (isMobile) {\n setIsMobileL2Open(false);\n onDismiss?.();\n }\n };\n\n const cleanupTransition = (): void => {\n const clearTransitionTimeout = setTimeout(() => {\n if (isTransitioning) {\n setIsTransitioning(false);\n }\n }, TRANSITION_CLEANUP_DELAY);\n timeoutIdsRef.current.push(clearTransitionTimeout);\n };\n\n /**\n * Handles L1 -> L2 menu changes based on active item\n */\n const onLinkActiveChange: SideNavContextType['onLinkActiveChange'] = (args) => {\n const isL1ItemActive = args.level === 1 && args.isActive;\n\n if (isL1ItemActive) {\n if (args.isL2Trigger) {\n // Click on L2 Trigger\n if (isMobile) {\n setL2DrawerTitle(args.title);\n setIsMobileL2Open(true);\n return;\n }\n\n setIsL1Collapsed(true);\n\n // `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change\n if (!args.isFirstRender) {\n setIsTransitioning(true);\n cleanupTransition();\n setIsL1Hovered(false);\n setIsHoverAgainEnabled(false);\n // For some delay, we disable hover to expand behaviour to avoid buggy flicker when cursor is on L1 while its trying to close\n const hoverAgainTimeout = setTimeout(() => {\n setIsHoverAgainEnabled(true);\n }, HOVER_AGAIN_DELAY);\n timeoutIdsRef.current.push(hoverAgainTimeout);\n }\n } else {\n // Click on normal L1 Item\n // eslint-disable-next-line no-lonely-if\n if (isMobile) {\n setIsMobileL2Open(false);\n }\n // Ensures that if Normal L1 item is clicked, the L1 stays expanded\n setIsL1Collapsed(false);\n }\n }\n };\n\n const contextValue = React.useMemo(\n () => ({\n l2PortalContainerRef,\n onLinkActiveChange,\n closeMobileNav,\n isL1Collapsed: isMobile ? isMobileL2Open : isL1Collapsed,\n setIsL1Collapsed,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isL1Collapsed, isMobile, isMobileL2Open],\n );\n\n React.useEffect(() => {\n return () => {\n for (const timeoutId of timeoutIdsRef.current) {\n clearTimeout(timeoutId);\n }\n timeoutIdsRef.current = [];\n };\n }, []);\n\n return (\n <SideNavContext.Provider value={contextValue}>\n {isMobile && onDismiss ? (\n <>\n {/* L1 */}\n <Drawer isOpen={isOpen ?? false} onDismiss={onDismiss}>\n <DrawerHeader title=\"Main Menu\" />\n <DrawerBody>\n <MobileL1Container\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n className=\"mobile-l1-container\"\n height=\"100%\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n >\n {children}\n </MobileL1Container>\n </DrawerBody>\n </Drawer>\n {/* L2 */}\n <Drawer isOpen={isMobileL2Open} onDismiss={() => setIsMobileL2Open(false)} isLazy={false}>\n <DrawerHeader title={l2DrawerTitle} />\n <DrawerBody>\n <BaseBox ref={l2PortalContainerRef} />\n </DrawerBody>\n </Drawer>\n </>\n ) : (\n <BaseBox\n ref={ref as never}\n position=\"fixed\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n display={{ base: 'none', m: 'flex' }}\n flexDirection=\"column\"\n width={{\n base: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_BASE),\n xl: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_XL),\n }}\n as=\"nav\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n {...getStyledProps(rest)}\n {...makeAnalyticsAttribute(rest)}\n >\n {banner ? <BannerContainer>{banner}</BannerContainer> : null}\n <BaseBox position=\"relative\" display=\"block\" flex=\"1\" width=\"100%\">\n <BaseBox\n position=\"absolute\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n width=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n id=\"blade-sidenav-l2\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n ref={l2PortalContainerRef}\n />\n <StyledL1Menu\n ref={l1ContainerRef}\n id=\"blade-sidenav-l1\"\n className={getL1MenuClassName({ isL1Collapsed, isL1Hovered, isTransitioning })}\n position=\"absolute\"\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n overflow=\"hidden\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n onTransitionEnd={(e) => {\n // This check ensures transitioning is set to false only when its true\n // And only the l1Container element's transitions are considered and other transitions of l1 expand or child elements are ignored\n if (isTransitioning && l1ContainerRef.current === e.target) {\n setIsTransitioning(false);\n }\n }}\n // Hmm you might be wondering, why is `onMouseOver` paired with `onMouseLeave`? A sane person would pair `onMouseOver` with `onMouseOut`, and `onMouseEnter` with `onMouseLeave`\n // since they are logical equivalents of each other. So why don't we do that? Hold tight, you're in for a ride ☕️.\n //\n // 1. In an ideal scenario, we would put `onMouseEnter` and `onMouseLeave` here and expect things to work.\n // 2. The L2 menu of our SideNav is React Portalled out of the L1 child\n // 3. React considers its own children as true children for JS events and not DOM children (Checkout React Portal Caveats - https://react.dev/reference/react-dom/createPortal#caveats)\n // 3. In the next ideal scenario, we would put `e.stopPropagation` on child component of portal like React recommends, except mouseenter, mouseleave events don't propagate at all (https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event#usage_notes)\n // 4. So `onMouseEnter` gets triggered on L2 enter. But we don't want to open L1 menu on L2 hover\n // 5. Thus we use `onMouseOver` for hover part and call e.stopPropagation in portal child (SideNavLevel).\n // 6. But in case of unhover/leave, we don't want to trigger mouseOut for all child components individually. We want 1 hover out of L1 menu. Thus we use `onMouseLeave`\n onMouseOver={() => {\n if (mouseOverTimeoutRef.current) {\n clearTimeout(mouseOverTimeoutRef.current);\n }\n if (isL1Collapsed && isHoverAgainEnabled) {\n setIsL1Hovered(true);\n }\n }}\n onMouseLeave={() => {\n if (isL1Collapsed && isL1Hovered) {\n mouseOverTimeoutRef.current = setTimeout(() => {\n setIsL1Hovered(false);\n setIsTransitioning(true);\n cleanupTransition();\n }, L1_EXIT_HOVER_DELAY);\n }\n }}\n >\n <SkipNavLink id={SKIP_NAV_ID} _hasBackground={true} />\n {children}\n </StyledL1Menu>\n <SkipNavContent id={SKIP_NAV_ID} />\n </BaseBox>\n </BaseBox>\n )}\n </SideNavContext.Provider>\n );\n};\n\nconst SideNav = React.forwardRef(_SideNav);\n\nexport { SideNav };\n"],"names":["COLLAPSED","classes","SHOW_WHEN_COLLAPSED","HIDE_WHEN_COLLAPSED","TRANSITIONING","L1_ITEM_WRAPPER","MobileL1Container","styled","BaseBox","withConfig","displayName","componentId","_defineProperty","concat","display","StyledL1Menu","props","quick","makeMotionTime","theme","motion","duration","xmoderate","easing","l1Expand","entrance","l1Collapse","exit","width","transition","padding","makeSpace","spacing","makeSize","COLLAPSED_L1_WIDTH","getL1MenuClassName","_ref3","isL1Collapsed","isL1Hovered","isTransitioning","isMenuCollapsed","BannerContainer","borderBottom","makeBorderSize","border","thin","borderBottomStyle","borderBottomColor","colors","surface","gray","muted","borderRight","borderRightStyle","borderRightColor","maxHeight","sizeTokens","_SideNav","_ref4","ref","children","isOpen","onDismiss","banner","testID","rest","_objectWithoutProperties","_excluded","l2PortalContainerRef","React","useRef","l1ContainerRef","timeoutIdsRef","mouseOverTimeoutRef","_React$useState","useState","_React$useState2","_slicedToArray","setIsL1Collapsed","_React$useState3","_React$useState4","isMobileL2Open","setIsMobileL2Open","_React$useState5","_React$useState6","setIsL1Hovered","_React$useState7","_React$useState8","isHoverAgainEnabled","setIsHoverAgainEnabled","_React$useState9","_React$useState10","setIsTransitioning","_React$useState11","_React$useState12","l2DrawerTitle","setL2DrawerTitle","isMobile","useIsMobile","closeMobileNav","cleanupTransition","clearTransitionTimeout","setTimeout","TRANSITION_CLEANUP_DELAY","current","push","onLinkActiveChange","args","isL1ItemActive","level","isActive","isL2Trigger","title","isFirstRender","hoverAgainTimeout","HOVER_AGAIN_DELAY","contextValue","useMemo","useEffect","_iterator","_createForOfIteratorHelper","_step","s","n","done","timeoutId","value","clearTimeout","err","e","f","_jsx","SideNavContext","Provider","_jsxs","_Fragment","Drawer","DrawerHeader","DrawerBody","_objectSpread","flexDirection","justifyContent","className","height","metaAttribute","name","MetaConstants","SideNav","isLazy","position","backgroundColor","top","left","base","m","SIDE_NAV_EXPANDED_L1_WIDTH_BASE","xl","SIDE_NAV_EXPANDED_L1_WIDTH_XL","as","getStyledProps","makeAnalyticsAttribute","flex","id","borderRightWidth","overflow","onTransitionEnd","target","onMouseOver","onMouseLeave","L1_EXIT_HOVER_DELAY","SkipNavLink","SKIP_NAV_ID","_hasBackground","SkipNavContent","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SideNav.web.js","sources":["../../../../../../src/components/SideNav/SideNav.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { SideNavContext } from './SideNavContext';\nimport type { SideNavContextType, SideNavProps } from './types';\nimport {\n classes,\n COLLAPSED_L1_WIDTH,\n HOVER_AGAIN_DELAY,\n L1_EXIT_HOVER_DELAY,\n SKIP_NAV_ID,\n TRANSITION_CLEANUP_DELAY,\n SIDE_NAV_EXPANDED_L1_WIDTH_BASE,\n SIDE_NAV_EXPANDED_L1_WIDTH_XL,\n} from './tokens';\nimport BaseBox from '~components/Box/BaseBox';\nimport { makeBorderSize, makeMotionTime, makeSize, makeSpace } from '~utils';\nimport { Drawer, DrawerBody, DrawerHeader } from '~components/Drawer';\nimport { SkipNavContent, SkipNavLink } from '~components/SkipNav/SkipNav';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { size as sizeTokens } from '~tokens/global';\n\nconst {\n COLLAPSED,\n SHOW_WHEN_COLLAPSED,\n HIDE_WHEN_COLLAPSED,\n TRANSITIONING,\n L1_ITEM_WRAPPER,\n} = classes;\n\nconst MobileL1Container = styled(BaseBox)(() => {\n return {\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n };\n});\n\nconst StyledL1Menu = styled(BaseBox)((props) => {\n const quick = makeMotionTime(props.theme.motion.duration.quick);\n const xmoderate = makeMotionTime(props.theme.motion.duration.xmoderate);\n const easing = props.theme.motion.easing;\n\n const l1Expand = `width ${xmoderate} ${easing.entrance}`;\n const l1Collapse = `width ${quick} ${easing.exit}`;\n\n return {\n width: '100%',\n transition: l1Expand,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: makeSpace(props.theme.spacing[3]),\n },\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&.${COLLAPSED}`]: {\n width: makeSize(COLLAPSED_L1_WIDTH),\n transition: l1Collapse,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: `${makeSpace(props.theme.spacing[3])} ${makeSpace(props.theme.spacing[3])}`,\n },\n [`&:not(.${TRANSITIONING}) .${HIDE_WHEN_COLLAPSED}`]: {\n display: 'none',\n },\n [`&:not(.${TRANSITIONING}) .${SHOW_WHEN_COLLAPSED}`]: {\n display: 'initial',\n },\n },\n };\n});\n\nconst getL1MenuClassName = ({\n isL1Collapsed,\n isL1Hovered,\n isTransitioning,\n}: {\n isL1Collapsed: boolean;\n isL1Hovered: boolean;\n isTransitioning: boolean;\n}): string => {\n const isMenuCollapsed = isL1Collapsed && !isL1Hovered;\n\n if (isMenuCollapsed) {\n if (isTransitioning) {\n return `${COLLAPSED} ${TRANSITIONING}`;\n }\n\n return COLLAPSED;\n }\n\n return '';\n};\n\nconst BannerContainer = styled(BaseBox)((props) => {\n return {\n '&:not(:empty)': {\n borderBottom: makeBorderSize(props.theme.border.width.thin),\n borderBottomStyle: 'solid',\n borderBottomColor: props.theme.colors.surface.border.gray.muted,\n borderRight: makeBorderSize(props.theme.border.width.thin),\n borderRightStyle: 'solid',\n borderRightColor: props.theme.colors.surface.border.gray.muted,\n padding: makeSpace(props.theme.spacing[3]),\n maxHeight: makeSize(sizeTokens['100']),\n width: '100%',\n },\n };\n});\n\n/**\n * ### SideNav component\n *\n * The side navigation is positioned along the left side of the screen that provides quick access to different sections or functionalities of the application.\n *\n * ---\n *\n * #### Usage\n *\n * SideNav requires handling active state with React Router, Checkout Usage with React Router v6 at - [SideNav Documentation](https://blade.razorpay.com/?path=/docs/components-sidenav--docs)\n *\n */\nconst _SideNav = (\n { children, isOpen, onDismiss, onVisibleLevelChange, banner, testID, ...rest }: SideNavProps,\n ref: React.Ref<BladeElementRef>,\n): React.ReactElement => {\n const l2PortalContainerRef = React.useRef(null);\n const l1ContainerRef = React.useRef<HTMLDivElement>(null);\n const timeoutIdsRef = React.useRef<NodeJS.Timeout[]>([]);\n const mouseOverTimeoutRef = React.useRef<NodeJS.Timeout>();\n const [isL1Collapsed, setIsL1Collapsed] = React.useState(false);\n const [isMobileL2Open, setIsMobileL2Open] = React.useState(false);\n const [isL1Hovered, setIsL1Hovered] = React.useState(false);\n const [isHoverAgainEnabled, setIsHoverAgainEnabled] = React.useState(true);\n const [isTransitioning, setIsTransitioning] = React.useState(false);\n const [l2DrawerTitle, setL2DrawerTitle] = React.useState('');\n\n const isMobile = useIsMobile();\n\n const closeMobileNav = (): void => {\n if (isMobile) {\n setIsMobileL2Open(false);\n onDismiss?.();\n onVisibleLevelChange?.({ visibleLevel: 0 });\n }\n };\n\n const cleanupTransition = (): void => {\n const clearTransitionTimeout = setTimeout(() => {\n if (isTransitioning) {\n setIsTransitioning(false);\n }\n }, TRANSITION_CLEANUP_DELAY);\n timeoutIdsRef.current.push(clearTransitionTimeout);\n };\n\n const collapseL1 = (title: string): void => {\n if (isMobile) {\n setL2DrawerTitle(title);\n setIsMobileL2Open(true);\n onVisibleLevelChange?.({ visibleLevel: 2 });\n return;\n }\n\n if (!isL1Collapsed) {\n setIsL1Collapsed(true);\n onVisibleLevelChange?.({ visibleLevel: 2 });\n }\n };\n\n const expandL1 = (): void => {\n if (isMobile) {\n setIsMobileL2Open(false);\n onVisibleLevelChange?.({ visibleLevel: 1 });\n return;\n }\n // Ensures that if Normal L1 item is clicked, the L1 stays expanded\n if (isL1Collapsed) {\n setIsL1Collapsed(false);\n // We want to avoid calling onVisibleLevelChange twice when L1 is hovered and then item on L1 is selected\n if (!isL1Hovered) {\n onVisibleLevelChange?.({ visibleLevel: 1 });\n }\n }\n };\n\n /**\n * Handles L1 -> L2 menu changes based on active item\n */\n const onLinkActiveChange: SideNavContextType['onLinkActiveChange'] = (args) => {\n const isL1ItemActive = args.level === 1 && args.isActive;\n\n if (isL1ItemActive) {\n if (args.isL2Trigger) {\n // Click on L2 Trigger\n collapseL1(args.title);\n\n // `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change\n if (!args.isFirstRender) {\n setIsTransitioning(true);\n cleanupTransition();\n setIsL1Hovered(false);\n setIsHoverAgainEnabled(false);\n // For some delay, we disable hover to expand behaviour to avoid buggy flicker when cursor is on L1 while its trying to close\n const hoverAgainTimeout = setTimeout(() => {\n setIsHoverAgainEnabled(true);\n }, HOVER_AGAIN_DELAY);\n timeoutIdsRef.current.push(hoverAgainTimeout);\n }\n } else {\n // Click on normal L1 Item\n expandL1();\n }\n }\n };\n\n const contextValue = React.useMemo(\n () => ({\n l2PortalContainerRef,\n onLinkActiveChange,\n closeMobileNav,\n isL1Collapsed: isMobile ? isMobileL2Open : isL1Collapsed,\n setIsL1Collapsed,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isL1Collapsed, isMobile, isMobileL2Open, isL1Hovered],\n );\n\n React.useEffect(() => {\n return () => {\n for (const timeoutId of timeoutIdsRef.current) {\n clearTimeout(timeoutId);\n }\n timeoutIdsRef.current = [];\n };\n }, []);\n\n return (\n <SideNavContext.Provider value={contextValue}>\n {isMobile && onDismiss ? (\n <>\n {/* L1 */}\n <Drawer isOpen={isOpen ?? false} onDismiss={closeMobileNav}>\n <DrawerHeader title=\"Main Menu\" />\n <DrawerBody>\n <MobileL1Container\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n className=\"mobile-l1-container\"\n height=\"100%\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n >\n {children}\n </MobileL1Container>\n </DrawerBody>\n </Drawer>\n {/* L2 */}\n <Drawer isOpen={isMobileL2Open} onDismiss={() => expandL1()} isLazy={false}>\n <DrawerHeader title={l2DrawerTitle} />\n <DrawerBody>\n <BaseBox ref={l2PortalContainerRef} />\n </DrawerBody>\n </Drawer>\n </>\n ) : (\n <BaseBox\n ref={ref as never}\n position=\"fixed\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n display={{ base: 'none', m: 'flex' }}\n flexDirection=\"column\"\n width={{\n base: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_BASE),\n xl: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_XL),\n }}\n as=\"nav\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n {...getStyledProps(rest)}\n {...makeAnalyticsAttribute(rest)}\n >\n {banner ? <BannerContainer>{banner}</BannerContainer> : null}\n <BaseBox position=\"relative\" display=\"block\" flex=\"1\" width=\"100%\">\n <BaseBox\n position=\"absolute\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n width=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n id=\"blade-sidenav-l2\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n ref={l2PortalContainerRef}\n />\n <StyledL1Menu\n ref={l1ContainerRef}\n id=\"blade-sidenav-l1\"\n className={getL1MenuClassName({ isL1Collapsed, isL1Hovered, isTransitioning })}\n position=\"absolute\"\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n backgroundColor=\"surface.background.gray.moderate\"\n height=\"100%\"\n overflow=\"hidden\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n borderRightWidth=\"thin\"\n borderRightColor=\"surface.border.gray.muted\"\n onTransitionEnd={(e) => {\n // This check ensures transitioning is set to false only when its true\n // And only the l1Container element's transitions are considered and other transitions of l1 expand or child elements are ignored\n if (isTransitioning && l1ContainerRef.current === e.target) {\n setIsTransitioning(false);\n }\n }}\n // Hmm you might be wondering, why is `onMouseOver` paired with `onMouseLeave`? A sane person would pair `onMouseOver` with `onMouseOut`, and `onMouseEnter` with `onMouseLeave`\n // since they are logical equivalents of each other. So why don't we do that? Hold tight, you're in for a ride ☕️.\n //\n // 1. In an ideal scenario, we would put `onMouseEnter` and `onMouseLeave` here and expect things to work.\n // 2. The L2 menu of our SideNav is React Portalled out of the L1 child\n // 3. React considers its own children as true children for JS events and not DOM children (Checkout React Portal Caveats - https://react.dev/reference/react-dom/createPortal#caveats)\n // 3. In the next ideal scenario, we would put `e.stopPropagation` on child component of portal like React recommends, except mouseenter, mouseleave events don't propagate at all (https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseenter_event#usage_notes)\n // 4. So `onMouseEnter` gets triggered on L2 enter. But we don't want to open L1 menu on L2 hover\n // 5. Thus we use `onMouseOver` for hover part and call e.stopPropagation in portal child (SideNavLevel).\n // 6. But in case of unhover/leave, we don't want to trigger mouseOut for all child components individually. We want 1 hover out of L1 menu. Thus we use `onMouseLeave`\n onMouseOver={() => {\n if (mouseOverTimeoutRef.current) {\n clearTimeout(mouseOverTimeoutRef.current);\n }\n if (isL1Collapsed && isHoverAgainEnabled && !isL1Hovered) {\n setIsL1Hovered(true);\n onVisibleLevelChange?.({ visibleLevel: 1 });\n }\n }}\n onMouseLeave={() => {\n if (isL1Collapsed && isL1Hovered) {\n mouseOverTimeoutRef.current = setTimeout(() => {\n setIsL1Hovered(false);\n setIsTransitioning(true);\n cleanupTransition();\n onVisibleLevelChange?.({ visibleLevel: 2 });\n }, L1_EXIT_HOVER_DELAY);\n }\n }}\n >\n <SkipNavLink id={SKIP_NAV_ID} _hasBackground={true} />\n {children}\n </StyledL1Menu>\n <SkipNavContent id={SKIP_NAV_ID} />\n </BaseBox>\n </BaseBox>\n )}\n </SideNavContext.Provider>\n );\n};\n\nconst SideNav = React.forwardRef(_SideNav);\n\nexport { SideNav };\n"],"names":["COLLAPSED","classes","SHOW_WHEN_COLLAPSED","HIDE_WHEN_COLLAPSED","TRANSITIONING","L1_ITEM_WRAPPER","MobileL1Container","styled","BaseBox","withConfig","displayName","componentId","_defineProperty","concat","display","StyledL1Menu","props","quick","makeMotionTime","theme","motion","duration","xmoderate","easing","l1Expand","entrance","l1Collapse","exit","width","transition","padding","makeSpace","spacing","makeSize","COLLAPSED_L1_WIDTH","getL1MenuClassName","_ref3","isL1Collapsed","isL1Hovered","isTransitioning","isMenuCollapsed","BannerContainer","borderBottom","makeBorderSize","border","thin","borderBottomStyle","borderBottomColor","colors","surface","gray","muted","borderRight","borderRightStyle","borderRightColor","maxHeight","sizeTokens","_SideNav","_ref4","ref","children","isOpen","onDismiss","onVisibleLevelChange","banner","testID","rest","_objectWithoutProperties","_excluded","l2PortalContainerRef","React","useRef","l1ContainerRef","timeoutIdsRef","mouseOverTimeoutRef","_React$useState","useState","_React$useState2","_slicedToArray","setIsL1Collapsed","_React$useState3","_React$useState4","isMobileL2Open","setIsMobileL2Open","_React$useState5","_React$useState6","setIsL1Hovered","_React$useState7","_React$useState8","isHoverAgainEnabled","setIsHoverAgainEnabled","_React$useState9","_React$useState10","setIsTransitioning","_React$useState11","_React$useState12","l2DrawerTitle","setL2DrawerTitle","isMobile","useIsMobile","closeMobileNav","visibleLevel","cleanupTransition","clearTransitionTimeout","setTimeout","TRANSITION_CLEANUP_DELAY","current","push","collapseL1","title","expandL1","onLinkActiveChange","args","isL1ItemActive","level","isActive","isL2Trigger","isFirstRender","hoverAgainTimeout","HOVER_AGAIN_DELAY","contextValue","useMemo","useEffect","_iterator","_createForOfIteratorHelper","_step","s","n","done","timeoutId","value","clearTimeout","err","e","f","_jsx","SideNavContext","Provider","_jsxs","_Fragment","Drawer","DrawerHeader","DrawerBody","_objectSpread","flexDirection","justifyContent","className","height","metaAttribute","name","MetaConstants","SideNav","isLazy","position","backgroundColor","top","left","base","m","SIDE_NAV_EXPANDED_L1_WIDTH_BASE","xl","SIDE_NAV_EXPANDED_L1_WIDTH_XL","as","getStyledProps","makeAnalyticsAttribute","flex","id","borderRightWidth","overflow","onTransitionEnd","target","onMouseOver","onMouseLeave","L1_EXIT_HOVER_DELAY","SkipNavLink","SKIP_NAV_ID","_hasBackground","SkipNavContent","forwardRef"],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import '../../../utils/getFocusRingStyles/index.js';
|
|
|
19
19
|
import { useIsomorphicLayoutEffect } from '../../../utils/useIsomorphicLayoutEffect.js';
|
|
20
20
|
import '../../../utils/logger/index.js';
|
|
21
21
|
import '../../../utils/makeAnalyticsAttribute/index.js';
|
|
22
|
+
import '../../Typography/index.js';
|
|
22
23
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
23
24
|
import { BaseBox } from '../../Box/BaseBox/BaseBox.web.js';
|
|
24
25
|
import { makeSize } from '../../../utils/makeSize/makeSize.js';
|
|
@@ -27,6 +28,7 @@ import { makeBorderSize } from '../../../utils/makeBorderSize/makeBorderSize.js'
|
|
|
27
28
|
import { getFocusRingStyles } from '../../../utils/getFocusRingStyles/getFocusRingStyles.web.js';
|
|
28
29
|
import { Box } from '../../Box/Box.js';
|
|
29
30
|
import { BaseText } from '../../Typography/BaseText/BaseText.web.js';
|
|
31
|
+
import { Text } from '../../Typography/Text/Text.js';
|
|
30
32
|
import { makeAccessible } from '../../../utils/makeAccessible/makeAccessible.web.js';
|
|
31
33
|
import ChevronUpIcon from '../../Icons/ChevronUpIcon/ChevronUpIcon.js';
|
|
32
34
|
import ChevronDownIcon from '../../Icons/ChevronDownIcon/ChevronDownIcon.js';
|
|
@@ -36,7 +38,7 @@ import { CollapsibleBody } from '../../Collapsible/CollapsibleBody.js';
|
|
|
36
38
|
import { makeAnalyticsAttribute } from '../../../utils/makeAnalyticsAttribute/makeAnalyticsAttribute.js';
|
|
37
39
|
import ChevronRightIcon from '../../Icons/ChevronRightIcon/ChevronRightIcon.js';
|
|
38
40
|
|
|
39
|
-
var _excluded = ["title", "href", "children", "titleSuffix", "trailing", "isActive", "icon", "tooltip", "as", "target", "onClick"];
|
|
41
|
+
var _excluded = ["title", "description", "href", "children", "titleSuffix", "trailing", "isActive", "icon", "tooltip", "as", "target", "onClick"];
|
|
40
42
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
41
43
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
42
44
|
var SHOW_ON_LINK_HOVER = classes.SHOW_ON_LINK_HOVER,
|
|
@@ -63,14 +65,13 @@ var StyledNavLinkContainer = /*#__PURE__*/styled(BaseBox).withConfig({
|
|
|
63
65
|
display: 'flex',
|
|
64
66
|
flexDirection: 'row',
|
|
65
67
|
alignItems: 'center',
|
|
66
|
-
|
|
67
|
-
height: makeSize(NAV_ITEM_HEIGHT),
|
|
68
|
+
height: props.$hasDescription ? undefined : makeSize(NAV_ITEM_HEIGHT),
|
|
68
69
|
width: '100%',
|
|
69
70
|
textDecoration: 'none',
|
|
70
71
|
overflow: 'hidden',
|
|
71
72
|
flexWrap: 'nowrap',
|
|
72
73
|
cursor: 'pointer',
|
|
73
|
-
padding: "".concat(makeSpace(props.theme.spacing[0]), " ").concat(makeSpace(props.theme.spacing[4])),
|
|
74
|
+
padding: "".concat(makeSpace(props.theme.spacing[props.$hasDescription ? 3 : 0]), " ").concat(makeSpace(props.theme.spacing[4])),
|
|
74
75
|
margin: "".concat(makeSpace(props.theme.spacing[1]), " ").concat(makeSpace(props.theme.spacing[0])),
|
|
75
76
|
color: props.theme.colors.interactive.text.gray.subtle,
|
|
76
77
|
borderRadius: props.theme.border.radius.medium,
|
|
@@ -93,39 +94,64 @@ var StyledNavLinkContainer = /*#__PURE__*/styled(BaseBox).withConfig({
|
|
|
93
94
|
var NavLinkIconTitle = function NavLinkIconTitle(_ref2) {
|
|
94
95
|
var Icon = _ref2.icon,
|
|
95
96
|
title = _ref2.title,
|
|
97
|
+
description = _ref2.description,
|
|
96
98
|
titleSuffix = _ref2.titleSuffix,
|
|
99
|
+
isActive = _ref2.isActive,
|
|
100
|
+
trailing = _ref2.trailing,
|
|
97
101
|
isL1Item = _ref2.isL1Item;
|
|
98
102
|
return /*#__PURE__*/jsxs(Box, {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
children: [Icon ? /*#__PURE__*/jsx(BaseBox, {
|
|
103
|
+
width: "100%",
|
|
104
|
+
textAlign: "left",
|
|
105
|
+
children: [/*#__PURE__*/jsxs(Box, {
|
|
103
106
|
display: "flex",
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
justifyContent: "space-between",
|
|
108
|
+
width: "100%",
|
|
109
|
+
children: [/*#__PURE__*/jsxs(Box, {
|
|
110
|
+
display: "flex",
|
|
111
|
+
flexDirection: "row",
|
|
112
|
+
gap: "spacing.3",
|
|
113
|
+
alignItems: "center",
|
|
114
|
+
children: [Icon ? /*#__PURE__*/jsx(BaseBox, {
|
|
115
|
+
display: "flex",
|
|
116
|
+
flexDirection: "row",
|
|
117
|
+
alignItems: "center",
|
|
118
|
+
children: /*#__PURE__*/jsx(Icon, {
|
|
119
|
+
size: "medium",
|
|
120
|
+
color: "currentColor"
|
|
121
|
+
})
|
|
122
|
+
}) : null, /*#__PURE__*/jsx(BaseText, {
|
|
123
|
+
truncateAfterLines: 1,
|
|
124
|
+
color: "currentColor",
|
|
125
|
+
fontWeight: "medium",
|
|
126
|
+
fontSize: 100,
|
|
127
|
+
lineHeight: 100,
|
|
128
|
+
as: "p",
|
|
129
|
+
className: isL1Item ? HIDE_WHEN_COLLAPSED : '',
|
|
130
|
+
children: title
|
|
131
|
+
}), titleSuffix ? /*#__PURE__*/jsx(BaseBox, {
|
|
132
|
+
display: "flex",
|
|
133
|
+
alignItems: "center",
|
|
134
|
+
children: titleSuffix
|
|
135
|
+
}) : null]
|
|
136
|
+
}), /*#__PURE__*/jsx(Box, {
|
|
137
|
+
display: "flex",
|
|
138
|
+
alignItems: "center",
|
|
139
|
+
children: trailing
|
|
140
|
+
})]
|
|
141
|
+
}), !isL1Item && description ? /*#__PURE__*/jsx(Text, {
|
|
142
|
+
size: "small",
|
|
143
|
+
marginLeft: "spacing.7",
|
|
144
|
+
textAlign: "left",
|
|
145
|
+
weight: "medium",
|
|
146
|
+
color: isActive ? 'interactive.text.primary.muted' : 'interactive.text.gray.muted',
|
|
112
147
|
truncateAfterLines: 1,
|
|
113
|
-
|
|
114
|
-
fontWeight: "medium",
|
|
115
|
-
fontSize: 100,
|
|
116
|
-
lineHeight: 100,
|
|
117
|
-
as: "p",
|
|
118
|
-
className: isL1Item ? HIDE_WHEN_COLLAPSED : '',
|
|
119
|
-
children: title
|
|
120
|
-
}), titleSuffix ? /*#__PURE__*/jsx(BaseBox, {
|
|
121
|
-
display: "flex",
|
|
122
|
-
alignItems: "center",
|
|
123
|
-
children: titleSuffix
|
|
148
|
+
children: description
|
|
124
149
|
}) : null]
|
|
125
150
|
});
|
|
126
151
|
};
|
|
127
152
|
var L3Trigger = function L3Trigger(_ref3) {
|
|
128
153
|
var title = _ref3.title,
|
|
154
|
+
description = _ref3.description,
|
|
129
155
|
icon = _ref3.icon,
|
|
130
156
|
as = _ref3.as,
|
|
131
157
|
href = _ref3.href,
|
|
@@ -148,7 +174,8 @@ var L3Trigger = function L3Trigger(_ref3) {
|
|
|
148
174
|
return /*#__PURE__*/jsx(TooltipifyNavItem, {
|
|
149
175
|
tooltip: tooltip,
|
|
150
176
|
children: /*#__PURE__*/jsx(StyledNavLinkContainer, {
|
|
151
|
-
|
|
177
|
+
$hasDescription: Boolean(description),
|
|
178
|
+
children: /*#__PURE__*/jsx(BaseBox, _objectSpread(_objectSpread({
|
|
152
179
|
className: STYLED_NAV_LINK,
|
|
153
180
|
as: href ? as : 'button',
|
|
154
181
|
to: href,
|
|
@@ -160,16 +187,14 @@ var L3Trigger = function L3Trigger(_ref3) {
|
|
|
160
187
|
expanded: isExpanded,
|
|
161
188
|
controls: collapsibleBodyId
|
|
162
189
|
})), {}, {
|
|
163
|
-
children:
|
|
190
|
+
children: /*#__PURE__*/jsx(NavLinkIconTitle, {
|
|
164
191
|
title: title,
|
|
192
|
+
description: description,
|
|
165
193
|
icon: icon,
|
|
166
194
|
isL1Item: false,
|
|
167
|
-
titleSuffix: titleSuffix
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
alignItems: "center",
|
|
171
|
-
children: isExpanded ? /*#__PURE__*/jsx(ChevronUpIcon, _objectSpread({}, iconProps)) : /*#__PURE__*/jsx(ChevronDownIcon, _objectSpread({}, iconProps))
|
|
172
|
-
})]
|
|
195
|
+
titleSuffix: titleSuffix,
|
|
196
|
+
trailing: isExpanded ? /*#__PURE__*/jsx(ChevronUpIcon, _objectSpread({}, iconProps)) : /*#__PURE__*/jsx(ChevronDownIcon, _objectSpread({}, iconProps))
|
|
197
|
+
})
|
|
173
198
|
}))
|
|
174
199
|
})
|
|
175
200
|
});
|
|
@@ -202,6 +227,7 @@ var CurvedVerticalLine = /*#__PURE__*/styled(BaseBox).withConfig({
|
|
|
202
227
|
});
|
|
203
228
|
var SideNavLink = function SideNavLink(_ref4) {
|
|
204
229
|
var title = _ref4.title,
|
|
230
|
+
description = _ref4.description,
|
|
205
231
|
href = _ref4.href,
|
|
206
232
|
children = _ref4.children,
|
|
207
233
|
titleSuffix = _ref4.titleSuffix,
|
|
@@ -232,6 +258,12 @@ var SideNavLink = function SideNavLink(_ref4) {
|
|
|
232
258
|
moduleName: 'SideNavLink'
|
|
233
259
|
});
|
|
234
260
|
}
|
|
261
|
+
if (currentLevel === 1 && Boolean(description)) {
|
|
262
|
+
throwBladeError({
|
|
263
|
+
message: 'Description is not supported for L1 items',
|
|
264
|
+
moduleName: 'SideNavLink'
|
|
265
|
+
});
|
|
266
|
+
}
|
|
235
267
|
}
|
|
236
268
|
var isFirstRender = useFirstRender();
|
|
237
269
|
var _useFloating = useFloating({
|
|
@@ -260,6 +292,7 @@ var SideNavLink = function SideNavLink(_ref4) {
|
|
|
260
292
|
_shouldApplyWidthRestrictions: false,
|
|
261
293
|
children: [/*#__PURE__*/jsx(L3Trigger, {
|
|
262
294
|
title: title,
|
|
295
|
+
description: description,
|
|
263
296
|
icon: icon,
|
|
264
297
|
as: as,
|
|
265
298
|
href: href,
|
|
@@ -275,6 +308,7 @@ var SideNavLink = function SideNavLink(_ref4) {
|
|
|
275
308
|
})]
|
|
276
309
|
}) : /*#__PURE__*/jsxs(Fragment, {
|
|
277
310
|
children: [/*#__PURE__*/jsxs(StyledNavLinkContainer, {
|
|
311
|
+
$hasDescription: currentLevel !== 1 && Boolean(description),
|
|
278
312
|
position: "relative",
|
|
279
313
|
children: [/*#__PURE__*/jsx(TooltipifyNavItem, {
|
|
280
314
|
tooltip: tooltip,
|
|
@@ -318,6 +352,8 @@ var SideNavLink = function SideNavLink(_ref4) {
|
|
|
318
352
|
children: [/*#__PURE__*/jsx(NavLinkIconTitle, {
|
|
319
353
|
icon: icon,
|
|
320
354
|
title: title,
|
|
355
|
+
description: description,
|
|
356
|
+
isActive: isActive,
|
|
321
357
|
isL1Item: currentLevel === 1,
|
|
322
358
|
titleSuffix: titleSuffix
|
|
323
359
|
}), isL2Trigger ? /*#__PURE__*/jsx(BaseBox, {
|