@servicetitan/navigation 11.0.0-canary.237.64cfcfe.0 → 11.0.0-canary.237.8fa0e61.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.
Files changed (44) hide show
  1. package/dist/components/header-navigation/header-navigation-stacked.stories.js +1 -1
  2. package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -1
  3. package/dist/components/header-navigation/header-navigation.stories.js +1 -1
  4. package/dist/components/header-navigation/header-navigation.stories.js.map +1 -1
  5. package/dist/components/left-navigation/header-navigation-tiny.stories.js +2 -2
  6. package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +1 -1
  7. package/dist/components/profile-dropdown/profile-dropdown.d.ts +10 -7
  8. package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
  9. package/dist/components/profile-dropdown/profile-dropdown.js +2 -2
  10. package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
  11. package/dist/components/titan-layout/layout-header.module.less +22 -4
  12. package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
  13. package/dist/components/titan-layout/layout-profile.js +14 -4
  14. package/dist/components/titan-layout/layout-profile.js.map +1 -1
  15. package/dist/components/titan-layout/layout-profile.stories.d.ts.map +1 -1
  16. package/dist/components/titan-layout/layout-profile.stories.js +1 -1
  17. package/dist/components/titan-layout/layout-profile.stories.js.map +1 -1
  18. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
  19. package/dist/components/titan-layout/layout-sidebar-links-internal.js +2 -2
  20. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  21. package/dist/components/titan-layout/layout-sidebar.module.less +1 -1
  22. package/dist/components/titan-layout/titan-layout.d.ts +1 -0
  23. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  24. package/dist/components/titan-layout/titan-layout.js +16 -6
  25. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  26. package/dist/components/titan-layout/titan-layout.module.less +34 -15
  27. package/dist/components/titan-layout/titan-layout.stories.d.ts +4 -0
  28. package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
  29. package/dist/components/titan-layout/titan-layout.stories.js +14 -4
  30. package/dist/components/titan-layout/titan-layout.stories.js.map +1 -1
  31. package/package.json +2 -2
  32. package/src/components/header-navigation/header-navigation-stacked.stories.tsx +1 -1
  33. package/src/components/header-navigation/header-navigation.stories.tsx +1 -1
  34. package/src/components/left-navigation/header-navigation-tiny.stories.tsx +2 -2
  35. package/src/components/profile-dropdown/profile-dropdown.tsx +13 -6
  36. package/src/components/titan-layout/layout-header.module.less +22 -4
  37. package/src/components/titan-layout/layout-profile.stories.tsx +10 -1
  38. package/src/components/titan-layout/layout-profile.tsx +24 -8
  39. package/src/components/titan-layout/layout-sidebar-links-internal.tsx +12 -2
  40. package/src/components/titan-layout/layout-sidebar.module.less +1 -1
  41. package/src/components/titan-layout/titan-layout.module.less +34 -15
  42. package/src/components/titan-layout/titan-layout.module.less.d.ts +1 -1
  43. package/src/components/titan-layout/titan-layout.stories.tsx +111 -5
  44. package/src/components/titan-layout/titan-layout.tsx +45 -11
@@ -13,7 +13,7 @@
13
13
  margin-top: var(--nav-offset-top);
14
14
 
15
15
  display: flex;
16
- flex-direction: row;
16
+ flex-direction: column;
17
17
 
18
18
  .side {
19
19
  flex-basis: var(--nav-offset-left);
@@ -31,30 +31,31 @@
31
31
  }
32
32
 
