@servicetitan/navigation 12.0.2 → 13.0.0-canary.256.b43c6d7.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/profile-dropdown/{profile-dropdown-tiny.stories.d.ts → profile-dropdown-legacy.stories.d.ts} +1 -1
- package/dist/components/profile-dropdown/profile-dropdown-legacy.stories.d.ts.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.js +5 -8
- package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts.map +1 -1
- package/dist/components/titan-layout/interface.d.ts +14 -12
- package/dist/components/titan-layout/interface.d.ts.map +1 -1
- package/dist/components/titan-layout/interface.js.map +1 -1
- package/dist/components/titan-layout/layout-header-dark.js +1 -1
- package/dist/components/titan-layout/layout-header-dark.js.map +1 -1
- package/dist/components/titan-layout/layout-header-links.d.ts +3 -3
- package/dist/components/titan-layout/layout-header-links.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-header-links.js.map +1 -1
- package/dist/components/titan-layout/layout-header.d.ts +2 -2
- package/dist/components/titan-layout/layout-header.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-header.js.map +1 -1
- package/dist/components/titan-layout/layout-header.module.less +5 -0
- package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-profile.js +1 -7
- package/dist/components/titan-layout/layout-profile.js.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts +10 -17
- package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links-internal.js +34 -41
- package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links.d.ts +3 -3
- package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links.js +13 -13
- package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
- package/dist/components/titan-layout/layout-sidebar.js +5 -3
- package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
- package/dist/components/titan-layout/titan-layout-links.d.ts +5 -0
- package/dist/components/titan-layout/titan-layout-links.d.ts.map +1 -0
- package/dist/components/titan-layout/titan-layout-links.js +34 -0
- package/dist/components/titan-layout/titan-layout-links.js.map +1 -0
- package/dist/components/titan-layout/titan-layout.d.ts +2 -3
- package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
- package/dist/components/titan-layout/titan-layout.js +3 -3
- package/dist/components/titan-layout/titan-layout.js.map +1 -1
- package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +1 -1
- package/dist/test/data.d.ts +27 -2
- package/dist/test/data.d.ts.map +1 -1
- package/dist/test/data.js +181 -27
- package/dist/test/data.js.map +1 -1
- package/dist/utils/navigation-context.d.ts +3 -22
- package/dist/utils/navigation-context.d.ts.map +1 -1
- package/dist/utils/navigation-context.js +2 -10
- package/dist/utils/navigation-context.js.map +1 -1
- package/dist/utils/navigation.d.ts +2 -5
- package/dist/utils/navigation.d.ts.map +1 -1
- package/dist/utils/navigation.js.map +1 -1
- package/package.json +2 -2
- package/src/components/profile-dropdown/{profile-dropdown-tiny.stories.tsx → profile-dropdown-legacy.stories.tsx} +6 -6
- package/src/components/profile-dropdown/profile-dropdown-stacked.stories.tsx +12 -4
- package/src/components/profile-dropdown/profile-dropdown.stories.tsx +16 -9
- package/src/components/profile-dropdown/profile-dropdown.tsx +2 -11
- package/src/components/titan-layout/interface.ts +19 -15
- package/src/components/titan-layout/layout-header-dark.tsx +1 -1
- package/src/components/titan-layout/layout-header-links.tsx +3 -6
- package/src/components/titan-layout/layout-header.module.less +5 -0
- package/src/components/titan-layout/layout-header.tsx +2 -2
- package/src/components/titan-layout/layout-profile.tsx +2 -6
- package/src/components/titan-layout/layout-sidebar-links-internal.tsx +69 -81
- package/src/components/titan-layout/layout-sidebar-links.tsx +38 -24
- package/src/components/titan-layout/layout-sidebar.tsx +1 -1
- package/src/components/titan-layout/titan-layout-links.tsx +34 -0
- package/src/components/titan-layout/titan-layout.stories.tsx +34 -33
- package/src/components/titan-layout/titan-layout.tsx +5 -4
- package/src/index.ts +1 -11
- package/src/test/data.tsx +152 -39
- package/src/utils/navigation-context.tsx +9 -35
- package/src/utils/navigation.ts +3 -7
- package/dist/components/header-navigation/header-navigation-content.d.ts +0 -30
- package/dist/components/header-navigation/header-navigation-content.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation-content.js +0 -58
- package/dist/components/header-navigation/header-navigation-content.js.map +0 -1
- package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts +0 -9
- package/dist/components/header-navigation/header-navigation-extra-stacked.stories.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +0 -12
- package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation-links.d.ts +0 -11
- package/dist/components/header-navigation/header-navigation-links.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation-links.js +0 -62
- package/dist/components/header-navigation/header-navigation-links.js.map +0 -1
- package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +0 -12
- package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation-stories.module.less +0 -6
- package/dist/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
- package/dist/components/header-navigation/header-navigation.d.ts +0 -59
- package/dist/components/header-navigation/header-navigation.d.ts.map +0 -1
- package/dist/components/header-navigation/header-navigation.js +0 -228
- package/dist/components/header-navigation/header-navigation.js.map +0 -1
- package/dist/components/header-navigation/header-navigation.module.less +0 -260
- package/dist/components/header-navigation/header-navigation.module.less.d.ts +0 -22
- package/dist/components/header-navigation/header-navigation.stories.d.ts +0 -12
- package/dist/components/header-navigation/header-navigation.stories.d.ts.map +0 -1
- package/dist/components/header-navigation/index.d.ts +0 -2
- package/dist/components/header-navigation/index.d.ts.map +0 -1
- package/dist/components/header-navigation/index.js +0 -3
- package/dist/components/header-navigation/index.js.map +0 -1
- package/dist/components/header-navigation/with-tooltip.d.ts +0 -4
- package/dist/components/header-navigation/with-tooltip.d.ts.map +0 -1
- package/dist/components/header-navigation/with-tooltip.js +0 -10
- package/dist/components/header-navigation/with-tooltip.js.map +0 -1
- package/dist/components/layout.stories.d.ts +0 -13
- package/dist/components/layout.stories.d.ts.map +0 -1
- package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts +0 -9
- package/dist/components/left-navigation/header-navigation-extra-tiny.stories.d.ts.map +0 -1
- package/dist/components/left-navigation/header-navigation-tiny-links.d.ts +0 -18
- package/dist/components/left-navigation/header-navigation-tiny-links.d.ts.map +0 -1
- package/dist/components/left-navigation/header-navigation-tiny-links.js +0 -79
- package/dist/components/left-navigation/header-navigation-tiny-links.js.map +0 -1
- package/dist/components/left-navigation/header-navigation-tiny.d.ts +0 -23
- package/dist/components/left-navigation/header-navigation-tiny.d.ts.map +0 -1
- package/dist/components/left-navigation/header-navigation-tiny.js +0 -32
- package/dist/components/left-navigation/header-navigation-tiny.js.map +0 -1
- package/dist/components/left-navigation/header-navigation-tiny.module.less +0 -117
- package/dist/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
- package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts +0 -12
- package/dist/components/left-navigation/header-navigation-tiny.stories.d.ts.map +0 -1
- package/dist/components/left-navigation/index.d.ts +0 -5
- package/dist/components/left-navigation/index.d.ts.map +0 -1
- package/dist/components/left-navigation/index.js +0 -5
- package/dist/components/left-navigation/index.js.map +0 -1
- package/dist/components/left-navigation/interface-internal.d.ts +0 -10
- package/dist/components/left-navigation/interface-internal.d.ts.map +0 -1
- package/dist/components/left-navigation/interface-internal.js +0 -3
- package/dist/components/left-navigation/interface-internal.js.map +0 -1
- package/dist/components/left-navigation/interface.d.ts +0 -20
- package/dist/components/left-navigation/interface.d.ts.map +0 -1
- package/dist/components/left-navigation/interface.js +0 -3
- package/dist/components/left-navigation/interface.js.map +0 -1
- package/dist/components/left-navigation/side-navigation-context.d.ts +0 -8
- package/dist/components/left-navigation/side-navigation-context.d.ts.map +0 -1
- package/dist/components/left-navigation/side-navigation-context.js +0 -8
- package/dist/components/left-navigation/side-navigation-context.js.map +0 -1
- package/dist/components/left-navigation/side-navigation-links-internal.d.ts +0 -28
- package/dist/components/left-navigation/side-navigation-links-internal.d.ts.map +0 -1
- package/dist/components/left-navigation/side-navigation-links-internal.js +0 -89
- package/dist/components/left-navigation/side-navigation-links-internal.js.map +0 -1
- package/dist/components/left-navigation/side-navigation-links.d.ts +0 -6
- package/dist/components/left-navigation/side-navigation-links.d.ts.map +0 -1
- package/dist/components/left-navigation/side-navigation-links.js +0 -48
- package/dist/components/left-navigation/side-navigation-links.js.map +0 -1
- package/dist/components/left-navigation/side-navigation.d.ts +0 -29
- package/dist/components/left-navigation/side-navigation.d.ts.map +0 -1
- package/dist/components/left-navigation/side-navigation.js +0 -411
- package/dist/components/left-navigation/side-navigation.js.map +0 -1
- package/dist/components/left-navigation/side-navigation.module.less +0 -530
- package/dist/components/left-navigation/side-navigation.module.less.d.ts +0 -48
- package/dist/components/left-navigation/side-navigation.stories.d.ts +0 -17
- package/dist/components/left-navigation/side-navigation.stories.d.ts.map +0 -1
- package/dist/components/left-navigation/with-tooltip.d.ts +0 -4
- package/dist/components/left-navigation/with-tooltip.d.ts.map +0 -1
- package/dist/components/left-navigation/with-tooltip.js +0 -15
- package/dist/components/left-navigation/with-tooltip.js.map +0 -1
- package/dist/components/links.d.ts +0 -5
- package/dist/components/links.d.ts.map +0 -1
- package/dist/components/links.js +0 -35
- package/dist/components/links.js.map +0 -1
- package/dist/components/profile-dropdown/profile-dropdown-tiny.stories.d.ts.map +0 -1
- package/dist/components/titan-layout/layout-profile.stories.d.ts +0 -13
- package/dist/components/titan-layout/layout-profile.stories.d.ts.map +0 -1
- package/src/components/header-navigation/header-navigation-content.tsx +0 -120
- package/src/components/header-navigation/header-navigation-extra-stacked.stories.tsx +0 -19
- package/src/components/header-navigation/header-navigation-extra.stories.tsx +0 -142
- package/src/components/header-navigation/header-navigation-links.tsx +0 -141
- package/src/components/header-navigation/header-navigation-stacked.stories.tsx +0 -146
- package/src/components/header-navigation/header-navigation-stories.module.less +0 -6
- package/src/components/header-navigation/header-navigation-stories.module.less.d.ts +0 -3
- package/src/components/header-navigation/header-navigation.module.less +0 -260
- package/src/components/header-navigation/header-navigation.module.less.d.ts +0 -22
- package/src/components/header-navigation/header-navigation.stories.tsx +0 -165
- package/src/components/header-navigation/header-navigation.tsx +0 -327
- package/src/components/header-navigation/index.ts +0 -1
- package/src/components/header-navigation/with-tooltip.tsx +0 -15
- package/src/components/layout.stories.tsx +0 -103
- package/src/components/left-navigation/header-navigation-extra-tiny.stories.tsx +0 -21
- package/src/components/left-navigation/header-navigation-tiny-links.tsx +0 -145
- package/src/components/left-navigation/header-navigation-tiny.module.less +0 -117
- package/src/components/left-navigation/header-navigation-tiny.module.less.d.ts +0 -15
- package/src/components/left-navigation/header-navigation-tiny.stories.tsx +0 -178
- package/src/components/left-navigation/header-navigation-tiny.tsx +0 -65
- package/src/components/left-navigation/index.ts +0 -4
- package/src/components/left-navigation/interface-internal.ts +0 -11
- package/src/components/left-navigation/interface.ts +0 -26
- package/src/components/left-navigation/side-navigation-context.tsx +0 -13
- package/src/components/left-navigation/side-navigation-links-internal.tsx +0 -151
- package/src/components/left-navigation/side-navigation-links.tsx +0 -57
- package/src/components/left-navigation/side-navigation.module.less +0 -530
- package/src/components/left-navigation/side-navigation.module.less.d.ts +0 -48
- package/src/components/left-navigation/side-navigation.stories.tsx +0 -226
- package/src/components/left-navigation/side-navigation.tsx +0 -543
- package/src/components/left-navigation/with-tooltip.tsx +0 -16
- package/src/components/links.tsx +0 -54
- package/src/components/titan-layout/layout-profile.stories.tsx +0 -46
|
@@ -7,25 +7,18 @@ import { Fragment } from 'react';
|
|
|
7
7
|
import { getCounterTag } from '../../utils/side-nav';
|
|
8
8
|
import { BadgeTag } from '../badge-tag';
|
|
9
9
|
import * as Styles from './layout-sidebar.module.less';
|
|
10
|
-
|
|
10
|
+
const InternalSideNavigationItemContent = ({ icon, iconActive, tag, title, submenuExpanded, onExpandToggle })=>/*#__PURE__*/ _jsxs(Fragment, {
|
|
11
11
|
children: [
|
|
12
12
|
/*#__PURE__*/ _jsxs("div", {
|
|
13
13
|
className: Styles.navItemIconWrapper,
|
|
14
14
|
children: [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
className: classNames(Styles.navIcon, Styles.navIconInactive, iconClassName)
|
|
23
|
-
}),
|
|
24
|
-
iconActive && /*#__PURE__*/ _jsx(Icon, {
|
|
25
|
-
svg: iconActive,
|
|
26
|
-
className: classNames(Styles.navIcon, Styles.navIconActive, iconClassName)
|
|
27
|
-
})
|
|
28
|
-
]
|
|
15
|
+
icon && /*#__PURE__*/ _jsx(Icon, {
|
|
16
|
+
svg: icon,
|
|
17
|
+
className: classNames(Styles.navIcon, Styles.navIconInactive)
|
|
18
|
+
}),
|
|
19
|
+
iconActive && /*#__PURE__*/ _jsx(Icon, {
|
|
20
|
+
svg: iconActive,
|
|
21
|
+
className: classNames(Styles.navIcon, Styles.navIconActive)
|
|
29
22
|
}),
|
|
30
23
|
/*#__PURE__*/ _jsx("div", {
|
|
31
24
|
className: Styles.navItemTextExpanded,
|
|
@@ -63,48 +56,46 @@ export const InternalSideNavigationItemContent = ({ icon, iconActive, iconClassN
|
|
|
63
56
|
})
|
|
64
57
|
]
|
|
65
58
|
});
|
|
66
|
-
export const
|
|
67
|
-
'data-cy': `${prefix}-${id}`,
|
|
68
|
-
'data-pendo': `${prefix}-${id}`,
|
|
69
|
-
'className': classNames(Styles.navItem, className, {
|
|
70
|
-
[Styles.navLink]: isLink,
|
|
71
|
-
[Styles.navItemActive]: isActive === true,
|
|
72
|
-
[Styles.navItemIconSwitch]: !!icon && !!iconActive && !iconComponent
|
|
73
|
-
})
|
|
74
|
-
});
|
|
75
|
-
/** Side Navigation menu item (for internal usage) */ export const InternalSideNavigationLink = ({ to, className, dataPrefix, isActive, navigationComponent: NavigationComponent, submenuExpanded, onExpandToggle, ...props })=>{
|
|
59
|
+
/** Side Navigation menu item (for internal usage) */ export const InternalSideNavigationLink = ({ id, to, className, icon, iconActive, isActive, navigationComponent: NavigationComponent, tag, title, submenuExpanded, onExpandToggle, ...props })=>{
|
|
76
60
|
return /*#__PURE__*/ _jsx(NavigationComponent, {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
isActive,
|
|
82
|
-
|
|
61
|
+
"data-cy": `navigation-item-${id}`,
|
|
62
|
+
"data-pendo": `navigation-item-${id}`,
|
|
63
|
+
...props,
|
|
64
|
+
className: classNames(Styles.navItem, Styles.navLink, className, {
|
|
65
|
+
[Styles.navItemActive]: isActive === true,
|
|
66
|
+
[Styles.navItemIconSwitch]: !!icon && !!iconActive
|
|
83
67
|
}),
|
|
84
68
|
to: to,
|
|
85
69
|
isActive: typeof isActive === 'function' ? isActive : undefined,
|
|
86
70
|
activeClassName: Styles.navItemActive,
|
|
87
71
|
children: /*#__PURE__*/ _jsx(InternalSideNavigationItemContent, {
|
|
72
|
+
icon: icon,
|
|
73
|
+
iconActive: iconActive,
|
|
88
74
|
submenuExpanded: submenuExpanded,
|
|
89
75
|
onExpandToggle: onExpandToggle,
|
|
90
|
-
|
|
76
|
+
title: title,
|
|
77
|
+
tag: tag
|
|
91
78
|
})
|
|
92
79
|
});
|
|
93
80
|
};
|
|
94
|
-
/** Side Navigation menu trigger (for internal usage) */ export const InternalSideNavigationTrigger = ({ className,
|
|
81
|
+
/** Side Navigation menu trigger (for internal usage) */ export const InternalSideNavigationTrigger = ({ className, icon, iconActive, id, isActive, submenuExpanded, onExpandToggle, onClick, title, tag, ...props })=>{
|
|
95
82
|
return /*#__PURE__*/ _jsx("div", {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
83
|
+
"data-cy": `navigation-item-${id}`,
|
|
84
|
+
"data-pendo": `navigation-item-${id}`,
|
|
85
|
+
...props,
|
|
86
|
+
className: classNames(Styles.navItem, className, {
|
|
87
|
+
[Styles.navLink]: !!onClick,
|
|
88
|
+
[Styles.navItemActive]: isActive === true,
|
|
89
|
+
[Styles.navItemIconSwitch]: !!icon && !!iconActive
|
|
102
90
|
}),
|
|
103
91
|
onClick: onClick,
|
|
104
92
|
children: /*#__PURE__*/ _jsx(InternalSideNavigationItemContent, {
|
|
105
93
|
submenuExpanded: submenuExpanded,
|
|
106
94
|
onExpandToggle: onExpandToggle,
|
|
107
|
-
|
|
95
|
+
icon: icon,
|
|
96
|
+
iconActive: iconActive,
|
|
97
|
+
title: title,
|
|
98
|
+
tag: tag
|
|
108
99
|
})
|
|
109
100
|
});
|
|
110
101
|
};
|
|
@@ -156,7 +147,7 @@ export const InternalSideNavigationGroupDivider = ()=>{
|
|
|
156
147
|
className: Styles.divider
|
|
157
148
|
});
|
|
158
149
|
};
|
|
159
|
-
export const InternalSideNavigationGroup = ({ children, submenuExpanded, to, onExpandToggle, onClick, ...props })=>{
|
|
150
|
+
export const InternalSideNavigationGroup = ({ children, submenuExpanded, to, onExpandToggle, onClick, isActive, ...props })=>{
|
|
160
151
|
return /*#__PURE__*/ _jsxs("div", {
|
|
161
152
|
className: classNames(Styles.navGroupWrapper),
|
|
162
153
|
children: [
|
|
@@ -164,11 +155,13 @@ export const InternalSideNavigationGroup = ({ children, submenuExpanded, to, onE
|
|
|
164
155
|
className: Styles.navGroupItem,
|
|
165
156
|
children: to ? /*#__PURE__*/ _jsx(InternalSideNavigationLink, {
|
|
166
157
|
...props,
|
|
158
|
+
isActive: isActive,
|
|
167
159
|
to: to,
|
|
168
160
|
submenuExpanded: submenuExpanded,
|
|
169
161
|
onExpandToggle: onExpandToggle
|
|
170
162
|
}) : /*#__PURE__*/ _jsx(InternalSideNavigationTrigger, {
|
|
171
163
|
...props,
|
|
164
|
+
isActive: isActive === true || undefined,
|
|
172
165
|
submenuExpanded: submenuExpanded,
|
|
173
166
|
onExpandToggle: onExpandToggle,
|
|
174
167
|
onClick: onClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar-links-internal.tsx"],"sourcesContent":["import { Icon } from '@servicetitan/anvil2';\nimport SvgGroupCollapse from '@servicetitan/anvil2/assets/icons/material/round/expand_less.svg';\nimport SvgGroupExpand from '@servicetitan/anvil2/assets/icons/material/round/expand_more.svg';\n\nimport classNames from 'classnames';\nimport { FC, Fragment, MouseEvent, ReactNode } from 'react';\nimport { NavigationItemData, NavigationSubmenuItemData } from '../../utils/navigation';\nimport { getCounterTag } from '../../utils/side-nav';\nimport { BadgeTag, BadgeTagProps } from '../badge-tag';\nimport { TitanLayoutSidebarTriggerProps } from './interface';\nimport { NavigationComponentProps } from './interface-internal';\nimport * as Styles from './layout-sidebar.module.less';\n\nexport interface InternalSideNavigationItemContentProps\n extends Omit<NavigationItemData, 'iconName' | 'to' | 'counter' | 'tag'> {\n submenuExpanded: boolean | undefined;\n tag: BadgeTagProps | undefined;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n}\n\nexport const InternalSideNavigationItemContent: FC<InternalSideNavigationItemContentProps> = ({\n icon,\n iconActive,\n iconClassName,\n iconComponent: IconComponent,\n tag,\n title,\n submenuExpanded,\n onExpandToggle,\n}) => (\n <Fragment>\n <div className={Styles.navItemIconWrapper}>\n {IconComponent ? (\n <i className={classNames(Styles.navIcon, iconClassName)}>\n <IconComponent />\n </i>\n ) : (\n <Fragment>\n {icon && (\n <Icon\n svg={icon}\n className={classNames(\n Styles.navIcon,\n Styles.navIconInactive,\n iconClassName\n )}\n />\n )}\n {iconActive && (\n <Icon\n svg={iconActive}\n className={classNames(\n Styles.navIcon,\n Styles.navIconActive,\n iconClassName\n )}\n />\n )}\n </Fragment>\n )}\n\n <div className={Styles.navItemTextExpanded} data-cy=\"nav-item-label\">\n {title}\n </div>\n {!!tag && (\n <BadgeTag\n data={tag}\n className={Styles.navItemCounter}\n longClassName={Styles.navItemCounterLong}\n />\n )}\n {typeof submenuExpanded === 'boolean' && (\n <div className={Styles.navItemGroupToggleWrapper}>\n <Icon\n svg={submenuExpanded ? SvgGroupCollapse : SvgGroupExpand}\n className={Styles.navItemGroupToggle}\n onClick={onExpandToggle}\n />\n <div\n className={Styles.navItemGroupToggleClick}\n data-cy=\"nav-item-group-expand\"\n onClick={onExpandToggle}\n />\n </div>\n )}\n </div>\n\n <div\n className={classNames(Styles.navItemTextCollapsed, {\n [Styles.navItemTextSmall]: !!title && title.length >= 10,\n })}\n data-cy=\"nav-item-label\"\n >\n {title}\n </div>\n </Fragment>\n);\n\nexport interface InternalSideNavigationLinkProps\n extends Omit<NavigationItemData, 'iconName' | 'counter' | 'tag'>,\n NavigationComponentProps {\n submenuExpanded: boolean | undefined;\n dataPrefix?: string;\n tag: BadgeTagProps | undefined;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n}\n\nexport const internalNavigationContentContainerProps = ({\n className,\n icon,\n iconActive,\n iconComponent,\n id,\n isActive,\n prefix,\n isLink,\n}: Omit<TitanLayoutSidebarTriggerProps, 'isActive' | 'tag'> & {\n prefix: string;\n isActive?: any;\n isLink: boolean;\n}) => ({\n 'data-cy': `${prefix}-${id}`,\n 'data-pendo': `${prefix}-${id}`,\n 'className': classNames(Styles.navItem, className, {\n [Styles.navLink]: isLink,\n [Styles.navItemActive]: isActive === true,\n [Styles.navItemIconSwitch]: !!icon && !!iconActive && !iconComponent,\n }),\n});\n\n/** Side Navigation menu item (for internal usage) */\nexport const InternalSideNavigationLink: FC<InternalSideNavigationLinkProps> = ({\n to,\n className,\n dataPrefix,\n isActive,\n navigationComponent: NavigationComponent,\n submenuExpanded,\n onExpandToggle,\n ...props\n}) => {\n return (\n <NavigationComponent\n {...internalNavigationContentContainerProps({\n ...props,\n prefix: dataPrefix ?? 'navigation-item',\n className,\n isActive,\n isLink: true,\n })}\n to={to}\n isActive={typeof isActive === 'function' ? isActive : undefined}\n activeClassName={Styles.navItemActive}\n >\n <InternalSideNavigationItemContent\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n {...props}\n />\n </NavigationComponent>\n );\n};\n\n/** Side Navigation menu trigger (for internal usage) */\nexport const InternalSideNavigationTrigger: FC<\n Omit<InternalSideNavigationLinkProps, 'to' | 'navigationComponent'> & {\n onClick?: (e: MouseEvent<never>) => void;\n }\n> = ({ className, dataPrefix, isActive, submenuExpanded, onExpandToggle, onClick, ...props }) => {\n return (\n <div\n {...internalNavigationContentContainerProps({\n ...props,\n prefix: dataPrefix ?? 'navigation-item',\n className,\n isActive,\n isLink: !!onClick,\n })}\n onClick={onClick}\n >\n <InternalSideNavigationItemContent\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n {...props}\n />\n </div>\n );\n};\n\nexport const InternalSideNavigationGroupLink: FC<\n NavigationSubmenuItemData & NavigationComponentProps & { parentId: string }\n> = ({\n id,\n counter,\n parentId,\n tag,\n title,\n to,\n isActive,\n navigationComponent: NavigationComponent,\n ...rest\n}) => {\n return (\n <NavigationComponent\n key={id}\n data-cy={`navigation-item-${parentId}--${id}`}\n data-pendo={`navigation-item-${parentId}--${id}`}\n {...rest}\n to={to}\n className={classNames(Styles.submenuItem, Styles.submenuLink, {\n [Styles.submenuLinkActive]: isActive === true,\n })}\n isActive={typeof isActive === 'function' ? isActive : undefined}\n activeClassName={Styles.submenuLinkActive}\n >\n <span>{title}</span>\n <BadgeTag data={getCounterTag(counter, tag)} className={Styles.submenuLinkCounter} />\n </NavigationComponent>\n );\n};\n\nexport const InternalSideNavigationGroupTrigger: FC<\n Omit<NavigationSubmenuItemData, 'to'> & { onClick?: (e: MouseEvent<any>) => void }\n> = ({ id, counter, onClick, tag, title, isActive, ...rest }) => {\n return (\n <div\n data-cy={`navigation-item-${id}`}\n data-pendo={`navigation-item-${id}`}\n key={id}\n {...rest}\n className={classNames(Styles.submenuItem, {\n [Styles.submenuLink]: !!onClick,\n [Styles.submenuLinkActive]: isActive === true,\n })}\n onClick={onClick}\n >\n <span>{title}</span>\n <BadgeTag data={getCounterTag(counter, tag)} className={Styles.submenuLinkCounter} />\n </div>\n );\n};\n\nexport const InternalSideNavigationGroupDivider = () => {\n return <div className={Styles.divider} />;\n};\n\nexport const InternalSideNavigationGroup: FC<\n Omit<NavigationItemData, 'tag' | 'counter' | 'to'> &\n NavigationComponentProps & {\n children: ReactNode;\n submenuExpanded: boolean;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n tag: BadgeTagProps | undefined;\n to: NavigationItemData['to'] | undefined;\n onClick?: (e: MouseEvent<never>) => void;\n }\n> = ({ children, submenuExpanded, to, onExpandToggle, onClick, ...props }) => {\n return (\n <div className={classNames(Styles.navGroupWrapper)}>\n <div className={Styles.navGroupItem}>\n {to ? (\n <InternalSideNavigationLink\n {...props}\n to={to}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n />\n ) : (\n <InternalSideNavigationTrigger\n {...props}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n onClick={onClick}\n />\n )}\n </div>\n <div\n className={classNames(Styles.submenuWrapper, {\n [Styles.submenuWrapperCollapsed]: !submenuExpanded,\n })}\n data-cy={`navigation-submenu-${props.id}`}\n >\n <div className={Styles.submenu}>{children}</div>\n </div>\n </div>\n );\n};\n"],"names":["Icon","SvgGroupCollapse","SvgGroupExpand","classNames","Fragment","getCounterTag","BadgeTag","Styles","InternalSideNavigationItemContent","icon","iconActive","iconClassName","iconComponent","IconComponent","tag","title","submenuExpanded","onExpandToggle","div","className","navItemIconWrapper","i","navIcon","svg","navIconInactive","navIconActive","navItemTextExpanded","data-cy","data","navItemCounter","longClassName","navItemCounterLong","navItemGroupToggleWrapper","navItemGroupToggle","onClick","navItemGroupToggleClick","navItemTextCollapsed","navItemTextSmall","length","internalNavigationContentContainerProps","id","isActive","prefix","isLink","navItem","navLink","navItemActive","navItemIconSwitch","InternalSideNavigationLink","to","dataPrefix","navigationComponent","NavigationComponent","props","undefined","activeClassName","InternalSideNavigationTrigger","InternalSideNavigationGroupLink","counter","parentId","rest","data-pendo","submenuItem","submenuLink","submenuLinkActive","span","submenuLinkCounter","InternalSideNavigationGroupTrigger","InternalSideNavigationGroupDivider","divider","InternalSideNavigationGroup","children","navGroupWrapper","navGroupItem","submenuWrapper","submenuWrapperCollapsed","submenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar-links-internal.tsx"],"sourcesContent":["import { Icon } from '@servicetitan/anvil2';\nimport SvgGroupCollapse from '@servicetitan/anvil2/assets/icons/material/round/expand_less.svg';\nimport SvgGroupExpand from '@servicetitan/anvil2/assets/icons/material/round/expand_more.svg';\n\nimport classNames from 'classnames';\nimport { FC, Fragment, MouseEvent, ReactNode } from 'react';\nimport { NavigationItemData, NavigationSubmenuItemData } from '../../utils/navigation';\nimport { getCounterTag } from '../../utils/side-nav';\nimport { BadgeTag, BadgeTagProps } from '../badge-tag';\nimport { TitanLayoutLinkProps, TitanLayoutTriggerProps } from './interface';\nimport { NavigationComponentProps } from './interface-internal';\nimport * as Styles from './layout-sidebar.module.less';\n\nexport interface InternalSideNavigationItemContentProps {\n icon: TitanLayoutLinkProps['icon'];\n iconActive: TitanLayoutLinkProps['iconActive'];\n title: TitanLayoutLinkProps['title'];\n submenuExpanded: boolean | undefined;\n tag: BadgeTagProps | undefined;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n}\n\nconst InternalSideNavigationItemContent: FC<InternalSideNavigationItemContentProps> = ({\n icon,\n iconActive,\n tag,\n title,\n submenuExpanded,\n onExpandToggle,\n}) => (\n <Fragment>\n <div className={Styles.navItemIconWrapper}>\n {icon && (\n <Icon svg={icon} className={classNames(Styles.navIcon, Styles.navIconInactive)} />\n )}\n {iconActive && (\n <Icon\n svg={iconActive}\n className={classNames(Styles.navIcon, Styles.navIconActive)}\n />\n )}\n\n <div className={Styles.navItemTextExpanded} data-cy=\"nav-item-label\">\n {title}\n </div>\n {!!tag && (\n <BadgeTag\n data={tag}\n className={Styles.navItemCounter}\n longClassName={Styles.navItemCounterLong}\n />\n )}\n {typeof submenuExpanded === 'boolean' && (\n <div className={Styles.navItemGroupToggleWrapper}>\n <Icon\n svg={submenuExpanded ? SvgGroupCollapse : SvgGroupExpand}\n className={Styles.navItemGroupToggle}\n onClick={onExpandToggle}\n />\n <div\n className={Styles.navItemGroupToggleClick}\n data-cy=\"nav-item-group-expand\"\n onClick={onExpandToggle}\n />\n </div>\n )}\n </div>\n\n <div\n className={classNames(Styles.navItemTextCollapsed, {\n [Styles.navItemTextSmall]: !!title && title.length >= 10,\n })}\n data-cy=\"nav-item-label\"\n >\n {title}\n </div>\n </Fragment>\n);\ninterface InternalLinkProps {\n submenuExpanded: boolean | undefined;\n tag: BadgeTagProps | undefined;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n}\n\nexport type InternalSideNavigationLinkProps = Omit<\n TitanLayoutLinkProps,\n 'wrapper' | 'counter' | 'tag'\n> &\n NavigationComponentProps &\n InternalLinkProps;\n\n/** Side Navigation menu item (for internal usage) */\nexport const InternalSideNavigationLink: FC<InternalSideNavigationLinkProps> = ({\n id,\n to,\n className,\n icon,\n iconActive,\n isActive,\n navigationComponent: NavigationComponent,\n tag,\n title,\n submenuExpanded,\n onExpandToggle,\n ...props\n}) => {\n return (\n <NavigationComponent\n data-cy={`navigation-item-${id}`}\n data-pendo={`navigation-item-${id}`}\n {...props}\n className={classNames(Styles.navItem, Styles.navLink, className, {\n [Styles.navItemActive]: isActive === true,\n [Styles.navItemIconSwitch]: !!icon && !!iconActive,\n })}\n to={to}\n isActive={typeof isActive === 'function' ? isActive : undefined}\n activeClassName={Styles.navItemActive}\n >\n <InternalSideNavigationItemContent\n icon={icon}\n iconActive={iconActive}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n title={title}\n tag={tag}\n />\n </NavigationComponent>\n );\n};\n\nexport type InternalSideNavigationTriggerProps = Omit<\n TitanLayoutTriggerProps,\n 'wrapper' | 'counter' | 'tag'\n> &\n InternalLinkProps;\n\n/** Side Navigation menu trigger (for internal usage) */\nexport const InternalSideNavigationTrigger: FC<InternalSideNavigationTriggerProps> = ({\n className,\n icon,\n iconActive,\n id,\n isActive,\n submenuExpanded,\n onExpandToggle,\n onClick,\n title,\n tag,\n ...props\n}) => {\n return (\n <div\n data-cy={`navigation-item-${id}`}\n data-pendo={`navigation-item-${id}`}\n {...props}\n className={classNames(Styles.navItem, className, {\n [Styles.navLink]: !!onClick,\n [Styles.navItemActive]: isActive === true,\n [Styles.navItemIconSwitch]: !!icon && !!iconActive,\n })}\n onClick={onClick}\n >\n <InternalSideNavigationItemContent\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n icon={icon}\n iconActive={iconActive}\n title={title}\n tag={tag}\n />\n </div>\n );\n};\n\nexport const InternalSideNavigationGroupLink: FC<\n NavigationSubmenuItemData & NavigationComponentProps & { parentId: string }\n> = ({\n id,\n counter,\n parentId,\n tag,\n title,\n to,\n isActive,\n navigationComponent: NavigationComponent,\n ...rest\n}) => {\n return (\n <NavigationComponent\n key={id}\n data-cy={`navigation-item-${parentId}--${id}`}\n data-pendo={`navigation-item-${parentId}--${id}`}\n {...rest}\n to={to}\n className={classNames(Styles.submenuItem, Styles.submenuLink, {\n [Styles.submenuLinkActive]: isActive === true,\n })}\n isActive={typeof isActive === 'function' ? isActive : undefined}\n activeClassName={Styles.submenuLinkActive}\n >\n <span>{title}</span>\n <BadgeTag data={getCounterTag(counter, tag)} className={Styles.submenuLinkCounter} />\n </NavigationComponent>\n );\n};\n\nexport const InternalSideNavigationGroupTrigger: FC<\n Omit<NavigationSubmenuItemData, 'to'> & { onClick?: (e: MouseEvent<any>) => void }\n> = ({ id, counter, onClick, tag, title, isActive, ...rest }) => {\n return (\n <div\n data-cy={`navigation-item-${id}`}\n data-pendo={`navigation-item-${id}`}\n key={id}\n {...rest}\n className={classNames(Styles.submenuItem, {\n [Styles.submenuLink]: !!onClick,\n [Styles.submenuLinkActive]: isActive === true,\n })}\n onClick={onClick}\n >\n <span>{title}</span>\n <BadgeTag data={getCounterTag(counter, tag)} className={Styles.submenuLinkCounter} />\n </div>\n );\n};\n\nexport const InternalSideNavigationGroupDivider = () => {\n return <div className={Styles.divider} />;\n};\n\nexport const InternalSideNavigationGroup: FC<\n Omit<NavigationItemData, 'tag' | 'counter' | 'to'> &\n NavigationComponentProps & {\n children: ReactNode;\n submenuExpanded: boolean;\n onExpandToggle?: (e: MouseEvent<never>) => void;\n tag: BadgeTagProps | undefined;\n to: NavigationItemData['to'] | undefined;\n onClick?: (e: MouseEvent<never>) => void;\n }\n> = ({ children, submenuExpanded, to, onExpandToggle, onClick, isActive, ...props }) => {\n return (\n <div className={classNames(Styles.navGroupWrapper)}>\n <div className={Styles.navGroupItem}>\n {to ? (\n <InternalSideNavigationLink\n {...props}\n isActive={isActive}\n to={to}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n />\n ) : (\n <InternalSideNavigationTrigger\n {...props}\n isActive={isActive === true || undefined}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n onClick={onClick}\n />\n )}\n </div>\n <div\n className={classNames(Styles.submenuWrapper, {\n [Styles.submenuWrapperCollapsed]: !submenuExpanded,\n })}\n data-cy={`navigation-submenu-${props.id}`}\n >\n <div className={Styles.submenu}>{children}</div>\n </div>\n </div>\n );\n};\n"],"names":["Icon","SvgGroupCollapse","SvgGroupExpand","classNames","Fragment","getCounterTag","BadgeTag","Styles","InternalSideNavigationItemContent","icon","iconActive","tag","title","submenuExpanded","onExpandToggle","div","className","navItemIconWrapper","svg","navIcon","navIconInactive","navIconActive","navItemTextExpanded","data-cy","data","navItemCounter","longClassName","navItemCounterLong","navItemGroupToggleWrapper","navItemGroupToggle","onClick","navItemGroupToggleClick","navItemTextCollapsed","navItemTextSmall","length","InternalSideNavigationLink","id","to","isActive","navigationComponent","NavigationComponent","props","data-pendo","navItem","navLink","navItemActive","navItemIconSwitch","undefined","activeClassName","InternalSideNavigationTrigger","InternalSideNavigationGroupLink","counter","parentId","rest","submenuItem","submenuLink","submenuLinkActive","span","submenuLinkCounter","InternalSideNavigationGroupTrigger","InternalSideNavigationGroupDivider","divider","InternalSideNavigationGroup","children","navGroupWrapper","navGroupItem","submenuWrapper","submenuWrapperCollapsed","submenu"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TitanLayoutLinkProps, TitanLayoutTriggerProps } from './interface';
|
|
2
2
|
/** Side Navigation menu link */
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function LayoutSidebarLink({ counter, tag, tooltip, wrapper, ...props }: TitanLayoutLinkProps): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
/** Side Navigation menu trigger */
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function LayoutSidebarTrigger({ counter, tag, tooltip, wrapper, onClick, ...props }: TitanLayoutTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
//# sourceMappingURL=layout-sidebar-links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-sidebar-links.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-sidebar-links.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"layout-sidebar-links.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/layout-sidebar-links.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAqB5E,gCAAgC;AAChC,wBAAgB,iBAAiB,CAAC,EAC9B,OAAO,EACP,GAAG,EACH,OAAO,EACP,OAAO,EACP,GAAG,KAAK,EACX,EAAE,oBAAoB,2CA0BtB;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAAC,EACjC,OAAO,EACP,GAAG,EACH,OAAO,EACP,OAAO,EACP,OAAO,EACP,GAAG,KAAK,EACX,EAAE,uBAAuB,2CAmBzB"}
|
|
@@ -3,43 +3,43 @@ import { getCounterTag } from '../../utils/side-nav';
|
|
|
3
3
|
import { useTitanLayoutContext } from './layout-context';
|
|
4
4
|
import { InternalSideNavigationLink, InternalSideNavigationTrigger } from './layout-sidebar-links-internal';
|
|
5
5
|
import { useNotificationsContext } from './notifications-context';
|
|
6
|
-
const WrappedLink = ({ children, wrapper: WrapperComponent })=>{
|
|
6
|
+
const WrappedLink = ({ children, isMobile, wrapper: WrapperComponent })=>{
|
|
7
7
|
const { sidebar } = useTitanLayoutContext();
|
|
8
8
|
return /*#__PURE__*/ _jsx(WrapperComponent, {
|
|
9
|
+
isMobile: isMobile,
|
|
9
10
|
context: sidebar,
|
|
10
11
|
children: children
|
|
11
12
|
});
|
|
12
13
|
};
|
|
13
|
-
/** Side Navigation menu link */ export function
|
|
14
|
+
/** Side Navigation menu link */ export function LayoutSidebarLink({ counter, tag, tooltip, wrapper, ...props }) {
|
|
14
15
|
const { NavigationComponent, breakpoint: { isMobile } } = useTitanLayoutContext();
|
|
15
16
|
const { onNotificationsUpdate } = useNotificationsContext();
|
|
16
|
-
const
|
|
17
|
-
onNotificationsUpdate(props.id, !!
|
|
17
|
+
const tagData = getCounterTag(counter, tag);
|
|
18
|
+
onNotificationsUpdate(props.id, !!tagData);
|
|
18
19
|
const element = /*#__PURE__*/ _jsx(InternalSideNavigationLink, {
|
|
19
20
|
...props,
|
|
20
21
|
navigationComponent: NavigationComponent,
|
|
21
22
|
submenuExpanded: undefined,
|
|
22
|
-
|
|
23
|
-
tag: tag
|
|
23
|
+
tag: tagData
|
|
24
24
|
});
|
|
25
25
|
return wrapper && !isMobile ? /*#__PURE__*/ _jsx(WrappedLink, {
|
|
26
|
+
isMobile: isMobile,
|
|
26
27
|
wrapper: wrapper,
|
|
27
28
|
children: element
|
|
28
29
|
}) : element;
|
|
29
30
|
}
|
|
30
|
-
/** Side Navigation menu trigger */ export function
|
|
31
|
+
/** Side Navigation menu trigger */ export function LayoutSidebarTrigger({ counter, tag, tooltip, wrapper, onClick, ...props }) {
|
|
31
32
|
const { breakpoint: { isMobile } } = useTitanLayoutContext();
|
|
32
33
|
const { onNotificationsUpdate } = useNotificationsContext();
|
|
33
|
-
const
|
|
34
|
-
onNotificationsUpdate(props.id, !!
|
|
34
|
+
const tagData = getCounterTag(counter, tag);
|
|
35
|
+
onNotificationsUpdate(props.id, !!tagData);
|
|
35
36
|
const element = /*#__PURE__*/ _jsx(InternalSideNavigationTrigger, {
|
|
36
37
|
...props,
|
|
37
38
|
submenuExpanded: undefined,
|
|
38
|
-
|
|
39
|
-
tag: tag,
|
|
40
|
-
onClick: isMobile && !!onMobileClick ? onMobileClick : onClick
|
|
39
|
+
tag: tagData
|
|
41
40
|
});
|
|
42
|
-
return wrapper
|
|
41
|
+
return wrapper ? /*#__PURE__*/ _jsx(WrappedLink, {
|
|
42
|
+
isMobile: isMobile,
|
|
43
43
|
wrapper: wrapper,
|
|
44
44
|
children: element
|
|
45
45
|
}) : element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar-links.tsx"],"sourcesContent":["import { FC, ReactElement } from 'react';\nimport { getCounterTag } from '../../utils/side-nav';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar-links.tsx"],"sourcesContent":["import { FC, ReactElement } from 'react';\nimport { getCounterTag } from '../../utils/side-nav';\nimport { TitanLayoutLinkProps, TitanLayoutTriggerProps } from './interface';\nimport { useTitanLayoutContext } from './layout-context';\nimport {\n InternalSideNavigationLink,\n InternalSideNavigationTrigger,\n} from './layout-sidebar-links-internal';\nimport { useNotificationsContext } from './notifications-context';\n\nconst WrappedLink: FC<{\n children: ReactElement<any>;\n wrapper: NonNullable<TitanLayoutLinkProps['wrapper']>;\n isMobile: boolean;\n}> = ({ children, isMobile, wrapper: WrapperComponent }) => {\n const { sidebar } = useTitanLayoutContext();\n return (\n <WrapperComponent isMobile={isMobile} context={sidebar}>\n {children}\n </WrapperComponent>\n );\n};\n\n/** Side Navigation menu link */\nexport function LayoutSidebarLink({\n counter,\n tag,\n tooltip,\n wrapper,\n ...props\n}: TitanLayoutLinkProps) {\n const {\n NavigationComponent,\n breakpoint: { isMobile },\n } = useTitanLayoutContext();\n const { onNotificationsUpdate } = useNotificationsContext();\n const tagData = getCounterTag(counter, tag);\n\n onNotificationsUpdate(props.id, !!tagData);\n\n const element = (\n <InternalSideNavigationLink\n {...props}\n navigationComponent={NavigationComponent}\n submenuExpanded={undefined}\n tag={tagData}\n />\n );\n\n return wrapper && !isMobile ? (\n <WrappedLink isMobile={isMobile} wrapper={wrapper}>\n {element}\n </WrappedLink>\n ) : (\n element\n );\n}\n\n/** Side Navigation menu trigger */\nexport function LayoutSidebarTrigger({\n counter,\n tag,\n tooltip,\n wrapper,\n onClick,\n ...props\n}: TitanLayoutTriggerProps) {\n const {\n breakpoint: { isMobile },\n } = useTitanLayoutContext();\n const { onNotificationsUpdate } = useNotificationsContext();\n const tagData = getCounterTag(counter, tag);\n\n onNotificationsUpdate(props.id, !!tagData);\n\n const element = (\n <InternalSideNavigationTrigger {...props} submenuExpanded={undefined} tag={tagData} />\n );\n return wrapper ? (\n <WrappedLink isMobile={isMobile} wrapper={wrapper}>\n {element}\n </WrappedLink>\n ) : (\n element\n );\n}\n"],"names":["getCounterTag","useTitanLayoutContext","InternalSideNavigationLink","InternalSideNavigationTrigger","useNotificationsContext","WrappedLink","children","isMobile","wrapper","WrapperComponent","sidebar","context","LayoutSidebarLink","counter","tag","tooltip","props","NavigationComponent","breakpoint","onNotificationsUpdate","tagData","id","element","navigationComponent","submenuExpanded","undefined","LayoutSidebarTrigger","onClick"],"mappings":";AACA,SAASA,aAAa,QAAQ,uBAAuB;AAErD,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SACIC,0BAA0B,EAC1BC,6BAA6B,QAC1B,kCAAkC;AACzC,SAASC,uBAAuB,QAAQ,0BAA0B;AAElE,MAAMC,cAID,CAAC,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAASC,gBAAgB,EAAE;IACnD,MAAM,EAAEC,OAAO,EAAE,GAAGT;IACpB,qBACI,KAACQ;QAAiBF,UAAUA;QAAUI,SAASD;kBAC1CJ;;AAGb;AAEA,8BAA8B,GAC9B,OAAO,SAASM,kBAAkB,EAC9BC,OAAO,EACPC,GAAG,EACHC,OAAO,EACPP,OAAO,EACP,GAAGQ,OACgB;IACnB,MAAM,EACFC,mBAAmB,EACnBC,YAAY,EAAEX,QAAQ,EAAE,EAC3B,GAAGN;IACJ,MAAM,EAAEkB,qBAAqB,EAAE,GAAGf;IAClC,MAAMgB,UAAUpB,cAAca,SAASC;IAEvCK,sBAAsBH,MAAMK,EAAE,EAAE,CAAC,CAACD;IAElC,MAAME,wBACF,KAACpB;QACI,GAAGc,KAAK;QACTO,qBAAqBN;QACrBO,iBAAiBC;QACjBX,KAAKM;;IAIb,OAAOZ,WAAW,CAACD,yBACf,KAACF;QAAYE,UAAUA;QAAUC,SAASA;kBACrCc;SAGLA;AAER;AAEA,iCAAiC,GACjC,OAAO,SAASI,qBAAqB,EACjCb,OAAO,EACPC,GAAG,EACHC,OAAO,EACPP,OAAO,EACPmB,OAAO,EACP,GAAGX,OACmB;IACtB,MAAM,EACFE,YAAY,EAAEX,QAAQ,EAAE,EAC3B,GAAGN;IACJ,MAAM,EAAEkB,qBAAqB,EAAE,GAAGf;IAClC,MAAMgB,UAAUpB,cAAca,SAASC;IAEvCK,sBAAsBH,MAAMK,EAAE,EAAE,CAAC,CAACD;IAElC,MAAME,wBACF,KAACnB;QAA+B,GAAGa,KAAK;QAAEQ,iBAAiBC;QAAWX,KAAKM;;IAE/E,OAAOZ,wBACH,KAACH;QAAYE,UAAUA;QAAUC,SAASA;kBACrCc;SAGLA;AAER"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createElement as _createElement } from "react";
|
|
2
3
|
import { Icon, Popover, Text, ThemeProvider } from '@servicetitan/anvil2';
|
|
3
4
|
import SvgClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';
|
|
4
5
|
import SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';
|
|
@@ -54,12 +55,13 @@ export const LayoutSidebar = ({ className, mobile, barExpanded, submenuExpanded,
|
|
|
54
55
|
onSubmenuExpand: onSubmenuExpandChange,
|
|
55
56
|
navigationComponent: navigationComponent,
|
|
56
57
|
...item
|
|
57
|
-
}, item.id) : /*#__PURE__*/
|
|
58
|
+
}, item.id) : /*#__PURE__*/ _createElement(InternalSideNavigationLink, {
|
|
59
|
+
...item,
|
|
60
|
+
key: item.id,
|
|
58
61
|
submenuExpanded: undefined,
|
|
59
62
|
navigationComponent: navigationComponent,
|
|
60
|
-
...item,
|
|
61
63
|
tag: getSubmenuGroupTag(item.submenu, getCounterTag(item.counter, item.tag))
|
|
62
|
-
}
|
|
64
|
+
}))
|
|
63
65
|
}),
|
|
64
66
|
!!bottom && /*#__PURE__*/ _jsx(SidebarBottom, {
|
|
65
67
|
children: bottom
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar.tsx"],"sourcesContent":["import { Icon, Popover, Text, ThemeProvider } from '@servicetitan/anvil2';\nimport SvgClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';\nimport SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';\nimport SvgExpand from '@servicetitan/anvil2/assets/icons/st/gnav_menu_expand.svg';\nimport classNames from 'classnames';\nimport {\n Children,\n FC,\n Fragment,\n MouseEvent,\n ReactElement,\n isValidElement,\n useCallback,\n} from 'react';\nimport { NavigationItemData, NavigationSubmenuData } from '../../utils/navigation';\nimport { NavLinkComponentProps } from '../../utils/navigation-context';\nimport { getCounterTag, getSubmenuGroupTag } from '../../utils/side-nav';\nimport { NavigationComponentProps } from './interface-internal';\nimport { LayoutPlacementContext, useTitanLayoutContext } from './layout-context';\nimport {\n InternalSideNavigationGroup,\n InternalSideNavigationGroupLink,\n InternalSideNavigationLink,\n} from './layout-sidebar-links-internal';\nimport * as Styles from './layout-sidebar.module.less';\n\nimport { withTooltip } from './with-tooltip';\n\nexport interface LayoutSidebarProps {\n className?: string;\n top?: ReactElement[];\n bottom?: ReactElement;\n mainItems?: NavigationItemData[];\n barExpanded: boolean;\n submenuExpanded: string | undefined;\n drawerOpened: boolean;\n mobile: boolean;\n navigationComponent: FC<NavLinkComponentProps>;\n onBarExpandChange(expanded: boolean): void;\n onDrawerOpenChange(expanded: boolean): void;\n onSubmenuExpandChange(id: string, expanded: boolean): void;\n}\n\nexport const LayoutSidebar: FC<LayoutSidebarProps> = ({\n className,\n mobile,\n barExpanded,\n submenuExpanded,\n drawerOpened,\n onBarExpandChange,\n onSubmenuExpandChange,\n onDrawerOpenChange,\n mainItems,\n top,\n bottom,\n navigationComponent,\n}) => {\n const closeDrawer = () => {\n if (mobile) {\n onDrawerOpenChange?.(false);\n }\n };\n\n return (\n <LayoutPlacementContext.Provider value=\"side\">\n {mobile && drawerOpened && (\n <div className={Styles.navDrawerBackdrop} onClick={closeDrawer} />\n )}\n <div\n className={classNames(\n Styles.nav,\n mobile && Styles.navDrawer,\n mobile && drawerOpened && Styles.navDrawerOpened,\n !mobile && (barExpanded ? Styles.navWide : Styles.navSlim),\n className\n )}\n data-cy=\"side-navigation\"\n onClick={closeDrawer}\n >\n <ThemeProvider mode=\"dark\" className={Styles.navMain}>\n {mobile && (\n <div className={Styles.navCloseWrapper}>\n <div\n className={Styles.navClose}\n onClick={() => onBarExpandChange(false)}\n >\n <Icon svg={SvgClose} size=\"large\" />\n </div>\n </div>\n )}\n {!!top?.length && <SidebarTop>{top}</SidebarTop>}\n\n <div data-cy=\"navigation-items\">\n {mainItems?.map(item =>\n item.submenu ? (\n <SideNavigationGroupItem\n key={item.id}\n barExpanded={mobile ? drawerOpened : barExpanded}\n submenuExpanded={!!item.id && submenuExpanded === item.id}\n onSubmenuExpand={onSubmenuExpandChange}\n navigationComponent={navigationComponent}\n {...item}\n />\n ) : (\n <InternalSideNavigationLink\n key={item.id}\n submenuExpanded={undefined}\n navigationComponent={navigationComponent}\n {...item}\n tag={getSubmenuGroupTag(\n item.submenu,\n getCounterTag(item.counter, item.tag)\n )}\n />\n )\n )}\n </div>\n\n {!!bottom && <SidebarBottom>{bottom}</SidebarBottom>}\n </ThemeProvider>\n\n {!mobile && (\n <div className={Styles.navFooter}>\n <div className={Styles.divider} />\n <div className={Styles.toggleWrapper}>\n <SideNavigationOptionsToggle\n appearance={barExpanded ? 'collapse-button' : 'expand'}\n onExpandedChange={() => onBarExpandChange(!barExpanded)}\n />\n </div>\n </div>\n )}\n </div>\n </LayoutPlacementContext.Provider>\n );\n};\nLayoutSidebar.displayName = 'LayoutSidebar';\n\n/** Side Navigation options toggle */\nconst SideNavigationOptionsToggle: FC<{\n appearance: 'expand' | 'collapse' | 'collapse-button';\n onExpandedChange?(expanded: boolean): void;\n}> = ({ appearance, onExpandedChange }) =>\n withTooltip(\n <div\n data-cy=\"navigation-left-options\"\n data-pendo=\"navigation-left-options\"\n className={classNames(Styles.toggle)}\n onClick={() => onExpandedChange?.(appearance === 'expand')}\n >\n <div className={Styles.toggleContent}>\n <div className={Styles.toggleIconWrapper}>\n <Icon\n className={Styles.toggleIcon}\n svg={appearance === 'expand' ? SvgExpand : SvgCollapse}\n />\n </div>\n\n {appearance === 'collapse-button' && (\n <span className={Styles.toggleText}>Collapse Menu</span>\n )}\n </div>\n </div>,\n appearance === 'expand'\n ? 'Expand Menu'\n : appearance === 'collapse'\n ? 'Collapse Menu'\n : undefined,\n { placement: 'right' }\n );\n\n/** Side Navigation menu item */\nconst SideNavigationGroupItem: FC<\n NavigationItemData & {\n navigationComponent: FC<NavLinkComponentProps>;\n barExpanded: boolean;\n submenuExpanded: boolean;\n onSubmenuExpand: undefined | ((id: string, expanded: boolean) => void);\n }\n> = ({ onSubmenuExpand, barExpanded, submenuExpanded, ...props }) => {\n const onExpandToggle = useCallback(\n (e: MouseEvent<never>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (props.id) {\n onSubmenuExpand?.(props.id, !submenuExpanded);\n }\n },\n [props.id, submenuExpanded, onSubmenuExpand]\n );\n const {\n sidebar: {\n styles: { popoverContent },\n },\n } = useTitanLayoutContext();\n\n const tag = getSubmenuGroupTag(props.submenu, getCounterTag(props.counter, props.tag));\n\n return barExpanded ? (\n <InternalSideNavigationGroup\n {...props}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n tag={tag}\n >\n <SideNavigationGroupContent\n parentId={props.id}\n groups={props.submenu?.groups ?? []}\n navigationComponent={props.navigationComponent}\n />\n </InternalSideNavigationGroup>\n ) : (\n <Popover placement=\"right-start\" openOnHover delay={500}>\n <Popover.Trigger>\n {(triggerProps: any) => (\n <div {...triggerProps}>\n <InternalSideNavigationLink\n {...props}\n submenuExpanded={undefined}\n tag={tag}\n />\n </div>\n )}\n </Popover.Trigger>\n <Popover.Content style={popoverContent} className=\"z-global-nav-i\">\n <div className={Styles.submenuPopover}>\n <Text\n variant=\"headline\"\n el=\"h4\"\n size=\"small\"\n className=\"c-white m-b-half-i m-t-1\"\n >\n {props.title}\n </Text>\n <SideNavigationGroupContent\n parentId={props.id}\n groups={props.submenu?.groups ?? []}\n navigationComponent={props.navigationComponent}\n />\n </div>\n </Popover.Content>\n </Popover>\n );\n};\nconst SideNavigationGroupContent: FC<\n NavigationSubmenuData & NavigationComponentProps & { parentId: string }\n> = ({ groups, parentId, navigationComponent }) => {\n return (\n <Fragment>\n {groups.reduce((out, group, index) => {\n if (!group.links.length) {\n return out;\n }\n\n const title = group.title?.trim() ?? '';\n /* eslint-disable react/no-array-index-key */\n out.push(\n <Text\n key={`:group:${parentId}:${index}:title`}\n variant=\"eyebrow\"\n className={classNames(Styles.submenuGroupHeader, {\n [Styles.submenuGroupHeaderEmpty]: !title,\n })}\n >\n {title}\n </Text>\n );\n out.push(\n ...group.links.map((link, index) => (\n <InternalSideNavigationGroupLink\n key={`:${parentId}:${link.id}:${index}`}\n {...link}\n parentId={parentId}\n navigationComponent={navigationComponent}\n />\n ))\n );\n /* eslint-enable react/no-array-index-key */\n\n return out;\n }, [] as ReactElement[])}\n </Fragment>\n );\n};\n\nfunction SidebarTop({ children }: any) {\n const list = Children.map(children, child => {\n return child && isValidElement(child) ? child : null;\n });\n return list?.length ? (\n <ThemeProvider mode=\"dark\" className={Styles.navTop} data-cy=\"navigation-items-top\">\n {list}\n <div className={Styles.divider} />\n </ThemeProvider>\n ) : null;\n}\n\nfunction SidebarBottom({ children }: any) {\n return (\n <ThemeProvider mode=\"dark\" className={Styles.navBottom} data-cy=\"navigation-items-bottom\">\n <div className={Styles.divider} />\n {children}\n </ThemeProvider>\n );\n}\n"],"names":["Icon","Popover","Text","ThemeProvider","SvgClose","SvgCollapse","SvgExpand","classNames","Children","Fragment","isValidElement","useCallback","getCounterTag","getSubmenuGroupTag","LayoutPlacementContext","useTitanLayoutContext","InternalSideNavigationGroup","InternalSideNavigationGroupLink","InternalSideNavigationLink","Styles","withTooltip","LayoutSidebar","className","mobile","barExpanded","submenuExpanded","drawerOpened","onBarExpandChange","onSubmenuExpandChange","onDrawerOpenChange","mainItems","top","bottom","navigationComponent","closeDrawer","Provider","value","div","navDrawerBackdrop","onClick","nav","navDrawer","navDrawerOpened","navWide","navSlim","data-cy","mode","navMain","navCloseWrapper","navClose","svg","size","length","SidebarTop","map","item","submenu","SideNavigationGroupItem","id","onSubmenuExpand","undefined","tag","counter","SidebarBottom","navFooter","divider","toggleWrapper","SideNavigationOptionsToggle","appearance","onExpandedChange","displayName","data-pendo","toggle","toggleContent","toggleIconWrapper","toggleIcon","span","toggleText","placement","props","onExpandToggle","e","preventDefault","stopPropagation","sidebar","styles","popoverContent","SideNavigationGroupContent","parentId","groups","openOnHover","delay","Trigger","triggerProps","Content","style","submenuPopover","variant","el","title","reduce","out","group","index","links","trim","push","submenuGroupHeader","submenuGroupHeaderEmpty","link","children","list","child","navTop","navBottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar.tsx"],"sourcesContent":["import { Icon, Popover, Text, ThemeProvider } from '@servicetitan/anvil2';\nimport SvgClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';\nimport SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';\nimport SvgExpand from '@servicetitan/anvil2/assets/icons/st/gnav_menu_expand.svg';\nimport classNames from 'classnames';\nimport {\n Children,\n FC,\n Fragment,\n MouseEvent,\n ReactElement,\n isValidElement,\n useCallback,\n} from 'react';\nimport { NavigationItemData, NavigationSubmenuData } from '../../utils/navigation';\nimport { NavLinkComponentProps } from '../../utils/navigation-context';\nimport { getCounterTag, getSubmenuGroupTag } from '../../utils/side-nav';\nimport { NavigationComponentProps } from './interface-internal';\nimport { LayoutPlacementContext, useTitanLayoutContext } from './layout-context';\nimport {\n InternalSideNavigationGroup,\n InternalSideNavigationGroupLink,\n InternalSideNavigationLink,\n} from './layout-sidebar-links-internal';\nimport * as Styles from './layout-sidebar.module.less';\n\nimport { withTooltip } from './with-tooltip';\n\nexport interface LayoutSidebarProps {\n className?: string;\n top?: ReactElement[];\n bottom?: ReactElement;\n mainItems?: NavigationItemData[];\n barExpanded: boolean;\n submenuExpanded: string | undefined;\n drawerOpened: boolean;\n mobile: boolean;\n navigationComponent: FC<NavLinkComponentProps>;\n onBarExpandChange(expanded: boolean): void;\n onDrawerOpenChange(expanded: boolean): void;\n onSubmenuExpandChange(id: string, expanded: boolean): void;\n}\n\nexport const LayoutSidebar: FC<LayoutSidebarProps> = ({\n className,\n mobile,\n barExpanded,\n submenuExpanded,\n drawerOpened,\n onBarExpandChange,\n onSubmenuExpandChange,\n onDrawerOpenChange,\n mainItems,\n top,\n bottom,\n navigationComponent,\n}) => {\n const closeDrawer = () => {\n if (mobile) {\n onDrawerOpenChange?.(false);\n }\n };\n\n return (\n <LayoutPlacementContext.Provider value=\"side\">\n {mobile && drawerOpened && (\n <div className={Styles.navDrawerBackdrop} onClick={closeDrawer} />\n )}\n <div\n className={classNames(\n Styles.nav,\n mobile && Styles.navDrawer,\n mobile && drawerOpened && Styles.navDrawerOpened,\n !mobile && (barExpanded ? Styles.navWide : Styles.navSlim),\n className\n )}\n data-cy=\"side-navigation\"\n onClick={closeDrawer}\n >\n <ThemeProvider mode=\"dark\" className={Styles.navMain}>\n {mobile && (\n <div className={Styles.navCloseWrapper}>\n <div\n className={Styles.navClose}\n onClick={() => onBarExpandChange(false)}\n >\n <Icon svg={SvgClose} size=\"large\" />\n </div>\n </div>\n )}\n {!!top?.length && <SidebarTop>{top}</SidebarTop>}\n\n <div data-cy=\"navigation-items\">\n {mainItems?.map(item =>\n item.submenu ? (\n <SideNavigationGroupItem\n key={item.id}\n barExpanded={mobile ? drawerOpened : barExpanded}\n submenuExpanded={!!item.id && submenuExpanded === item.id}\n onSubmenuExpand={onSubmenuExpandChange}\n navigationComponent={navigationComponent}\n {...item}\n />\n ) : (\n <InternalSideNavigationLink\n {...item}\n key={item.id}\n submenuExpanded={undefined}\n navigationComponent={navigationComponent}\n tag={getSubmenuGroupTag(\n item.submenu,\n getCounterTag(item.counter, item.tag)\n )}\n />\n )\n )}\n </div>\n\n {!!bottom && <SidebarBottom>{bottom}</SidebarBottom>}\n </ThemeProvider>\n\n {!mobile && (\n <div className={Styles.navFooter}>\n <div className={Styles.divider} />\n <div className={Styles.toggleWrapper}>\n <SideNavigationOptionsToggle\n appearance={barExpanded ? 'collapse-button' : 'expand'}\n onExpandedChange={() => onBarExpandChange(!barExpanded)}\n />\n </div>\n </div>\n )}\n </div>\n </LayoutPlacementContext.Provider>\n );\n};\nLayoutSidebar.displayName = 'LayoutSidebar';\n\n/** Side Navigation options toggle */\nconst SideNavigationOptionsToggle: FC<{\n appearance: 'expand' | 'collapse' | 'collapse-button';\n onExpandedChange?(expanded: boolean): void;\n}> = ({ appearance, onExpandedChange }) =>\n withTooltip(\n <div\n data-cy=\"navigation-left-options\"\n data-pendo=\"navigation-left-options\"\n className={classNames(Styles.toggle)}\n onClick={() => onExpandedChange?.(appearance === 'expand')}\n >\n <div className={Styles.toggleContent}>\n <div className={Styles.toggleIconWrapper}>\n <Icon\n className={Styles.toggleIcon}\n svg={appearance === 'expand' ? SvgExpand : SvgCollapse}\n />\n </div>\n\n {appearance === 'collapse-button' && (\n <span className={Styles.toggleText}>Collapse Menu</span>\n )}\n </div>\n </div>,\n appearance === 'expand'\n ? 'Expand Menu'\n : appearance === 'collapse'\n ? 'Collapse Menu'\n : undefined,\n { placement: 'right' }\n );\n\n/** Side Navigation menu item */\nconst SideNavigationGroupItem: FC<\n NavigationItemData & {\n navigationComponent: FC<NavLinkComponentProps>;\n barExpanded: boolean;\n submenuExpanded: boolean;\n onSubmenuExpand: undefined | ((id: string, expanded: boolean) => void);\n }\n> = ({ onSubmenuExpand, barExpanded, submenuExpanded, ...props }) => {\n const onExpandToggle = useCallback(\n (e: MouseEvent<never>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (props.id) {\n onSubmenuExpand?.(props.id, !submenuExpanded);\n }\n },\n [props.id, submenuExpanded, onSubmenuExpand]\n );\n const {\n sidebar: {\n styles: { popoverContent },\n },\n } = useTitanLayoutContext();\n\n const tag = getSubmenuGroupTag(props.submenu, getCounterTag(props.counter, props.tag));\n\n return barExpanded ? (\n <InternalSideNavigationGroup\n {...props}\n submenuExpanded={submenuExpanded}\n onExpandToggle={onExpandToggle}\n tag={tag}\n >\n <SideNavigationGroupContent\n parentId={props.id}\n groups={props.submenu?.groups ?? []}\n navigationComponent={props.navigationComponent}\n />\n </InternalSideNavigationGroup>\n ) : (\n <Popover placement=\"right-start\" openOnHover delay={500}>\n <Popover.Trigger>\n {(triggerProps: any) => (\n <div {...triggerProps}>\n <InternalSideNavigationLink\n {...props}\n submenuExpanded={undefined}\n tag={tag}\n />\n </div>\n )}\n </Popover.Trigger>\n <Popover.Content style={popoverContent} className=\"z-global-nav-i\">\n <div className={Styles.submenuPopover}>\n <Text\n variant=\"headline\"\n el=\"h4\"\n size=\"small\"\n className=\"c-white m-b-half-i m-t-1\"\n >\n {props.title}\n </Text>\n <SideNavigationGroupContent\n parentId={props.id}\n groups={props.submenu?.groups ?? []}\n navigationComponent={props.navigationComponent}\n />\n </div>\n </Popover.Content>\n </Popover>\n );\n};\nconst SideNavigationGroupContent: FC<\n NavigationSubmenuData & NavigationComponentProps & { parentId: string }\n> = ({ groups, parentId, navigationComponent }) => {\n return (\n <Fragment>\n {groups.reduce((out, group, index) => {\n if (!group.links.length) {\n return out;\n }\n\n const title = group.title?.trim() ?? '';\n /* eslint-disable react/no-array-index-key */\n out.push(\n <Text\n key={`:group:${parentId}:${index}:title`}\n variant=\"eyebrow\"\n className={classNames(Styles.submenuGroupHeader, {\n [Styles.submenuGroupHeaderEmpty]: !title,\n })}\n >\n {title}\n </Text>\n );\n out.push(\n ...group.links.map((link, index) => (\n <InternalSideNavigationGroupLink\n key={`:${parentId}:${link.id}:${index}`}\n {...link}\n parentId={parentId}\n navigationComponent={navigationComponent}\n />\n ))\n );\n /* eslint-enable react/no-array-index-key */\n\n return out;\n }, [] as ReactElement[])}\n </Fragment>\n );\n};\n\nfunction SidebarTop({ children }: any) {\n const list = Children.map(children, child => {\n return child && isValidElement(child) ? child : null;\n });\n return list?.length ? (\n <ThemeProvider mode=\"dark\" className={Styles.navTop} data-cy=\"navigation-items-top\">\n {list}\n <div className={Styles.divider} />\n </ThemeProvider>\n ) : null;\n}\n\nfunction SidebarBottom({ children }: any) {\n return (\n <ThemeProvider mode=\"dark\" className={Styles.navBottom} data-cy=\"navigation-items-bottom\">\n <div className={Styles.divider} />\n {children}\n </ThemeProvider>\n );\n}\n"],"names":["Icon","Popover","Text","ThemeProvider","SvgClose","SvgCollapse","SvgExpand","classNames","Children","Fragment","isValidElement","useCallback","getCounterTag","getSubmenuGroupTag","LayoutPlacementContext","useTitanLayoutContext","InternalSideNavigationGroup","InternalSideNavigationGroupLink","InternalSideNavigationLink","Styles","withTooltip","LayoutSidebar","className","mobile","barExpanded","submenuExpanded","drawerOpened","onBarExpandChange","onSubmenuExpandChange","onDrawerOpenChange","mainItems","top","bottom","navigationComponent","closeDrawer","Provider","value","div","navDrawerBackdrop","onClick","nav","navDrawer","navDrawerOpened","navWide","navSlim","data-cy","mode","navMain","navCloseWrapper","navClose","svg","size","length","SidebarTop","map","item","submenu","SideNavigationGroupItem","id","onSubmenuExpand","key","undefined","tag","counter","SidebarBottom","navFooter","divider","toggleWrapper","SideNavigationOptionsToggle","appearance","onExpandedChange","displayName","data-pendo","toggle","toggleContent","toggleIconWrapper","toggleIcon","span","toggleText","placement","props","onExpandToggle","e","preventDefault","stopPropagation","sidebar","styles","popoverContent","SideNavigationGroupContent","parentId","groups","openOnHover","delay","Trigger","triggerProps","Content","style","submenuPopover","variant","el","title","reduce","out","group","index","links","trim","push","submenuGroupHeader","submenuGroupHeaderEmpty","link","children","list","child","navTop","navBottom"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { TitanLayoutLinkProps, TitanLayoutTriggerProps } from './interface';
|
|
3
|
+
export declare const TitanLayoutLink: FC<TitanLayoutLinkProps>;
|
|
4
|
+
export declare const TitanLayoutTrigger: FC<TitanLayoutTriggerProps>;
|
|
5
|
+
//# sourceMappingURL=titan-layout-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"titan-layout-links.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout-links.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAK5E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAYpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAY1D,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useTitanLayoutPlacementContext } from './layout-context';
|
|
3
|
+
import { LayoutHeaderNavigationLink, LayoutHeaderNavigationTrigger } from './layout-header-links';
|
|
4
|
+
import { LayoutSidebarLink, LayoutSidebarTrigger } from './layout-sidebar-links';
|
|
5
|
+
export const TitanLayoutLink = (props)=>{
|
|
6
|
+
const placement = useTitanLayoutPlacementContext();
|
|
7
|
+
if (placement === 'top') {
|
|
8
|
+
return /*#__PURE__*/ _jsx(LayoutHeaderNavigationLink, {
|
|
9
|
+
...props
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
if (placement === 'side') {
|
|
13
|
+
return /*#__PURE__*/ _jsx(LayoutSidebarLink, {
|
|
14
|
+
...props
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
export const TitanLayoutTrigger = (props)=>{
|
|
20
|
+
const placement = useTitanLayoutPlacementContext();
|
|
21
|
+
if (placement === 'top') {
|
|
22
|
+
return /*#__PURE__*/ _jsx(LayoutHeaderNavigationTrigger, {
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (placement === 'side') {
|
|
27
|
+
return /*#__PURE__*/ _jsx(LayoutSidebarTrigger, {
|
|
28
|
+
...props
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=titan-layout-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/titan-layout/titan-layout-links.tsx"],"sourcesContent":["import { FC } from 'react';\n\nimport { TitanLayoutLinkProps, TitanLayoutTriggerProps } from './interface';\nimport { useTitanLayoutPlacementContext } from './layout-context';\nimport { LayoutHeaderNavigationLink, LayoutHeaderNavigationTrigger } from './layout-header-links';\nimport { LayoutSidebarLink, LayoutSidebarTrigger } from './layout-sidebar-links';\n\nexport const TitanLayoutLink: FC<TitanLayoutLinkProps> = props => {\n const placement = useTitanLayoutPlacementContext();\n\n if (placement === 'top') {\n return <LayoutHeaderNavigationLink {...props} />;\n }\n\n if (placement === 'side') {\n return <LayoutSidebarLink {...props} />;\n }\n\n return null;\n};\n\nexport const TitanLayoutTrigger: FC<TitanLayoutTriggerProps> = props => {\n const placement = useTitanLayoutPlacementContext();\n\n if (placement === 'top') {\n return <LayoutHeaderNavigationTrigger {...props} />;\n }\n\n if (placement === 'side') {\n return <LayoutSidebarTrigger {...props} />;\n }\n\n return null;\n};\n"],"names":["useTitanLayoutPlacementContext","LayoutHeaderNavigationLink","LayoutHeaderNavigationTrigger","LayoutSidebarLink","LayoutSidebarTrigger","TitanLayoutLink","props","placement","TitanLayoutTrigger"],"mappings":";AAGA,SAASA,8BAA8B,QAAQ,mBAAmB;AAClE,SAASC,0BAA0B,EAAEC,6BAA6B,QAAQ,wBAAwB;AAClG,SAASC,iBAAiB,EAAEC,oBAAoB,QAAQ,yBAAyB;AAEjF,OAAO,MAAMC,kBAA4CC,CAAAA;IACrD,MAAMC,YAAYP;IAElB,IAAIO,cAAc,OAAO;QACrB,qBAAO,KAACN;YAA4B,GAAGK,KAAK;;IAChD;IAEA,IAAIC,cAAc,QAAQ;QACtB,qBAAO,KAACJ;YAAmB,GAAGG,KAAK;;IACvC;IAEA,OAAO;AACX,EAAE;AAEF,OAAO,MAAME,qBAAkDF,CAAAA;IAC3D,MAAMC,YAAYP;IAElB,IAAIO,cAAc,OAAO;QACrB,qBAAO,KAACL;YAA+B,GAAGI,KAAK;;IACnD;IAEA,IAAIC,cAAc,QAAQ;QACtB,qBAAO,KAACH;YAAsB,GAAGE,KAAK;;IAC1C;IAEA,OAAO;AACX,EAAE"}
|
|
@@ -3,7 +3,6 @@ import { NavigationItemData } from '../../utils/navigation';
|
|
|
3
3
|
import { NavLinkComponentProps } from '../../utils/navigation-context';
|
|
4
4
|
import { TitanLayoutState } from './interface';
|
|
5
5
|
import { TitanLayoutLogoProps } from './layout-logo';
|
|
6
|
-
import { TitanLayoutSidebarLink, TitanLayoutSidebarTrigger } from './layout-sidebar-links';
|
|
7
6
|
export type TitanLayoutProps = Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'style'> & {
|
|
8
7
|
/** layout appearance */
|
|
9
8
|
appearance?: 'legacy' | 'anvil1' | 'anvil2';
|
|
@@ -33,7 +32,7 @@ export type TitanLayoutProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'
|
|
|
33
32
|
minContentWidth?: number;
|
|
34
33
|
};
|
|
35
34
|
export declare const TitanLayout: FC<TitanLayoutProps> & {
|
|
36
|
-
Link:
|
|
37
|
-
Trigger:
|
|
35
|
+
Link: FC<import("./interface").TitanLayoutLinkProps>;
|
|
36
|
+
Trigger: FC<import("./interface").TitanLayoutTriggerProps>;
|
|
38
37
|
};
|
|
39
38
|
//# sourceMappingURL=titan-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"titan-layout.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EAEH,wBAAwB,EACxB,EAAE,
|
|
1
|
+
{"version":3,"file":"titan-layout.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EAEH,wBAAwB,EACxB,EAAE,EAGF,YAAY,EACZ,SAAS,EAMZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAA2B,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAOrD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACzF,wBAAwB;IACxB,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE5C,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE5B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAEhD,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE3C,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAE/C,iBAAiB;IACjB,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAE5B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAElD,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAyXF,eAAO,MAAM,WAAW;;;CAGtB,CAAC"}
|
|
@@ -7,9 +7,9 @@ import { LayoutContext, LayoutPlacementContext } from './layout-context';
|
|
|
7
7
|
import { LayoutHeader } from './layout-header';
|
|
8
8
|
import { LayoutHeaderDark } from './layout-header-dark';
|
|
9
9
|
import { LayoutSidebar } from './layout-sidebar';
|
|
10
|
-
import { TitanLayoutSidebarLink, TitanLayoutSidebarTrigger } from './layout-sidebar-links';
|
|
11
10
|
import { InternalSideNavigationTrigger } from './layout-sidebar-links-internal';
|
|
12
11
|
import { useNotificationsState } from './notifications-context';
|
|
12
|
+
import { TitanLayoutLink, TitanLayoutTrigger } from './titan-layout-links';
|
|
13
13
|
import * as Styles from './titan-layout.module.less';
|
|
14
14
|
const defaultSidebarContext = {
|
|
15
15
|
styles: {
|
|
@@ -338,8 +338,8 @@ const LayoutContentLegacy = ({ children, minWidth })=>{
|
|
|
338
338
|
});
|
|
339
339
|
};
|
|
340
340
|
export const TitanLayout = Object.assign(TitanLayoutComponent, {
|
|
341
|
-
Link:
|
|
342
|
-
Trigger:
|
|
341
|
+
Link: TitanLayoutLink,
|
|
342
|
+
Trigger: TitanLayoutTrigger
|
|
343
343
|
});
|
|
344
344
|
|
|
345
345
|
//# sourceMappingURL=titan-layout.js.map
|