@servicetitan/navigation 8.1.7 → 8.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/components/header-navigation/header-navigation-links.d.ts.map +1 -1
  2. package/dist/components/header-navigation/header-navigation-links.js +1 -1
  3. package/dist/components/header-navigation/header-navigation-links.js.map +1 -1
  4. package/dist/components/layout.stories.d.ts +1 -0
  5. package/dist/components/layout.stories.d.ts.map +1 -1
  6. package/dist/components/layout.stories.js +6 -2
  7. package/dist/components/layout.stories.js.map +1 -1
  8. package/dist/components/left-navigation/header-navigation-tiny.stories.js +1 -1
  9. package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +1 -1
  10. package/dist/components/left-navigation/side-navigation.d.ts.map +1 -1
  11. package/dist/components/left-navigation/side-navigation.js +40 -5
  12. package/dist/components/left-navigation/side-navigation.js.map +1 -1
  13. package/dist/components/left-navigation/side-navigation.module.less +119 -2
  14. package/dist/components/left-navigation/side-navigation.stories.d.ts +1 -0
  15. package/dist/components/left-navigation/side-navigation.stories.d.ts.map +1 -1
  16. package/dist/components/left-navigation/side-navigation.stories.js +19 -2
  17. package/dist/components/left-navigation/side-navigation.stories.js.map +1 -1
  18. package/dist/test/data.d.ts +4 -0
  19. package/dist/test/data.d.ts.map +1 -1
  20. package/dist/test/data.js +83 -7
  21. package/dist/test/data.js.map +1 -1
  22. package/dist/utils/navigation.d.ts +23 -9
  23. package/dist/utils/navigation.d.ts.map +1 -1
  24. package/package.json +2 -2
  25. package/src/components/header-navigation/header-navigation-links.tsx +2 -0
  26. package/src/components/layout.stories.tsx +19 -1
  27. package/src/components/left-navigation/header-navigation-tiny.stories.tsx +1 -1
  28. package/src/components/left-navigation/side-navigation.module.less +119 -2
  29. package/src/components/left-navigation/side-navigation.module.less.d.ts +7 -0
  30. package/src/components/left-navigation/side-navigation.stories.tsx +33 -2
  31. package/src/components/left-navigation/side-navigation.tsx +173 -13
  32. package/src/test/data.tsx +99 -8
  33. package/src/utils/navigation.ts +31 -13
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/test/data.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/test/data.tsx"],"names":[],"mappings":"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"}
@@ -2,17 +2,9 @@ import { IconProps } from '@servicetitan/anvil2';
2
2
  import { IconPropsStrict } from '@servicetitan/design-system';
3
3
  import { FC, HTMLAttributeAnchorTarget, ReactNode } from 'react';
4
4
  import { CounterTagPropsType } from '../components/counter-tag';
