@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.
- package/dist/components/header-navigation/header-navigation-stacked.stories.js +1 -1
- package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -1
- package/dist/components/header-navigation/header-navigation.stories.js +1 -1
- package/dist/components/header-navigation/header-navigation.stories.js.map +1 -1
- package/dist/components/left-navigation/header-navigation-tiny.stories.js +2 -2
- package/dist/components/left-navigation/header-navigation-tiny.stories.js.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.d.ts +10 -7
- package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.js +2 -2
- package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
- package/dist/components/titan-layout/layout-header.module.less +22 -4
- package/dist/components/titan-layout/layout-profile.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-profile.js +14 -4
- package/dist/components/titan-layout/layout-profile.js.map +1 -1
- package/dist/components/titan-layout/layout-profile.stories.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-profile.stories.js +1 -1
- package/dist/components/titan-layout/layout-profile.stories.js.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
- package/dist/components/titan-layout/layout-sidebar-links-internal.js +2 -2
- package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
- package/dist/components/titan-layout/layout-sidebar.module.less +1 -1
- package/dist/components/titan-layout/titan-layout.d.ts +1 -0
- package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
- package/dist/components/titan-layout/titan-layout.js +16 -6
- package/dist/components/titan-layout/titan-layout.js.map +1 -1
- package/dist/components/titan-layout/titan-layout.module.less +34 -15
- package/dist/components/titan-layout/titan-layout.stories.d.ts +4 -0
- package/dist/components/titan-layout/titan-layout.stories.d.ts.map +1 -1
- package/dist/components/titan-layout/titan-layout.stories.js +14 -4
- package/dist/components/titan-layout/titan-layout.stories.js.map +1 -1
- package/package.json +2 -2
- package/src/components/header-navigation/header-navigation-stacked.stories.tsx +1 -1
- package/src/components/header-navigation/header-navigation.stories.tsx +1 -1
- package/src/components/left-navigation/header-navigation-tiny.stories.tsx +2 -2
- package/src/components/profile-dropdown/profile-dropdown.tsx +13 -6
- package/src/components/titan-layout/layout-header.module.less +22 -4
- package/src/components/titan-layout/layout-profile.stories.tsx +10 -1
- package/src/components/titan-layout/layout-profile.tsx +24 -8
- package/src/components/titan-layout/layout-sidebar-links-internal.tsx +12 -2
- package/src/components/titan-layout/layout-sidebar.module.less +1 -1
- package/src/components/titan-layout/titan-layout.module.less +34 -15
- package/src/components/titan-layout/titan-layout.module.less.d.ts +1 -1
- package/src/components/titan-layout/titan-layout.stories.tsx +111 -5
- 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:
|
|
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-
|
|
42
|
-
.layout-anvil2 {
|
|
41
|
+
.layout-desktop {
|
|
43
42
|
padding-left: var(--nav-offset-left);
|
|
44
43
|
|
|
45
|
-
.
|
|
46
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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 +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;
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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":";AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
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.
|
|
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": "
|
|
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
|
|
159
|
-
|
|
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
|
|
210
|
-
|
|
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
|
|
83
|
-
return
|
|
84
|
-
<InternalSideNavigationGroupTrigger id={props.id} title={
|
|
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
|
|
102
|
-
return
|
|
117
|
+
const text = getText(props);
|
|
118
|
+
return text ? (
|
|
103
119
|
<InternalSideNavigationGroupLink
|
|
104
120
|
{...props}
|
|
105
121
|
to={to}
|
|
106
|
-
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
|
-
> = ({
|
|
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
|
-
|
|
198
|
+
{...rest}
|
|
189
199
|
to={to}
|
|
190
200
|
className={classNames(Styles.submenuItem, Styles.submenuLink, {
|
|
191
201
|
[Styles.submenuLinkActive]: isActive === true,
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
margin-top: var(--nav-offset-top);
|
|
14
14
|
|
|
15
15
|
display: flex;
|
|
16
|
-
flex-direction:
|
|
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-
|
|
42
|
-
.layout-anvil2 {
|
|
41
|
+
.layout-desktop {
|
|
43
42
|
padding-left: var(--nav-offset-left);
|
|
44
43
|
|
|
45
|
-
.
|
|
46
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
}
|