33
33
  .layout-anvil2 {
34
- .header {
34
+ .content-header {
35
35
  position: sticky;
36
36
  top: var(--nav-offset-top);
37
37
  z-index: 989;
38
38
  }
39
39
  }
40
40
 
41
- .layout-legacy,
42
- .layout-anvil2 {
41
+ .layout-desktop {
43
42
  padding-left: var(--nav-offset-left);
44
43
 
45
- .top-placeholder {
46
- height: var(--nav-offset-top);
44
+ .side {
45
+ position: fixed;
46
+ top: var(--nav-offset-top);
47
+ bottom: 0;
48
+ left: 0;
49
+ right: 0;
50
+ z-index: @z-index-global-nav;
47
51
  }
52
+ }
48
53
 
49
- &.layout-desktop {
50
- .side {
51
- position: fixed;
52
- top: var(--nav-offset-top);
53
- bottom: 0;
54
- left: 0;
55
- right: 0;
56
- z-index: @z-index-global-nav;
57
- }
54
+ .layout-legacy,
55
+ .layout-anvil2 {
56
+ overflow-x: auto;
57
+ .top-placeholder {
58
+ height: var(--nav-offset-top);
58
59
  }
59
60
  }
60
61
 
@@ -81,4 +82,22 @@
81
82
  right: 0;
82
83
  z-index: 991;
83
84
  }
85
+
86
+ .content-header {
87
+ position: sticky;
88
+ left: 0;
89
+ right: 0;
90
+ }
91
+ }
92
+
93
+ @media print {
94
+ .layout {
95
+ --nav-offset-left: 0px !important;
96
+ --nav-offset-right: 0px !important;
97
+
98
+ .side,
99
+ .top {
100
+ display: none !important;
101
+ }
102
+ }
84
103
  }
@@ -2,6 +2,10 @@ interface LayoutContentArgs {
2
2
  header: boolean;
3
3
  sideTop: boolean;
4
4
  extraText: boolean;
5
+ search: boolean;
6
+ longContent: boolean;
7
+ wideContent: boolean;
8
+ minWidth: boolean;
5
9
  }
6
10
  declare const _default: {
7
11
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"titan-layout.stories.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.stories.tsx"],"names":[],"mappings":"AAsBA,UAAU,iBAAiB;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACtB;;;;;;UAWQ,iBAAiB;;AAT1B,wBAUE;AAgKF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CAOxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CASxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CAWxD,CAAC"}
1
+ {"version":3,"file":"titan-layout.stories.d.ts","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.stories.tsx"],"names":[],"mappings":"AAsBA,UAAU,iBAAiB;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACrB;;;;;;UAeQ,iBAAiB;;AAb1B,wBAcE;AAgQF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CASxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CASxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,iBAAiB,4CAWxD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Announcement, Page as Anvil2Page, Button, Popover } from '@servicetitan/anvil2';
2
+ import { Announcement, Page as Anvil2Page, Button, Popover, TextField } from '@servicetitan/anvil2';
3
3
  import SvgSearch from '@servicetitan/anvil2/assets/icons/material/round/search.svg';
4
4
  import SvgAtlas from '@servicetitan/anvil2/assets/icons/st/atlas_logo.svg';
5
5
  import SvgSettingsActive from '@servicetitan/anvil2/assets/icons/st/gnav_settings_active.svg';
@@ -20,6 +20,10 @@ export default {
20
20
  header: true,
21
21
  sideTop: true,
22
22
  extraText: true,
23
+ search: true,
24
+ longContent: true,
25
+ wideContent: false,
26
+ minWidth: false,
23
27
  },
24
28
  };
