@servicetitan/navigation 2.0.0 → 2.1.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-content.d.ts +30 -0
- package/dist/components/header-navigation/header-navigation-content.d.ts.map +1 -0
- package/dist/components/header-navigation/header-navigation-content.js +21 -0
- package/dist/components/header-navigation/header-navigation-content.js.map +1 -0
- package/dist/components/header-navigation/header-navigation-extra.stories.d.ts +1 -1
- package/dist/components/header-navigation/header-navigation-extra.stories.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation-extra.stories.js +6 -6
- package/dist/components/header-navigation/header-navigation-extra.stories.js.map +1 -1
- package/dist/components/header-navigation/header-navigation-links.d.ts +38 -0
- package/dist/components/header-navigation/header-navigation-links.d.ts.map +1 -0
- package/dist/components/header-navigation/header-navigation-links.js +38 -0
- package/dist/components/header-navigation/header-navigation-links.js.map +1 -0
- package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts +11 -0
- package/dist/components/header-navigation/header-navigation-stacked.stories.d.ts.map +1 -0
- package/dist/components/header-navigation/header-navigation-stacked.stories.js +66 -0
- package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -0
- package/dist/components/header-navigation/header-navigation.d.ts +32 -55
- package/dist/components/header-navigation/header-navigation.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation.js +41 -48
- package/dist/components/header-navigation/header-navigation.js.map +1 -1
- package/dist/components/header-navigation/header-navigation.module.less +172 -95
- package/dist/components/header-navigation/header-navigation.stories.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation.stories.js +7 -7
- package/dist/components/header-navigation/header-navigation.stories.js.map +1 -1
- package/dist/components/header-navigation/index.d.ts +3 -0
- package/dist/components/header-navigation/index.d.ts.map +1 -0
- package/dist/components/header-navigation/index.js +3 -0
- package/dist/components/header-navigation/index.js.map +1 -0
- package/dist/components/logo/logo-titan-text.d.ts +21 -5
- package/dist/components/logo/logo-titan-text.d.ts.map +1 -1
- package/dist/components/logo/logo-titan-text.js +9 -3
- package/dist/components/logo/logo-titan-text.js.map +1 -1
- package/dist/components/logo/logo-titan-text.module.less +12 -9
- package/dist/components/logo/logo-titan.d.ts +2 -2
- package/dist/components/logo/logo-titan.d.ts.map +1 -1
- package/dist/components/logo/logo-titan.js +1 -1
- package/dist/components/logo/logo-titan.js.map +1 -1
- package/dist/components/logo/logo.stories.d.ts +2 -1
- package/dist/components/logo/logo.stories.d.ts.map +1 -1
- package/dist/components/logo/logo.stories.js +7 -5
- package/dist/components/logo/logo.stories.js.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts +15 -0
- package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.d.ts.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js +51 -0
- package/dist/components/profile-dropdown/profile-dropdown-stacked.stories.js.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown.d.ts +1 -0
- package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.js +3 -3
- package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.module.less +0 -2
- package/dist/components/profile-dropdown/profile-dropdown.stories.js +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +1 -1
- package/dist/components/profile-dropdown/profile-icon.d.ts +1 -1
- package/dist/components/profile-dropdown/profile-icon.d.ts.map +1 -1
- package/dist/components/profile-dropdown/profile-icon.js +1 -1
- package/dist/components/profile-dropdown/profile-icon.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/with-tooltip.d.ts +3 -0
- package/dist/utils/with-tooltip.d.ts.map +1 -0
- package/dist/utils/with-tooltip.js +4 -0
- package/dist/utils/with-tooltip.js.map +1 -0
- package/package.json +2 -2
- package/src/components/header-navigation/header-navigation-content.tsx +118 -0
- package/src/components/header-navigation/header-navigation-extra.stories.tsx +12 -12
- package/src/components/header-navigation/header-navigation-links.tsx +143 -0
- package/src/components/header-navigation/header-navigation-stacked.stories.tsx +172 -0
- package/src/components/header-navigation/header-navigation.module.less +172 -95
- package/src/components/header-navigation/header-navigation.module.less.d.ts +14 -9
- package/src/components/header-navigation/header-navigation.stories.tsx +11 -17
- package/src/components/header-navigation/header-navigation.tsx +151 -266
- package/src/components/header-navigation/index.ts +2 -0
- package/src/components/logo/logo-titan-text.module.less +12 -9
- package/src/components/logo/logo-titan-text.tsx +62 -20
- package/src/components/logo/logo-titan.tsx +2 -2
- package/src/components/logo/logo.stories.tsx +13 -4
- package/src/components/profile-dropdown/profile-dropdown-stacked.stories.tsx +178 -0
- package/src/components/profile-dropdown/profile-dropdown.module.less +0 -2
- package/src/components/profile-dropdown/profile-dropdown.stories.tsx +1 -1
- package/src/components/profile-dropdown/profile-dropdown.tsx +5 -3
- package/src/components/profile-dropdown/profile-icon.tsx +2 -1
- package/src/index.ts +2 -1
- package/src/utils/with-tooltip.tsx +11 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IconPropsStrict } from '@servicetitan/design-system';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
import { HeaderNavigationItemData } from '../../utils/navigation';
|
|
4
|
+
import { CounterTagPropsType } from '../counter-tag';
|
|
5
|
+
export interface HeaderNavigationItemContentPropsStrict {
|
|
6
|
+
/** item text */
|
|
7
|
+
title?: string;
|
|
8
|
+
/** text component class name */
|
|
9
|
+
titleClassName?: string;
|
|
10
|
+
/** counter shown for item */
|
|
11
|
+
counter?: CounterTagPropsType;
|
|
12
|
+
/** counter component class name */
|
|
13
|
+
counterClassName?: string;
|
|
14
|
+
/** icon component class name */
|
|
15
|
+
iconClassName?: string;
|
|
16
|
+
/** IconComponent custom icon component */
|
|
17
|
+
iconComponent?: FC;
|
|
18
|
+
/** iconName name of anvil icon */
|
|
19
|
+
iconName?: IconPropsStrict['name'];
|
|
20
|
+
}
|
|
21
|
+
/** Content for navigation items */
|
|
22
|
+
export declare const HeaderNavigationItemContent: FC<HeaderNavigationItemContentPropsStrict>;
|
|
23
|
+
interface HeaderNavigationItemPropsStrict extends HeaderNavigationItemData {
|
|
24
|
+
minimized: boolean;
|
|
25
|
+
main: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Navigation main menu item */
|
|
28
|
+
export declare const HeaderNavigationItem: FC<HeaderNavigationItemPropsStrict>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=header-navigation-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-content.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-content.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAc,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGjE,MAAM,WAAW,sCAAsC;IACnD,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,EAAE,CAAC;IACnB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,mCAAmC;AACnC,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,sCAAsC,CAqClF,CAAC;AAEF,UAAU,+BAAgC,SAAQ,wBAAwB;IACtE,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,gCAAgC;AAChC,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,+BAA+B,CA6CpE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Icon } from '@servicetitan/design-system';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { Fragment } from 'react';
|
|
5
|
+
import { useNavLink } from '../../utils/navigation-context';
|
|
6
|
+
import { withTooltip } from '../../utils/with-tooltip';
|
|
7
|
+
import { CounterTag } from '../counter-tag';
|
|
8
|
+
import * as Styles from './header-navigation.module.less';
|
|
9
|
+
/** Content for navigation items */
|
|
10
|
+
export const HeaderNavigationItemContent = ({ title, titleClassName, counter, counterClassName, iconClassName, iconComponent: IconComponent, iconName, }) => {
|
|
11
|
+
const iconClass = classNames(Styles.navigationIcon, iconClassName);
|
|
12
|
+
return (_jsxs(Fragment, { children: [IconComponent ? (_jsx("i", { className: iconClass, children: _jsx(IconComponent, {}) })) : iconName ? (_jsx(Icon, { name: iconName, className: iconClass })) : (_jsx("i", { className: iconClass })), !!title && (_jsx("span", { className: classNames(Styles.navigationItemTitle, titleClassName), children: title })), !!counter && (_jsx(CounterTag, { data: counter, className: classNames(Styles.navigationItemCounter, counterClassName), longClassName: Styles.navigationItemCounterLong }))] }));
|
|
13
|
+
};
|
|
14
|
+
/** Navigation main menu item */
|
|
15
|
+
export const HeaderNavigationItem = ({ id, to, title, hint, counter, className, iconClassName, iconComponent, iconName, isActive, main, minimized, }) => {
|
|
16
|
+
const NavigationComponent = useNavLink();
|
|
17
|
+
return withTooltip(_jsx(NavigationComponent, { "data-cy": `navigation-item-${id}`, "data-pendo": `navigation-item-${id}`, to: to, title: hint, className: classNames(Styles.navigationItem, main ? Styles.navigationItemMain : Styles.navigationItemOverflow, className, {
|
|
18
|
+
[Styles.navigationItemActive]: isActive === true,
|
|
19
|
+
}), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.navigationItemActive, children: _jsx(HeaderNavigationItemContent, { title: minimized ? undefined : title, titleClassName: main ? '' : 'm-l-half', counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName }) }, id), minimized ? title : undefined);
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=header-navigation-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-content.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-content.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
declare const _default: {
|
|
3
3
|
title: string;
|
|
4
|
-
component: FC<import("./header-navigation").HeaderNavigationLinkProps>;
|
|
4
|
+
component: FC<import("./header-navigation-links").HeaderNavigationLinkProps>;
|
|
5
5
|
parameters: {};
|
|
6
6
|
};
|
|
7
7
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation-extra.stories.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;;;;;;
|
|
1
|
+
{"version":3,"file":"header-navigation-extra.stories.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;;;;;;AASrC,wBAIE;AAoBF,eAAO,MAAM,SAAS,+CAUrB,CAAC;AAEF,eAAO,MAAM,YAAY,+CAIxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,+CAM9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAe5B,CAAC"}
|
|
@@ -10,9 +10,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { Popover } from '@servicetitan/design-system';
|
|
13
|
+
import { Button, Popover } from '@servicetitan/design-system';
|
|
14
14
|
import { useState } from 'react';
|
|
15
|
-
import { HeaderNavigation,
|
|
15
|
+
import { HeaderNavigation, HeaderNavigationLink, HeaderNavigationTrigger, HeaderNavigationTriggerCustom, } from './';
|
|
16
16
|
export default {
|
|
17
17
|
title: 'Navigation/HeaderNavigationExtra',
|
|
18
18
|
component: HeaderNavigationLink,
|
|
@@ -24,12 +24,12 @@ const NavLinkMock = (_a) => {
|
|
|
24
24
|
e.preventDefault();
|
|
25
25
|
}, children: children })));
|
|
26
26
|
};
|
|
27
|
-
export const extraLink = () => (_jsx(HeaderNavigation, { items: [], navigationComponent: NavLinkMock,
|
|
28
|
-
export const extraTrigger = () => (_jsx(HeaderNavigation, { items: [], navigationComponent: NavLinkMock,
|
|
27
|
+
export const extraLink = () => (_jsx(HeaderNavigation, { items: [], navigationComponent: NavLinkMock, rightClassName: "m-r-1", children: _jsx(HeaderNavigationLink, { id: "search", to: "https://google.com", target: "_blank", iconName: "search", hint: "Search: for all the questions" }) }));
|
|
28
|
+
export const extraTrigger = () => (_jsx(HeaderNavigation, { items: [], navigationComponent: NavLinkMock, rightClassName: "m-r-1", children: _jsx(HeaderNavigationTrigger, { id: "dialpad", iconName: "phone", counter: 2, tooltip: "Phones pro" }) }));
|
|
29
29
|
export const extraCustomTrigger = () => (_jsx(HeaderNavigation, { items: [], navigationComponent: NavLinkMock, children: _jsx(HeaderNavigationTriggerCustom, { id: "help-center", children: _jsx(HelpCenterButton, {}) }) }));
|
|
30
|
-
export const extraWithTooltip = () => (_jsxs(HeaderNavigation, { items: [], navigationComponent: NavLinkMock,
|
|
30
|
+
export const extraWithTooltip = () => (_jsxs(HeaderNavigation, { items: [], navigationComponent: NavLinkMock, rightClassName: "m-r-1", children: [_jsx(HeaderNavigationLink, { id: "search", to: "https://google.com", target: "_blank", iconName: "search", tooltip: "Search: for all the questions", hint: "Google" }), _jsx(HeaderNavigationTrigger, { id: "dialpad", iconName: "phone", title: "Dialpad", counter: 2 }), _jsx(HelpCenterButton, {})] }));
|
|
31
31
|
const HelpCenterButton = () => {
|
|
32
32
|
const [open, setOpen] = useState(false);
|
|
33
|
-
return (_jsx(Popover, { onClickOutside: () => setOpen(false), open: open, direction: "bl", width: "xs", trigger: _jsx(
|
|
33
|
+
return (_jsx(Popover, { onClickOutside: () => setOpen(false), open: open, direction: "bl", width: "xs", trigger: _jsx(Button, { className: "c-white", iconName: "help_outline", fill: "subtle", onClick: () => setOpen(true) }), portal: true, children: "help center" }));
|
|
34
34
|
};
|
|
35
35
|
//# sourceMappingURL=header-navigation-extra.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation-extra.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra.stories.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"header-navigation-extra.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-extra.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { FC, HTMLAttributeAnchorTarget, ReactNode } from 'react';
|
|
2
|
+
import { HeaderNavigationItemContentPropsStrict } from './header-navigation-content';
|
|
3
|
+
export interface HeaderNavigationTriggerPropsStrict extends Omit<HeaderNavigationItemContentPropsStrict, 'title' | 'size'> {
|
|
4
|
+
/** unique identifier */
|
|
5
|
+
id: string;
|
|
6
|
+
/** tooltip text */
|
|
7
|
+
tooltip?: string;
|
|
8
|
+
/** item description */
|
|
9
|
+
hint?: string;
|
|
10
|
+
/** container class name */
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
interface HeaderNavigationTriggerProps extends HeaderNavigationTriggerPropsStrict {
|
|
14
|
+
/** unstrict props */
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
export interface HeaderNavigationLinkPropsStrict extends HeaderNavigationTriggerPropsStrict {
|
|
18
|
+
/** link href */
|
|
19
|
+
to: string;
|
|
20
|
+
/** isActive */
|
|
21
|
+
isActive?: boolean | ((pathname: string) => boolean);
|
|
22
|
+
/** link html target */
|
|
23
|
+
target?: HTMLAttributeAnchorTarget;
|
|
24
|
+
}
|
|
25
|
+
export interface HeaderNavigationLinkProps extends HeaderNavigationLinkPropsStrict {
|
|
26
|
+
/** unstrict props */
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}
|
|
29
|
+
/** Navigation extra item with link */
|
|
30
|
+
export declare const HeaderNavigationLink: FC<HeaderNavigationLinkProps>;
|
|
31
|
+
/** Navigation extra item with icon button */
|
|
32
|
+
export declare const HeaderNavigationTrigger: FC<HeaderNavigationTriggerProps>;
|
|
33
|
+
/** Navigation extra item with custom content */
|
|
34
|
+
export declare const HeaderNavigationTriggerCustom: FC<Omit<HeaderNavigationTriggerProps, 'counter' | 'iconSize' | 'iconName' | 'iconComponent' | 'iconClassName'> & {
|
|
35
|
+
children: ReactNode;
|
|
36
|
+
}>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=header-navigation-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-links.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-links.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EAEH,sCAAsC,EACzC,MAAM,6BAA6B,CAAC;AAGrC,MAAM,WAAW,kCACb,SAAQ,IAAI,CAAC,sCAAsC,EAAE,OAAO,GAAG,MAAM,CAAC;IACtE,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,4BAA6B,SAAQ,kCAAkC;IAC7E,qBAAqB;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,+BAAgC,SAAQ,kCAAkC;IACvF,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACrD,uBAAuB;IACvB,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACtC;AAED,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;IAC9E,qBAAqB;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,sCAAsC;AACtC,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAwC9D,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CAgChE,CAAC;AAEN,gDAAgD;AAChD,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAC1C,IAAI,CACA,4BAA4B,EAC5B,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,eAAe,CAC1E,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAkB1B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { createElement as _createElement } from "react";
|
|
14
|
+
import classNames from 'classnames';
|
|
15
|
+
import { useNavLink } from '../../utils/navigation-context';
|
|
16
|
+
import { withTooltip } from '../../utils/with-tooltip';
|
|
17
|
+
import { HeaderNavigationItemContent, } from './header-navigation-content';
|
|
18
|
+
import * as Styles from './header-navigation.module.less';
|
|
19
|
+
/** Navigation extra item with link */
|
|
20
|
+
export const HeaderNavigationLink = (_a) => {
|
|
21
|
+
var { id, to, hint, tooltip, counter, className, iconClassName, iconComponent, iconName, isActive, target } = _a, rest = __rest(_a, ["id", "to", "hint", "tooltip", "counter", "className", "iconClassName", "iconComponent", "iconName", "isActive", "target"]);
|
|
22
|
+
const NavigationComponent = useNavLink();
|
|
23
|
+
return withTooltip(_createElement(NavigationComponent, Object.assign({ "data-cy": `navigation-link-${id}`, "data-pendo": `navigation-link-${id}` }, rest, { key: id, to: to, title: hint, className: classNames(Styles.navigationLink, Styles.navigationItem, className, {
|
|
24
|
+
[Styles.navigationItemActive]: isActive === true,
|
|
25
|
+
}), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.navigationItemActive, target: target }),
|
|
26
|
+
_jsx(HeaderNavigationItemContent, { counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName })), tooltip);
|
|
27
|
+
};
|
|
28
|
+
/** Navigation extra item with icon button */
|
|
29
|
+
export const HeaderNavigationTrigger = (_a) => {
|
|
30
|
+
var { id, className, counter, iconClassName, iconComponent, iconName, hint, tooltip } = _a, rest = __rest(_a, ["id", "className", "counter", "iconClassName", "iconComponent", "iconName", "hint", "tooltip"]);
|
|
31
|
+
return withTooltip(_jsx("div", Object.assign({ "data-cy": `navigation-trigger-${id}`, "data-pendo": `navigation-trigger-${id}` }, rest, { title: hint, className: classNames(Styles.navigationItem, Styles.navigationLink, 'cursor-pointer', className), children: _jsx(HeaderNavigationItemContent, { counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName }) })), tooltip);
|
|
32
|
+
};
|
|
33
|
+
/** Navigation extra item with custom content */
|
|
34
|
+
export const HeaderNavigationTriggerCustom = (_a) => {
|
|
35
|
+
var { children, id, className, tooltip, title } = _a, rest = __rest(_a, ["children", "id", "className", "tooltip", "title"]);
|
|
36
|
+
return withTooltip(_jsx("div", Object.assign({ "data-cy": `navigation-custom-${id}`, "data-pendo": `navigation-custom-${id}` }, rest, { title: title, className: classNames(Styles.navigationItem, Styles.navigationLink, 'cursor-pointer', className), children: children })), tooltip);
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=header-navigation-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-links.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-links.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACH,2BAA2B,GAE9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,iCAAiC,CAAC;AAiC1D,sCAAsC;AACtC,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAanE,EAAE,EAAE;QAb+D,EAChE,EAAE,EACF,EAAE,EACF,IAAI,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,aAAa,EACb,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,MAAM,OAET,EADM,IAAI,cAZyD,2HAanE,CADU;IAEP,MAAM,mBAAmB,GAAG,UAAU,EAAE,CAAC;IAEzC,OAAO,WAAW,CACd,eAAC,mBAAmB,6BACP,mBAAmB,EAAE,EAAE,gBACpB,mBAAmB,EAAE,EAAE,IAC/B,IAAI,IACR,GAAG,EAAE,EAAE,EACP,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE;YAC3E,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,QAAQ,KAAK,IAAI;SACnD,CAAC,EACF,QAAQ,EAAE,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC/D,eAAe,EAAE,MAAM,CAAC,oBAAoB,EAC5C,MAAM,EAAE,MAAM;QAEd,KAAC,2BAA2B,IACxB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,GACpB,CACgB,EACtB,OAAO,CACV,CAAC;AACN,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAqC,CAAC,EAUzE,EAAE,EAAE;QAVqE,EACtE,EAAE,EACF,SAAS,EACT,OAAO,EACP,aAAa,EACb,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,OAAO,OAEV,EADM,IAAI,cAT+D,+FAUzE,CADU;IAEP,OAAA,WAAW,CACP,uCACa,sBAAsB,EAAE,EAAE,gBACvB,sBAAsB,EAAE,EAAE,IAClC,IAAI,IACR,KAAK,EAAE,IAAI,EACX,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,cAAc,EACrB,gBAAgB,EAChB,SAAS,CACZ,YAED,KAAC,2BAA2B,IACxB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,GACpB,IACA,EACN,OAAO,CACV,CAAA;CAAA,CAAC;AAEN,gDAAgD;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAKtC,CAAC,EAAoD,EAAE,EAAE;QAAxD,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAW,EAAN,IAAI,cAAlD,mDAAoD,CAAF;IACnD,OAAA,WAAW,CACP,uCACa,qBAAqB,EAAE,EAAE,gBACtB,qBAAqB,EAAE,EAAE,IACjC,IAAI,IACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,UAAU,CACjB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,cAAc,EACrB,gBAAgB,EAChB,SAAS,CACZ,YAEA,QAAQ,IACP,EACN,OAAO,CACV,CAAA;CAAA,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
declare const _default: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: FC<import("./header-navigation").HeaderNavigationStackedProps>;
|
|
5
|
+
parameters: {};
|
|
6
|
+
};
|
|
7
|
+
export default _default;
|
|
8
|
+
export declare const defaultNavigation: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const withLogoTextAndOverflow: () => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare const withAllMonolithData: () => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=header-navigation-stacked.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-stacked.stories.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-stacked.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;;;;;;AAOrC,wBAIE;AAkDF,eAAO,MAAM,iBAAiB,+CAc7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,+CAoBnC,CAAC;AAQF,eAAO,MAAM,mBAAmB,+CAiE/B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Input, Stack } from '@servicetitan/design-system';
|
|
3
|
+
import { Fragment } from 'react';
|
|
4
|
+
import { LogoCompanyTitle } from '../logo/logo-company-title';
|
|
5
|
+
import { LogoTitan, LogoTitanTitle } from '../logo/logo-titan-text';
|
|
6
|
+
import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
|
|
7
|
+
import { HeaderNavigationLink, HeaderNavigationStacked, HeaderNavigationTrigger } from './';
|
|
8
|
+
export default {
|
|
9
|
+
title: 'Navigation/HeaderNavigationStacked',
|
|
10
|
+
component: HeaderNavigationStacked,
|
|
11
|
+
parameters: {},
|
|
12
|
+
};
|
|
13
|
+
const getItem = (id, data) => (Object.assign({ id, to: '/', title: id[0].toUpperCase() + id.substring(1), hint: id }, (data !== null && data !== void 0 ? data : {})));
|
|
14
|
+
const InventoryIcon = () => (_jsxs("svg", { width: "20", xmlns: "http://www.w3.org/2000/svg", viewBox: "-293 385 24 24", fill: "currentColor", children: [_jsx("polyline", { points: "-288,400.9 -282,404.3 -282,397.6 -288,394.2 -288,400.9 " }), _jsx("path", { d: "M-272,401.5c0,0.4-0.2,0.7-0.5,0.9l-7.9,4.4c-0.2,0.1-0.4,0.2-0.6,0.2s-0.4-0.1-0.6-0.2l-7.9-4.4c-0.3-0.2-0.5-0.5-0.5-0.9v-9c0-0.4,0.2-0.7,0.5-0.9l7.9-4.4c0.2-0.1,0.4-0.2,0.6-0.2s0.4,0.1,0.6,0.2l7.9,4.4c0.3,0.2,0.5,0.5,0.5,0.9V401.5 M-287,392.5 l6,3.4l5.9-3.3l-5.9-3.4L-287,392.5 M-274,400.9v-6.7l-6,3.4v6.7L-274,400.9z" })] }));
|
|
15
|
+
const items = {
|
|
16
|
+
calendar: getItem('calendar', { iconName: 'event' }),
|
|
17
|
+
calls: getItem('calls', { iconName: 'local_phone', isActive: true, counter: 12 }),
|
|
18
|
+
dashboard: getItem('dashboard', { iconName: 'odometer', isActive: true }),
|
|
19
|
+
dispatch: getItem('dispatch', { iconName: 'location_disabled', counter: 1 }),
|
|
20
|
+
fleet: getItem('fleet', { iconName: 'fleet-pro', title: 'Fleet Pro' }),
|
|
21
|
+
followUps: getItem('followUps', { iconName: 'flag', title: 'Follow Ups' }),
|
|
22
|
+
inventory: getItem('inventory', { iconName: 'toys' }),
|
|
23
|
+
purchasing: getItem('purchasing', { iconComponent: InventoryIcon }),
|
|
24
|
+
accounting: getItem('accounting', { iconName: 'assignment' }),
|
|
25
|
+
marketing: getItem('marketing', { iconName: 'bullhorn' }),
|
|
26
|
+
priceBook: getItem('priceBook', { iconName: 'book' }),
|
|
27
|
+
pointOfSale: getItem('pointOfSale', { iconName: 'cash-register' }),
|
|
28
|
+
projects: getItem('projects', { iconName: 'folder_special' }),
|
|
29
|
+
reports: getItem('reports', { iconName: 'poll' }),
|
|
30
|
+
};
|
|
31
|
+
const NavLinkMock = props => (_jsx("a", { href: props.to, target: props.target, onClick: e => {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
}, className: props.className, children: props.children }));
|
|
34
|
+
export const defaultNavigation = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), leftClassName: "d-f align-items-center", items: [
|
|
35
|
+
items.dashboard,
|
|
36
|
+
items.calendar,
|
|
37
|
+
items.calls,
|
|
38
|
+
items.accounting,
|
|
39
|
+
items.dispatch,
|
|
40
|
+
items.fleet,
|
|
41
|
+
], navigationComponent: NavLinkMock }));
|
|
42
|
+
export const withLogoTextAndOverflow = () => (_jsx(HeaderNavigationStacked, { left: _jsxs(Stack, { alignItems: "center", children: [_jsx(LogoTitan, { mantleFill: "#2270EE", size: 44 }), _jsx(LogoTitanTitle, { className: "c-white m-l-1", children: "Commercial" })] }), items: [
|
|
43
|
+
items.dashboard,
|
|
44
|
+
items.calendar,
|
|
45
|
+
items.calls,
|
|
46
|
+
items.accounting,
|
|
47
|
+
items.dispatch,
|
|
48
|
+
items.purchasing,
|
|
49
|
+
items.fleet,
|
|
50
|
+
], itemsOverflow: [items.calls, items.accounting, items.purchasing, items.dispatch], navigationComponent: NavLinkMock }));
|
|
51
|
+
const TimeZoneOffset = () => (_jsx("div", { className: "fs-2 fw-bold p-x-1", children: _jsx("span", { children: "EST (-9 hrs)" }) }));
|
|
52
|
+
export const withAllMonolithData = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), leftClassName: "d-f align-items-center", items: [
|
|
53
|
+
items.dashboard,
|
|
54
|
+
items.calendar,
|
|
55
|
+
items.calls,
|
|
56
|
+
items.accounting,
|
|
57
|
+
items.dispatch,
|
|
58
|
+
items.fleet,
|
|
59
|
+
items.followUps,
|
|
60
|
+
items.inventory,
|
|
61
|
+
items.marketing,
|
|
62
|
+
items.priceBook,
|
|
63
|
+
items.pointOfSale,
|
|
64
|
+
items.reports,
|
|
65
|
+
], navigationComponent: NavLinkMock, right: _jsxs(Fragment, { children: [_jsx(TimeZoneOffset, {}), _jsx(HeaderNavigationTrigger, { id: "dialpad", iconName: "phone", counter: 2 }), _jsx(HeaderNavigationLink, { id: "search", to: "https://google.com", target: "_blank", iconName: "search", hint: "Search: for all the questions" }), _jsx(HeaderNavigationTrigger, { id: "titanAdvisor", iconName: "rocket" }), _jsx(HeaderNavigationLink, { id: "settings", to: "https://google.com", target: "_blank", iconName: "settings", "aria-label": "search", hint: "Settings", isActive: true }), _jsxs(ProfileDropdown, { children: [_jsx(ProfileDropdown.Link, { id: "tasks", to: "https://googgle.com", counter: 10, children: "Task Management" }), _jsx(ProfileDropdown.Divider, {}), _jsxs(ProfileDropdown.Link, { id: "sign-out", to: "https://googgle.com", children: ["Sign Out", ' ', _jsx("span", { className: "c-neutral-100 m-l-half t-truncate", children: "James Bond" })] }), _jsx(ProfileDropdown.Section, { id: "userid", className: "c-neutral-100 fs-1", children: "User ID: 007" })] })] }), center: _jsx(Input, { placeholder: "Search smth", size: "xsmall", className: "w-100" }), centerClassName: "d-f align-items-center" }));
|
|
66
|
+
//# sourceMappingURL=header-navigation-stacked.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-navigation-stacked.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation-stacked.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FC,
|
|
1
|
+
import { PopoverPropsStrict } from '@servicetitan/design-system';
|
|
2
|
+
import { FC, ReactElement, ReactNode } from 'react';
|
|
3
3
|
import { HeaderNavigationItemData, NavLinkComponentProps } from '../../utils/navigation';
|
|
4
|
-
import { CounterTagPropsType } from '../counter-tag';
|
|
5
|
-
interface HeaderNavigationItemContentPropsStrict {
|
|
6
|
-
/** item text */
|
|
7
|
-
title?: string;
|
|
8
|
-
/** counter shown for item */
|
|
9
|
-
counter?: CounterTagPropsType;
|
|
10
|
-
/** icon component class name */
|
|
11
|
-
iconClassName?: string;
|
|
12
|
-
/** IconComponent custom icon component */
|
|
13
|
-
iconComponent?: FC;
|
|
14
|
-
/** iconName name of anvil icon */
|
|
15
|
-
iconName?: IconPropsStrict['name'];
|
|
16
|
-
/** iconSize size of anvil icon */
|
|
17
|
-
iconSize?: IconPropsStrict['size'];
|
|
18
|
-
}
|
|
19
|
-
export interface HeaderNavigationTriggerPropsStrict extends Omit<HeaderNavigationItemContentPropsStrict, 'title'> {
|
|
20
|
-
/** unique identifier */
|
|
21
|
-
id: string;
|
|
22
|
-
/** tooltip text */
|
|
23
|
-
tooltip?: string;
|
|
24
|
-
/** item description */
|
|
25
|
-
hint?: string;
|
|
26
|
-
/** container class name */
|
|
27
|
-
className?: string;
|
|
28
|
-
}
|
|
29
|
-
interface HeaderNavigationTriggerProps extends HeaderNavigationTriggerPropsStrict {
|
|
30
|
-
/** unstrict props */
|
|
31
|
-
[key: string]: any;
|
|
32
|
-
}
|
|
33
|
-
export interface HeaderNavigationLinkPropsStrict extends HeaderNavigationTriggerPropsStrict {
|
|
34
|
-
/** link href */
|
|
35
|
-
to: string;
|
|
36
|
-
/** isActive */
|
|
37
|
-
isActive?: boolean | ((pathname: string) => boolean);
|
|
38
|
-
/** link html target */
|
|
39
|
-
target?: HTMLAttributeAnchorTarget;
|
|
40
|
-
}
|
|
41
|
-
export interface HeaderNavigationLinkProps extends HeaderNavigationLinkPropsStrict {
|
|
42
|
-
/** unstrict props */
|
|
43
|
-
[key: string]: any;
|
|
44
|
-
}
|
|
45
|
-
/** Content for navigation items */
|
|
46
|
-
export declare const HeaderNavigationItemContent: FC<HeaderNavigationItemContentPropsStrict>;
|
|
47
|
-
/** Navigation extra item with link */
|
|
48
|
-
export declare const HeaderNavigationLink: FC<HeaderNavigationLinkProps>;
|
|
49
|
-
/** Navigation extra item with icon button */
|
|
50
|
-
export declare const HeaderNavigationTrigger: FC<HeaderNavigationTriggerProps>;
|
|
51
|
-
/** Navigation extra item with custom content */
|
|
52
|
-
export declare const HeaderNavigationTriggerCustom: FC<Omit<HeaderNavigationTriggerProps, 'counter' | 'iconSize' | 'iconName' | 'iconComponent' | 'iconClassName'> & {
|
|
53
|
-
children: ReactNode;
|
|
54
|
-
}>;
|
|
55
4
|
export interface HeaderNavigationOverflowProps {
|
|
56
5
|
direction: PopoverPropsStrict['direction'];
|
|
57
6
|
width: PopoverPropsStrict['width'];
|
|
@@ -63,7 +12,7 @@ export interface HeaderNavigationProps {
|
|
|
63
12
|
/** container class name */
|
|
64
13
|
className?: string;
|
|
65
14
|
/** extra navigation container class name */
|
|
66
|
-
|
|
15
|
+
rightClassName?: string;
|
|
67
16
|
/** container id */
|
|
68
17
|
id?: string;
|
|
69
18
|
/** left content (usually used for logo) */
|
|
@@ -82,5 +31,33 @@ export interface HeaderNavigationProps {
|
|
|
82
31
|
overflow?: HeaderNavigationOverflowProps;
|
|
83
32
|
}
|
|
84
33
|
export declare const HeaderNavigation: FC<HeaderNavigationProps>;
|
|
85
|
-
export {
|
|
34
|
+
export interface HeaderNavigationStackedProps {
|
|
35
|
+
/** container class name */
|
|
36
|
+
className?: string;
|
|
37
|
+
/** extra navigation */
|
|
38
|
+
right?: ReactNode;
|
|
39
|
+
/** extra navigation container class name */
|
|
40
|
+
rightClassName?: string;
|
|
41
|
+
/** container id */
|
|
42
|
+
id?: string;
|
|
43
|
+
/** left content (usually used for logo) */
|
|
44
|
+
left?: ReactElement;
|
|
45
|
+
/** left container class name */
|
|
46
|
+
leftClassName?: string;
|
|
47
|
+
/** center content */
|
|
48
|
+
center?: ReactElement;
|
|
49
|
+
/** center container class name */
|
|
50
|
+
centerClassName?: string;
|
|
51
|
+
/** minimal width for navigation bar */
|
|
52
|
+
minWidth?: number;
|
|
53
|
+
/** main navigation items */
|
|
54
|
+
items?: HeaderNavigationItemData[];
|
|
55
|
+
/** main navigation overflow items */
|
|
56
|
+
itemsOverflow?: HeaderNavigationItemData[];
|
|
57
|
+
/** navigation component used for routing */
|
|
58
|
+
navigationComponent?: FC<NavLinkComponentProps>;
|
|
59
|
+
/** props for main items overflow component */
|
|
60
|
+
overflow?: HeaderNavigationOverflowProps;
|
|
61
|
+
}
|
|
62
|
+
export declare const HeaderNavigationStacked: FC<HeaderNavigationStackedProps>;
|
|
86
63
|
//# sourceMappingURL=header-navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"header-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAYzF,MAAM,WAAW,6BAA6B;IAC1C,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3C,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AA0CD,MAAM,WAAW,qBAAqB;IAClC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC3C,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAChD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC5C;AAQD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAkGtD,CAAC;AAEF,MAAM,WAAW,4BAA4B;IACzC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACnC,qCAAqC;IACrC,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC3C,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC;IAChD,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,6BAA6B,CAAC;CAC5C;AAED,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CA+GpE,CAAC"}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
import { createElement as _createElement } from "react";
|
|
13
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
-
import {
|
|
2
|
+
import { createElement as _createElement } from "react";
|
|
3
|
+
import { Icon, Popover } from '@servicetitan/design-system';
|
|
15
4
|
import classNames from 'classnames';
|
|
16
|
-
import {
|
|
17
|
-
import { DefaultNavLinkComponent, NavLinkContext
|
|
18
|
-
import {
|
|
5
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { DefaultNavLinkComponent, NavLinkContext } from '../../utils/navigation-context';
|
|
7
|
+
import { HeaderNavigationItem } from './header-navigation-content';
|
|
19
8
|
import * as Styles from './header-navigation.module.less';
|
|
20
9
|
function useForceUpdate() {
|
|
21
10
|
const [, setTick] = useState(0);
|
|
@@ -23,35 +12,6 @@ function useForceUpdate() {
|
|
|
23
12
|
setTick(tick => tick + 1);
|
|
24
13
|
}, []);
|
|
25
14
|
}
|
|
26
|
-
/** Content for navigation items */
|
|
27
|
-
export const HeaderNavigationItemContent = ({ title, counter, iconClassName, iconComponent: IconComponent, iconName, iconSize = '24px', }) => (_jsxs(Fragment, { children: [IconComponent ? (_jsx("i", { className: classNames(Styles.icon, iconClassName), children: _jsx(IconComponent, {}) })) : iconName ? (_jsx(Icon, { size: iconSize, name: iconName, className: classNames(Styles.icon, iconClassName) })) : (_jsx("i", { className: classNames(Styles.icon, iconClassName) })), !!title && _jsx("ins", { children: title }), !!counter && (_jsx(CounterTag, { data: counter, className: Styles.counter, longClassName: Styles.counterLong }))] }));
|
|
28
|
-
const withTooltip = (element, tooltip) => tooltip ? (_jsx(Tooltip, { el: "div", direction: "b", text: tooltip, children: element })) : (element);
|
|
29
|
-
/** Navigation extra item with link */
|
|
30
|
-
export const HeaderNavigationLink = (_a) => {
|
|
31
|
-
var { id, to, hint, tooltip, counter, className, iconClassName, iconComponent, iconName, isActive, target } = _a, rest = __rest(_a, ["id", "to", "hint", "tooltip", "counter", "className", "iconClassName", "iconComponent", "iconName", "isActive", "target"]);
|
|
32
|
-
const NavigationComponent = useNavLink();
|
|
33
|
-
return withTooltip(_createElement(NavigationComponent, Object.assign({ "data-cy": `navigation-link-${id}`, "data-pendo": `navigation-link-${id}` }, rest, { key: id, to: to, title: hint, className: classNames(Styles.link, className, {
|
|
34
|
-
[Styles.active]: isActive === true,
|
|
35
|
-
}), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.active, target: target }),
|
|
36
|
-
_jsx(HeaderNavigationItemContent, { counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName })), tooltip);
|
|
37
|
-
};
|
|
38
|
-
/** Navigation main menu item */
|
|
39
|
-
const HeaderNavigationItem = ({ id, to, title, hint, counter, className, iconClassName, iconComponent, iconName, isActive, main, minimized, }) => {
|
|
40
|
-
const NavigationComponent = useNavLink();
|
|
41
|
-
return withTooltip(_jsx(NavigationComponent, { "data-cy": `navigation-item-${id}`, "data-pendo": `navigation-item-${id}`, to: to, title: hint, className: classNames(Styles.link, className, main ? Styles.linkMain : Styles.linkOverflow, {
|
|
42
|
-
[Styles.active]: isActive === true,
|
|
43
|
-
}), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.active, children: _jsx(HeaderNavigationItemContent, { title: minimized ? undefined : title, counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName, iconSize: "20px" }) }, id), minimized ? title : undefined);
|
|
44
|
-
};
|
|
45
|
-
/** Navigation extra item with icon button */
|
|
46
|
-
export const HeaderNavigationTrigger = (_a) => {
|
|
47
|
-
var { id, className, counter, iconClassName, iconComponent, iconName, hint, tooltip } = _a, rest = __rest(_a, ["id", "className", "counter", "iconClassName", "iconComponent", "iconName", "hint", "tooltip"]);
|
|
48
|
-
return withTooltip(_jsx("div", Object.assign({ "data-cy": `navigation-trigger-${id}`, "data-pendo": `navigation-trigger-${id}` }, rest, { title: hint, className: classNames(Styles.link, 'cursor-pointer', className), children: _jsx(HeaderNavigationItemContent, { counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName }) })), tooltip);
|
|
49
|
-
};
|
|
50
|
-
/** Navigation extra item with custom content */
|
|
51
|
-
export const HeaderNavigationTriggerCustom = (_a) => {
|
|
52
|
-
var { children, id, className, tooltip, title } = _a, rest = __rest(_a, ["children", "id", "className", "tooltip", "title"]);
|
|
53
|
-
return withTooltip(_jsx("div", Object.assign({ "data-cy": `navigation-custom-${id}`, "data-pendo": `navigation-custom-${id}` }, rest, { title: title, className: classNames(Styles.link, 'cursor-pointer', className), children: children })), tooltip);
|
|
54
|
-
};
|
|
55
15
|
const HeaderNavigationOverflow = ({ items, overflow }) => {
|
|
56
16
|
var _a, _b;
|
|
57
17
|
const [isOpen, setIsOpen] = useState(false);
|
|
@@ -63,7 +23,7 @@ var MinimizedState;
|
|
|
63
23
|
MinimizedState[MinimizedState["Minimized"] = 1] = "Minimized";
|
|
64
24
|
MinimizedState[MinimizedState["Full"] = 2] = "Full";
|
|
65
25
|
})(MinimizedState || (MinimizedState = {}));
|
|
66
|
-
export const HeaderNavigation = ({ children, className,
|
|
26
|
+
export const HeaderNavigation = ({ children, className, id, items, itemsOverflow, left, leftClassName, rightClassName, minWidth = 800, navigationComponent = DefaultNavLinkComponent, overflow, }) => {
|
|
67
27
|
const leftRef = useRef(null);
|
|
68
28
|
const rightRef = useRef(null);
|
|
69
29
|
const centerRef = useRef(null);
|
|
@@ -96,8 +56,41 @@ export const HeaderNavigation = ({ children, className, contentClassName, id, it
|
|
|
96
56
|
updateIsMinimized();
|
|
97
57
|
});
|
|
98
58
|
return (_jsx(NavLinkContext.Provider, { value: navigationComponent, children: _jsxs("div", { className: classNames(Styles.header, className, {
|
|
99
|
-
[Styles.minimized]: minimized === MinimizedState.Minimized,
|
|
100
59
|
[Styles.calculating]: minimized === MinimizedState.Calculating,
|
|
101
|
-
}), style: { minWidth: `${minWidth}px` }, id: id, "data-cy": "header-navigation", children: [_jsx("div", { className: leftClassName, ref: leftRef, "data-cy": "navigation-left", children: left }), _jsx("div", { ref: centerRef, className: classNames('d-if flex-grow-1 flex-basis-0 justify-content-center', Styles.center), "data-cy": "navigation-items", children: _jsxs("div", { ref: navigationRef, className: classNames(
|
|
60
|
+
}), style: { minWidth: `${minWidth}px` }, id: id, "data-cy": "header-navigation", children: [_jsx("div", { className: leftClassName, ref: leftRef, "data-cy": "navigation-left", children: left }), _jsx("div", { ref: centerRef, className: classNames('d-if flex-grow-1 flex-basis-0 justify-content-center', Styles.center), "data-cy": "navigation-items", children: _jsxs("div", { ref: navigationRef, className: classNames('d-if'), children: [items === null || items === void 0 ? void 0 : items.map(item => (_createElement(HeaderNavigationItem, Object.assign({}, item, { minimized: minimized === MinimizedState.Minimized, main: true, key: item.id })))), !!(itemsOverflow === null || itemsOverflow === void 0 ? void 0 : itemsOverflow.length) && (_jsx(HeaderNavigationOverflow, { items: itemsOverflow, overflow: overflow }))] }) }), _jsx("div", { className: classNames('d-f flex-row justify-content-end align-items-center', Styles.right, rightClassName), ref: rightRef, "data-cy": "navigation-right", children: children })] }) }));
|
|
61
|
+
};
|
|
62
|
+
export const HeaderNavigationStacked = ({ className, id, items, itemsOverflow, left, leftClassName, right, rightClassName, center, centerClassName, minWidth = 800, navigationComponent = DefaultNavLinkComponent, overflow, }) => {
|
|
63
|
+
const bottomRef = useRef(null);
|
|
64
|
+
const navigationRef = useRef(null);
|
|
65
|
+
const forceUpdate = useForceUpdate();
|
|
66
|
+
const [minimized, setMinimized] = useState(MinimizedState.Calculating);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const handleResize = () => {
|
|
69
|
+
setMinimized(MinimizedState.Calculating);
|
|
70
|
+
forceUpdate();
|
|
71
|
+
};
|
|
72
|
+
window.addEventListener('resize', handleResize);
|
|
73
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
74
|
+
}, [forceUpdate]);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
setMinimized(MinimizedState.Calculating);
|
|
77
|
+
forceUpdate();
|
|
78
|
+
}, [items, itemsOverflow, forceUpdate]);
|
|
79
|
+
const updateIsMinimized = () => {
|
|
80
|
+
if (bottomRef.current && navigationRef.current) {
|
|
81
|
+
if (navigationRef.current.clientWidth + 16 > bottomRef.current.clientWidth) {
|
|
82
|
+
setMinimized(MinimizedState.Minimized);
|
|
83
|
+
}
|
|
84
|
+
else if (minimized === MinimizedState.Calculating) {
|
|
85
|
+
setMinimized(MinimizedState.Full);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
updateIsMinimized();
|
|
91
|
+
});
|
|
92
|
+
return (_jsx(NavLinkContext.Provider, { value: navigationComponent, children: _jsxs("div", { className: classNames(Styles.headerStacked, {
|
|
93
|
+
[Styles.calculating]: minimized === MinimizedState.Calculating,
|
|
94
|
+
}, className), style: { minWidth: `${minWidth}px` }, id: id, "data-cy": "header-navigation", children: [_jsx("div", { className: classNames(Styles.heTopLeft, leftClassName), "data-cy": "navigation-left", children: left }), _jsx("div", { className: classNames(Styles.heTopCenter, centerClassName), "data-cy": "navigation-center", children: center }), _jsx("div", { className: classNames('d-f flex-row justify-content-end align-items-center', Styles.heTopRight, rightClassName), "data-cy": "navigation-right", children: right }), _jsx("div", { ref: bottomRef, className: classNames(Styles.heBottom, 'd-if flex-grow-1 flex-basis-0 justify-content-center', Styles.center), "data-cy": "navigation-items", children: _jsxs("div", { ref: navigationRef, className: classNames('d-if'), children: [items === null || items === void 0 ? void 0 : items.map(item => (_createElement(HeaderNavigationItem, Object.assign({}, item, { minimized: minimized === MinimizedState.Minimized, main: true, key: item.id })))), !!(itemsOverflow === null || itemsOverflow === void 0 ? void 0 : itemsOverflow.length) && (_jsx(HeaderNavigationOverflow, { items: itemsOverflow, overflow: overflow }))] }) })] }) }));
|
|
102
95
|
};
|
|
103
96
|
//# sourceMappingURL=header-navigation.js.map
|