@razorpay/blade 12.91.0 → 12.92.1

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.
Files changed (39) hide show
  1. package/build/lib/web/development/_virtual/cloneDeep.js +1 -1
  2. package/build/lib/web/development/_virtual/cloneDeep3.js +1 -1
  3. package/build/lib/web/development/components/ChatInput/ChatInput.web.js +17 -11
  4. package/build/lib/web/development/components/ChatInput/ChatInput.web.js.map +1 -1
  5. package/build/lib/web/development/components/ChatInput/useChatInput.js +12 -1
  6. package/build/lib/web/development/components/ChatInput/useChatInput.js.map +1 -1
  7. package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js +1 -1
  8. package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
  9. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js +23 -15
  10. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  11. package/build/lib/web/development/components/SideNav/SideNav.web.js +143 -53
  12. package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -1
  13. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
  14. package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
  15. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
  16. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
  17. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
  18. package/build/lib/web/development/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
  19. package/build/lib/web/production/_virtual/flatten.js +1 -1
  20. package/build/lib/web/production/_virtual/flatten3.js +1 -1
  21. package/build/lib/web/production/components/ChatInput/ChatInput.web.js +17 -11
  22. package/build/lib/web/production/components/ChatInput/ChatInput.web.js.map +1 -1
  23. package/build/lib/web/production/components/ChatInput/useChatInput.js +12 -1
  24. package/build/lib/web/production/components/ChatInput/useChatInput.js.map +1 -1
  25. package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js +1 -1
  26. package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
  27. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js +23 -15
  28. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  29. package/build/lib/web/production/components/SideNav/SideNav.web.js +143 -53
  30. package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -1
  31. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
  32. package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
  33. package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
  34. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
  35. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
  36. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
  37. package/build/types/components/index.d.ts +123 -74
  38. package/build/types/components/index.native.d.ts +79 -40
  39. package/package.json +1 -1
@@ -4,21 +4,21 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import React__default from 'react';
5
5
  import styled from 'styled-components';
6
6
  import { SideNavContext } from './SideNavContext.js';
7
- import { classes, COLLAPSED_L1_WIDTH, TRANSITION_CLEANUP_DELAY, HOVER_AGAIN_DELAY, SIDE_NAV_EXPANDED_L1_WIDTH_BASE, SIDE_NAV_EXPANDED_L1_WIDTH_XL, L1_EXIT_HOVER_DELAY, SKIP_NAV_ID } from './tokens.js';
8
- import '../Box/BaseBox/index.js';
7
+ import { classes, COLLAPSED_L1_WIDTH, SIDE_NAV_EXPANDED_L1_WIDTH_BASE, SIDE_NAV_EXPANDED_L1_WIDTH_XL, TRANSITION_CLEANUP_DELAY, HOVER_AGAIN_DELAY, L1_EXIT_HOVER_DELAY, SKIP_NAV_ID } from './tokens.js';
8
+ import '../../tokens/global/index.js';
9
9
  import '../../utils/index.js';
10
- import '../Drawer/index.js';
11
- import { SkipNavLink, SkipNavContent } from '../SkipNav/SkipNav.web.js';
10
+ import '../../utils/makeAnalyticsAttribute/index.js';
11
+ import '../../utils/metaAttribute/index.js';
12
12
  import { useIsMobile } from '../../utils/useIsMobile.js';
13
+ import '../Box/BaseBox/index.js';
13
14
  import '../Box/styledProps/index.js';
14
- import '../../utils/metaAttribute/index.js';
15
- import '../../utils/makeAnalyticsAttribute/index.js';
16
- import '../../tokens/global/index.js';
15
+ import '../Drawer/index.js';
16
+ import { SkipNavLink, SkipNavContent } from '../SkipNav/SkipNav.web.js';
17
17
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
18
18
  import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
19
19
  import { makeMotionTime } from '../../utils/makeMotionTime/makeMotionTime.web.js';
20
- import { makeSpace } from '../../utils/makeSpace/makeSpace.js';
21
20
  import { makeSize } from '../../utils/makeSize/makeSize.js';
21
+ import { makeSpace } from '../../utils/makeSpace/makeSpace.js';
22
22
  import { makeBorderSize } from '../../utils/makeBorderSize/makeBorderSize.js';
23
23
  import { size } from '../../tokens/global/size.js';