25
29
  const mainNavItems = [
@@ -51,6 +55,7 @@ const ContentHeader = () => {
51
55
  const [longInfo, setLongInfo] = useState(false);
52
56
  return (_jsxs(Fragment, { children: [_jsx(Announcement, { title: "Some info", status: "info" }), _jsx(Announcement, { title: "Some warning", status: "warning" }), _jsx("div", { className: "d-f justify-content-center align-items-center bg-purple-100-i", style: { height: longInfo ? '120px' : '48px' }, children: _jsxs("div", { className: "d-f align-items-center gap-1", children: ["custom content", ' ', _jsx(Button, { onClick: () => setLongInfo(!longInfo), size: "small", "aria-label": "test", children: longInfo ? '↑' : '↓' })] }) })] }));
53
57
  };
58
+ const SearchBar = () => _jsx(TextField, { size: "small", placeholder: "Search", className: "w-100-i" });
54
59
  const useLayoutProps = (args) => {
55
60
  const [state, setState] = useState(undefined);
56
61
  return {
@@ -59,14 +64,19 @@ const useLayoutProps = (args) => {
59
64
  navigationComponent: NavLinkMock,
60
65
  navigationMainItems: mainNavItems,
61
66
  profile,
67
+ top: args.search ? _jsx(SearchBar, {}) : undefined,
62
68
  header: args.header ? _jsx(ContentHeader, {}) : undefined,
63
69
  extraLinks,
64
70
  extraLinksTop,
65
71
  extraText: args.extraText ? 'EST (-8 hrs)' : undefined,
66
72
  sideTop: args.sideTop ? sidebarTop() : undefined,
73
+ minContentWidth: args.minWidth ? 900 : undefined,
67
74
  };
68
75
  };
69
- export const TitanLayoutLegacy = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "legacy", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx(LocationInfo, {}) })] }));
70
- export const TitanLayoutAnvil1 = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "anvil1", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx(Anvil1Page, { children: _jsx(LocationInfo, {}) }) })] }));
71
- export const TitanLayoutAnvil2 = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "anvil2", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx(Anvil2Page, { children: _jsx(Anvil2Page.Content, { children: _jsx(LocationInfo, {}) }) }) })] }));
76
+ const Content = (args) => {
77
+ return (_jsxs(Fragment, { children: [_jsx(LocationInfo, {}), args.wideContent && (_jsx("div", { style: { width: '1200px' }, children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." })), args.longContent && (_jsxs("div", { children: [_jsx("p", { children: "Lorem" }), _jsx("p", { children: "ipsum" }), _jsx("p", { children: "dolor" }), _jsx("p", { children: "sit" }), _jsx("p", { children: "amet," }), _jsx("p", { children: "consectetur" }), _jsx("p", { children: "adipiscing" }), _jsx("p", { children: "elit," }), _jsx("p", { children: "sed" }), _jsx("p", { children: "do" }), _jsx("p", { children: "eiusmod" }), _jsx("p", { children: "tempor" }), _jsx("p", { children: "incididunt" }), _jsx("p", { children: "ut" }), _jsx("p", { children: "labore" }), _jsx("p", { children: "et" }), _jsx("p", { children: "dolore" }), _jsx("p", { children: "magna" }), _jsx("p", { children: "aliqua." }), _jsx("p", { children: "Ut" }), _jsx("p", { children: "enim" }), _jsx("p", { children: "ad" }), _jsx("p", { children: "minim" }), _jsx("p", { children: "veniam," }), _jsx("p", { children: "quis" }), _jsx("p", { children: "nostrud" }), _jsx("p", { children: "exercitation" }), _jsx("p", { children: "ullamco" }), _jsx("p", { children: "laboris" }), _jsx("p", { children: "nisi" }), _jsx("p", { children: "ut" }), _jsx("p", { children: "aliquip" }), _jsx("p", { children: "ex" }), _jsx("p", { children: "ea" }), _jsx("p", { children: "commodo" }), _jsx("p", { children: "consequat." }), _jsx("p", { children: "Duis" }), _jsx("p", { children: "aute" }), _jsx("p", { children: "irure" }), _jsx("p", { children: "dolor" }), _jsx("p", { children: "in" }), _jsx("p", { children: "reprehenderit" }), _jsx("p", { children: "in" }), _jsx("p", { children: "voluptate" }), _jsx("p", { children: "velit" }), _jsx("p", { children: "esse" }), _jsx("p", { children: "cillum" }), _jsx("p", { children: "dolore" }), _jsx("p", { children: "eu" }), _jsx("p", { children: "fugiat" }), _jsx("p", { children: "nulla" }), _jsx("p", { children: "pariatur." }), _jsx("p", { children: "Excepteur" }), _jsx("p", { children: "sint" }), _jsx("p", { children: "occaecat" }), _jsx("p", { children: "cupidatat" }), _jsx("p", { children: "non" }), _jsx("p", { children: "proident," }), _jsx("p", { children: "sunt" }), _jsx("p", { children: "in" }), _jsx("p", { children: "culpa" }), _jsx("p", { children: "qui" }), _jsx("p", { children: "officia" }), _jsx("p", { children: "deserunt" }), _jsx("p", { children: "mollit" }), _jsx("p", { children: "anim" }), _jsx("p", { children: "id" }), _jsx("p", { children: "est" }), _jsx("p", { children: "laborum." })] }))] }));
78
+ };
79
+ export const TitanLayoutLegacy = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "legacy", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx("div", { className: "p-3", children: _jsx(Content, { ...args }) }) })] }));
80
+ export const TitanLayoutAnvil1 = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "anvil1", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx(Anvil1Page, { children: _jsx(Content, { ...args }) }) })] }));
81
+ export const TitanLayoutAnvil2 = (args) => (_jsxs(TitanLayout, { ...useLayoutProps(args), appearance: "anvil2", children: [_jsx(TitanLayout.Logo, { title: true }), _jsx(TitanLayout.Content, { children: _jsx(Anvil2Page, { children: _jsx(Anvil2Page.Content, { children: _jsx(Content, { ...args }) }) }) })] }));
72
82
  //# sourceMappingURL=titan-layout.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"titan-layout.stories.js","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.stories.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"titan-layout.stories.js","sourceRoot":"","sources":["../../../src/components/titan-layout/titan-layout.stories.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/navigation",