5
- export interface HeaderNavigationItemData {
6
- /** link id */
7
- id: string;
8
- /** link href */
9
- to: string;
10
- /** link title */
11
- title: string;
5
+ export interface HeaderNavigationItemData extends HeaderNavigationItemLinkProps {
12
6
  /** link description */
13
7
  hint: string;
14
- /** callback to return active state. By default, it compares link href with current pathname */
15
- isActive?: boolean | ((pathname: string) => boolean);
16
8
  /** flag if the link is not shown (based on FG and/or user permissions) */
17
9
  isHidden?: boolean;
18
10
  /** custom className (can be used for mdi icons) */
@@ -29,6 +21,28 @@ export interface HeaderNavigationItemData {
29
21
  counter?: CounterTagPropsType;
30
22
  /** class name of link item */
31
23
  className?: string;
24
+ /** optional submenu of link item */
25
+ submenu?: HeaderNavigationItemSubmenu;
26
+ }
27
+ export interface HeaderNavigationItemLinkProps {
28
+ /** link id */
29
+ id: string;
30
+ /** link href */
31
+ to: string;
32
+ /** link title */
33
+ title: string;
34
+ /** callback to return active state. By default, it compares link href with current pathname */
35
+ isActive?: boolean | ((pathname: string) => boolean);
36
+ }
37
+ export interface HeaderNavigationItemSubmenu {
38
+ /** submenu groups */
39
+ groups: HeaderNavigationItemSubmenuGroup[];
40
+ }
41
+ export interface HeaderNavigationItemSubmenuGroup {
42
+ /** submenu group title */
43
+ title: string;
44
+ /** submenu group links */
45
+ links: HeaderNavigationItemLinkProps[];
32
46
  }
33
47
  export interface NavLinkComponentPropsStrict {
34
48
  to: string;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/utils/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/utils/navigation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/navigation",
3
- "version": "8.1.7",
3
+ "version": "8.2.1",
4
4
  "description": "Navigation components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,5 +43,5 @@
43
43
  "less": true,
44
44
  "webpack": false
45
45
  },
46
- "gitHead": "643b0ec4f793cf32a7db4fa1c465a9f6c2608af4"
46
+ "gitHead": "2ae74c8a331e4aa2d746832710cc6b9b108c005a"
47
47
  }
@@ -14,6 +14,8 @@ export const HeaderNavigationLink: FC<HeaderNavigationLinkProps> = ({
14
14
  tooltip,
15
15
  counter,
16
16
  className,
17
+ icon,
18
+ iconActive,
17
19
  iconClassName,
18
20
  iconComponent,
19
21
  iconName,
@@ -1,4 +1,5 @@
1
- import { withAnvil, withMemoryRouter } from '../test/data';
1
+ import { Page, Sidebar } from '@servicetitan/design-system';
2
+ import { LocationInfo, withAnvil, withMemoryRouter } from '../test/data';
2
3
  import {
3
4
  WithAllMonolithData,
4
5
  WithAllMonolithDataCommercial,
@@ -6,6 +7,7 @@ import {
6
7
  import {
7
8
  DefaultSideNavigation,
8
9
  SideNavigationLinksOnly,
10
+ SideNavigationWithSubmenu,
9
11
  } from './left-navigation/side-navigation.stories';
10
12
 
11
13
  export default {
@@ -49,3 +51,19 @@ export const LeftNavLayoutOnlyLinks = () => {
49
51
  </div>
50
52
  );
51
53
  };
54
+
55
+ export const LeftNavLayoutSubmenu = () => {
56
+ return (
57
+ <div className="d-f border flex-column" style={{ height: '800px' }}>
58
+ <WithAllMonolithDataCommercial />
59
+ <div className="flex-grow-1 flex-basis-0 d-f">
60
+ <SideNavigationWithSubmenu />
61
+ <div className="flex-grow-1 flex-basis-0">
62
+ <Page sidebar={<Sidebar localStorageKey="undefined">sidebar</Sidebar>}>
63
+ <LocationInfo />
64
+ </Page>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ );
69
+ };
@@ -107,7 +107,7 @@ export const WithAllMonolithData = () => (
107
107
 
108
108
  export const WithAllMonolithDataCommercial = () => (
109
109
  <HeaderNavigationTiny
110
- className="border-bottom"
110
+ className="border-bottom z-global-nav"
111
111
  left={
112
112
  <Flex alignItems="center">
113
113
  <LogoTitan mantleFill="#2270EE" className="p-x-half" size={48} />
@@ -4,7 +4,7 @@
4
4
  @text-color: var(--colorsTextInverted, @color-white);
5
5
  @text-color-active: var(--colorsTextPrimarySubdued, @color-blue-300);
6
6
  @border-color: var(--colorsTextOnGrey, @color-neutral-200);
7
- @bg-color: var(--colorsSurfaceInvertedStrong, @color-neutral-400);
7
+ @bg-color: #0f1d26;
8
8
  @bg-color-hover: rgba(255, 255, 255, 0.08);
9
9
  @bg-color-active: rgba(120, 187, 250, 0.2);
10
10
 
@@ -51,6 +51,10 @@
51
51
  margin: 2px @spacing-half @spacing-0;
52
52
  text-align: center;
53
53
  }
54
+
55
+ .navigation-item-text.navigation-item-text-small {
56
+ font-size: 10.5px;
57
+ }
54
58
  }
55
59
 
56
60
  .options-item {
@@ -75,7 +79,7 @@
75
79
 
76
80
  .navigation-item-icon-wrapper {
77
81
  flex: 1;
78
- padding: @spacing-1;
82
+ padding: @spacing-1 @spacing-half;
79
83
  }
80
84
 
81
85
  .navigation-item-text {
@@ -187,6 +191,11 @@
187
191
  font-weight: @font-weight-semibold;
188
192
  }
189
193
 
194
+ .navigation-item-group-toggle[data-anv][data-anv] {
195
+ color: inherit;
196
+ font-weight: @font-weight-semibold;
197
+ }
198
+
190
199
  .navigation-icon[data-anv][data-anv] {
191
200
  height: 24px;
192
201
  width: 24px;
@@ -199,6 +208,114 @@
199
208
  }
200
209
  }
201
210
 
211
+ .submenu {
212
+ margin-left: @spacing-3;
213
+ padding-left: @spacing-1;
214
+ padding-right: @spacing-1;
215
+ margin-bottom: @spacing-1;
216
+ position: relative;
217
+
218
+ &:before {
219
+ content: '';
220
+ position: absolute;
221
+ border-left: 1px solid @color-neutral-100;
222
+ width: 1px;
223
+ top: @spacing-2;
224
+ bottom: @spacing-1;
225
+ left: 0;
226
+ }
227
+
228
+ .submenu-group-header[data-anv][data-anv] {
229
+ padding-top: @spacing-2;
230
+ padding-bottom: @spacing-half;
231
+ }
232
+
233
+ .submenu-link {
234
+ padding: @spacing-1;
235
+ }
236
+
237
+ .submenu-link-active {
238
+ position: relative;
239
+ }
240
+
241
+ .submenu-link-active:before {
242
+ content: '';
243
+ position: absolute;
244
+ background-color: @text-color-active;
245
+ width: 3px;
246
+ top: @spacing-1;
247
+ bottom: @spacing-1;
248
+ left: -12px;
249
+ }
250
+
251
+ .submenu-link:before:not(.submenu-link-active) {
252
+ background-color: @bg-color-hover;
253
+ }
254
+
255
+ > *,
256
+ > *[data-anv][data-anv] {
257
+ border-left: 3px solid transparent;
258
+ padding-left: @spacing-1;
259
+ }
260
+
261
+ > *:last-child {
262
+ margin-bottom: @spacing-0;
263
+ }
264
+ }
265
+
266
+ .submenu-popover {
267
+ margin-left: -@spacing-1;
268
+ margin-right: -@spacing-1;
269
+ min-width: 240px;
270
+
271
+ .submenu-group-header[data-anv][data-anv] {
272
+ margin-top: @spacing-2;
273
+ padding-bottom: @spacing-half;
274
+ }
275
+
276
+ .submenu-link {
277
+ padding-top: @spacing-1;
278
+ padding-bottom: @spacing-1;
279
+ }
280
+
281
+ .submenu-link-active {
282
+ background-color: @bg-color-active;
283
+ }
284
+ .submenu-link:hover:not(.submenu-link-active) {
285
+ background-color: @bg-color-hover;
286
+ }
287
+
288
+ > *,
289
+ > *[data-anv][data-anv] {
290
+ padding-left: @spacing-1;
291
+ padding-right: @spacing-1;
292
+ }
293
+ }
294
+
295
+ .submenu,
296
+ .submenu-popover {
297
+ display: flex;
298
+ flex-direction: column;
299
+
300
+ .submenu-group-header[data-anv][data-anv] {
301
+ color: @color-neutral-70;
302
+ }
303
+
304
+ .submenu-link {
305
+ color: @text-color;
306
+ font-size: @typescale-2;
307
+ border-radius: @border-radius-2;
308
+ }
309
+
310
+ .submenu-link-active {
311
+ color: @text-color-active;
312
+ }
313
+
314
+ .submenu-link:hover:not(.submenu-link-active) {
315
+ background-color: @bg-color-hover;
316
+ }
317
+ }
318
+
202
319
  .options-item {
203
320
  font-family: @base-font-family;
204
321
  color: @text-color;
@@ -6,9 +6,11 @@ export const navigationIconInactive: string;
6
6
  export const navigationItem: string;
7
7
  export const navigationItemActive: string;
8
8
  export const navigationItemCounter: string;
9
+ export const navigationItemGroupToggle: string;
9
10
  export const navigationItemIconSwitch: string;
10
11
  export const navigationItemIconWrapper: string;
11
12
  export const navigationItemText: string;
13
+ export const navigationItemTextSmall: string;
12
14
  export const optionsIcon: string;
13
15
  export const optionsIconWrapper: string;
14
16
  export const optionsItem: string;
@@ -19,4 +21,9 @@ export const sideNavContent: string;
19
21
  export const sideNavExpanded: string;
20
22
  export const sideNavSlim: string;
21
23
  export const sideNavTop: string;
24
+ export const submenu: string;
25
+ export const submenuGroupHeader: string;
26
+ export const submenuLink: string;
27
+ export const submenuLinkActive: string;
28
+ export const submenuPopover: string;
22
29
 
@@ -1,12 +1,17 @@
1
+ import { Page, Sidebar } from '@servicetitan/design-system';
1
2
  import { ComponentType, useState } from 'react';
2
- import { items, withAnvil, withMemoryRouter } from '../../test/data';
3
+ import { LocationInfo, items, withAnvil, withMemoryRouter } from '../../test/data';
3
4
  import { SideNavigation } from './';
4
5
 
5
6
  const layout = (Story: ComponentType) => {
6
7
  return (
7
8
  <div className="d-f border" style={{ height: '800px' }}>
8
9
  <Story />
9
- <div className="flex-grow-1 flex-basis-0" />
10
+ <div className="flex-grow-1 flex-basis-0">
11
+ <Page sidebar={<Sidebar localStorageKey="undefined">qq</Sidebar>}>
12
+ <LocationInfo />
13
+ </Page>
14
+ </div>
10
15
  </div>
11
16
  );
12
17
  };
@@ -69,3 +74,29 @@ export const SideNavigationLinksOnly = () => {
69
74
  />
70
75
  );
71
76
  };
77
+
78
+ export const SideNavigationWithSubmenu = () => {
79
+ const [expanded, setExpanded] = useState(false);
80
+ return (
81
+ <SideNavigation
82
+ expanded={expanded}
83
+ onExpandedChange={setExpanded}
84
+ items={[
85
+ items.dashboard,
86
+ items.calls,
87
+ items.schedule,
88
+ items.dispatch,
89
+
90
+ items.accountingWithSubmenu,
91
+ items.purchasingWithSubmenu,
92
+
93
+ items.followUpsWithSubmenu,
94
+ items.reports,
95
+ items.marketing,
96
+ items.priceBook,
97
+
98
+ items.projects,
99
+ ]}
100
+ />
101
+ );
102
+ };
@@ -1,9 +1,27 @@
1
- import { Icon } from '@servicetitan/anvil2';
1
+ import { Icon, Popover, PopoverTriggerProps, Text } from '@servicetitan/anvil2';
2
+ import SvgGroupCollapse from '@servicetitan/anvil2/assets/icons/material/round/expand_less.svg';
3
+ import SvgGroupExpand from '@servicetitan/anvil2/assets/icons/material/round/expand_more.svg';
2
4
  import SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';
3
5
  import SvgExpand from '@servicetitan/anvil2/assets/icons/st/gnav_menu_expand.svg';
6
+ import { Collapsible, Headline } from '@servicetitan/design-system';
7
+
4
8
  import classNames from 'classnames';
5
- import { FC, Fragment, useContext } from 'react';
6
- import { HeaderNavigationItemData, NavLinkComponentProps } from '../../utils/navigation';
9
+ import {
10
+ CSSProperties,
11
+ FC,
12
+ Fragment,
13
+ MouseEvent,
14
+ ReactElement,
15
+ useCallback,
16
+ useContext,
17
+ useState,
18
+ } from 'react';
19
+ import {
20
+ HeaderNavigationItemData,
21
+ HeaderNavigationItemLinkProps,
22
+ HeaderNavigationItemSubmenu,
23
+ NavLinkComponentProps,
24
+ } from '../../utils/navigation';
7
25
  import { NavigationComponentContext } from '../../utils/navigation-context';
8
26
  import { CounterTag } from '../counter-tag';
9
27
  import * as Styles from './side-navigation.module.less';
@@ -59,14 +77,23 @@ export const SideNavigation: FC<SideNavigationProps> = ({
59
77
  </Fragment>
60
78
  )}
61
79
  <div className={Styles.sideNavContent} data-cy="navigation-items">
62
- {items?.map(item => (
63
- <SideNavigationItem
64
- key={item.id}
65
- expanded={expanded}
66
- navigationComponent={NavigationComponent}
67
- {...item}
68
- />
69
- ))}
80
+ {items?.map(item =>
81
+ item.submenu ? (
82
+ <SideNavigationGroupItem
83
+ key={item.id}
84
+ expanded={expanded}
85
+ navigationComponent={NavigationComponent}
86
+ {...item}
87
+ />
88
+ ) : (
89
+ <SideNavigationItem
90
+ key={item.id}
91
+ expanded={expanded}
92
+ navigationComponent={NavigationComponent}
93
+ {...item}
94
+ />
95
+ )
96
+ )}
70
97
  </div>
71
98
  <div className={Styles.divider} />
72
99
  <div className={Styles.sideNavBottom}>
@@ -79,14 +106,19 @@ export const SideNavigation: FC<SideNavigationProps> = ({
79
106
  );
80
107
  };
81
108
 
82
- interface SideNavigationItemProps extends HeaderNavigationItemData {
109
+ interface NavigationComponentProps {
83
110
  navigationComponent: FC<NavLinkComponentProps>;
111
+ }
112
+
113
+ interface SideNavigationItemProps extends HeaderNavigationItemData, NavigationComponentProps {
84
114
  expanded?: boolean;
115
+ submenuExpanded?: boolean;
85
116
  }
86
117
 
87
118
  /** Side Navigation menu item */
88
119
  const SideNavigationItem: FC<SideNavigationItemProps> = ({
89
120
  id,
121
+ submenuExpanded,
90
122
  to,
91
123
  title,
92
124
  hint,
@@ -101,6 +133,7 @@ const SideNavigationItem: FC<SideNavigationItemProps> = ({
101
133
  expanded,
102
134
  }) => {
103
135
  const iconSwitch = !!icon && !!iconActive && !IconComponent;
136
+ const hasSubmenu = submenuExpanded === true || submenuExpanded === false;
104
137
 
105
138
  return (
106
139
  <NavigationComponent
@@ -150,9 +183,136 @@ const SideNavigationItem: FC<SideNavigationItemProps> = ({
150
183
  {!!counter && (
151
184
  <CounterTag data={counter} className={Styles.navigationItemCounter} />
152
185
  )}
186
+ {hasSubmenu && !!expanded && (
187
+ <Icon
188
+ svg={submenuExpanded ? SvgGroupCollapse : SvgGroupExpand}
189
+ className={Styles.navigationItemGroupToggle}
190
+ />
191
+ )}
153
192
  </div>
154
193
 
155
- {!expanded && <div className={Styles.navigationItemText}>{title}</div>}
194
+ {!expanded && (
195
+ <div
196
+ className={classNames(Styles.navigationItemText, {
197
+ [Styles.navigationItemTextSmall]: title.length >= 10,
198
+ })}
199
+ >
200
+ {title}
201
+ </div>
202
+ )}
203
+ </NavigationComponent>
204
+ );
205
+ };
206
+
207
+ const submenuPopoverStyles = { '--background-color-strong': '#24323C' } as CSSProperties;
208
+
209
+ /** Side Navigation menu item */
210
+ const SideNavigationGroupItem: FC<SideNavigationItemProps> = ({ ...props }) => {
211
+ const [submenuExpanded, setSubmenuExpanded] = useState(false);
212
+ const triggerClick = useCallback(
213
+ (e: MouseEvent<HTMLDivElement>) => {
214
+ e.stopPropagation();
215
+ e.preventDefault();
216
+
217
+ if (props.expanded) {
218
+ setSubmenuExpanded(exp => !exp);
219
+ }
220
+ },
221
+ [props.expanded]
222
+ );
223
+
224
+ return props.expanded ? (
225
+ <Fragment>
226
+ <div onClickCapture={triggerClick}>
227
+ <SideNavigationItem {...props} submenuExpanded={submenuExpanded} />
228
+ </div>
229
+ <Collapsible open={submenuExpanded} animate>
230
+ <div className={Styles.submenu}>
231
+ <SideNavigationGroupContent
232
+ groups={props.submenu?.groups ?? []}
233
+ navigationComponent={props.navigationComponent}
234
+ />
235
+ </div>
236
+ </Collapsible>
237
+ </Fragment>
238
+ ) : (
239
+ <Popover placement="right-start" openOnHover>
240
+ <Popover.Trigger>
241
+ {(triggerProps: PopoverTriggerProps) => (
242
+ <div {...triggerProps} onClickCapture={triggerClick}>
243
+ <SideNavigationItem {...props} />
244
+ </div>
245
+ )}
246
+ </Popover.Trigger>
247
+ <Popover.Content style={submenuPopoverStyles} className="z-global-nav-i">
248
+ <div className={Styles.submenuPopover}>
249
+ <Headline size="small" className="c-white m-b-half-i m-t-1">
250
+ {props.title}
251
+ </Headline>
252
+ <SideNavigationGroupContent
253
+ groups={props.submenu?.groups ?? []}
254
+ navigationComponent={props.navigationComponent}
255
+ />
256
+ </div>
257
+ </Popover.Content>
258
+ </Popover>
259
+ );
260
+ };
261
+ const SideNavigationGroupContent: FC<HeaderNavigationItemSubmenu & NavigationComponentProps> = ({
262
+ groups,
263
+ navigationComponent,
264
+ }) => {
265
+ return (
266
+ <Fragment>
267
+ {groups.reduce((out, group) => {
268
+ if (!group.links.length) {
269
+ return out;
270
+ }
271
+
272
+ out.push(
273
+ <Text
274
+ key=":group:title"
275
+ variant="eyebrow"
276
+ className={Styles.submenuGroupHeader}
277
+ >
278
+ {group.title}
279
+ </Text>
280
+ );
281
+
282
+ out.push(
283
+ ...group.links.map(link => (
284
+ <SideNavigationGroupLink
285
+ key={link.id}
286
+ {...link}
287
+ navigationComponent={navigationComponent}
288
+ />
289
+ ))
290
+ );
291
+ return out;
292
+ }, [] as ReactElement[])}
293
+ </Fragment>
294
+ );
295
+ };
296
+ const SideNavigationGroupLink: FC<HeaderNavigationItemLinkProps & NavigationComponentProps> = ({
297
+ id,
298
+ title,
299
+ to,
300
+ isActive,
301
+ navigationComponent: NavigationComponent,
302
+ }) => {
303
+ return (
304
+ <NavigationComponent
305
+ data-cy={`navigation-item-${id}`}
306
+ data-pendo={`navigation-item-${id}`}
307
+ key={id}
308
+ to={to}
309
+ className={classNames(Styles.submenuLink, {
310
+ [Styles.submenuLinkActive]: isActive === true,
311
+ })}
312
+ isActive={typeof isActive === 'function' ? isActive : undefined}
313
+ activeClassName={Styles.submenuLinkActive}
314
+ >
315
+ {title}
156
316
  </NavigationComponent>
157
317
  );
158
318
  };