24
24
  import { Drawer } from '../Drawer/Drawer.web.js';
@@ -28,12 +28,12 @@ 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", "onVisibleLevelChange", "banner", "testID"];
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
- 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; }
31
+ var _excluded = ["children", "isOpen", "onDismiss", "onVisibleLevelChange", "onExpandChange", "onExpandTransitionEnd", "banner", "backgroundColor", "testID", "isExpanded"];
34
32
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
35
33
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
36
34
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
+ 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; }
36
+ 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; }
37
37
  var COLLAPSED = classes.COLLAPSED,
38
38
  SHOW_WHEN_COLLAPSED = classes.SHOW_WHEN_COLLAPSED,
39
39
  HIDE_WHEN_COLLAPSED = classes.HIDE_WHEN_COLLAPSED,
@@ -56,12 +56,7 @@ var StyledL1Menu = /*#__PURE__*/styled(BaseBox).withConfig({
56
56
  var easing = props.theme.motion.easing;
57
57
  var l1Expand = "width ".concat(xmoderate, " ").concat(easing.entrance);
58
58
  var l1Collapse = "width ".concat(quick, " ").concat(easing.exit);
59
- return _defineProperty(_defineProperty(_defineProperty({
60
- width: '100%',
61
- transition: l1Expand
62
- }, "& > .".concat(L1_ITEM_WRAPPER), {
63
- padding: makeSpace(props.theme.spacing[3])
64
- }), ".".concat(SHOW_WHEN_COLLAPSED), {
59
+ var textVisibilityProps = props.$isSideNavExpandable ? {} : _defineProperty(_defineProperty({}, ".".concat(SHOW_WHEN_COLLAPSED), {
65
60
  display: 'none'
66
61
  }), "&.".concat(COLLAPSED), _defineProperty(_defineProperty(_defineProperty({
67
62
  width: makeSize(COLLAPSED_L1_WIDTH),
@@ -73,10 +68,52 @@ var StyledL1Menu = /*#__PURE__*/styled(BaseBox).withConfig({
73
68
  }), "&:not(.".concat(TRANSITIONING, ") .").concat(SHOW_WHEN_COLLAPSED), {
74
69
  display: 'initial'
75
70
  }));
71
+ return _objectSpread(_defineProperty({
72
+ width: '100%',
73
+ // the overall sidenav expands and collapses in this case. No need transition here
74
+ transition: props.$isSideNavExpandable ? 'none' : l1Expand
75
+ }, "& > .".concat(L1_ITEM_WRAPPER), {
76
+ padding: makeSpace(props.theme.spacing[3])
77
+ }), textVisibilityProps);
78
+ });
79
+ var StyledSideNavContainer = /*#__PURE__*/styled(BaseBox).withConfig({
80
+ displayName: "SideNavweb__StyledSideNavContainer",
81
+ componentId: "sc-1obm5ij-2"
82
+ })(function (props) {
83
+ var quick = makeMotionTime(props.theme.motion.duration.quick);
84
+ var xmoderate = makeMotionTime(props.theme.motion.duration.xmoderate);
85
+ var easing = props.theme.motion.easing;
86
+ var sideNavExpand = "width ".concat(xmoderate, " ").concat(easing.entrance);
87
+ var sideNavCollapse = "width ".concat(quick, " ").concat(easing.exit);
88
+ if (!props.$isSideNavExpandable) {
89
+ return {};
90
+ }
91
+ return _defineProperty(_defineProperty(_defineProperty({
92
+ transition: sideNavExpand
93
+ }, "&.".concat(COLLAPSED), _defineProperty(_defineProperty({
94
+ width: makeSize(COLLAPSED_L1_WIDTH),
95
+ transition: sideNavCollapse
96
+ }, "&:not(.".concat(TRANSITIONING, ") .").concat(HIDE_WHEN_COLLAPSED), {
97
+ opacity: '0',
98
+ pointerEvents: 'none',
99
+ transition: "opacity ".concat(quick, " ").concat(easing.exit)
100
+ }), "&:not(.".concat(TRANSITIONING, ") .").concat(SHOW_WHEN_COLLAPSED), {
101
+ opacity: '1',
102
+ pointerEvents: 'auto',
103
+ transition: "opacity ".concat(quick, " ").concat(easing.entrance)
104
+ })), ".".concat(SHOW_WHEN_COLLAPSED), {
105
+ opacity: '0',
106
+ pointerEvents: 'none',
107
+ transition: "opacity ".concat(quick, " ").concat(easing.exit)
108
+ }), ".".concat(HIDE_WHEN_COLLAPSED), {
109
+ opacity: '1',
110
+ pointerEvents: 'auto',
111
+ transition: "opacity ".concat(quick, " ").concat(easing.entrance)
112
+ });
76
113
  });
77
114
  var StyledL2PortalContainer = /*#__PURE__*/styled(BaseBox).withConfig({
78
115
  displayName: "SideNavweb__StyledL2PortalContainer",
79
- componentId: "sc-1obm5ij-2"
116
+ componentId: "sc-1obm5ij-3"
80
117
  })(function () {
81
118
  return {
82
119
  // This ensures that the portal node has 100% height when it has items
@@ -85,10 +122,10 @@ var StyledL2PortalContainer = /*#__PURE__*/styled(BaseBox).withConfig({
85
122
  }
86
123
  };
87
124
  });
88
- var getL1MenuClassName = function getL1MenuClassName(_ref3) {
89
- var isL1Collapsed = _ref3.isL1Collapsed,
90
- isL1Hovered = _ref3.isL1Hovered,
91
- isTransitioning = _ref3.isTransitioning;
125
+ var getL1MenuClassName = function getL1MenuClassName(_ref4) {
126
+ var isL1Collapsed = _ref4.isL1Collapsed,
127
+ isL1Hovered = _ref4.isL1Hovered,
128
+ isTransitioning = _ref4.isTransitioning;
92
129
  var isMenuCollapsed = isL1Collapsed && !isL1Hovered;
93
130
  if (isMenuCollapsed) {
94
131
  if (isTransitioning) {
@@ -100,7 +137,7 @@ var getL1MenuClassName = function getL1MenuClassName(_ref3) {
100
137
  };
101
138
  var BannerContainer = /*#__PURE__*/styled(BaseBox).withConfig({
102
139
  displayName: "SideNavweb__BannerContainer",
103
- componentId: "sc-1obm5ij-3"
140
+ componentId: "sc-1obm5ij-4"
104
141
  })(function (props) {
105
142
  return {
106
143
  '&:not(:empty)': {
@@ -129,18 +166,24 @@ var BannerContainer = /*#__PURE__*/styled(BaseBox).withConfig({
129
166
  * 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)
130
167
  *
131
168
  */
132
- var _SideNav = function _SideNav(_ref4, ref) {
133
- var children = _ref4.children,
134
- isOpen = _ref4.isOpen,
135
- onDismiss = _ref4.onDismiss,
136
- onVisibleLevelChange = _ref4.onVisibleLevelChange,
137
- banner = _ref4.banner,
138
- testID = _ref4.testID,
139
- rest = _objectWithoutProperties(_ref4, _excluded);
169
+ var _SideNav = function _SideNav(_ref5, ref) {
170
+ var children = _ref5.children,
171
+ isOpen = _ref5.isOpen,
172
+ onDismiss = _ref5.onDismiss,
173
+ onVisibleLevelChange = _ref5.onVisibleLevelChange,
174
+ onExpandChange = _ref5.onExpandChange,
175
+ onExpandTransitionEnd = _ref5.onExpandTransitionEnd,
176
+ banner = _ref5.banner,
177
+ _ref5$backgroundColor = _ref5.backgroundColor,
178
+ backgroundColor = _ref5$backgroundColor === void 0 ? 'surface.background.gray.moderate' : _ref5$backgroundColor,
179
+ testID = _ref5.testID,
180
+ _isExpanded = _ref5.isExpanded,
181
+ rest = _objectWithoutProperties(_ref5, _excluded);
140
182
  var l2PortalContainerRef = React__default.useRef(null);
141
183
  var l1ContainerRef = React__default.useRef(null);
142
184
  var timeoutIdsRef = React__default.useRef([]);
143
185
  var mouseOverTimeoutRef = React__default.useRef();
186
+ var prevIsSideNavCollapsedRef = React__default.useRef();
144
187
  var _React$useState = React__default.useState(false),
145
188
  _React$useState2 = _slicedToArray(_React$useState, 2),
146
189
  isL1Collapsed = _React$useState2[0],
@@ -166,6 +209,13 @@ var _SideNav = function _SideNav(_ref4, ref) {
166
209
  l2DrawerTitle = _React$useState10[0],
167
210
  setL2DrawerTitle = _React$useState10[1];
168
211
  var isMobile = useIsMobile();
212
+ var isSideNavCollapsed = _isExpanded === false;
213
+ var effectiveIsL1Collapsed = isMobile ? isMobileL2Open : isSideNavCollapsed || isL1Collapsed;
214
+ var effectiveIsL1Hovered = isSideNavCollapsed ? false : isL1Hovered;
215
+ var sideNavWidth = isSideNavCollapsed ? makeSize(COLLAPSED_L1_WIDTH) : {
216
+ base: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_BASE),
217
+ xl: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_XL)
218
+ };
169
219
  var closeMobileNav = function closeMobileNav() {
170
220
  if (isMobile) {
171
221
  setIsMobileL2Open(false);
@@ -175,14 +225,18 @@ var _SideNav = function _SideNav(_ref4, ref) {
175
225
  });
176
226
  }
177
227
  };
178
- var cleanupTransition = function cleanupTransition() {
228
+ var cleanupTransition = React__default.useCallback(function () {
179
229
  var clearTransitionTimeout = setTimeout(function () {
180
- if (isTransitioning) {
181
- setIsTransitioning(false);
182
- }
230
+ setIsTransitioning(function (isCurrentlyTransitioning) {
231
+ return isCurrentlyTransitioning ? false : isCurrentlyTransitioning;
232
+ });
183
233
  }, TRANSITION_CLEANUP_DELAY);
184
234
  timeoutIdsRef.current.push(clearTransitionTimeout);
185
- };
235
+ }, []);
236
+ var startL1Transition = React__default.useCallback(function () {
237
+ setIsTransitioning(true);
238
+ cleanupTransition();
239
+ }, [cleanupTransition]);
186
240
  var collapseL1 = function collapseL1(title) {
187
241
  if (isMobile) {
188
242
  setL2DrawerTitle(title);
@@ -207,6 +261,10 @@ var _SideNav = function _SideNav(_ref4, ref) {
207
261
  });
208
262
  return;
209
263
  }
264
+ if (isSideNavCollapsed) {
265
+ return;
266
+ }
267
+
210
268
  // Ensures that if Normal L1 item is clicked, the L1 stays expanded
211
269
  if (isL1Collapsed) {
212
270
  setIsL1Collapsed(false);
@@ -231,8 +289,7 @@ var _SideNav = function _SideNav(_ref4, ref) {
231
289
 
232
290
  // `args.isFirstRender` checks if the item that triggered this change, triggered it during first render or during subsequent change
233
291
  if (!args.isFirstRender) {
234
- setIsTransitioning(true);
235
- cleanupTransition();
292
+ startL1Transition();
236
293
  setIsL1Hovered(false);
237
294
  setIsHoverAgainEnabled(false);
238
295
  // For some delay, we disable hover to expand behaviour to avoid buggy flicker when cursor is on L1 while its trying to close
@@ -252,13 +309,14 @@ var _SideNav = function _SideNav(_ref4, ref) {
252
309
  l2PortalContainerRef: l2PortalContainerRef,
253
310
  onLinkActiveChange: onLinkActiveChange,
254
311
  closeMobileNav: closeMobileNav,
255
- isL1Collapsed: isMobile ? isMobileL2Open : isL1Collapsed,
312
+ isL1Collapsed: effectiveIsL1Collapsed,
256
313
  setIsL1Collapsed: setIsL1Collapsed,
257
- isL1Hovered: isL1Hovered
314
+ isL1Hovered: effectiveIsL1Hovered,
315
+ isSideNavCollapsed: isSideNavCollapsed
258
316
  };
259
317
  },
260
318
  // eslint-disable-next-line react-hooks/exhaustive-deps
261
- [isL1Collapsed, isMobile, isMobileL2Open, isL1Hovered]);
319
+ [effectiveIsL1Collapsed, effectiveIsL1Hovered, isSideNavCollapsed, isMobile]);
262
320
  React__default.useEffect(function () {
263
321
  return function () {
264
322
  var _iterator = _createForOfIteratorHelper(timeoutIdsRef.current),
@@ -276,6 +334,24 @@ var _SideNav = function _SideNav(_ref4, ref) {
276
334
  timeoutIdsRef.current = [];
277
335
  };
278
336
  }, []);
337
+ React__default.useEffect(function () {
338
+ if (!isMobile && isSideNavCollapsed && isL1Hovered) {
339
+ setIsL1Hovered(false);
340
+ }
341
+ }, [isMobile, isSideNavCollapsed, isL1Hovered]);
342
+ React__default.useEffect(function () {
343
+ var prevIsSideNavCollapsed = prevIsSideNavCollapsedRef.current;
344
+ prevIsSideNavCollapsedRef.current = isSideNavCollapsed;
345
+ if (isMobile || prevIsSideNavCollapsed === undefined) {
346
+ return;
347
+ }
348
+ if (prevIsSideNavCollapsed !== isSideNavCollapsed) {
349
+ startL1Transition();
350
+ onExpandChange === null || onExpandChange === void 0 || onExpandChange({
351
+ isExpanded: !isSideNavCollapsed
352
+ });
353
+ }
354
+ }, [isMobile, isSideNavCollapsed, onExpandChange, startL1Transition]);
279
355
  return /*#__PURE__*/jsx(SideNavContext.Provider, {
280
356
  value: contextValue,
281
357
  children: isMobile && onDismiss ? /*#__PURE__*/jsxs(Fragment, {
@@ -312,10 +388,12 @@ var _SideNav = function _SideNav(_ref4, ref) {
312
388
  })
313
389
  })]
314
390
  })]
315
- }) : /*#__PURE__*/jsxs(BaseBox, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
391
+ }) : /*#__PURE__*/jsxs(StyledSideNavContainer, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
392
+ $isSideNavExpandable: typeof _isExpanded !== 'undefined',
316
393
  ref: ref,
394
+ className: isSideNavCollapsed ? COLLAPSED : '',
317
395
  position: "fixed",
318
- backgroundColor: "surface.background.gray.moderate",
396
+ backgroundColor: backgroundColor,
319
397
  height: "100%",
320
398
  top: "spacing.0",
321
399
  left: "spacing.0",
@@ -324,15 +402,20 @@ var _SideNav = function _SideNav(_ref4, ref) {
324
402
  m: 'flex'
325
403
  },
326
404
  flexDirection: "column",
327
- width: {
328
- base: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_BASE),
329
- xl: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_XL)
330
- },
405
+ width: sideNavWidth,
331
406
  as: "nav"
332
407
  }, metaAttribute({
333
408
  name: MetaConstants.SideNav,
334
409
  testID: testID
335
410
  })), getStyledProps(rest)), makeAnalyticsAttribute(rest)), {}, {
411
+ onTransitionEnd: function onTransitionEnd(e) {
412
+ if (e.target !== e.currentTarget || e.propertyName !== 'width' || isMobile) {
413
+ return;
414
+ }
415
+ onExpandTransitionEnd === null || onExpandTransitionEnd === void 0 || onExpandTransitionEnd({
416
+ isExpanded: !isSideNavCollapsed
417
+ });
418
+ },
336
419
  children: [banner ? /*#__PURE__*/jsx(BannerContainer, {
337
420
  children: banner
338
421
  }) : null, /*#__PURE__*/jsxs(BaseBox, {
@@ -342,7 +425,8 @@ var _SideNav = function _SideNav(_ref4, ref) {
342
425
  width: "100%",
343
426
  children: [/*#__PURE__*/jsx(StyledL2PortalContainer, {
344
427
  position: "absolute",
345
- backgroundColor: "surface.background.gray.moderate",
428
+ display: isSideNavCollapsed ? 'none' : 'block',
429
+ backgroundColor: backgroundColor,
346
430
  height: "100%",
347
431
  width: "100%",
348
432
  top: "spacing.0",
@@ -355,15 +439,16 @@ var _SideNav = function _SideNav(_ref4, ref) {
355
439
  ref: l1ContainerRef,
356
440
  id: "blade-sidenav-l1",
357
441
  className: getL1MenuClassName({
358
- isL1Collapsed: isL1Collapsed,
359
- isL1Hovered: isL1Hovered,
442
+ isL1Collapsed: effectiveIsL1Collapsed,
443
+ isL1Hovered: effectiveIsL1Hovered,
360
444
  isTransitioning: isTransitioning
361
445
  }),
446
+ $isSideNavExpandable: typeof _isExpanded !== 'undefined',
362
447
  position: "absolute",
363
448
  display: "flex",
364
449
  flexDirection: "column",
365
450
  justifyContent: "space-between",
366
- backgroundColor: "surface.background.gray.moderate",
451
+ backgroundColor: backgroundColor,
367
452
  height: "100%",
368
453
  overflow: "hidden",
369
454
  top: "spacing.0",
@@ -389,6 +474,9 @@ var _SideNav = function _SideNav(_ref4, ref) {
389
474
  // 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`
390
475
  ,
391
476
  onMouseOver: function onMouseOver() {
477
+ if (!isMobile && isSideNavCollapsed) {
478
+ return;
479
+ }
392
480
  if (mouseOverTimeoutRef.current) {
393
481
  clearTimeout(mouseOverTimeoutRef.current);
394
482
  }
@@ -400,11 +488,13 @@ var _SideNav = function _SideNav(_ref4, ref) {
400
488
  }
401
489
  },
402
490
  onMouseLeave: function onMouseLeave() {
491
+ if (!isMobile && isSideNavCollapsed) {
492
+ return;
493
+ }
403
494
  if (isL1Collapsed && isL1Hovered) {
404
495
  mouseOverTimeoutRef.current = setTimeout(function () {
405
496
  setIsL1Hovered(false);
406
- setIsTransitioning(true);
407
- cleanupTransition();
497
+ startL1Transition();
408
498
  onVisibleLevelChange === null || onVisibleLevelChange === void 0 || onVisibleLevelChange({
409
499
  visibleLevel: 2
410
500
  });
@@ -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 StyledL2PortalContainer = styled(BaseBox)(() => {\n return {\n // This ensures that the portal node has 100% height when it has items\n '& > div:not(:empty)': {\n height: '100%',\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 isL1Hovered,\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 <StyledL2PortalContainer\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 // If L1 is collapsed and not hovered we want to change visible level to 2\n // This state/edgecase happens when user clicks on a nested nav and it collapses the L1 causing isL1Hovered to be false\n if (isL1Collapsed && !isL1Hovered) {\n onVisibleLevelChange?.({ visibleLevel: 2 });\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","StyledL2PortalContainer","height","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$useState0","setIsTransitioning","_React$useState1","_React$useState10","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","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 {\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 type { SideNavContextType, SideNavProps } from './types';\nimport type { BladeElementRef } from '~utils/types';\nimport { size as sizeTokens } from '~tokens/global';\nimport { makeBorderSize, makeMotionTime, makeSize, makeSpace } from '~utils';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport BaseBox from '~components/Box/BaseBox';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { Drawer, DrawerBody, DrawerHeader } from '~components/Drawer';\nimport { SkipNavContent, SkipNavLink } from '~components/SkipNav/SkipNav';\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)<{ $isSideNavExpandable: boolean }>((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 const textVisibilityProps = props.$isSideNavExpandable\n ? {}\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 return {\n width: '100%',\n // the overall sidenav expands and collapses in this case. No need transition here\n transition: props.$isSideNavExpandable ? 'none' : l1Expand,\n [`& > .${L1_ITEM_WRAPPER}`]: {\n padding: makeSpace(props.theme.spacing[3]),\n },\n ...textVisibilityProps,\n };\n});\n\nconst StyledSideNavContainer = styled(BaseBox)<{ $isSideNavExpandable: boolean }>((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 sideNavExpand = `width ${xmoderate} ${easing.entrance}`;\n const sideNavCollapse = `width ${quick} ${easing.exit}`;\n\n if (!props.$isSideNavExpandable) {\n return {};\n }\n\n return {\n transition: sideNavExpand,\n [`&.${COLLAPSED}`]: {\n width: makeSize(COLLAPSED_L1_WIDTH),\n transition: sideNavCollapse,\n [`&:not(.${TRANSITIONING}) .${HIDE_WHEN_COLLAPSED}`]: {\n opacity: '0',\n pointerEvents: 'none',\n transition: `opacity ${quick} ${easing.exit}`,\n },\n [`&:not(.${TRANSITIONING}) .${SHOW_WHEN_COLLAPSED}`]: {\n opacity: '1',\n pointerEvents: 'auto',\n transition: `opacity ${quick} ${easing.entrance}`,\n },\n },\n [`.${SHOW_WHEN_COLLAPSED}`]: {\n opacity: '0',\n pointerEvents: 'none',\n transition: `opacity ${quick} ${easing.exit}`,\n },\n [`.${HIDE_WHEN_COLLAPSED}`]: {\n opacity: '1',\n pointerEvents: 'auto',\n transition: `opacity ${quick} ${easing.entrance}`,\n },\n };\n});\n\nconst StyledL2PortalContainer = styled(BaseBox)(() => {\n return {\n // This ensures that the portal node has 100% height when it has items\n '& > div:not(:empty)': {\n height: '100%',\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 {\n children,\n isOpen,\n onDismiss,\n onVisibleLevelChange,\n onExpandChange,\n onExpandTransitionEnd,\n banner,\n backgroundColor = 'surface.background.gray.moderate',\n testID,\n isExpanded: _isExpanded,\n ...rest\n }: 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 prevIsSideNavCollapsedRef = React.useRef<boolean>();\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 const isSideNavCollapsed = _isExpanded === false;\n\n const effectiveIsL1Collapsed = isMobile ? isMobileL2Open : isSideNavCollapsed || isL1Collapsed;\n\n const effectiveIsL1Hovered = isSideNavCollapsed ? false : isL1Hovered;\n const sideNavWidth = isSideNavCollapsed\n ? makeSize(COLLAPSED_L1_WIDTH)\n : {\n base: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_BASE),\n xl: makeSize(SIDE_NAV_EXPANDED_L1_WIDTH_XL),\n };\n\n const closeMobileNav = (): void => {\n if (isMobile) {\n setIsMobileL2Open(false);\n onDismiss?.();\n onVisibleLevelChange?.({ visibleLevel: 0 });\n }\n };\n\n const cleanupTransition = React.useCallback((): void => {\n const clearTransitionTimeout = setTimeout(() => {\n setIsTransitioning((isCurrentlyTransitioning) =>\n isCurrentlyTransitioning ? false : isCurrentlyTransitioning,\n );\n }, TRANSITION_CLEANUP_DELAY);\n timeoutIdsRef.current.push(clearTransitionTimeout);\n }, []);\n\n const startL1Transition = React.useCallback((): void => {\n setIsTransitioning(true);\n cleanupTransition();\n }, [cleanupTransition]);\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\n if (isSideNavCollapsed) {\n return;\n }\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 startL1Transition();\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: effectiveIsL1Collapsed,\n setIsL1Collapsed,\n isL1Hovered: effectiveIsL1Hovered,\n isSideNavCollapsed,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [effectiveIsL1Collapsed, effectiveIsL1Hovered, isSideNavCollapsed, isMobile],\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 React.useEffect(() => {\n if (!isMobile && isSideNavCollapsed && isL1Hovered) {\n setIsL1Hovered(false);\n }\n }, [isMobile, isSideNavCollapsed, isL1Hovered]);\n\n React.useEffect(() => {\n const prevIsSideNavCollapsed = prevIsSideNavCollapsedRef.current;\n prevIsSideNavCollapsedRef.current = isSideNavCollapsed;\n\n if (isMobile || prevIsSideNavCollapsed === undefined) {\n return;\n }\n\n if (prevIsSideNavCollapsed !== isSideNavCollapsed) {\n startL1Transition();\n onExpandChange?.({ isExpanded: !isSideNavCollapsed });\n }\n }, [isMobile, isSideNavCollapsed, onExpandChange, startL1Transition]);\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 <StyledSideNavContainer\n $isSideNavExpandable={typeof _isExpanded !== 'undefined'}\n ref={ref as never}\n className={isSideNavCollapsed ? COLLAPSED : ''}\n position=\"fixed\"\n backgroundColor={backgroundColor}\n height=\"100%\"\n top=\"spacing.0\"\n left=\"spacing.0\"\n display={{ base: 'none', m: 'flex' }}\n flexDirection=\"column\"\n width={sideNavWidth}\n as=\"nav\"\n {...metaAttribute({\n name: MetaConstants.SideNav,\n testID,\n })}\n {...getStyledProps(rest)}\n {...makeAnalyticsAttribute(rest)}\n onTransitionEnd={(e) => {\n if (e.target !== e.currentTarget || e.propertyName !== 'width' || isMobile) {\n return;\n }\n\n onExpandTransitionEnd?.({\n isExpanded: !isSideNavCollapsed,\n });\n }}\n >\n {banner ? <BannerContainer>{banner}</BannerContainer> : null}\n <BaseBox position=\"relative\" display=\"block\" flex=\"1\" width=\"100%\">\n <StyledL2PortalContainer\n position=\"absolute\"\n display={isSideNavCollapsed ? 'none' : 'block'}\n backgroundColor={backgroundColor}\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({\n isL1Collapsed: effectiveIsL1Collapsed,\n isL1Hovered: effectiveIsL1Hovered,\n isTransitioning,\n })}\n $isSideNavExpandable={typeof _isExpanded !== 'undefined'}\n position=\"absolute\"\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n backgroundColor={backgroundColor}\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 (!isMobile && isSideNavCollapsed) {\n return;\n }\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 (!isMobile && isSideNavCollapsed) {\n return;\n }\n if (isL1Collapsed && isL1Hovered) {\n mouseOverTimeoutRef.current = setTimeout(() => {\n setIsL1Hovered(false);\n startL1Transition();\n onVisibleLevelChange?.({ visibleLevel: 2 });\n }, L1_EXIT_HOVER_DELAY);\n }\n // If L1 is collapsed and not hovered we want to change visible level to 2\n // This state/edgecase happens when user clicks on a nested nav and it collapses the L1 causing isL1Hovered to be false\n if (isL1Collapsed && !isL1Hovered) {\n onVisibleLevelChange?.({ visibleLevel: 2 });\n }\n }}\n >\n <SkipNavLink id={SKIP_NAV_ID} _hasBackground={true} />\n {children}\n </StyledL1Menu>\n <SkipNavContent id={SKIP_NAV_ID} />\n </BaseBox>\n </StyledSideNavContainer>\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","textVisibilityProps","$isSideNavExpandable","width","makeSize","COLLAPSED_L1_WIDTH","transition","padding","makeSpace","spacing","_objectSpread","StyledSideNavContainer","sideNavExpand","sideNavCollapse","opacity","pointerEvents","StyledL2PortalContainer","height","getL1MenuClassName","_ref4","isL1Collapsed","isL1Hovered","isTransitioning","isMenuCollapsed","BannerContainer","borderBottom","makeBorderSize","border","thin","borderBottomStyle","borderBottomColor","colors","surface","gray","muted","borderRight","borderRightStyle","borderRightColor","maxHeight","sizeTokens","_SideNav","_ref5","ref","children","isOpen","onDismiss","onVisibleLevelChange","onExpandChange","onExpandTransitionEnd","banner","_ref5$backgroundColor","backgroundColor","testID","_isExpanded","isExpanded","rest","_objectWithoutProperties","_excluded","l2PortalContainerRef","React","useRef","l1ContainerRef","timeoutIdsRef","mouseOverTimeoutRef","prevIsSideNavCollapsedRef","_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$useState0","setIsTransitioning","_React$useState1","_React$useState10","l2DrawerTitle","setL2DrawerTitle","isMobile","useIsMobile","isSideNavCollapsed","effectiveIsL1Collapsed","effectiveIsL1Hovered","sideNavWidth","base","SIDE_NAV_EXPANDED_L1_WIDTH_BASE","xl","SIDE_NAV_EXPANDED_L1_WIDTH_XL","closeMobileNav","visibleLevel","cleanupTransition","useCallback","clearTransitionTimeout","setTimeout","isCurrentlyTransitioning","TRANSITION_CLEANUP_DELAY","current","push","startL1Transition","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","prevIsSideNavCollapsed","undefined","_jsx","SideNavContext","Provider","_jsxs","_Fragment","Drawer","DrawerHeader","DrawerBody","flexDirection","justifyContent","className","metaAttribute","name","MetaConstants","SideNav","isLazy","position","top","left","m","as","getStyledProps","makeAnalyticsAttribute","onTransitionEnd","target","currentTarget","propertyName","flex","id","borderRightWidth","overflow","onMouseOver","onMouseLeave","L1_EXIT_HOVER_DELAY","SkipNavLink","SKIP_NAV_ID","_hasBackground","SkipNavContent","forwardRef"],"mappings":"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"}