@flipdish/ui-library 0.16.1 → 0.18.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/dist/components/atoms/BackgroundPattern/components/grid-check.cjs +2 -1
- package/dist/components/atoms/BackgroundPattern/components/grid-check.cjs.map +1 -1
- package/dist/components/atoms/BackgroundPattern/components/grid-check.d.ts.map +1 -1
- package/dist/components/atoms/BackgroundPattern/components/grid-check.js +2 -1
- package/dist/components/atoms/BackgroundPattern/components/grid-check.js.map +1 -1
- package/dist/components/atoms/BackgroundPattern/index.cjs +4 -1
- package/dist/components/atoms/BackgroundPattern/index.cjs.map +1 -1
- package/dist/components/atoms/BackgroundPattern/index.d.ts +8 -3
- package/dist/components/atoms/BackgroundPattern/index.d.ts.map +1 -1
- package/dist/components/atoms/BackgroundPattern/index.js +4 -1
- package/dist/components/atoms/BackgroundPattern/index.js.map +1 -1
- package/dist/components/molecules/EmptyState/index.cjs +4 -1
- package/dist/components/molecules/EmptyState/index.cjs.map +1 -1
- package/dist/components/molecules/EmptyState/index.d.ts.map +1 -1
- package/dist/components/molecules/EmptyState/index.js +4 -1
- package/dist/components/molecules/EmptyState/index.js.map +1 -1
- package/dist/components/molecules/Pagination/index.cjs +2 -2
- package/dist/components/molecules/Pagination/index.cjs.map +1 -1
- package/dist/components/molecules/Pagination/index.d.ts +1 -1
- package/dist/components/molecules/Pagination/index.d.ts.map +1 -1
- package/dist/components/molecules/Pagination/index.js +2 -2
- package/dist/components/molecules/Pagination/index.js.map +1 -1
- package/dist/components/organisms/Calendar/calendar.utils.cjs +16 -0
- package/dist/components/organisms/Calendar/calendar.utils.cjs.map +1 -0
- package/dist/components/organisms/Calendar/calendar.utils.d.ts +6 -0
- package/dist/components/organisms/Calendar/calendar.utils.d.ts.map +1 -0
- package/dist/components/organisms/Calendar/calendar.utils.js +14 -0
- package/dist/components/organisms/Calendar/calendar.utils.js.map +1 -0
- package/dist/components/organisms/Calendar/components/calendar-header.cjs +2 -1
- package/dist/components/organisms/Calendar/components/calendar-header.cjs.map +1 -1
- package/dist/components/organisms/Calendar/components/calendar-header.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/components/calendar-header.js +2 -1
- package/dist/components/organisms/Calendar/components/calendar-header.js.map +1 -1
- package/dist/components/organisms/Calendar/index.cjs +13 -7
- package/dist/components/organisms/Calendar/index.cjs.map +1 -1
- package/dist/components/organisms/Calendar/index.d.ts.map +1 -1
- package/dist/components/organisms/Calendar/index.js +13 -7
- package/dist/components/organisms/Calendar/index.js.map +1 -1
- package/dist/components/organisms/Charts/components/charts-base.cjs +4 -0
- package/dist/components/organisms/Charts/components/charts-base.cjs.map +1 -1
- package/dist/components/organisms/Charts/components/charts-base.d.ts.map +1 -1
- package/dist/components/organisms/Charts/components/charts-base.js +4 -0
- package/dist/components/organisms/Charts/components/charts-base.js.map +1 -1
- package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.cjs +6 -0
- package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.cjs.map +1 -1
- package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.d.ts.map +1 -1
- package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.js +6 -0
- package/dist/components/organisms/GradientPicker/providers/gradient-picker-context.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs +4 -2
- package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.js +4 -2
- package/dist/components/organisms/HeaderNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +3 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +3 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js +3 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs +10 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts +4 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-button.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js +12 -4
- package/dist/components/organisms/SidebarNavigation/components/nav-button.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs +6 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-item.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js +7 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-item.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs +6 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js +6 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.cjs +15 -0
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.cjs.map +1 -0
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.d.ts +13 -0
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.d.ts.map +1 -0
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.js +13 -0
- package/dist/components/organisms/SidebarNavigation/components/nav-section-toggle.js.map +1 -0
- package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.cjs +7 -2
- package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.js +7 -2
- package/dist/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.cjs +26 -6
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts +1 -0
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +26 -6
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/sidebarNavigation.types.d.ts +20 -0
- package/dist/components/organisms/SidebarNavigation/sidebarNavigation.types.d.ts.map +1 -1
- package/dist/components/organisms/TextEditor/components/text-editor-extensions.cjs +19 -2
- package/dist/components/organisms/TextEditor/components/text-editor-extensions.cjs.map +1 -1
- package/dist/components/organisms/TextEditor/components/text-editor-extensions.d.ts.map +1 -1
- package/dist/components/organisms/TextEditor/components/text-editor-extensions.js +19 -2
- package/dist/components/organisms/TextEditor/components/text-editor-extensions.js.map +1 -1
- package/dist/components/organisms/TextEditor/index.cjs +24 -5
- package/dist/components/organisms/TextEditor/index.cjs.map +1 -1
- package/dist/components/organisms/TextEditor/index.d.ts.map +1 -1
- package/dist/components/organisms/TextEditor/index.js +24 -5
- package/dist/components/organisms/TextEditor/index.js.map +1 -1
- package/dist/components/organisms/TextEditor/textEditor.utils.cjs +32 -0
- package/dist/components/organisms/TextEditor/textEditor.utils.cjs.map +1 -0
- package/dist/components/organisms/TextEditor/textEditor.utils.d.ts +14 -0
- package/dist/components/organisms/TextEditor/textEditor.utils.d.ts.map +1 -0
- package/dist/components/organisms/TextEditor/textEditor.utils.js +29 -0
- package/dist/components/organisms/TextEditor/textEditor.utils.js.map +1 -0
- package/dist/hooks/useClipboard/index.cjs +10 -3
- package/dist/hooks/useClipboard/index.cjs.map +1 -1
- package/dist/hooks/useClipboard/index.d.ts.map +1 -1
- package/dist/hooks/useClipboard/index.js +10 -3
- package/dist/hooks/useClipboard/index.js.map +1 -1
- package/package.json +6 -6
|
@@ -4,7 +4,7 @@ import { Badge } from '@flipdish/ui-library/components/atoms/Badge';
|
|
|
4
4
|
import { useAriaDisclosureAttrs } from '@flipdish/ui-library/hooks/useAriaDisclosureAttrs';
|
|
5
5
|
import { sortCx, cx } from '@flipdish/ui-library/utilities/cx';
|
|
6
6
|
import { useRef } from 'react';
|
|
7
|
-
import { Link } from 'react-aria-components';
|
|
7
|
+
import { Link, Button } from 'react-aria-components';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* A single navigation item used across the sidebar. The active state uses the
|
|
@@ -12,7 +12,8 @@ import { Link } from 'react-aria-components';
|
|
|
12
12
|
* optional leading status dot can be rendered before the icon.
|
|
13
13
|
*/
|
|
14
14
|
const styles = sortCx({
|
|
15
|
-
|
|
15
|
+
// text-left: browsers default <button> text to center, unlike <a> — needed for the disclosure variant below.
|
|
16
|
+
root: 'group/item relative flex max-h-9 w-full cursor-pointer items-center rounded-md bg-transparent text-left outline-focus-ring transition duration-100 ease-linear select-none hover:bg-secondary_hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2',
|
|
16
17
|
rootSelected: 'bg-brand-primary hover:bg-brand-primary',
|
|
17
18
|
});
|
|
18
19
|
const StatusDot = ({ status }) => (jsx("span", { "aria-hidden": "true", className: cx('mr-2 size-2 shrink-0 rounded-full', status === 'online' ? 'bg-success-solid' : 'bg-fg-quaternary') }));
|
|
@@ -37,6 +38,10 @@ const NavItemBase = ({ current, selected, type, badge, href, icon: Icon, childre
|
|
|
37
38
|
if (type === 'collapsible-child') {
|
|
38
39
|
return (jsxs(Link, { href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx('py-2 pr-3 pl-10', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [labelElement, externalIcon, badgeElement] }));
|
|
39
40
|
}
|
|
41
|
+
// useButton forwards aria-expanded/aria-controls as plain props, unlike useLink — no ref workaround needed here.
|
|
42
|
+
if (type === 'disclosure') {
|
|
43
|
+
return (jsxs(Button, { "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-expanded": ariaExpanded, "aria-controls": ariaControls, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, badgeElement, submenuChevron] }));
|
|
44
|
+
}
|
|
40
45
|
return (jsxs(Link, { ref: linkRef, href: href, target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: cx('group/item p-2', styles.root, isSelected && styles.rootSelected), onClick: onClick, "aria-current": current ? 'page' : undefined, children: [status && jsx(StatusDot, { status: status }), iconElement, labelElement, externalIcon, badgeElement, submenuChevron] }));
|
|
41
46
|
};
|
|
42
47
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink"],"mappings":";;;;;;;;AAUA;;;;AAIG;AACH,MAAM,MAAM,GAAG,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"nav-item.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-item.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink","AriaButton"],"mappings":"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"}
|
|
@@ -4,9 +4,12 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
5
5
|
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
6
6
|
var navItem = require('./nav-item.cjs');
|
|
7
|
+
var navSectionToggle = require('./nav-section-toggle.cjs');
|
|
7
8
|
|
|
8
9
|
const NavList = ({ activeUrl, items, className, onNavigate, testIdPrefix }) => {
|
|
9
|
-
|
|
10
|
+
// Only match a defined `activeUrl` — parents may be hrefless, and `undefined === undefined`
|
|
11
|
+
// would open the first of them by default.
|
|
12
|
+
const activeItem = activeUrl === undefined ? undefined : items.find((item) => item.href === activeUrl || item.items?.some((subItem) => subItem.href === activeUrl));
|
|
10
13
|
const itemTestId = (item) => testIdPrefix ? (item['data-testid'] ?? testIdUtils.joinTestId(testIdPrefix, `nav-item-${item.id ?? testIdUtils.slugifyTestId(item.label ?? '')}`)) : item['data-testid'];
|
|
11
14
|
const subItemTestId = (parentTestId, subItem) => parentTestId
|
|
12
15
|
? (subItem['data-testid'] ?? testIdUtils.joinTestId(parentTestId, `sub-item-${subItem.id ?? testIdUtils.slugifyTestId(subItem.label)}`))
|
|
@@ -19,7 +22,8 @@ const NavList = ({ activeUrl, items, className, onNavigate, testIdPrefix }) => {
|
|
|
19
22
|
}
|
|
20
23
|
if (item.items?.length) {
|
|
21
24
|
const parentTestId = itemTestId(item);
|
|
22
|
-
|
|
25
|
+
// Reference compare, not href: hrefless parents all share `undefined` and would otherwise force-open together.
|
|
26
|
+
return (jsxRuntime.jsxs("details", { open: activeItem === item, className: "appearance-none py-0.25", children: [jsxRuntime.jsx(navItem.NavItemBase, { badge: item.badge, icon: item.icon, type: "collapsible", "data-testid": parentTestId, children: item.label }), jsxRuntime.jsxs("dd", { children: [jsxRuntime.jsx("ul", { className: "pb-1", children: item.items.map((childItem) => (jsxRuntime.jsx("li", { className: "py-0.25", children: jsxRuntime.jsx(navItem.NavItemBase, { href: childItem.href, badge: childItem.badge, type: "collapsible-child", current: activeUrl === childItem.href, onClick: onNavigate, "data-testid": subItemTestId(parentTestId, childItem), children: childItem.label }) }, childItem.label))) }), item.toggle && jsxRuntime.jsx(navSectionToggle.NavSectionToggleRow, { toggle: item.toggle, testIdPrefix: parentTestId, className: "py-2 pr-3 pl-10" })] })] }, item.label));
|
|
23
27
|
}
|
|
24
28
|
return (jsxRuntime.jsx("li", { className: "py-px", children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", badge: item.badge, icon: item.icon, href: item.href, current: activeUrl === item.href, onClick: onNavigate, "data-testid": itemTestId(item), children: item.label }) }, item.label));
|
|
25
29
|
}) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-list.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["joinTestId","slugifyTestId","_jsx","cx","_jsxs","NavItemBase"],"mappings":"
|
|
1
|
+
{"version":3,"file":"nav-list.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["joinTestId","slugifyTestId","_jsx","cx","_jsxs","NavItemBase","NavSectionToggleRow"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-list.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAkB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"nav-list.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAkB,MAAM,4BAA4B,CAAC;AAIlG,UAAU,YAAY;IACpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,CAAC,WAAW,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC5C,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,OAAO,GAAI,2DAA2D,YAAY,gCA8E9F,CAAC"}
|
|
@@ -2,9 +2,12 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
3
3
|
import { joinTestId, slugifyTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
4
4
|
import { NavItemBase } from './nav-item.js';
|
|
5
|
+
import { NavSectionToggleRow } from './nav-section-toggle.js';
|
|
5
6
|
|
|
6
7
|
const NavList = ({ activeUrl, items, className, onNavigate, testIdPrefix }) => {
|
|
7
|
-
|
|
8
|
+
// Only match a defined `activeUrl` — parents may be hrefless, and `undefined === undefined`
|
|
9
|
+
// would open the first of them by default.
|
|
10
|
+
const activeItem = activeUrl === undefined ? undefined : items.find((item) => item.href === activeUrl || item.items?.some((subItem) => subItem.href === activeUrl));
|
|
8
11
|
const itemTestId = (item) => testIdPrefix ? (item['data-testid'] ?? joinTestId(testIdPrefix, `nav-item-${item.id ?? slugifyTestId(item.label ?? '')}`)) : item['data-testid'];
|
|
9
12
|
const subItemTestId = (parentTestId, subItem) => parentTestId
|
|
10
13
|
? (subItem['data-testid'] ?? joinTestId(parentTestId, `sub-item-${subItem.id ?? slugifyTestId(subItem.label)}`))
|
|
@@ -17,7 +20,8 @@ const NavList = ({ activeUrl, items, className, onNavigate, testIdPrefix }) => {
|
|
|
17
20
|
}
|
|
18
21
|
if (item.items?.length) {
|
|
19
22
|
const parentTestId = itemTestId(item);
|
|
20
|
-
|
|
23
|
+
// Reference compare, not href: hrefless parents all share `undefined` and would otherwise force-open together.
|
|
24
|
+
return (jsxs("details", { open: activeItem === item, className: "appearance-none py-0.25", children: [jsx(NavItemBase, { badge: item.badge, icon: item.icon, type: "collapsible", "data-testid": parentTestId, children: item.label }), jsxs("dd", { children: [jsx("ul", { className: "pb-1", children: item.items.map((childItem) => (jsx("li", { className: "py-0.25", children: jsx(NavItemBase, { href: childItem.href, badge: childItem.badge, type: "collapsible-child", current: activeUrl === childItem.href, onClick: onNavigate, "data-testid": subItemTestId(parentTestId, childItem), children: childItem.label }) }, childItem.label))) }), item.toggle && jsx(NavSectionToggleRow, { toggle: item.toggle, testIdPrefix: parentTestId, className: "py-2 pr-3 pl-10" })] })] }, item.label));
|
|
21
25
|
}
|
|
22
26
|
return (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", badge: item.badge, icon: item.icon, href: item.href, current: activeUrl === item.href, onClick: onNavigate, "data-testid": itemTestId(item), children: item.label }) }, item.label));
|
|
23
27
|
}) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-list.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"
|
|
1
|
+
{"version":3,"file":"nav-list.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var Toggle = require('@flipdish/ui-library/components/atoms/Toggle');
|
|
5
|
+
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
6
|
+
|
|
7
|
+
/** A section's sub-navigation toggle. Shared so desktop and mobile can't drift apart. */
|
|
8
|
+
const NavSectionToggleRow = ({ toggle, testIdPrefix, className }) => {
|
|
9
|
+
const { 'data-testid': dataTestId, ...toggleProps } = toggle;
|
|
10
|
+
// Padding goes on a wrapper, not the `Toggle` — the switch is `w-max`, so it belongs to the row.
|
|
11
|
+
return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx(Toggle.Toggle, { ...toggleProps, size: "sm", "data-testid": dataTestId ?? (testIdPrefix ? testIdUtils.joinTestId(testIdPrefix, 'toggle') : undefined) }) }));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.NavSectionToggleRow = NavSectionToggleRow;
|
|
15
|
+
//# sourceMappingURL=nav-section-toggle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-section-toggle.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-section-toggle.tsx"],"sourcesContent":[null],"names":["_jsx","Toggle","joinTestId"],"mappings":";;;;;;AAeA;AACO,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAA4B,KAAI;IACnG,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM;;AAG5D,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,YACvBA,cAAA,CAACC,aAAM,EAAA,EAAA,GAAK,WAAW,EAAE,IAAI,EAAC,IAAI,EAAA,aAAA,EAAc,UAAU,KAAK,YAAY,GAAGC,sBAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAA,CAAI,EAAA,CAC7H;AAEV;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NavSectionToggle } from '../sidebarNavigation.types';
|
|
2
|
+
interface NavSectionToggleRowProps {
|
|
3
|
+
/** The section's toggle configuration. */
|
|
4
|
+
toggle: NavSectionToggle;
|
|
5
|
+
/** Resolved testid of the owning section, used to derive the toggle's default testid. */
|
|
6
|
+
testIdPrefix?: string;
|
|
7
|
+
/** Positioning for the call site: panel footer on desktop, inset row on mobile. */
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
/** A section's sub-navigation toggle. Shared so desktop and mobile can't drift apart. */
|
|
11
|
+
export declare const NavSectionToggleRow: ({ toggle, testIdPrefix, className }: NavSectionToggleRowProps) => import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=nav-section-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-section-toggle.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-section-toggle.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,UAAU,wBAAwB;IAChC,0CAA0C;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,GAAI,qCAAqC,wBAAwB,gCAShG,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Toggle } from '@flipdish/ui-library/components/atoms/Toggle';
|
|
3
|
+
import { joinTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
4
|
+
|
|
5
|
+
/** A section's sub-navigation toggle. Shared so desktop and mobile can't drift apart. */
|
|
6
|
+
const NavSectionToggleRow = ({ toggle, testIdPrefix, className }) => {
|
|
7
|
+
const { 'data-testid': dataTestId, ...toggleProps } = toggle;
|
|
8
|
+
// Padding goes on a wrapper, not the `Toggle` — the switch is `w-max`, so it belongs to the row.
|
|
9
|
+
return (jsx("div", { className: className, children: jsx(Toggle, { ...toggleProps, size: "sm", "data-testid": dataTestId ?? (testIdPrefix ? joinTestId(testIdPrefix, 'toggle') : undefined) }) }));
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { NavSectionToggleRow };
|
|
13
|
+
//# sourceMappingURL=nav-section-toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-section-toggle.js","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-section-toggle.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;AAeA;AACO,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAA4B,KAAI;IACnG,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM;;AAG5D,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,SAAS,YACvBA,GAAA,CAAC,MAAM,EAAA,EAAA,GAAK,WAAW,EAAE,IAAI,EAAC,IAAI,EAAA,aAAA,EAAc,UAAU,KAAK,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAA,CAAI,EAAA,CAC7H;AAEV;;;;"}
|
|
@@ -14,7 +14,7 @@ const useDualTierKeyboard = ({ isPanelVisible, currentLabel, onSelectSection, on
|
|
|
14
14
|
const triggerRef = React.useRef(null);
|
|
15
15
|
// Set when a keyboard action should move focus into the panel once it renders.
|
|
16
16
|
const focusPanelOnOpen = React.useRef(false);
|
|
17
|
-
const focusFirstPanelItem = () => panelRef.current?.querySelector('a, button')?.focus();
|
|
17
|
+
const focusFirstPanelItem = () => panelRef.current?.querySelector('a:not([aria-hidden="true"]), button:not([disabled]):not([aria-hidden="true"])')?.focus();
|
|
18
18
|
// Move focus into the panel once it has rendered (or swapped section) after a
|
|
19
19
|
// keyboard-triggered open.
|
|
20
20
|
// biome-ignore lint/correctness/useExhaustiveDependencies: focusFirstPanelItem only reads the stable panelRef
|
|
@@ -47,7 +47,12 @@ const useDualTierKeyboard = ({ isPanelVisible, currentLabel, onSelectSection, on
|
|
|
47
47
|
if (event.key !== 'ArrowLeft' && event.key !== 'Escape')
|
|
48
48
|
return;
|
|
49
49
|
event.preventDefault();
|
|
50
|
-
|
|
50
|
+
// The stored trigger node may have been replaced by a re-render since the panel
|
|
51
|
+
// opened; focusing a detached node is a silent no-op, so re-check attachment.
|
|
52
|
+
const trigger = triggerRef.current;
|
|
53
|
+
if (trigger && document.contains(trigger)) {
|
|
54
|
+
trigger.focus();
|
|
55
|
+
}
|
|
51
56
|
};
|
|
52
57
|
return { panelRef, handleTriggerKeyDown, handlePanelKeyDown };
|
|
53
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dual-tier-keyboard.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"sourcesContent":[null],"names":["useRef","useEffect"],"mappings":";;;;AAgBA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAA2B,KAAI;AAC1H,IAAA,MAAM,QAAQ,GAAGA,YAAM,CAAiB,IAAI,CAAC;;AAE7C,IAAA,MAAM,UAAU,GAAGA,YAAM,CAAqB,IAAI,CAAC;;AAEnD,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,KAAK,CAAC;AAEtC,IAAA,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"use-dual-tier-keyboard.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"sourcesContent":[null],"names":["useRef","useEffect"],"mappings":";;;;AAgBA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAA2B,KAAI;AAC1H,IAAA,MAAM,QAAQ,GAAGA,YAAM,CAAiB,IAAI,CAAC;;AAE7C,IAAA,MAAM,UAAU,GAAGA,YAAM,CAAqB,IAAI,CAAC;;AAEnD,IAAA,MAAM,gBAAgB,GAAGA,YAAM,CAAC,KAAK,CAAC;AAEtC,IAAA,MAAM,mBAAmB,GAAG,MAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAc,+EAA+E,CAAC,EAAE,KAAK,EAAE;;;;IAKxIC,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9C,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;AAChC,YAAA,mBAAmB,EAAE;QACvB;AACF,IAAA,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAElC;;;AAGG;AACH,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,WAAoB,KAAK,CAAC,KAAmC,KAAI;AAC5G,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,WAAW;YAAE;QAChD,KAAK,CAAC,cAAc,EAAE;QACtB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAc,WAAW,CAAC;AAChF,QAAA,IAAI,cAAc,IAAI,YAAY,KAAK,KAAK,EAAE;AAC5C,YAAA,mBAAmB,EAAE;QACvB;aAAO;AACL,YAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI;YAC/B,eAAe,CAAC,KAAK,CAAC;AACtB,YAAA,QAAQ,EAAE;QACZ;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAoC,KAAI;QAClE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;YAAE;QACzD,KAAK,CAAC,cAAc,EAAE;;;AAGtB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;QAClC,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACzC,OAAO,CAAC,KAAK,EAAE;QACjB;AACF,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE;AAC/D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dual-tier-keyboard.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,UAAU,uBAAuB;IAC/B,uEAAuE;IACvE,cAAc,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,qFAAqF;IACrF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,6DAA6D,uBAAuB;;
|
|
1
|
+
{"version":3,"file":"use-dual-tier-keyboard.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,UAAU,uBAAuB;IAC/B,uEAAuE;IACvE,cAAc,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,qFAAqF;IACrF,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,6DAA6D,uBAAuB;;kCAwBjF,MAAM,eAAe,OAAO,MAAM,OAAO,aAAa,CAAC,aAAa,CAAC;gCAcvE,aAAa,CAAC,cAAc,CAAC;CAYjE,CAAC"}
|
|
@@ -12,7 +12,7 @@ const useDualTierKeyboard = ({ isPanelVisible, currentLabel, onSelectSection, on
|
|
|
12
12
|
const triggerRef = useRef(null);
|
|
13
13
|
// Set when a keyboard action should move focus into the panel once it renders.
|
|
14
14
|
const focusPanelOnOpen = useRef(false);
|
|
15
|
-
const focusFirstPanelItem = () => panelRef.current?.querySelector('a, button')?.focus();
|
|
15
|
+
const focusFirstPanelItem = () => panelRef.current?.querySelector('a:not([aria-hidden="true"]), button:not([disabled]):not([aria-hidden="true"])')?.focus();
|
|
16
16
|
// Move focus into the panel once it has rendered (or swapped section) after a
|
|
17
17
|
// keyboard-triggered open.
|
|
18
18
|
// biome-ignore lint/correctness/useExhaustiveDependencies: focusFirstPanelItem only reads the stable panelRef
|
|
@@ -45,7 +45,12 @@ const useDualTierKeyboard = ({ isPanelVisible, currentLabel, onSelectSection, on
|
|
|
45
45
|
if (event.key !== 'ArrowLeft' && event.key !== 'Escape')
|
|
46
46
|
return;
|
|
47
47
|
event.preventDefault();
|
|
48
|
-
|
|
48
|
+
// The stored trigger node may have been replaced by a re-render since the panel
|
|
49
|
+
// opened; focusing a detached node is a silent no-op, so re-check attachment.
|
|
50
|
+
const trigger = triggerRef.current;
|
|
51
|
+
if (trigger && document.contains(trigger)) {
|
|
52
|
+
trigger.focus();
|
|
53
|
+
}
|
|
49
54
|
};
|
|
50
55
|
return { panelRef, handleTriggerKeyDown, handlePanelKeyDown };
|
|
51
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dual-tier-keyboard.js","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAgBA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAA2B,KAAI;AAC1H,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC;;AAE7C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC;;AAEnD,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;AAEtC,IAAA,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"use-dual-tier-keyboard.js","sources":["../../../../../src/components/organisms/SidebarNavigation/hooks/use-dual-tier-keyboard.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAgBA;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAA2B,KAAI;AAC1H,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC;;AAE7C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC;;AAEnD,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;AAEtC,IAAA,MAAM,mBAAmB,GAAG,MAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAc,+EAA+E,CAAC,EAAE,KAAK,EAAE;;;;IAKxI,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC9C,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK;AAChC,YAAA,mBAAmB,EAAE;QACvB;AACF,IAAA,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAElC;;;AAGG;AACH,IAAA,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,WAAoB,KAAK,CAAC,KAAmC,KAAI;AAC5G,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,WAAW;YAAE;QAChD,KAAK,CAAC,cAAc,EAAE;QACtB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAc,WAAW,CAAC;AAChF,QAAA,IAAI,cAAc,IAAI,YAAY,KAAK,KAAK,EAAE;AAC5C,YAAA,mBAAmB,EAAE;QACvB;aAAO;AACL,YAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI;YAC/B,eAAe,CAAC,KAAK,CAAC;AACtB,YAAA,QAAQ,EAAE;QACZ;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAoC,KAAI;QAClE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;YAAE;QACzD,KAAK,CAAC,cAAc,EAAE;;;AAGtB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;QAClC,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACzC,OAAO,CAAC,KAAK,EAAE;QACjB;AACF,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE;AAC/D;;;;"}
|
|
@@ -4,6 +4,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var uiIcons = require('@flipdish/ui-icons');
|
|
5
5
|
var FlipdishLogo = require('@flipdish/ui-library/components/atoms/FlipdishLogo');
|
|
6
6
|
var UtilityButton = require('@flipdish/ui-library/components/atoms/UtilityButton');
|
|
7
|
+
var useBreakpoints = require('@flipdish/ui-library/hooks/useBreakpoints');
|
|
7
8
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
8
9
|
var localStorageUtils = require('@flipdish/ui-library/utilities/localStorageUtils');
|
|
9
10
|
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
@@ -14,6 +15,7 @@ var navAccountCard = require('./components/nav-account-card.cjs');
|
|
|
14
15
|
var navButton = require('./components/nav-button.cjs');
|
|
15
16
|
var navItem = require('./components/nav-item.cjs');
|
|
16
17
|
var navList = require('./components/nav-list.cjs');
|
|
18
|
+
var navSectionToggle = require('./components/nav-section-toggle.cjs');
|
|
17
19
|
var useDualTierKeyboard = require('./hooks/use-dual-tier-keyboard.cjs');
|
|
18
20
|
var sidebarMenuButton = require('./components/sidebar-menu-button.cjs');
|
|
19
21
|
|
|
@@ -46,6 +48,13 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
46
48
|
if (!isMobileMenuControlled)
|
|
47
49
|
setInternalMobileMenuOpen(next);
|
|
48
50
|
};
|
|
51
|
+
// Close the drawer once the fixed rail takes over — otherwise it can stay open (with RAC's scroll lock) across a resize/orientation change.
|
|
52
|
+
const isDesktop = useBreakpoints.useBreakpoint('lg');
|
|
53
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: only isDesktop should retrigger this
|
|
54
|
+
React.useEffect(() => {
|
|
55
|
+
if (isDesktop && isMobileMenuOpen)
|
|
56
|
+
setMobileMenuOpen(false);
|
|
57
|
+
}, [isDesktop]);
|
|
49
58
|
// Hydrate the persisted preference after mount to avoid an SSR hydration mismatch.
|
|
50
59
|
React.useEffect(() => {
|
|
51
60
|
if (isControlled || !persistCollapsed)
|
|
@@ -62,7 +71,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
62
71
|
if (persistCollapsed)
|
|
63
72
|
localStorageUtils.sidebarCollapsedStorage.set(next);
|
|
64
73
|
};
|
|
65
|
-
|
|
74
|
+
// Guard on a defined `activeUrl`: `href` is optional on section parents, so an absent
|
|
75
|
+
// `activeUrl` would match the first hrefless parent and silently select it.
|
|
76
|
+
const isActive = (item) => activeUrl !== undefined && (item.href === activeUrl || Boolean(item.items?.some((sub) => sub.href === activeUrl)));
|
|
66
77
|
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
67
78
|
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
68
79
|
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
@@ -83,7 +94,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
83
94
|
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
84
95
|
const [isHovering, setIsHovering] = React.useState(false);
|
|
85
96
|
const [isFocusWithin, setIsFocusWithin] = React.useState(false);
|
|
86
|
-
|
|
97
|
+
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
98
|
+
const [isAccountMenuOpen, setIsAccountMenuOpen] = React.useState(false);
|
|
99
|
+
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
87
100
|
const panelId = React.useId();
|
|
88
101
|
// Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
|
|
89
102
|
const mobileMenuId = React.useId();
|
|
@@ -119,12 +132,19 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
119
132
|
};
|
|
120
133
|
const selectSection = () => setCurrentLabel(item.label);
|
|
121
134
|
const itemTestId = navItemTestId(item);
|
|
122
|
-
|
|
135
|
+
// A parent's own `href` (if any) is ignored — it reveals the panel, not navigates.
|
|
136
|
+
return (jsxRuntime.jsx("li", { className: isCollapsed ? undefined : 'py-px', onKeyDown: handleTriggerKeyDown(item.label, hasChildren), children: isCollapsed ? (jsxRuntime.jsx(navButton.NavButton, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, onClick: selectSection, label: item.label || '', icon: item.icon, "data-testid": itemTestId, ...disclosure })) : (jsxRuntime.jsx(navItem.NavItemBase, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, icon: item.icon, badge: item.badge, hasSubmenu: hasChildren, onClick: selectSection, "data-testid": itemTestId, ...disclosure, children: item.label })) }, item.label));
|
|
123
137
|
});
|
|
124
138
|
const mainSidebar = (jsxRuntime.jsxs(react.motion.aside, { animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx.cx('flex h-full max-h-full flex-col justify-between overflow-x-hidden overflow-y-auto bg-secondary', !hideBorder && 'border-r border-secondary'), children: [jsxRuntime.jsxs("div", { className: "flex flex-col", children: [isCollapsed ? (jsxRuntime.jsx("div", { className: "flex justify-center px-3 py-5", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Expand", "aria-label": "Expand navigation", icon: uiIcons.ChevronRightDouble, "data-testid": testIdUtils.joinTestId(rootTestId, 'expand'), onClick: () => setCollapsed(false) }) })) : (jsxRuntime.jsxs("div", { className: "relative flex items-center px-5 py-5", children: [jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "md" }), jsxRuntime.jsx("div", { className: "absolute top-5 right-4", children: jsxRuntime.jsx(UtilityButton.ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Collapse", "aria-label": "Collapse navigation", icon: uiIcons.ChevronLeftDouble, "data-testid": testIdUtils.joinTestId(rootTestId, 'collapse'), onClick: () => setCollapsed(true) }) })] })), jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed ? 'items-center px-3.5' : 'px-4 pt-1'), children: renderPrimaryItems(items) })] }), jsxRuntime.jsxs("div", { className: cx.cx('mt-auto flex flex-col gap-3 py-4', isCollapsed ? 'items-center px-3' : 'px-4'), children: [footerItems.length > 0 && jsxRuntime.jsx("ul", { className: cx.cx('flex flex-col gap-0.5', isCollapsed && 'items-center'), children: renderPrimaryItems(footerItems) }), account &&
|
|
125
|
-
(isCollapsed ? (jsxRuntime.jsx(navAccountCard.NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, "data-testid": account['data-testid'] })) : (jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, "data-testid": account['data-testid'] })))] })] }));
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
(isCollapsed ? (jsxRuntime.jsx(navAccountCard.NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] })) : (jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] })))] })] }));
|
|
140
|
+
// The account menu is rendered inside the mobile drawer, so its own item actions must also close the drawer.
|
|
141
|
+
const closeMobileMenuThen = (onClick) => () => {
|
|
142
|
+
setMobileMenuOpen(false);
|
|
143
|
+
onClick?.();
|
|
144
|
+
};
|
|
145
|
+
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
146
|
+
const secondarySidebar = currentItem && (jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsxRuntime.jsx(react.motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx.cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxRuntime.jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsxRuntime.jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsxRuntime.jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsxRuntime.jsx("li", { className: "py-px", children: jsxRuntime.jsx(navItem.NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, "data-testid": item['data-testid'] ?? testIdUtils.joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? testIdUtils.slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsxRuntime.jsx(navSectionToggle.NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) })) }));
|
|
147
|
+
return (jsxRuntime.jsxs(testIdUtils.TestIdProvider, { value: rootTestId, children: [jsxRuntime.jsxs("div", { className: "z-50 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsxRuntime.jsx("div", { style: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && (jsxRuntime.jsx(mobileHeader.MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId, "data-testid": testIdUtils.joinTestId(rootTestId, 'mobile-toggle') })), jsxRuntime.jsx(mobileHeader.MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, "data-testid": testIdUtils.joinTestId(rootTestId, 'mobile-close'), children: jsxRuntime.jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsxRuntime.jsx("div", { className: "px-4", children: jsxRuntime.jsx(FlipdishLogo.FlipdishLogo, { size: "sm" }) }), jsxRuntime.jsx(navList.NavList, { activeUrl: activeUrl, items: items, onNavigate: () => setMobileMenuOpen(false), testIdPrefix: rootTestId }), jsxRuntime.jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsxRuntime.jsx(navList.NavList, { activeUrl: activeUrl, items: footerItems, onNavigate: () => setMobileMenuOpen(false), testIdPrefix: rootTestId, className: "px-0 pt-0" })), account && (jsxRuntime.jsx(navAccountCard.NavAccountCard, { account: account.account, menuItems: withMobileMenuClose(account.menuItems), bottomMenuItems: withMobileMenuClose(account.bottomMenuItems), "data-testid": account['data-testid'] }))] })] }) })] }));
|
|
128
148
|
};
|
|
129
149
|
|
|
130
150
|
exports.NavAccountCard = navAccountCard.NavAccountCard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","joinTestId","slugifyTestId","useState","useEffect","sidebarCollapsedStorage","useId","useDualTierKeyboard","_jsx","NavButton","NavItemBase","_jsxs","motion","cx","ButtonUtility","ChevronRightDouble","FlipdishLogo","ChevronLeftDouble","NavAccountCard","AnimatePresence","TestIdProvider","MobileNavigationHeader","MobileNavigationDrawer","NavList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","joinTestId","slugifyTestId","useState","useBreakpoint","useEffect","sidebarCollapsedStorage","useId","useDualTierKeyboard","_jsx","NavButton","NavItemBase","_jsxs","motion","cx","ButtonUtility","ChevronRightDouble","FlipdishLogo","ChevronLeftDouble","NavAccountCard","AnimatePresence","NavSectionToggleRow","TestIdProvider","MobileNavigationHeader","MobileNavigationDrawer","NavList"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { NavItemType } from './sidebarNavigation.types';
|
|
|
4
4
|
export { NavAccountCard, type NavAccountData, NavAccountMenu, type NavAccountMenuItemType, type NavAccountType } from './components/nav-account-card';
|
|
5
5
|
export { NavItemBase, type NavItemStatus } from './components/nav-item';
|
|
6
6
|
export { SidebarMenuButton, type SidebarMenuButtonProps } from './components/sidebar-menu-button';
|
|
7
|
+
export type { NavSectionToggle } from './sidebarNavigation.types';
|
|
7
8
|
type SidebarNavItem = NavItemType & {
|
|
8
9
|
icon: FC<{
|
|
9
10
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/SidebarNavigation/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAMpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACtJ,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAClG,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,KAAK,cAAc,GAAG,WAAW,GAAG;IAAE,IAAI,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uCAAuC;IACvC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,sHAAsH;IACtH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,8GAA8G;IAC9G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,iOAe/B,sBAAsB,gCAmVxB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { ChevronRightDouble, ChevronLeftDouble } from '@flipdish/ui-icons';
|
|
3
3
|
import { FlipdishLogo } from '@flipdish/ui-library/components/atoms/FlipdishLogo';
|
|
4
4
|
import { ButtonUtility } from '@flipdish/ui-library/components/atoms/UtilityButton';
|
|
5
|
+
import { useBreakpoint } from '@flipdish/ui-library/hooks/useBreakpoints';
|
|
5
6
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
6
7
|
import { sidebarCollapsedStorage } from '@flipdish/ui-library/utilities/localStorageUtils';
|
|
7
8
|
import { useResolvedTestId, joinTestId, slugifyTestId, TestIdProvider } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
@@ -13,6 +14,7 @@ export { NavAccountMenu } from './components/nav-account-card.js';
|
|
|
13
14
|
import { NavButton } from './components/nav-button.js';
|
|
14
15
|
import { NavItemBase } from './components/nav-item.js';
|
|
15
16
|
import { NavList } from './components/nav-list.js';
|
|
17
|
+
import { NavSectionToggleRow } from './components/nav-section-toggle.js';
|
|
16
18
|
import { useDualTierKeyboard } from './hooks/use-dual-tier-keyboard.js';
|
|
17
19
|
export { SidebarMenuButton } from './components/sidebar-menu-button.js';
|
|
18
20
|
|
|
@@ -45,6 +47,13 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
45
47
|
if (!isMobileMenuControlled)
|
|
46
48
|
setInternalMobileMenuOpen(next);
|
|
47
49
|
};
|
|
50
|
+
// Close the drawer once the fixed rail takes over — otherwise it can stay open (with RAC's scroll lock) across a resize/orientation change.
|
|
51
|
+
const isDesktop = useBreakpoint('lg');
|
|
52
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: only isDesktop should retrigger this
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (isDesktop && isMobileMenuOpen)
|
|
55
|
+
setMobileMenuOpen(false);
|
|
56
|
+
}, [isDesktop]);
|
|
48
57
|
// Hydrate the persisted preference after mount to avoid an SSR hydration mismatch.
|
|
49
58
|
useEffect(() => {
|
|
50
59
|
if (isControlled || !persistCollapsed)
|
|
@@ -61,7 +70,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
61
70
|
if (persistCollapsed)
|
|
62
71
|
sidebarCollapsedStorage.set(next);
|
|
63
72
|
};
|
|
64
|
-
|
|
73
|
+
// Guard on a defined `activeUrl`: `href` is optional on section parents, so an absent
|
|
74
|
+
// `activeUrl` would match the first hrefless parent and silently select it.
|
|
75
|
+
const isActive = (item) => activeUrl !== undefined && (item.href === activeUrl || Boolean(item.items?.some((sub) => sub.href === activeUrl)));
|
|
65
76
|
// Dual-tier reveal: the secondary panel is shown whenever the
|
|
66
77
|
// pointer is over — or focus is within — the sidebar, and it always lists the
|
|
67
78
|
// children of `currentItem`. `currentItem` is seeded from the active route and
|
|
@@ -82,7 +93,9 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
82
93
|
const currentItem = sections.find((item) => item.label === currentLabel);
|
|
83
94
|
const [isHovering, setIsHovering] = useState(false);
|
|
84
95
|
const [isFocusWithin, setIsFocusWithin] = useState(false);
|
|
85
|
-
|
|
96
|
+
// The account menu popover is portaled outside the sidebar, so hovering it fires pointerleave and would flap the panel open/closed.
|
|
97
|
+
const [isAccountMenuOpen, setIsAccountMenuOpen] = useState(false);
|
|
98
|
+
const isSecondarySidebarVisible = (isHovering || isFocusWithin) && !isAccountMenuOpen && Boolean(currentItem?.items?.length);
|
|
86
99
|
const panelId = useId();
|
|
87
100
|
// Ties the built-in mobile toggle to the drawer it opens via `aria-controls`.
|
|
88
101
|
const mobileMenuId = useId();
|
|
@@ -118,12 +131,19 @@ const SidebarNavigation = ({ activeUrl, items, footerItems = [], account, collap
|
|
|
118
131
|
};
|
|
119
132
|
const selectSection = () => setCurrentLabel(item.label);
|
|
120
133
|
const itemTestId = navItemTestId(item);
|
|
121
|
-
|
|
134
|
+
// A parent's own `href` (if any) is ignored — it reveals the panel, not navigates.
|
|
135
|
+
return (jsx("li", { className: isCollapsed ? undefined : 'py-px', onKeyDown: handleTriggerKeyDown(item.label, hasChildren), children: isCollapsed ? (jsx(NavButton, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, onClick: selectSection, label: item.label || '', icon: item.icon, "data-testid": itemTestId, ...disclosure })) : (jsx(NavItemBase, { type: hasChildren ? 'disclosure' : 'link', current: isCurrentPage, selected: isSelected, href: hasChildren ? undefined : item.href, icon: item.icon, badge: item.badge, hasSubmenu: hasChildren, onClick: selectSection, "data-testid": itemTestId, ...disclosure, children: item.label })) }, item.label));
|
|
122
136
|
});
|
|
123
137
|
const mainSidebar = (jsxs(motion.aside, { animate: { width: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx('flex h-full max-h-full flex-col justify-between overflow-x-hidden overflow-y-auto bg-secondary', !hideBorder && 'border-r border-secondary'), children: [jsxs("div", { className: "flex flex-col", children: [isCollapsed ? (jsx("div", { className: "flex justify-center px-3 py-5", children: jsx(ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Expand", "aria-label": "Expand navigation", icon: ChevronRightDouble, "data-testid": joinTestId(rootTestId, 'expand'), onClick: () => setCollapsed(false) }) })) : (jsxs("div", { className: "relative flex items-center px-5 py-5", children: [jsx(FlipdishLogo, { size: "md" }), jsx("div", { className: "absolute top-5 right-4", children: jsx(ButtonUtility, { size: "sm", color: "tertiary", tooltip: "Collapse", "aria-label": "Collapse navigation", icon: ChevronLeftDouble, "data-testid": joinTestId(rootTestId, 'collapse'), onClick: () => setCollapsed(true) }) })] })), jsx("ul", { className: cx('flex flex-col gap-0.5', isCollapsed ? 'items-center px-3.5' : 'px-4 pt-1'), children: renderPrimaryItems(items) })] }), jsxs("div", { className: cx('mt-auto flex flex-col gap-3 py-4', isCollapsed ? 'items-center px-3' : 'px-4'), children: [footerItems.length > 0 && jsx("ul", { className: cx('flex flex-col gap-0.5', isCollapsed && 'items-center'), children: renderPrimaryItems(footerItems) }), account &&
|
|
124
|
-
(isCollapsed ? (jsx(NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, "data-testid": account['data-testid'] })) : (jsx(NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, "data-testid": account['data-testid'] })))] })] }));
|
|
125
|
-
|
|
126
|
-
|
|
138
|
+
(isCollapsed ? (jsx(NavAccountCard, { variant: "avatar", account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] })) : (jsx(NavAccountCard, { account: account.account, menuItems: account.menuItems, bottomMenuItems: account.bottomMenuItems, onOpenChange: setIsAccountMenuOpen, "data-testid": account['data-testid'] })))] })] }));
|
|
139
|
+
// The account menu is rendered inside the mobile drawer, so its own item actions must also close the drawer.
|
|
140
|
+
const closeMobileMenuThen = (onClick) => () => {
|
|
141
|
+
setMobileMenuOpen(false);
|
|
142
|
+
onClick?.();
|
|
143
|
+
};
|
|
144
|
+
const withMobileMenuClose = (menuItems) => menuItems?.map((item) => ({ ...item, onClick: closeMobileMenuThen(item.onClick) }));
|
|
145
|
+
const secondarySidebar = currentItem && (jsx(AnimatePresence, { initial: false, children: isSecondarySidebarVisible && (jsx(motion.div, { ref: panelRef, id: panelId, onKeyDown: handlePanelKeyDown, role: "group", "aria-label": `${currentItem.label} pages`, initial: { width: 0, borderColor: 'var(--color-border-secondary)' }, animate: { width: SECONDARY_SIDEBAR_WIDTH, borderColor: 'var(--color-border-secondary)' }, exit: { width: 0, borderColor: 'rgba(0,0,0,0)', transition: { borderColor: { type: 'tween', delay: 0.05 } } }, transition: { type: 'spring', damping: 26, stiffness: 220, bounce: 0 }, className: cx('relative h-full overflow-x-hidden overflow-y-auto bg-primary', !(hideBorder || hideRightBorder) && 'box-content border-r border-secondary'), children: jsxs("div", { style: { width: SECONDARY_SIDEBAR_WIDTH }, className: "flex h-full flex-col px-4 pt-6", children: [jsx("h3", { className: "px-2 text-sm font-semibold text-tertiary", children: currentItem.label }), jsx("ul", { className: "py-2", children: currentItem.items?.map((item) => (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", current: activeUrl === item.href, href: item.href, icon: item.icon, badge: item.badge, "data-testid": item['data-testid'] ?? joinTestId(navItemTestId(currentItem), `sub-item-${item.id ?? slugifyTestId(item.label)}`), children: item.label }) }, item.label))) }), currentItem.toggle && (jsx(NavSectionToggleRow, { toggle: currentItem.toggle, testIdPrefix: navItemTestId(currentItem), className: "mt-auto mb-4" }))] }) })) }));
|
|
146
|
+
return (jsxs(TestIdProvider, { value: rootTestId, children: [jsxs("div", { className: "z-50 hidden lg:fixed lg:inset-y-0 lg:left-0 lg:flex", onPointerEnter: () => setIsHovering(true), onPointerLeave: () => setIsHovering(false), onFocus: handleContainerFocus, onBlur: handleContainerBlur, children: [mainSidebar, secondarySidebar] }), jsx("div", { style: { paddingLeft: isCollapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH }, className: "invisible hidden lg:sticky lg:top-0 lg:bottom-0 lg:left-0 lg:block" }), showMobileHeader && (jsx(MobileNavigationHeader, { isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, controls: mobileMenuId, "data-testid": joinTestId(rootTestId, 'mobile-toggle') })), jsx(MobileNavigationDrawer, { id: mobileMenuId, isOpen: isMobileMenuOpen, onOpenChange: setMobileMenuOpen, "data-testid": joinTestId(rootTestId, 'mobile-close'), children: jsxs("aside", { className: "group flex h-full max-h-full w-full max-w-full flex-col justify-between overflow-y-auto bg-secondary pt-4", children: [jsx("div", { className: "px-4", children: jsx(FlipdishLogo, { size: "sm" }) }), jsx(NavList, { activeUrl: activeUrl, items: items, onNavigate: () => setMobileMenuOpen(false), testIdPrefix: rootTestId }), jsxs("div", { className: "mt-auto flex flex-col gap-3 p-4", children: [footerItems.length > 0 && (jsx(NavList, { activeUrl: activeUrl, items: footerItems, onNavigate: () => setMobileMenuOpen(false), testIdPrefix: rootTestId, className: "px-0 pt-0" })), account && (jsx(NavAccountCard, { account: account.account, menuItems: withMobileMenuClose(account.menuItems), bottomMenuItems: withMobileMenuClose(account.bottomMenuItems), "data-testid": account['data-testid'] }))] })] }) })] }));
|
|
127
147
|
};
|
|
128
148
|
|
|
129
149
|
export { NavAccountCard, NavItemBase, SidebarNavigation };
|