@servicetitan/navigation 13.0.0-canary.256.5761ed1.0 → 13.0.0-canary.256.6f02f8b.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 (27) hide show
  1. package/dist/components/titan-layout/interface.d.ts +1 -1
  2. package/dist/components/titan-layout/interface.d.ts.map +1 -1
  3. package/dist/components/titan-layout/interface.js.map +1 -1
  4. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts +4 -10
  5. package/dist/components/titan-layout/layout-sidebar-links-internal.d.ts.map +1 -1
  6. package/dist/components/titan-layout/layout-sidebar-links-internal.js +50 -53
  7. package/dist/components/titan-layout/layout-sidebar-links-internal.js.map +1 -1
  8. package/dist/components/titan-layout/layout-sidebar-links.d.ts.map +1 -1
  9. package/dist/components/titan-layout/layout-sidebar-links.js +2 -4
  10. package/dist/components/titan-layout/layout-sidebar-links.js.map +1 -1
  11. package/dist/components/titan-layout/layout-sidebar.d.ts +1 -1
  12. package/dist/components/titan-layout/layout-sidebar.d.ts.map +1 -1
  13. package/dist/components/titan-layout/layout-sidebar.js +2 -4
  14. package/dist/components/titan-layout/layout-sidebar.js.map +1 -1
  15. package/dist/components/titan-layout/layout-sidebar.module.less +66 -22
  16. package/dist/components/titan-layout/titan-layout-default.stories.d.ts.map +1 -1
  17. package/dist/components/titan-layout/titan-layout.d.ts.map +1 -1
  18. package/dist/components/titan-layout/titan-layout.js +9 -5
  19. package/dist/components/titan-layout/titan-layout.js.map +1 -1
  20. package/package.json +2 -2
  21. package/src/components/titan-layout/interface.ts +1 -1
  22. package/src/components/titan-layout/layout-sidebar-links-internal.tsx +37 -54
  23. package/src/components/titan-layout/layout-sidebar-links.tsx +0 -2
  24. package/src/components/titan-layout/layout-sidebar.module.less +66 -22
  25. package/src/components/titan-layout/layout-sidebar.tsx +5 -5
  26. package/src/components/titan-layout/titan-layout-default.stories.tsx +9 -4
  27. package/src/components/titan-layout/titan-layout.tsx +5 -3
@@ -17,7 +17,6 @@
17
17
 
18
18
  // mobile version
19
19
  .nav-drawer {
20
- // display: none;
21
20
  position: fixed;
22
21
  max-width: 400px;
23
22
  width: 0;
@@ -184,19 +183,38 @@
184
183
  }
185
184
 
186
185
  .nav-top .divider {
187
- margin-top: @spacing-1;
186
+ margin-top: @spacing-half;
188
187
  margin-bottom: @spacing-1;
189
188
  }
190
189
 
191
190
  .nav-main {
192
191
  padding-top: @spacing-1;
193
192
  }
193
+
194
+ .nav-group-item {
195
+ .nav-item {
196
+ margin-right: 44px;
197
+
198
+ &.nav-item-active {
199
+ margin-right: @spacing-1;
200
+
201
+ .nav-item-icon-wrapper {
202
+ padding-right: 40px;
203
+ }
204
+ }
205
+ }
206
+
207
+ .nav-item-group-toggle-wrapper {
208
+ right: @spacing-1;
209
+ }
210
+ }
194
211
  }
195
212
 
196
213
  .nav-drawer,