3
- "version": "11.0.0-canary.237.64cfcfe.0",
3
+ "version": "11.0.0-canary.237.8fa0e61.0",
4
4
  "description": "Navigation components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,5 +42,5 @@
42
42
  "less": true,
43
43
  "webpack": false
44
44
  },
45
- "gitHead": "64cfcfe344bbe0ad0d6a25cdae1c6e1b63bda41f"
45
+ "gitHead": "8fa0e618bbbcf41d7bed5aad072e382a9bd39d97"
46
46
  }
@@ -130,7 +130,7 @@ export const WithAllMonolithData = () => (
130
130
  Task Management
131
131
  </ProfileDropdown.Link>
132
132
  <ProfileDropdown.Divider />
133
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com">
133
+ <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
134
134
  Sign Out{' '}
135
135
  <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
136
136
  </ProfileDropdown.Link>
@@ -154,7 +154,7 @@ export const WithAllMonolithData = () => (
154
154
  Task Management
155
155
  </ProfileDropdown.Link>
156
156
  <ProfileDropdown.Divider />
157
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com">
157
+ <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
158
158
  Sign Out <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
159
159
  </ProfileDropdown.Link>
160
160
  <ProfileDropdown.Section id="userid" className="c-neutral-100 fs-1">
@@ -93,7 +93,7 @@ export const WithAllMonolithData = () => (
93
93
  Task Management
94
94
  </ProfileDropdown.Link>
95
95
  <ProfileDropdown.Divider />
96
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com">
96
+ <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
97
97
  Sign Out{' '}
98
98
  <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
99
99
  </ProfileDropdown.Link>
@@ -162,7 +162,7 @@ export const WithAllMonolithDataCommercial = () => (
162
162
  Task Management
163
163
  </ProfileDropdown.Link>
164
164
  <ProfileDropdown.Divider />
165
- <ProfileDropdown.Link id="sign-out" to="https://googgle.com">
165
+ <ProfileDropdown.Link id="sign-out" to="https://googgle.com" text="Sign Out">
166
166
  Sign Out{' '}
167
167
  <span className="c-neutral-100 m-l-half t-truncate">James Bond</span>
168
168
  </ProfileDropdown.Link>
@@ -6,6 +6,7 @@ import SvgAccountInactive from '@servicetitan/anvil2/assets/icons/st/gnav_accoun
6
6
  import { BodyText, Popover, PopoverPropsStrict } from '@servicetitan/design-system';
7
7
  import classNames from 'classnames';
8
8
  import {
9
+ ComponentPropsWithoutRef,
9
10
  FC,
10
11
  HTMLAttributeAnchorTarget,
11
12
  MouseEvent,
@@ -147,6 +148,10 @@ const ProfileDropdownTrigger: FC<ProfileDropdownTriggerProps> = ({
147
148
  );
148
149
  };
149
150
 
151
+ export type ProfileItemContent =
152
+ | { children: string; text?: string }
153
+ | { children: ReactNode; text: string };
154
+
150
155
  export interface ProfileDropdownSectionPropsStrict {
151
156
  children: ReactNode;
152
157
  id: string;
@@ -155,14 +160,15 @@ export interface ProfileDropdownSectionPropsStrict {
155
160
  onClick?(e: MouseEvent): void;
156
161
  }
157
162
 
158
- export interface ProfileDropdownSectionProps extends ProfileDropdownSectionPropsStrict {
159
- [key: string]: any;
160
- }
163
+ export type ProfileDropdownSectionProps = Omit<ComponentPropsWithoutRef<'div'>, 'children'> &
164
+ ProfileDropdownSectionPropsStrict &
165
+ ProfileItemContent;
161
166
 
162
167
  export const ProfileDropdownSection: FC<ProfileDropdownSectionProps> = ({
163
168
  children,
164
169
  className,
165
170
  id,
171
+ text,
166
172
  tooltip,
167
173
  onClick,
168
174
  ...rest
@@ -206,9 +212,9 @@ export interface ProfileDropdownLinkPropsStrict {
206
212
  counter?: CounterTagValue;
207
213
  }
208
214
 
209
- export interface ProfileDropdownLinkProps extends ProfileDropdownLinkPropsStrict {
210
- [key: string]: any;
211
- }
215
+ export type ProfileDropdownLinkProps = Omit<ComponentPropsWithoutRef<'a'>, 'children'> &
216
+ ProfileDropdownLinkPropsStrict &
217
+ ProfileItemContent;
212
218
 
213
219
  export const ProfileDropdownLink: FC<ProfileDropdownLinkProps> = ({
214
220
  children,
@@ -218,6 +224,7 @@ export const ProfileDropdownLink: FC<ProfileDropdownLinkProps> = ({
218
224
  counter,
219
225
  tag,
220
226
  target,
227
+ text,
221
228
  to,
222
229
  tooltip,
223
230
  onClick,
@@ -20,6 +20,10 @@
20
20
  align-items: center;
21
21
  }
22
22
 
23
+ .he-top-center {
24
+ overflow: hidden;
25
+ }
26
+
23
27
  .he-top-right {
24
28
  & > * {
25
29
  color: @color-black;
@@ -87,6 +91,7 @@
87
91
  // desktop
88
92
  @media only screen and (min-width: 768px) {
89
93
  .header {
94
+ height: var(--nav-offset-top);
90
95
  .navigation-link {
91
96
  margin: 6px 2px;
92
97
  padding: 6px 6px;
@@ -95,6 +100,12 @@
95
100
  .he-top-left {
96
101
  padding-left: @spacing-1;
97
102
  }
103
+ .he-top-center {
104
+ flex: 1;
105
+ margin-left: @spacing-2;
106
+ margin-right: @spacing-2;
107
+ max-width: 400px;
108
+ }
98
109
  }
99
110
  }
100
111
  // desktop wide
@@ -109,21 +120,28 @@
109
120
  .he-top-right {
110
121
  grid-column: span 1;
111
122
  }
123
+
124
+ .he-top-center {
125
+ max-width: unset;
126
+ }
112
127
  }
113
128
  }
114
129
 
115
130
  // mobile
116
131
  @media only screen and (max-width: 768px) {
117
132
  .header {
118
- display: grid;
119
- grid-template-columns: repeat(3, 1fr);
120
- grid-template-rows: 44px;
121
-
122
133
  padding: @spacing-1 @spacing-half;
123
134
 
124
135
  .navigation-link {
125
136
  padding: 10px;
126
137
  }
138
+
139
+ .he-top-center {
140
+ max-width: unset;
141
+ flex: 1;
142
+ margin-left: @spacing-3;
143
+ margin-right: @spacing-3;
144
+ }
127
145
  }
128
146
  }
129
147
 
@@ -18,7 +18,7 @@ export default {
18
18
 
19
19
  export const ProfileDefault = withTitanLayout(
20
20
  <ProfileDropdown>
21
- <ProfileDropdown.Link id="first" to="https://google.com">
21
+ <ProfileDropdown.Link id="first" to="https://google.com" external>
22
22
  first link
23
23
  </ProfileDropdown.Link>
24
24
  <ProfileDropdown.Section id="second" onClick={() => alert('second click')}>
@@ -33,5 +33,14 @@ export const ProfileDefault = withTitanLayout(
33
33
  third link
34
34
  </ProfileDropdown.Link>
35
35
  <ProfileDropdown.Divider />
36
+ <ProfileDropdown.Section
37
+ id="forth"
38
+ onClick={() => alert('forth click')}
39
+ text="Sign Out user"
40
+ >
41
+ Sign Out
42
+ <span className="c-neutral-60 m-l-1">user</span>
43
+ </ProfileDropdown.Section>
44
+ <ProfileDropdown.Divider />
36
45
  </ProfileDropdown>
37
46
  );
@@ -2,7 +2,7 @@ import SvgAccountActive from '@servicetitan/anvil2/assets/icons/st/gnav_account_
2
2
  import SvgAccountInactive from '@servicetitan/anvil2/assets/icons/st/gnav_account_inactive.svg';
3
3
 
4
4
  import { FC, useState } from 'react';
5
- import { NavigationComponentContext } from '../../utils/navigation-context';
5
+ import { NavLinkComponentProps, NavigationComponentContext } from '../../utils/navigation-context';
6
6
  import {
7
7
  ProfileDropdown as DesktopProfileDropdown,
8
8
  ProfileDropdownLinkProps,
@@ -24,6 +24,10 @@ export type {
24
24
  ProfileDropdownLinkProps,
25
25
  } from '../profile-dropdown/profile-dropdown';
26
26
 
27
+ const ExternalNavComponent: FC<NavLinkComponentProps> = ({ children, isActive, ...props }) => (
28
+ <a {...props}>{children}</a>
29
+ );
30
+
27
31
  const ProfileDropdownContent: FC<ProfileDropdownProps> = props => {
28
32
  const { breakpoint, NavigationComponent } = useTitanLayoutContext();
29
33
  return breakpoint.isMobile ? (
@@ -70,6 +74,18 @@ const ProfileDropdownDivider: FC = () => {
70
74
  );
71
75
  };
72
76
 
77
+ const getText = (props: any): string | undefined => {
78
+ if (typeof props.children === 'string') {
79
+ return props.children;
80
+ }
81
+
82
+ if (typeof props.text === 'string') {
83
+ return props.text;
84
+ }
85
+
86
+ return undefined;
87
+ };
88
+
73
89
  const ProfileDropdownSection: FC<ProfileDropdownSectionProps> = props => {
74
90
  const { breakpoint } = useTitanLayoutContext();
75
91
  return breakpoint.isMobile ? (
@@ -79,9 +95,9 @@ const ProfileDropdownSection: FC<ProfileDropdownSectionProps> = props => {
79
95
  );
80
96
  };
81
97
  const MobileProfileDropdownSection: FC<ProfileDropdownSectionProps> = props => {
82
- const title = typeof props.children === 'string' ? props.children : undefined;
83
- return title ? (
84
- <InternalSideNavigationGroupTrigger id={props.id} title={title} onClick={props.onClick} />
98
+ const text = getText(props);
99
+ return text ? (
100
+ <InternalSideNavigationGroupTrigger id={props.id} title={text} onClick={props.onClick} />
85
101
  ) : null;
86
102
  };
87
103
 
@@ -98,13 +114,13 @@ const MobileProfileDropdownLink: FC<ProfileDropdownLinkProps & NavigationCompone
98
114
  navigationComponent,
99
115
  ...props
100
116
  }) => {
101
- const title = typeof props.children === 'string' ? props.children : undefined;
102
- return title ? (
117
+ const text = getText(props);
118
+ return text ? (
103
119
  <InternalSideNavigationGroupLink
104
120
  {...props}
105
121
  to={to}
106
- title={title}
107
- navigationComponent={navigationComponent}
122
+ title={text}
123
+ navigationComponent={props.external ? ExternalNavComponent : navigationComponent}
108
124
  />
109
125
  ) : null;
110
126
  };
@@ -180,12 +180,22 @@ export const InternalSideNavigationTrigger: FC<
180
180
 
181
181
  export const InternalSideNavigationGroupLink: FC<
182
182
  NavigationSubmenuItemData & NavigationComponentProps
183
- > = ({ id, counter, tag, title, to, isActive, navigationComponent: NavigationComponent }) => {
183
+ > = ({
184
+ id,
185
+ counter,
186
+ tag,
187
+ title,
188
+ to,
189
+ isActive,
190
+ navigationComponent: NavigationComponent,
191
+ ...rest
192
+ }) => {
184
193
  return (
185
194
  <NavigationComponent
195
+ key={id}
186
196
  data-cy={`navigation-item-${id}`}
187
197
  data-pendo={`navigation-item-${id}`}
188
- key={id}
198
+ {...rest}
189
199
  to={to}
190
200
  className={classNames(Styles.submenuItem, Styles.submenuLink, {
191
201
  [Styles.submenuLinkActive]: isActive === true,
@@ -21,8 +21,8 @@
21
21
  position: fixed;
22
22
  max-width: 400px;
23
23
  width: 0;
24
+ height: 100vh;
24
25
  top: 0;
25
- bottom: 0;
26
26
  left: 0;
27
27
  z-index: 991;
28
28
 
@@ -13,7 +13,7 @@
13
13
  margin-top: var(--nav-offset-top);
14
14
 
15
15
  display: flex;
16
- flex-direction: row;
16
+ flex-direction: column;
17
17
 
18
18
  .side {
19
19
  flex-basis: var(--nav-offset-left);
@@ -31,30 +31,31 @@
31
31
  }
32
32
 
33
33
  .layout-anvil2 {
34
- .header {
34
+ .content-header {
35
35
  position: sticky;
36
36
  top: var(--nav-offset-top);
37
37
  z-index: 989;
38
38
  }
39
39
  }
40
40
 
41
- .layout-legacy,
42
- .layout-anvil2 {
41
+ .layout-desktop {
43
42
  padding-left: var(--nav-offset-left);
44
43
 
45
- .top-placeholder {
46
- height: var(--nav-offset-top);
44
+ .side {
45
+ position: fixed;
46
+ top: var(--nav-offset-top);
47
+ bottom: 0;
48
+ left: 0;
49
+ right: 0;
50
+ z-index: @z-index-global-nav;
47
51
  }
52
+ }
48
53
 
49
- &.layout-desktop {
50
- .side {
51
- position: fixed;
52
- top: var(--nav-offset-top);
53
- bottom: 0;
54
- left: 0;
55
- right: 0;
56
- z-index: @z-index-global-nav;
57
- }
54
+ .layout-legacy,
55
+ .layout-anvil2 {
56
+ overflow-x: auto;
57
+ .top-placeholder {
58
+ height: var(--nav-offset-top);
58
59
  }
59
60
  }
60
61
 
@@ -81,4 +82,22 @@
81
82
  right: 0;
82
83
  z-index: 991;
83
84
  }
85
+
86
+ .content-header {
87
+ position: sticky;
88
+ left: 0;
89
+ right: 0;
90
+ }
91
+ }
92
+
93
+ @media print {
94
+ .layout {
95
+ --nav-offset-left: 0px !important;
96
+ --nav-offset-right: 0px !important;
97
+
98
+ .side,
99
+ .top {
100
+ display: none !important;
101
+ }
102
+ }
84
103
  }
@@ -1,6 +1,6 @@
1
1
  export const __esModule: true;
2
2
  export const content: string;
3
- export const header: string;
3
+ export const contentHeader: string;
4
4
  export const layout: string;
5
5
  export const layoutAnvil1: string;
6
6
  export const layoutAnvil2: string;