@flipdish/ui-library 0.23.0 → 0.25.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/__internal__/navigation/nav.utils.cjs +46 -7
- package/dist/components/__internal__/navigation/nav.utils.cjs.map +1 -1
- package/dist/components/__internal__/navigation/nav.utils.d.ts +11 -5
- package/dist/components/__internal__/navigation/nav.utils.d.ts.map +1 -1
- package/dist/components/__internal__/navigation/nav.utils.js +45 -7
- package/dist/components/__internal__/navigation/nav.utils.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs +3 -3
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.cjs.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts +6 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js +3 -3
- package/dist/components/molecules/Breadcrumbs/components/breadcrumb-item.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.cjs +4 -2
- package/dist/components/molecules/Breadcrumbs/index.cjs.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.d.ts +7 -6
- package/dist/components/molecules/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.js +5 -3
- package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
- package/dist/components/molecules/EmptyState/index.cjs +2 -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 +3 -2
- package/dist/components/molecules/EmptyState/index.js.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.cjs +2 -1
- package/dist/components/molecules/Select/components/multi-select.cjs.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.d.ts.map +1 -1
- package/dist/components/molecules/Select/components/multi-select.js +3 -2
- package/dist/components/molecules/Select/components/multi-select.js.map +1 -1
- package/dist/components/molecules/Tabs/index.cjs +7 -4
- package/dist/components/molecules/Tabs/index.cjs.map +1 -1
- package/dist/components/molecules/Tabs/index.d.ts +12 -2
- package/dist/components/molecules/Tabs/index.d.ts.map +1 -1
- package/dist/components/molecules/Tabs/index.js +6 -5
- package/dist/components/molecules/Tabs/index.js.map +1 -1
- package/dist/components/organisms/CommandMenu/index.cjs +2 -9
- package/dist/components/organisms/CommandMenu/index.cjs.map +1 -1
- package/dist/components/organisms/CommandMenu/index.d.ts.map +1 -1
- package/dist/components/organisms/CommandMenu/index.js +3 -10
- package/dist/components/organisms/CommandMenu/index.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/components/nav-list.cjs +3 -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 -3
- package/dist/components/organisms/HeaderNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.cjs +3 -12
- package/dist/components/organisms/HeaderNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/HeaderNavigation/index.js +3 -12
- package/dist/components/organisms/HeaderNavigation/index.js.map +1 -1
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.cjs +25 -0
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.cjs.map +1 -0
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.d.ts +19 -0
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.d.ts.map +1 -0
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.js +23 -0
- package/dist/components/organisms/PageHeader/components/page-header-tab-nav.js.map +1 -0
- package/dist/components/organisms/PageHeader/index.cjs +38 -3
- package/dist/components/organisms/PageHeader/index.cjs.map +1 -1
- package/dist/components/organisms/PageHeader/index.d.ts +78 -3
- package/dist/components/organisms/PageHeader/index.d.ts.map +1 -1
- package/dist/components/organisms/PageHeader/index.js +40 -1
- package/dist/components/organisms/PageHeader/index.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs +17 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.d.ts +6 -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 +19 -4
- package/dist/components/organisms/SidebarNavigation/components/nav-account-card.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs +3 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-list.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.d.ts +2 -2
- package/dist/components/organisms/SidebarNavigation/components/nav-list.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js +4 -3
- package/dist/components/organisms/SidebarNavigation/components/nav-list.js.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.cjs +18 -10
- package/dist/components/organisms/SidebarNavigation/index.cjs.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.d.ts +12 -2
- package/dist/components/organisms/SidebarNavigation/index.d.ts.map +1 -1
- package/dist/components/organisms/SidebarNavigation/index.js +18 -10
- package/dist/components/organisms/SidebarNavigation/index.js.map +1 -1
- package/dist/components/templates/PageLayout/index.cjs +8 -10
- package/dist/components/templates/PageLayout/index.cjs.map +1 -1
- package/dist/components/templates/PageLayout/index.d.ts +7 -5
- package/dist/components/templates/PageLayout/index.d.ts.map +1 -1
- package/dist/components/templates/PageLayout/index.js +8 -10
- package/dist/components/templates/PageLayout/index.js.map +1 -1
- package/dist/utilities/__internal__/childrenUtils/children.utils.cjs +22 -0
- package/dist/utilities/__internal__/childrenUtils/children.utils.cjs.map +1 -0
- package/dist/utilities/__internal__/childrenUtils/children.utils.d.ts +12 -0
- package/dist/utilities/__internal__/childrenUtils/children.utils.d.ts.map +1 -0
- package/dist/utilities/__internal__/childrenUtils/children.utils.js +20 -0
- package/dist/utilities/__internal__/childrenUtils/children.utils.js.map +1 -0
- package/package.json +1 -1
- package/dist/components/organisms/PageHeader/components/page-header-simple.cjs +0 -16
- package/dist/components/organisms/PageHeader/components/page-header-simple.cjs.map +0 -1
- package/dist/components/organisms/PageHeader/components/page-header-simple.d.ts +0 -26
- package/dist/components/organisms/PageHeader/components/page-header-simple.d.ts.map +0 -1
- package/dist/components/organisms/PageHeader/components/page-header-simple.js +0 -14
- package/dist/components/organisms/PageHeader/components/page-header-simple.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
3
|
-
import { findActiveItem,
|
|
3
|
+
import { findActiveItem, findActiveHref, navItemTestId, navSubItemTestId } from '../../../__internal__/navigation/nav.utils.js';
|
|
4
4
|
import { NavItemBase } from './nav-item.js';
|
|
5
5
|
|
|
6
6
|
const NavList = ({ activeUrl, items, className, testIdPrefix }) => {
|
|
7
7
|
const activeItem = findActiveItem(items, activeUrl);
|
|
8
|
+
const activeHref = findActiveHref(items, activeUrl);
|
|
8
9
|
const itemTestId = (item) => navItemTestId(testIdPrefix, item);
|
|
9
10
|
const subItemTestId = (parent, sub) => navSubItemTestId(itemTestId(parent), sub);
|
|
10
11
|
return (jsx("ul", { className: cx('flex flex-col px-4 pt-5', className), children: items.map((item, index) => {
|
|
@@ -15,9 +16,9 @@ const NavList = ({ activeUrl, items, className, testIdPrefix }) => {
|
|
|
15
16
|
}
|
|
16
17
|
if (item.items?.length) {
|
|
17
18
|
// Reference compare, not href: hrefless parents all share `undefined` and would otherwise force-open together.
|
|
18
|
-
return (jsxs("details", { open: activeItem === item, className: "appearance-none py-0.25", children: [jsx(NavItemBase, { href: item.href, badge: item.badge, icon: item.icon, type: "collapsible", "data-testid": itemTestId(item), children: item.label }), jsx("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:
|
|
19
|
+
return (jsxs("details", { open: activeItem === item, className: "appearance-none py-0.25", children: [jsx(NavItemBase, { href: item.href, badge: item.badge, icon: item.icon, type: "collapsible", "data-testid": itemTestId(item), children: item.label }), jsx("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: childItem.href === activeHref, "data-testid": subItemTestId(item, childItem), children: childItem.label }) }, childItem.label))) }) })] }, item.label));
|
|
19
20
|
}
|
|
20
|
-
return (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", badge: item.badge, icon: item.icon, href: item.href, current:
|
|
21
|
+
return (jsx("li", { className: "py-px", children: jsx(NavItemBase, { type: "link", badge: item.badge, icon: item.icon, href: item.href, current: item.href === activeHref, "data-testid": itemTestId(item), children: item.label }) }, item.label));
|
|
21
22
|
}) }));
|
|
22
23
|
};
|
|
23
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-list.js","sources":["../../../../../src/components/organisms/HeaderNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAkBO,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAgB,KAAI;IACrF,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;AACnD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAsC,KAAK,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AAChG,IAAA,MAAM,aAAa,GAAG,CAAC,MAAwC,EAAE,GAAmB,KAAK,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAElI,QACEA,YAAI,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,YACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB;;AAEE,gBAAAA,GAAA,CAAA,IAAA,EAAA,EAAgB,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAC5CA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,6CAA6C,EAAA,CAAG,EAAA,EADvD,KAAK,CAET;YAET;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;;gBAEtB,QACEC,IAAA,CAAA,SAAA,EAAA,EAA0B,IAAI,EAAE,UAAU,KAAK,IAAI,EAAE,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtFD,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC,aAAa,EAAA,aAAA,EAAc,UAAU,CAAC,IAAI,CAAC,EAAA,QAAA,EAC/G,IAAI,CAAC,KAAK,EAAA,CACC,EAEdA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,MAAM,EAAA,QAAA,EACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,MACxBA,GAAA,CAAA,IAAA,EAAA,EAA0B,SAAS,EAAC,SAAS,EAAA,QAAA,EAC3CA,GAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"nav-list.js","sources":["../../../../../src/components/organisms/HeaderNavigation/components/nav-list.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;AAkBO,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAgB,KAAI;IACrF,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;IACnD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;AACnD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAsC,KAAK,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AAChG,IAAA,MAAM,aAAa,GAAG,CAAC,MAAwC,EAAE,GAAmB,KAAK,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAElI,QACEA,YAAI,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,YACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACzB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB;;AAEE,gBAAAA,GAAA,CAAA,IAAA,EAAA,EAAgB,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAC5CA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,6CAA6C,EAAA,CAAG,EAAA,EADvD,KAAK,CAET;YAET;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;;gBAEtB,QACEC,IAAA,CAAA,SAAA,EAAA,EAA0B,IAAI,EAAE,UAAU,KAAK,IAAI,EAAE,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtFD,GAAA,CAAC,WAAW,EAAA,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC,aAAa,EAAA,aAAA,EAAc,UAAU,CAAC,IAAI,CAAC,EAAA,QAAA,EAC/G,IAAI,CAAC,KAAK,EAAA,CACC,EAEdA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACEA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,MAAM,EAAA,QAAA,EACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,MACxBA,GAAA,CAAA,IAAA,EAAA,EAA0B,SAAS,EAAC,SAAS,EAAA,QAAA,EAC3CA,GAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,UAAU,EAAA,aAAA,EACzB,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,EAAA,QAAA,EAE1C,SAAS,CAAC,KAAK,EAAA,CACJ,EAAA,EATP,SAAS,CAAC,KAAK,CAUnB,CACN,CAAC,EAAA,CACC,EAAA,CACF,CAAA,EAAA,EArBO,IAAI,CAAC,KAAK,CAsBd;YAEd;YAEA,QACEA,GAAA,CAAA,IAAA,EAAA,EAAqB,SAAS,EAAC,OAAO,YACpCA,GAAA,CAAC,WAAW,EAAA,EACV,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU,EAAA,aAAA,EACpB,UAAU,CAAC,IAAI,CAAC,EAAA,QAAA,EAE5B,IAAI,CAAC,KAAK,EAAA,CACC,EAAA,EAVP,IAAI,CAAC,KAAK,CAWd;QAET,CAAC,CAAC,EAAA,CACC;AAET;;;;"}
|
|
@@ -7,31 +7,22 @@ var Input = require('@flipdish/ui-library/components/atoms/Input');
|
|
|
7
7
|
var Tabs = require('@flipdish/ui-library/components/molecules/Tabs');
|
|
8
8
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
9
9
|
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
10
|
+
var nav_utils = require('../../__internal__/navigation/nav.utils.cjs');
|
|
10
11
|
var mobileHeader = require('./components/mobile-header.cjs');
|
|
11
12
|
var navAccountCard = require('./components/nav-account-card.cjs');
|
|
12
13
|
var navButton = require('./components/nav-button.cjs');
|
|
13
14
|
var navItem = require('./components/nav-item.cjs');
|
|
14
15
|
var navList = require('./components/nav-list.cjs');
|
|
15
16
|
|
|
16
|
-
/** Returns true if `href` matches `activeUrl` (exact or prefix for nested routes). */
|
|
17
|
-
const isItemActive = (href, activeUrl) => {
|
|
18
|
-
if (!activeUrl || !href)
|
|
19
|
-
return false;
|
|
20
|
-
if (href === activeUrl)
|
|
21
|
-
return true;
|
|
22
|
-
if (href !== '/' && activeUrl.startsWith(`${href}/`))
|
|
23
|
-
return true;
|
|
24
|
-
return false;
|
|
25
|
-
};
|
|
26
17
|
const HeaderNavigationBase = ({ activeUrl, items, subItems, hideBorder = false, actions, centered = false, secondaryType = 'buttons', footerItems = [], account, 'data-testid': dataTestId, }) => {
|
|
27
|
-
const isActive = (item) => item.current ??
|
|
18
|
+
const isActive = (item) => item.current ?? nav_utils.isHrefActive(item.href, activeUrl);
|
|
28
19
|
const rootTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'header-navigation', rootName: 'header-navigation' });
|
|
29
20
|
// The mobile drawer and the desktop header both render the same nav items; re-root the
|
|
30
21
|
// drawer subtree under `drawer` so their derived testids don't collide in the DOM.
|
|
31
22
|
const drawerTestId = testIdUtils.joinTestId(rootTestId, 'drawer');
|
|
32
23
|
const navItemTestId = (item, base = rootTestId) => item['data-testid'] ?? testIdUtils.joinTestId(base, `nav-item-${item.id ?? testIdUtils.slugifyTestId(item.label)}`);
|
|
33
24
|
const subNavItemTestId = (item) => item['data-testid'] ?? testIdUtils.joinTestId(rootTestId, `sub-nav-${item.id ?? testIdUtils.slugifyTestId(item.label)}`);
|
|
34
|
-
const activeParent = items.find((item) => isActive(item) || item.items?.some((sub) =>
|
|
25
|
+
const activeParent = items.find((item) => isActive(item) || item.items?.some((sub) => nav_utils.isHrefActive(sub.href, activeUrl)));
|
|
35
26
|
const activeSubNavItems = subItems || activeParent?.items;
|
|
36
27
|
const showSecondaryNav = activeSubNavItems && activeSubNavItems.length > 0;
|
|
37
28
|
const tabItems = showSecondaryNav
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","joinTestId","slugifyTestId","_jsxs","TestIdProvider","_jsx","MobileNavigationHeader","FlipdishLogo","Input","SearchLg","NavList","NavItemBase","NavAccountCard","cx","NavButton","Tabs","TabList"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"sourcesContent":[null],"names":["isHrefActive","useResolvedTestId","joinTestId","slugifyTestId","_jsxs","TestIdProvider","_jsx","MobileNavigationHeader","FlipdishLogo","Input","SearchLg","NavList","NavItemBase","NavAccountCard","cx","NavButton","Tabs","TabList"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAkB,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAKjH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACjI,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,wDAAwD;IACxD,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,gFAAgF;IAChF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,iDAAiD;IACjD,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC5C,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,IAAI,CAAC,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,wBAAwB;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,4FAA4F;IAC5F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAEnC,wFAAwF;IACxF,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IAExB,4HAA4H;IAC5H,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,GAAI,gIAWlC,yBAAyB,gCAmI3B,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { Input } from '@flipdish/ui-library/components/atoms/Input';
|
|
|
5
5
|
import { Tabs, TabList } from '@flipdish/ui-library/components/molecules/Tabs';
|
|
6
6
|
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
7
7
|
import { useResolvedTestId, joinTestId, TestIdProvider, slugifyTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
8
|
+
import { isHrefActive } from '../../__internal__/navigation/nav.utils.js';
|
|
8
9
|
import { MobileNavigationHeader } from './components/mobile-header.js';
|
|
9
10
|
import { NavAccountCard } from './components/nav-account-card.js';
|
|
10
11
|
export { NavAccountMenu } from './components/nav-account-card.js';
|
|
@@ -12,25 +13,15 @@ import { NavButton } from './components/nav-button.js';
|
|
|
12
13
|
import { NavItemBase } from './components/nav-item.js';
|
|
13
14
|
import { NavList } from './components/nav-list.js';
|
|
14
15
|
|
|
15
|
-
/** Returns true if `href` matches `activeUrl` (exact or prefix for nested routes). */
|
|
16
|
-
const isItemActive = (href, activeUrl) => {
|
|
17
|
-
if (!activeUrl || !href)
|
|
18
|
-
return false;
|
|
19
|
-
if (href === activeUrl)
|
|
20
|
-
return true;
|
|
21
|
-
if (href !== '/' && activeUrl.startsWith(`${href}/`))
|
|
22
|
-
return true;
|
|
23
|
-
return false;
|
|
24
|
-
};
|
|
25
16
|
const HeaderNavigationBase = ({ activeUrl, items, subItems, hideBorder = false, actions, centered = false, secondaryType = 'buttons', footerItems = [], account, 'data-testid': dataTestId, }) => {
|
|
26
|
-
const isActive = (item) => item.current ??
|
|
17
|
+
const isActive = (item) => item.current ?? isHrefActive(item.href, activeUrl);
|
|
27
18
|
const rootTestId = useResolvedTestId({ testId: dataTestId, segment: 'header-navigation', rootName: 'header-navigation' });
|
|
28
19
|
// The mobile drawer and the desktop header both render the same nav items; re-root the
|
|
29
20
|
// drawer subtree under `drawer` so their derived testids don't collide in the DOM.
|
|
30
21
|
const drawerTestId = joinTestId(rootTestId, 'drawer');
|
|
31
22
|
const navItemTestId = (item, base = rootTestId) => item['data-testid'] ?? joinTestId(base, `nav-item-${item.id ?? slugifyTestId(item.label)}`);
|
|
32
23
|
const subNavItemTestId = (item) => item['data-testid'] ?? joinTestId(rootTestId, `sub-nav-${item.id ?? slugifyTestId(item.label)}`);
|
|
33
|
-
const activeParent = items.find((item) => isActive(item) || item.items?.some((sub) =>
|
|
24
|
+
const activeParent = items.find((item) => isActive(item) || item.items?.some((sub) => isHrefActive(sub.href, activeUrl)));
|
|
34
25
|
const activeSubNavItems = subItems || activeParent?.items;
|
|
35
26
|
const showSecondaryNav = activeSubNavItems && activeSubNavItems.length > 0;
|
|
36
27
|
const tabItems = showSecondaryNav
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/HeaderNavigation/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var Badge = require('@flipdish/ui-library/components/atoms/Badge');
|
|
5
|
+
var Tabs = require('@flipdish/ui-library/components/molecules/Tabs');
|
|
6
|
+
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
7
|
+
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
8
|
+
var reactAriaComponents = require('react-aria-components');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Desktop section strip for `PageHeader`, styled via the Tabs class maps but rendered as a
|
|
12
|
+
* `<nav>` rather than a `tablist`: react-aria always points a selected `tab`'s
|
|
13
|
+
* `aria-controls` at a `tabpanel`, and the header never owns that content, so the
|
|
14
|
+
* reference could not resolve (fails axe `aria-valid-attr-value`).
|
|
15
|
+
*/
|
|
16
|
+
const PageHeaderTabNav = ({ tabs, selectedTab, onSelect, 'aria-label': ariaLabel, className, 'data-testid': testId, }) => (jsxRuntime.jsx("nav", { "aria-label": ariaLabel, "data-testid": testId, className: cx.cx('w-full', className), children: jsxRuntime.jsx("ul", { className: "relative flex gap-3 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-border-secondary", children: tabs.map((tab) => {
|
|
17
|
+
const isSelected = tab.id === selectedTab;
|
|
18
|
+
const itemTestId = testIdUtils.joinTestId(testId, `tab-${testIdUtils.slugifyTestId(tab.id)}`);
|
|
19
|
+
const itemClassName = ({ isHovered, isFocusVisible, isDisabled }) => cx.cx('z-10 flex h-max cursor-pointer items-center justify-center whitespace-nowrap text-quaternary transition duration-100 ease-linear', Tabs.tabSizes.sm.base, Tabs.tabSizes.sm.underline, Tabs.getTabStyles({ isSelected, isHovered, isFocusVisible }).underline, isDisabled && 'cursor-not-allowed opacity-50');
|
|
20
|
+
const content = ({ isHovered }) => (jsxRuntime.jsxs("span", { className: "flex items-center gap-1.5 px-0.5", children: [tab.label, tab.badge !== undefined && (jsxRuntime.jsx(Badge.Badge, { size: "sm", type: "pill-color", color: isHovered || isSelected ? 'brand' : 'gray', className: "-my-px transition-inherit-all", children: tab.badge }))] }));
|
|
21
|
+
return (jsxRuntime.jsx("li", { className: "flex", children: tab.href ? (jsxRuntime.jsx(reactAriaComponents.Link, { href: tab.href, isDisabled: tab.isDisabled, "aria-current": isSelected ? 'page' : undefined, className: itemClassName, onPress: () => onSelect(tab.id), "data-testid": itemTestId, children: content })) : (jsxRuntime.jsx(reactAriaComponents.Button, { isDisabled: tab.isDisabled, "aria-current": isSelected ? 'true' : undefined, className: itemClassName, onPress: () => onSelect(tab.id), "data-testid": itemTestId, children: content })) }, tab.id));
|
|
22
|
+
}) }) }));
|
|
23
|
+
|
|
24
|
+
exports.PageHeaderTabNav = PageHeaderTabNav;
|
|
25
|
+
//# sourceMappingURL=page-header-tab-nav.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-tab-nav.cjs","sources":["../../../../../src/components/organisms/PageHeader/components/page-header-tab-nav.tsx"],"sourcesContent":[null],"names":["_jsx","cx","joinTestId","slugifyTestId","tabSizes","getTabStyles","_jsxs","Badge","AriaLink","AriaButton"],"mappings":";;;;;;;;;AAwBA;;;;;AAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EAAE,MAAM,GACC,MACtBA,sCAAiB,SAAS,EAAA,aAAA,EAAe,MAAM,EAAE,SAAS,EAAEC,KAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,QAAA,EACjFD,uBAAI,SAAS,EAAC,6GAA6G,EAAA,QAAA,EACxH,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,WAAW;AACzC,YAAA,MAAM,UAAU,GAAGE,sBAAU,CAAC,MAAM,EAAE,CAAA,IAAA,EAAOC,yBAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAE,CAAC;YAErE,MAAM,aAAa,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAoB,KAChFF,KAAE,CACA,kIAAkI,EAClIG,aAAQ,CAAC,EAAE,CAAC,IAAI,EAChBA,aAAQ,CAAC,EAAE,CAAC,SAAS,EACrBC,iBAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,SAAS,EACjE,UAAU,IAAI,+BAA+B,CAC9C;AAEH,YAAA,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,EAAuC,MACjEC,eAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC/C,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,KAAK,SAAS,KACtBN,cAAA,CAACO,WAAK,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,IAAI,UAAU,GAAG,OAAO,GAAG,MAAM,EAAE,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAC5H,GAAG,CAAC,KAAK,EAAA,CACJ,CACT,CAAA,EAAA,CACI,CACR;YAED,QACEP,cAAA,CAAA,IAAA,EAAA,EAAiB,SAAS,EAAC,MAAM,YAC9B,GAAG,CAAC,IAAI,IACPA,cAAA,CAACQ,wBAAQ,EAAA,EACP,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,UAAU,EAAE,GAAG,CAAC,UAAU,EAAA,cAAA,EACZ,UAAU,GAAG,MAAM,GAAG,SAAS,EAC7C,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,aAAA,EAClB,UAAU,EAAA,QAAA,EAEtB,OAAO,EAAA,CACC,KAEXR,cAAA,CAACS,0BAAU,EAAA,EACT,UAAU,EAAE,GAAG,CAAC,UAAU,EAAA,cAAA,EACZ,UAAU,GAAG,MAAM,GAAG,SAAS,EAC7C,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,aAAA,EAClB,UAAU,EAAA,QAAA,EAEtB,OAAO,EAAA,CACG,CACd,EAAA,EAtBM,GAAG,CAAC,EAAE,CAuBV;AAET,QAAA,CAAC,CAAC,EAAA,CACC,EAAA,CACD;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PageHeaderTab } from '../index';
|
|
2
|
+
interface PageHeaderTabNavProps {
|
|
3
|
+
tabs: PageHeaderTab[];
|
|
4
|
+
selectedTab: string;
|
|
5
|
+
onSelect: (id: string) => void;
|
|
6
|
+
/** Accessible name for the `<nav>` landmark. */
|
|
7
|
+
'aria-label': string;
|
|
8
|
+
className?: string;
|
|
9
|
+
'data-testid': string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Desktop section strip for `PageHeader`, styled via the Tabs class maps but rendered as a
|
|
13
|
+
* `<nav>` rather than a `tablist`: react-aria always points a selected `tab`'s
|
|
14
|
+
* `aria-controls` at a `tabpanel`, and the header never owns that content, so the
|
|
15
|
+
* reference could not resolve (fails axe `aria-valid-attr-value`).
|
|
16
|
+
*/
|
|
17
|
+
export declare const PageHeaderTabNav: ({ tabs, selectedTab, onSelect, "aria-label": ariaLabel, className, "data-testid": testId, }: PageHeaderTabNavProps) => import("react").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=page-header-tab-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-tab-nav.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/PageHeader/components/page-header-tab-nav.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,UAAU,qBAAqB;IAC7B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,6FAO9B,qBAAqB,gCAwDvB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Badge } from '@flipdish/ui-library/components/atoms/Badge';
|
|
3
|
+
import { tabSizes, getTabStyles } from '@flipdish/ui-library/components/molecules/Tabs';
|
|
4
|
+
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
5
|
+
import { joinTestId, slugifyTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
6
|
+
import { Link, Button } from 'react-aria-components';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Desktop section strip for `PageHeader`, styled via the Tabs class maps but rendered as a
|
|
10
|
+
* `<nav>` rather than a `tablist`: react-aria always points a selected `tab`'s
|
|
11
|
+
* `aria-controls` at a `tabpanel`, and the header never owns that content, so the
|
|
12
|
+
* reference could not resolve (fails axe `aria-valid-attr-value`).
|
|
13
|
+
*/
|
|
14
|
+
const PageHeaderTabNav = ({ tabs, selectedTab, onSelect, 'aria-label': ariaLabel, className, 'data-testid': testId, }) => (jsx("nav", { "aria-label": ariaLabel, "data-testid": testId, className: cx('w-full', className), children: jsx("ul", { className: "relative flex gap-3 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-border-secondary", children: tabs.map((tab) => {
|
|
15
|
+
const isSelected = tab.id === selectedTab;
|
|
16
|
+
const itemTestId = joinTestId(testId, `tab-${slugifyTestId(tab.id)}`);
|
|
17
|
+
const itemClassName = ({ isHovered, isFocusVisible, isDisabled }) => cx('z-10 flex h-max cursor-pointer items-center justify-center whitespace-nowrap text-quaternary transition duration-100 ease-linear', tabSizes.sm.base, tabSizes.sm.underline, getTabStyles({ isSelected, isHovered, isFocusVisible }).underline, isDisabled && 'cursor-not-allowed opacity-50');
|
|
18
|
+
const content = ({ isHovered }) => (jsxs("span", { className: "flex items-center gap-1.5 px-0.5", children: [tab.label, tab.badge !== undefined && (jsx(Badge, { size: "sm", type: "pill-color", color: isHovered || isSelected ? 'brand' : 'gray', className: "-my-px transition-inherit-all", children: tab.badge }))] }));
|
|
19
|
+
return (jsx("li", { className: "flex", children: tab.href ? (jsx(Link, { href: tab.href, isDisabled: tab.isDisabled, "aria-current": isSelected ? 'page' : undefined, className: itemClassName, onPress: () => onSelect(tab.id), "data-testid": itemTestId, children: content })) : (jsx(Button, { isDisabled: tab.isDisabled, "aria-current": isSelected ? 'true' : undefined, className: itemClassName, onPress: () => onSelect(tab.id), "data-testid": itemTestId, children: content })) }, tab.id));
|
|
20
|
+
}) }) }));
|
|
21
|
+
|
|
22
|
+
export { PageHeaderTabNav };
|
|
23
|
+
//# sourceMappingURL=page-header-tab-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-header-tab-nav.js","sources":["../../../../../src/components/organisms/PageHeader/components/page-header-tab-nav.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","AriaLink","AriaButton"],"mappings":";;;;;;;AAwBA;;;;;AAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,EAC/B,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,aAAa,EAAE,MAAM,GACC,MACtBA,2BAAiB,SAAS,EAAA,aAAA,EAAe,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,QAAA,EACjFA,YAAI,SAAS,EAAC,6GAA6G,EAAA,QAAA,EACxH,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,KAAK,WAAW;AACzC,YAAA,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA,IAAA,EAAO,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAE,CAAC;YAErE,MAAM,aAAa,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAoB,KAChF,EAAE,CACA,kIAAkI,EAClI,QAAQ,CAAC,EAAE,CAAC,IAAI,EAChB,QAAQ,CAAC,EAAE,CAAC,SAAS,EACrB,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,SAAS,EACjE,UAAU,IAAI,+BAA+B,CAC9C;AAEH,YAAA,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,EAAuC,MACjEC,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC/C,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,KAAK,KAAK,SAAS,KACtBD,GAAA,CAAC,KAAK,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,IAAI,UAAU,GAAG,OAAO,GAAG,MAAM,EAAE,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAC5H,GAAG,CAAC,KAAK,EAAA,CACJ,CACT,CAAA,EAAA,CACI,CACR;YAED,QACEA,GAAA,CAAA,IAAA,EAAA,EAAiB,SAAS,EAAC,MAAM,YAC9B,GAAG,CAAC,IAAI,IACPA,GAAA,CAACE,IAAQ,EAAA,EACP,IAAI,EAAE,GAAG,CAAC,IAAI,EACd,UAAU,EAAE,GAAG,CAAC,UAAU,EAAA,cAAA,EACZ,UAAU,GAAG,MAAM,GAAG,SAAS,EAC7C,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,aAAA,EAClB,UAAU,EAAA,QAAA,EAEtB,OAAO,EAAA,CACC,KAEXF,GAAA,CAACG,MAAU,EAAA,EACT,UAAU,EAAE,GAAG,CAAC,UAAU,EAAA,cAAA,EACZ,UAAU,GAAG,MAAM,GAAG,SAAS,EAC7C,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,aAAA,EAClB,UAAU,EAAA,QAAA,EAEtB,OAAO,EAAA,CACG,CACd,EAAA,EAtBM,GAAG,CAAC,EAAE,CAuBV;AAET,QAAA,CAAC,CAAC,EAAA,CACC,EAAA,CACD;;;;"}
|
|
@@ -1,8 +1,43 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var uiIcons = require('@flipdish/ui-icons');
|
|
5
|
+
var Button = require('@flipdish/ui-library/components/atoms/Button');
|
|
6
|
+
var Divider = require('@flipdish/ui-library/components/atoms/Divider');
|
|
7
|
+
var Breadcrumbs = require('@flipdish/ui-library/components/molecules/Breadcrumbs');
|
|
8
|
+
var Select = require('@flipdish/ui-library/components/molecules/Select');
|
|
9
|
+
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
10
|
+
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
11
|
+
var React = require('react');
|
|
12
|
+
var pageHeaderTabNav = require('./components/page-header-tab-nav.cjs');
|
|
4
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Page-level header that anchors every page: a title (`h1`) with optional breadcrumbs
|
|
16
|
+
* (a back link below `lg`), supporting text, action buttons, section tabs and a divider.
|
|
17
|
+
* Navigation (breadcrumbs, tabs) is data-driven because the header re-renders it per
|
|
18
|
+
* breakpoint; actions are a slot because the header only positions them. Spans the full
|
|
19
|
+
* width of its container — `PageLayout` owns the page padding.
|
|
20
|
+
*
|
|
21
|
+
* @summary page header with title, breadcrumbs, actions and section tabs
|
|
22
|
+
*/
|
|
23
|
+
const PageHeader = ({ title, description, breadcrumbs, actions, tabs, selectedTab, defaultSelectedTab, onTabChange, withDivider = false, className, 'data-testid': dataTestId, }) => {
|
|
24
|
+
const pageHeaderTestId = testIdUtils.useResolvedTestId({ testId: dataTestId, segment: 'page-header', rootName: 'page-header' });
|
|
25
|
+
const hasTabs = Boolean(tabs?.length);
|
|
26
|
+
const backCrumb = breadcrumbs
|
|
27
|
+
?.slice(0, -1)
|
|
28
|
+
.reverse()
|
|
29
|
+
.find((crumb) => crumb.href);
|
|
30
|
+
// Uncontrolled fallback so the desktop strip and the mobile select always agree on the selection.
|
|
31
|
+
const [internalSelectedTab, setInternalSelectedTab] = React.useState(defaultSelectedTab);
|
|
32
|
+
const resolvedSelectedTab = selectedTab ?? internalSelectedTab ?? tabs?.[0]?.id ?? '';
|
|
33
|
+
const selectTab = (id) => {
|
|
34
|
+
setInternalSelectedTab(id);
|
|
35
|
+
onTabChange?.(id);
|
|
36
|
+
};
|
|
37
|
+
return (jsxRuntime.jsx(testIdUtils.TestIdProvider, { value: pageHeaderTestId, children: jsxRuntime.jsxs("div", { "data-testid": pageHeaderTestId, className: cx.cx('flex w-full flex-col gap-4', className), children: [breadcrumbs && breadcrumbs.length > 0 && (jsxRuntime.jsx(Breadcrumbs.Breadcrumbs, { divider: "slash", className: "max-lg:hidden", children: breadcrumbs.map((crumb) => (jsxRuntime.jsx(Breadcrumbs.Breadcrumbs.Item, {
|
|
38
|
+
// Pin the segment to the label so an icon-only crumb keeps `--item-<label>` rather than falling back to its href.
|
|
39
|
+
id: crumb.id ?? testIdUtils.slugifyTestId(crumb.label), href: crumb.href, icon: crumb.icon, "aria-label": crumb.hideLabel ? crumb.label : undefined, children: crumb.hideLabel ? undefined : crumb.label }, crumb.id ?? crumb.label))) })), backCrumb?.href && (jsxRuntime.jsx("div", { className: "flex lg:hidden", children: jsxRuntime.jsx(Button.Button, { href: backCrumb.href, color: "link-gray", size: "sm", iconLeading: uiIcons.ArrowLeft, "data-testid": testIdUtils.joinTestId(pageHeaderTestId, 'back'), children: backCrumb.label }) })), jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:flex-wrap lg:items-start lg:gap-x-4 lg:gap-y-5", children: [jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5 lg:min-w-80", children: [jsxRuntime.jsx("h1", { className: "text-xl font-semibold text-primary lg:text-display-xs", children: title }), description && jsxRuntime.jsx("p", { className: "text-md text-tertiary", children: description })] }), actions && jsxRuntime.jsx("div", { className: "flex flex-row-reverse flex-wrap items-center justify-end gap-3 lg:flex-row lg:justify-start", children: actions })] }), hasTabs && tabs && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(pageHeaderTabNav.PageHeaderTabNav, { className: "max-lg:hidden", tabs: tabs, selectedTab: resolvedSelectedTab, onSelect: selectTab, "aria-label": title, "data-testid": testIdUtils.joinTestId(pageHeaderTestId, 'tabs') }), jsxRuntime.jsx(Select.Select, { className: "w-full lg:hidden", size: "md", "aria-label": title, value: resolvedSelectedTab, onChange: (key) => key !== null && selectTab(String(key)), "data-testid": testIdUtils.joinTestId(pageHeaderTestId, 'tabs-select'), children: tabs.map((tab) => (jsxRuntime.jsx(Select.Select.Item, { id: tab.id, label: tab.label, isDisabled: tab.isDisabled }, tab.id))) })] })), withDivider && !hasTabs && jsxRuntime.jsx(Divider.Divider, {})] }) }));
|
|
40
|
+
};
|
|
5
41
|
|
|
6
|
-
|
|
7
|
-
exports.PageHeaderSimple = pageHeaderSimple.PageHeaderSimple;
|
|
42
|
+
exports.PageHeader = PageHeader;
|
|
8
43
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/organisms/PageHeader/index.tsx"],"sourcesContent":[null],"names":["useResolvedTestId","useState","_jsx","TestIdProvider","_jsxs","cx","Breadcrumbs","slugifyTestId","Button","ArrowLeft","joinTestId","PageHeaderTabNav","Select","Divider"],"mappings":"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"}
|
|
@@ -1,7 +1,82 @@
|
|
|
1
|
+
import type { FC, ReactNode } from 'react';
|
|
2
|
+
export interface PageHeaderBreadcrumb {
|
|
3
|
+
/** Stable id used for the derived `data-testid`; defaults to a slug of `label`. */
|
|
4
|
+
id?: string;
|
|
5
|
+
/** Visible crumb label. Also labels the mobile back link when this is the parent crumb. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** Link target. Omit on the last crumb (the current page). */
|
|
8
|
+
href?: string;
|
|
9
|
+
/** Leading icon, e.g. `HomeLine` on the root crumb. */
|
|
10
|
+
icon?: FC<{
|
|
11
|
+
className?: string;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Render only `icon` in the trail; `label` becomes the link's `aria-label` (and still
|
|
15
|
+
* labels the mobile back link). Use on the root home crumb, per the designs.
|
|
16
|
+
*/
|
|
17
|
+
hideLabel?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface PageHeaderTab {
|
|
20
|
+
/** Stable identifier — passed to `onTabChange` and matched against `selectedTab`. */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Visible tab label. */
|
|
23
|
+
label: string;
|
|
24
|
+
/** Optional count/status badge shown after the label (desktop only). */
|
|
25
|
+
badge?: number | string;
|
|
26
|
+
/**
|
|
27
|
+
* Renders the desktop item as a link to this URL (with `aria-current="page"` when
|
|
28
|
+
* selected) instead of a button. `onTabChange` still fires on press.
|
|
29
|
+
*/
|
|
30
|
+
href?: string;
|
|
31
|
+
/** Prevents the tab from being selected. */
|
|
32
|
+
isDisabled?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface PageHeaderProps {
|
|
35
|
+
/** Page title (rendered as the `h1`). */
|
|
36
|
+
title: string;
|
|
37
|
+
/** Supporting text shown beneath the title. */
|
|
38
|
+
description?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Breadcrumb trail, root first, current page last. Renders `<Breadcrumbs>` on desktop;
|
|
41
|
+
* below `lg` it collapses to a back link targeting the nearest ancestor crumb with an
|
|
42
|
+
* `href`, labelled with that crumb's label.
|
|
43
|
+
*/
|
|
44
|
+
breadcrumbs?: PageHeaderBreadcrumb[];
|
|
45
|
+
/**
|
|
46
|
+
* Action buttons rendered to the right of the title on desktop and beneath it on
|
|
47
|
+
* mobile. Compose them primary-last (e.g. icon button, secondary, primary): the row is
|
|
48
|
+
* reversed below `lg` so the primary action comes first on mobile, as in the design.
|
|
49
|
+
*/
|
|
50
|
+
actions?: ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Section tabs rendered beneath the title row — an underline strip on desktop and a
|
|
53
|
+
* full-width `Select` on mobile. The header only renders the switcher; render the
|
|
54
|
+
* matching content yourself, keyed off `selectedTab` / `onTabChange`.
|
|
55
|
+
*/
|
|
56
|
+
tabs?: PageHeaderTab[];
|
|
57
|
+
/** Controlled selected tab id. */
|
|
58
|
+
selectedTab?: string;
|
|
59
|
+
/** Initially selected tab id (uncontrolled). Defaults to the first tab. */
|
|
60
|
+
defaultSelectedTab?: string;
|
|
61
|
+
/** Called with the tab id when the user picks a tab (desktop strip or mobile select). */
|
|
62
|
+
onTabChange?: (id: string) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Render a divider beneath the title row. Ignored when `tabs` are present — the tab
|
|
65
|
+
* strip draws its own bottom rule.
|
|
66
|
+
*/
|
|
67
|
+
withDivider?: boolean;
|
|
68
|
+
className?: string;
|
|
69
|
+
/** Overrides the `data-testid` (defaults to `fd-page-header`). */
|
|
70
|
+
'data-testid'?: string;
|
|
71
|
+
}
|
|
1
72
|
/**
|
|
2
|
-
* Page-level header
|
|
73
|
+
* Page-level header that anchors every page: a title (`h1`) with optional breadcrumbs
|
|
74
|
+
* (a back link below `lg`), supporting text, action buttons, section tabs and a divider.
|
|
75
|
+
* Navigation (breadcrumbs, tabs) is data-driven because the header re-renders it per
|
|
76
|
+
* breakpoint; actions are a slot because the header only positions them. Spans the full
|
|
77
|
+
* width of its container — `PageLayout` owns the page padding.
|
|
3
78
|
*
|
|
4
|
-
* @summary page header with title and
|
|
79
|
+
* @summary page header with title, breadcrumbs, actions and section tabs
|
|
5
80
|
*/
|
|
6
|
-
export {
|
|
81
|
+
export declare const PageHeader: ({ title, description, breadcrumbs, actions, tabs, selectedTab, defaultSelectedTab, onTabChange, withDivider, className, "data-testid": dataTestId, }: PageHeaderProps) => import("react").JSX.Element;
|
|
7
82
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/PageHeader/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/PageHeader/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,EAAE,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IACvB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yFAAyF;IACzF,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GAAI,sJAYxB,eAAe,gCAmFjB,CAAC"}
|
|
@@ -1,2 +1,41 @@
|
|
|
1
|
-
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { ArrowLeft } from '@flipdish/ui-icons';
|
|
3
|
+
import { Button } from '@flipdish/ui-library/components/atoms/Button';
|
|
4
|
+
import { Divider } from '@flipdish/ui-library/components/atoms/Divider';
|
|
5
|
+
import { Breadcrumbs } from '@flipdish/ui-library/components/molecules/Breadcrumbs';
|
|
6
|
+
import { Select } from '@flipdish/ui-library/components/molecules/Select';
|
|
7
|
+
import { cx } from '@flipdish/ui-library/utilities/cx';
|
|
8
|
+
import { useResolvedTestId, TestIdProvider, slugifyTestId, joinTestId } from '@flipdish/ui-library/utilities/testIdUtils';
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
import { PageHeaderTabNav } from './components/page-header-tab-nav.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Page-level header that anchors every page: a title (`h1`) with optional breadcrumbs
|
|
14
|
+
* (a back link below `lg`), supporting text, action buttons, section tabs and a divider.
|
|
15
|
+
* Navigation (breadcrumbs, tabs) is data-driven because the header re-renders it per
|
|
16
|
+
* breakpoint; actions are a slot because the header only positions them. Spans the full
|
|
17
|
+
* width of its container — `PageLayout` owns the page padding.
|
|
18
|
+
*
|
|
19
|
+
* @summary page header with title, breadcrumbs, actions and section tabs
|
|
20
|
+
*/
|
|
21
|
+
const PageHeader = ({ title, description, breadcrumbs, actions, tabs, selectedTab, defaultSelectedTab, onTabChange, withDivider = false, className, 'data-testid': dataTestId, }) => {
|
|
22
|
+
const pageHeaderTestId = useResolvedTestId({ testId: dataTestId, segment: 'page-header', rootName: 'page-header' });
|
|
23
|
+
const hasTabs = Boolean(tabs?.length);
|
|
24
|
+
const backCrumb = breadcrumbs
|
|
25
|
+
?.slice(0, -1)
|
|
26
|
+
.reverse()
|
|
27
|
+
.find((crumb) => crumb.href);
|
|
28
|
+
// Uncontrolled fallback so the desktop strip and the mobile select always agree on the selection.
|
|
29
|
+
const [internalSelectedTab, setInternalSelectedTab] = useState(defaultSelectedTab);
|
|
30
|
+
const resolvedSelectedTab = selectedTab ?? internalSelectedTab ?? tabs?.[0]?.id ?? '';
|
|
31
|
+
const selectTab = (id) => {
|
|
32
|
+
setInternalSelectedTab(id);
|
|
33
|
+
onTabChange?.(id);
|
|
34
|
+
};
|
|
35
|
+
return (jsx(TestIdProvider, { value: pageHeaderTestId, children: jsxs("div", { "data-testid": pageHeaderTestId, className: cx('flex w-full flex-col gap-4', className), children: [breadcrumbs && breadcrumbs.length > 0 && (jsx(Breadcrumbs, { divider: "slash", className: "max-lg:hidden", children: breadcrumbs.map((crumb) => (jsx(Breadcrumbs.Item, {
|
|
36
|
+
// Pin the segment to the label so an icon-only crumb keeps `--item-<label>` rather than falling back to its href.
|
|
37
|
+
id: crumb.id ?? slugifyTestId(crumb.label), href: crumb.href, icon: crumb.icon, "aria-label": crumb.hideLabel ? crumb.label : undefined, children: crumb.hideLabel ? undefined : crumb.label }, crumb.id ?? crumb.label))) })), backCrumb?.href && (jsx("div", { className: "flex lg:hidden", children: jsx(Button, { href: backCrumb.href, color: "link-gray", size: "sm", iconLeading: ArrowLeft, "data-testid": joinTestId(pageHeaderTestId, 'back'), children: backCrumb.label }) })), jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:flex-wrap lg:items-start lg:gap-x-4 lg:gap-y-5", children: [jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5 lg:min-w-80", children: [jsx("h1", { className: "text-xl font-semibold text-primary lg:text-display-xs", children: title }), description && jsx("p", { className: "text-md text-tertiary", children: description })] }), actions && jsx("div", { className: "flex flex-row-reverse flex-wrap items-center justify-end gap-3 lg:flex-row lg:justify-start", children: actions })] }), hasTabs && tabs && (jsxs(Fragment, { children: [jsx(PageHeaderTabNav, { className: "max-lg:hidden", tabs: tabs, selectedTab: resolvedSelectedTab, onSelect: selectTab, "aria-label": title, "data-testid": joinTestId(pageHeaderTestId, 'tabs') }), jsx(Select, { className: "w-full lg:hidden", size: "md", "aria-label": title, value: resolvedSelectedTab, onChange: (key) => key !== null && selectTab(String(key)), "data-testid": joinTestId(pageHeaderTestId, 'tabs-select'), children: tabs.map((tab) => (jsx(Select.Item, { id: tab.id, label: tab.label, isDisabled: tab.isDisabled }, tab.id))) })] })), withDivider && !hasTabs && jsx(Divider, {})] }) }));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { PageHeader };
|
|
2
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/organisms/PageHeader/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ var uiIcons = require('@flipdish/ui-icons');
|
|
|
5
5
|
var Avatar = require('@flipdish/ui-library/components/atoms/Avatar');
|
|
6
6
|
var useBreakpoints = require('@flipdish/ui-library/hooks/useBreakpoints');
|
|
7
7
|
var cx = require('@flipdish/ui-library/utilities/cx');
|
|
8
|
+
var hrefUtils = require('@flipdish/ui-library/utilities/hrefUtils');
|
|
8
9
|
var testIdUtils = require('@flipdish/ui-library/utilities/testIdUtils');
|
|
9
10
|
var React = require('react');
|
|
10
11
|
var reactAriaComponents = require('react-aria-components');
|
|
@@ -14,10 +15,24 @@ const menuItemTestId = (prefix, item) => item['data-testid'] ?? testIdUtils.join
|
|
|
14
15
|
const POPOVER_ANIMATION = ({ isEntering, isExiting }) => cx.cx('origin-(--trigger-anchor-point) will-change-transform', isEntering &&
|
|
15
16
|
'duration-150 ease-out animate-in fade-in placement-right:slide-in-from-left-0.5 placement-top:slide-in-from-bottom-0.5 placement-bottom:slide-in-from-top-0.5', isExiting &&
|
|
16
17
|
'duration-100 ease-in animate-out fade-out placement-right:slide-out-to-left-0.5 placement-top:slide-out-to-bottom-0.5 placement-bottom:slide-out-to-top-0.5');
|
|
17
|
-
const
|
|
18
|
+
const MENU_ITEM_CLASSNAME = 'group/item flex w-full cursor-pointer px-1.5 focus:outline-hidden';
|
|
19
|
+
const NavAccountCardMenuItem = ({ icon: Icon, label, shortcut, href, onClick, 'data-testid': dataTestId, }) => {
|
|
20
|
+
const content = (jsxRuntime.jsxs("div", { className: cx.cx('flex w-full items-center justify-between gap-3 rounded-md p-2 group-hover/item:bg-primary_hover', 'outline-focus-ring group-focus-visible/item:outline-2 group-focus-visible/item:outline-offset-2'), children: [jsxRuntime.jsxs("div", { className: "flex gap-2 text-sm font-semibold text-secondary group-hover/item:text-secondary_hover", children: [Icon && jsxRuntime.jsx(Icon, { className: "size-5 text-fg-quaternary group-hover/item:text-fg-quaternary_hover" }), " ", label] }), shortcut && (jsxRuntime.jsx("kbd", { className: "flex rounded px-1 py-px font-body text-xs font-medium text-tertiary ring-1 ring-secondary ring-inset", children: shortcut }))] }));
|
|
21
|
+
// A destination renders as a real anchor so it routes through `RouteProvider` and supports middle-click / new tab.
|
|
22
|
+
if (href !== undefined) {
|
|
23
|
+
const isExternal = hrefUtils.isExternalHref(href);
|
|
24
|
+
return (jsxRuntime.jsx(reactAriaComponents.Link, { href: hrefUtils.safeHref(href), target: isExternal ? '_blank' : '_self', rel: "noopener noreferrer", "data-testid": dataTestId, className: MENU_ITEM_CLASSNAME, onClick: onClick, children: content }));
|
|
25
|
+
}
|
|
26
|
+
return (jsxRuntime.jsx("button", { type: "button", "data-testid": dataTestId, className: MENU_ITEM_CLASSNAME, onClick: onClick, children: content }));
|
|
27
|
+
};
|
|
18
28
|
const NavAccountMenu = ({ className, menuItems = [], bottomMenuItems = [], testIdPrefix, ...dialogProps }) => {
|
|
19
29
|
const prefix = testIdPrefix ?? testIdUtils.rootTestId('nav-account-menu');
|
|
20
|
-
|
|
30
|
+
// Activating an item dismisses the menu — otherwise it stays open over the page it just navigated to.
|
|
31
|
+
const renderItem = (item, close) => (jsxRuntime.jsx(NavAccountCardMenuItem, { label: item.label, icon: item.icon, shortcut: item.shortcut, href: item.href, onClick: () => {
|
|
32
|
+
close();
|
|
33
|
+
item.onClick?.();
|
|
34
|
+
}, "data-testid": menuItemTestId(prefix, item) }, item.label));
|
|
35
|
+
return (jsxRuntime.jsx(reactAriaComponents.Dialog, { ...dialogProps, className: cx.cx('w-66 rounded-xl bg-secondary_alt shadow-lg ring ring-secondary_alt outline-hidden', className), children: ({ close }) => (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [menuItems.length > 0 && (jsxRuntime.jsx("div", { className: "rounded-xl bg-primary ring-1 ring-secondary", children: jsxRuntime.jsx("div", { className: "flex flex-col gap-0.5 py-1.5", children: menuItems.map((item) => renderItem(item, close)) }) })), bottomMenuItems.length > 0 && jsxRuntime.jsx("div", { className: "pt-1 pb-1.5", children: bottomMenuItems.map((item) => renderItem(item, close)) })] })) }));
|
|
21
36
|
};
|
|
22
37
|
const NavAccountCard = ({ popoverPlacement, account, avatarRounded, menuItems, bottomMenuItems, variant = 'full', onOpenChange, 'data-testid': dataTestId, }) => {
|
|
23
38
|
const triggerRef = React.useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-account-card.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-account-card.tsx"],"sourcesContent":[null],"names":["joinTestId","slugifyTestId","cx","_jsx","
|
|
1
|
+
{"version":3,"file":"nav-account-card.cjs","sources":["../../../../../src/components/organisms/SidebarNavigation/components/nav-account-card.tsx"],"sourcesContent":[null],"names":["joinTestId","slugifyTestId","cx","_jsxs","_jsx","isExternalHref","AriaLink","safeHref","rootTestId","AriaDialog","_Fragment","useRef","useBreakpoints","useResolvedTestId","AriaDialogTrigger","AriaButton","testIdProps","Avatar","AriaPopover","AvatarLabelGroup","ChevronSelectorVertical"],"mappings":"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"}
|
|
@@ -21,7 +21,12 @@ export type NavAccountMenuItemType = {
|
|
|
21
21
|
}>;
|
|
22
22
|
/** Keyboard shortcut hint to display. */
|
|
23
23
|
shortcut?: string;
|
|
24
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Destination URL. When set the item renders as a real link (router integration, middle-click,
|
|
26
|
+
* open in new tab); external `http(s)` hrefs open in a new tab. Omit for pure actions such as Log out.
|
|
27
|
+
*/
|
|
28
|
+
href?: string;
|
|
29
|
+
/** Called when the item is activated. Runs alongside `href` navigation when both are set. */
|
|
25
30
|
onClick?: () => void;
|
|
26
31
|
/** Stable id used to derive the menu item's default `data-testid`. Falls back to a slug of `label`. */
|
|
27
32
|
id?: string;
|