197
214
  .nav-wide {
198
215
  .nav-item {
199
216
  flex-direction: row;
217
+ margin-bottom: @spacing-half;
200
218
 
201
219
  .nav-item-icon-wrapper {
202
220
  flex: 1;
@@ -355,26 +373,6 @@
355
373
  min-height: 12px !important;
356
374
  }
357
375
 
358
- .nav-item-group-toggle-wrapper {
359
- position: relative;
360
- display: flex;
361
- justify-content: center;
362
- align-items: center;
363
-
364
- .nav-item-group-toggle[data-anv][data-anv] {
365
- color: inherit;
366
- font-weight: @font-weight-semibold;
367
- }
368
-
369
- .nav-item-group-toggle-click {
370
- position: absolute;
371
- left: -@spacing-2;
372
- right: -@spacing-half;
373
- top: -@spacing-1;
374
- bottom: -@spacing-1;
375
- }
376
- }
377
-
378
376
  .nav-icon[data-anv][data-anv] {
379
377
  height: 24px;
380
378
  width: 24px;
@@ -397,6 +395,52 @@
397
395
  .nav-group-wrapper {
398
396
  .nav-group-item {
399
397
  position: relative;
398
+
399
+ .nav-item {
400
+ margin-right: 36px;
401
+
402
+ &.nav-item-active {
403
+ margin-right: @spacing-0;
404
+
405
+ .nav-item-icon-wrapper {
406
+ padding-right: 40px;
407
+ }
408
+ }
409
+
410
+ .nav-item-counter[data-anv][data-anv] {
411
+ margin-right: @spacing-0;
412
+ }
413
+ }
414
+
415
+ &:has(.nav-item-active) {
416
+ .nav-item-group-toggle-wrapper {
417
+ color: @text-color-active;
418
+ }
419
+ }
420
+ }
421
+
422
+ .nav-item-group-toggle-wrapper {
423
+ position: absolute;
424
+ top: 0;
425
+ bottom: 0;
426
+ right: @spacing-0;
427
+ color: @text-color;
428
+ display: flex;
429
+ justify-content: center;
430
+ align-items: center;
431
+
432
+ .nav-item-group-toggle[data-anv][data-anv] {
433
+ color: inherit;
434
+ font-weight: @font-weight-semibold;
435
+ }
436
+
437
+ .nav-item-group-toggle-click {
438
+ position: absolute;
439
+ left: -@spacing-2;
440
+ right: -@spacing-half;
441
+ top: -@spacing-1;
442
+ bottom: -@spacing-1;
443
+ }
400
444
  }
401
445
 
402
446
  .submenu-wrapper:not(.submenu-wrapper-collapsed) {
@@ -32,7 +32,7 @@ export interface LayoutSidebarProps {
32
32
  bottom?: ReactElement;
33
33
  mainItems?: NavigationItemData[];
34
34
  barExpanded: boolean;
35
- submenuExpanded: string | undefined;
35
+ submenusExpanded: string[] | undefined;
36
36
  drawerOpened: boolean;
37
37
  mobile: boolean;
38
38
  navigationComponent: FC<NavLinkComponentProps>;
@@ -45,7 +45,7 @@ export const LayoutSidebar: FC<LayoutSidebarProps> = ({
45
45
  className,
46
46
  mobile,
47
47
  barExpanded,
48
- submenuExpanded,
48
+ submenusExpanded,
49
49
  drawerOpened,
50
50
  onBarExpandChange,
51
51
  onSubmenuExpandChange,
@@ -97,7 +97,9 @@ export const LayoutSidebar: FC<LayoutSidebarProps> = ({
97
97
  key={item.id}
98
98
  item={item}
99
99
  barExpanded={mobile ? drawerOpened : barExpanded}
100
- submenuExpanded={!!item.id && submenuExpanded === item.id}
100
+ submenuExpanded={
101
+ !!item.id && !!submenusExpanded?.includes(item.id)
102
+ }
101
103
  onSubmenuExpand={onSubmenuExpandChange}
102
104
  navigationComponent={navigationComponent}
103
105
  />
@@ -115,7 +117,6 @@ export const LayoutSidebar: FC<LayoutSidebarProps> = ({
115
117
  item.submenu,
116
118
  getCounterTag(item.counter, item.tag)
117
119
  )}
118
- submenuExpanded={undefined}
119
120
  navigationComponent={navigationComponent}
120
121
  />
121
122
  )
@@ -236,7 +237,6 @@ const SideNavigationGroupItem: FC<{
236
237
  iconActive={item.iconActive}
237
238
  className={item.className}
238
239
  tag={tag}
239
- submenuExpanded={undefined}
240
240
  navigationComponent={navigationComponent}
241
241
  />
242
242
  </div>
@@ -6,7 +6,7 @@ import SvgSettings from '@servicetitan/anvil2/assets/icons/st/gnav_settings_inac
6
6
  import SvgRocketActive from '@servicetitan/anvil2/assets/icons/st/gnav_titan_advisor_active.svg';
7
7
  import SvgRocket from '@servicetitan/anvil2/assets/icons/st/gnav_titan_advisor_inactive.svg';
8
8
  import { Page as Anvil1Page } from '@servicetitan/design-system';
9
- import { Fragment, useState } from 'react';
9
+ import { Fragment, useEffect, useState } from 'react';
10
10
  import {
11
11
  CallsNavigationTrigger,
12
12
  LocationInfo,
@@ -51,8 +51,8 @@ const mainNavItems = [
51
51
  navItems.dispatch,
52
52
 
53
53
  navItems.fleet,
54
- navItems.followUps,
55
- navItems.inventory,
54
+ navItems.followUpsWithSubmenu,
55
+ navItems.purchasingWithSubmenu,
56
56
 
57
57
  navItems.marketing,
58
58
  navItems.priceBook,
@@ -224,10 +224,15 @@ const useLayoutProps = (args: LayoutContentArgs): TitanLayoutProps => {
224
224
  };
225
225
 
226
226
  const Content = (args: LayoutContentArgs) => {
227
+ const [info, setInfo] = useState('');
228
+ useEffect(() => {
229
+ setInfo(new Date().toLocaleTimeString());
230
+ }, []);
227
231
  return (
228
232
  <Fragment>
229
233
  <LocationInfo className="m-b-3" />
230
- <div className="m-b-3">rendered - {new Date().toLocaleTimeString()}</div>
234
+ <div className="m-b-3">component rendered - {info}</div>
235
+ <div className="m-b-3">rerendered - {new Date().toLocaleTimeString()}</div>
231
236
  {args.wideContent && (
232
237
  <div style={{ width: '1200px' }}>
233
238
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
@@ -168,7 +168,10 @@ function TitanLayoutComponent({
168
168
  (id: string, expanded: boolean) => {
169
169
  onStateChange?.({
170
170
  navCollapsed: state?.navCollapsed ?? false,
171
- submenuExpanded: expanded ? id : undefined,
171
+ submenusExpanded: [
172
+ ...(state?.submenusExpanded ?? []).filter(i => i !== id),
173
+ ...(expanded ? [id] : []),
174
+ ],
172
175
  });
173
176
  },
174
177
  [state, onStateChange]
@@ -303,7 +306,7 @@ function TitanLayoutComponent({
303
306
  mobile={breakpoint.isMobile}
304
307
  barExpanded={!state?.navCollapsed}
305
308
  onBarExpandChange={onBarExpandChange}
306
- submenuExpanded={state?.submenuExpanded}
309
+ submenusExpanded={state?.submenusExpanded}
307
310
  onSubmenuExpandChange={onSubmenuExpandChange}
308
311
  drawerOpened={mobileDrawerOpened}
309
312
  onDrawerOpenChange={setMobileDrawerOpened}
@@ -324,7 +327,6 @@ function TitanLayoutComponent({
324
327
  iconActive={undefined}
325
328
  tag={undefined}
326
329
  className={undefined}
327
- submenuExpanded={undefined}
328
330
  />
329
331
  )}
330
332
  </Fragment>