@servicetitan/navigation 2.0.0 → 2.2.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 +68 -0
- package/dist/components/header-navigation/header-navigation-stacked.stories.js.map +1 -0
- package/dist/components/header-navigation/header-navigation-stories.module.less +6 -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 +171 -95
- package/dist/components/header-navigation/header-navigation.stories.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation.stories.js +6 -4
- 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 +187 -0
- package/src/components/header-navigation/header-navigation-stories.module.less +6 -0
- package/src/components/header-navigation/header-navigation-stories.module.less.d.ts +3 -0
- package/src/components/header-navigation/header-navigation.module.less +171 -95
- package/src/components/header-navigation/header-navigation.module.less.d.ts +14 -9
- package/src/components/header-navigation/header-navigation.stories.tsx +25 -16
- 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;;;;;;AAQrC,wBAIE;AA4DF,eAAO,MAAM,iBAAiB,+CAc7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,+CAoBnC,CAAC;AAQF,eAAO,MAAM,mBAAmB,+CAqE/B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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 * as Styles from './header-navigation-stories.module.less';
|
|
8
|
+
import { HeaderNavigationLink, HeaderNavigationStacked, HeaderNavigationTrigger } from './';
|
|
9
|
+
export default {
|
|
10
|
+
title: 'Navigation/HeaderNavigationStacked',
|
|
11
|
+
component: HeaderNavigationStacked,
|
|
12
|
+
parameters: {},
|
|
13
|
+
};
|
|
14
|
+
const getItem = (id, data) => (Object.assign({ id, to: '/', title: id[0].toUpperCase() + id.substring(1), hint: id }, (data !== null && data !== void 0 ? data : {})));
|
|
15
|
+
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" })] }));
|
|
16
|
+
const SearchIcon = () => (_jsx("svg", { width: "24", height: "24", viewBox: "-4 2 26 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M0 15.7992V13.9992H12V15.7992H0ZM0 9.49922V7.69922H6V9.49922H0ZM0 3.19922V1.39922H6V3.19922H0ZM22.74 15.7992L17.94 10.9992C17.42 11.3992 16.86 11.6992 16.26 11.8992C15.66 12.0992 15.04 12.1992 14.4 12.1992C12.74 12.1992 11.325 11.6142 10.155 10.4442C8.985 9.27422 8.4 7.85922 8.4 6.19922C8.4 4.53922 8.985 3.12422 10.155 1.95422C11.325 0.784219 12.74 0.199219 14.4 0.199219C16.06 0.199219 17.475 0.784219 18.645 1.95422C19.815 3.12422 20.4 4.53922 20.4 6.19922C20.4 6.83922 20.3 7.45922 20.1 8.05922C19.9 8.65922 19.6 9.21922 19.2 9.73922L24 14.5392L22.74 15.7992ZM14.393 10.3992C15.5577 10.3992 16.55 9.99157 17.37 9.17627C18.19 8.36099 18.6 7.37099 18.6 6.20627C18.6 5.04157 18.1923 4.04922 17.377 3.22922C16.5618 2.40922 15.5718 1.99922 14.407 1.99922C13.2423 1.99922 12.25 2.40687 11.43 3.22217C10.61 4.03745 10.2 5.02745 10.2 6.19217C10.2 7.35687 10.6077 8.34922 11.423 9.16922C12.2382 9.98922 13.2282 10.3992 14.393 10.3992Z", fill: "white", style: { fill: 'white', fillOpacity: 1 } }) }));
|
|
17
|
+
const items = {
|
|
18
|
+
calendar: getItem('calendar', { iconName: 'event' }),
|
|
19
|
+
calls: getItem('calls', { iconName: 'local_phone', isActive: true, counter: 12 }),
|
|
20
|
+
dashboard: getItem('dashboard', { iconName: 'odometer', isActive: true }),
|
|
21
|
+
dispatch: getItem('dispatch', { iconName: 'location_disabled', counter: 1 }),
|
|
22
|
+
fleet: getItem('fleet', { iconName: 'fleet-pro', title: 'Fleet Pro' }),
|
|
23
|
+
followUps: getItem('followUps', { iconName: 'flag', title: 'Follow Ups' }),
|
|
24
|
+
inventory: getItem('inventory', { iconName: 'toys' }),
|
|
25
|
+
purchasing: getItem('purchasing', { iconComponent: InventoryIcon }),
|
|
26
|
+
accounting: getItem('accounting', { iconName: 'assignment' }),
|
|
27
|
+
marketing: getItem('marketing', { iconName: 'bullhorn' }),
|
|
28
|
+
priceBook: getItem('priceBook', { iconName: 'book' }),
|
|
29
|
+
pointOfSale: getItem('pointOfSale', { iconName: 'cash-register' }),
|
|
30
|
+
projects: getItem('projects', { iconName: 'folder_special' }),
|
|
31
|
+
reports: getItem('reports', { iconName: 'poll' }),
|
|
32
|
+
};
|
|
33
|
+
const NavLinkMock = props => (_jsx("a", { href: props.to, target: props.target, onClick: e => {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
}, className: props.className, children: props.children }));
|
|
36
|
+
export const defaultNavigation = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), leftClassName: "d-f align-items-center", items: [
|
|
37
|
+
items.dashboard,
|
|
38
|
+
items.calendar,
|
|
39
|
+
items.calls,
|
|
40
|
+
items.accounting,
|
|
41
|
+
items.dispatch,
|
|
42
|
+
items.fleet,
|
|
43
|
+
], navigationComponent: NavLinkMock }));
|
|
44
|
+
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: [
|
|
45
|
+
items.dashboard,
|
|
46
|
+
items.calendar,
|
|
47
|
+
items.calls,
|
|
48
|
+
items.accounting,
|
|
49
|
+
items.dispatch,
|
|
50
|
+
items.purchasing,
|
|
51
|
+
items.fleet,
|
|
52
|
+
], itemsOverflow: [items.calls, items.accounting, items.purchasing, items.dispatch], navigationComponent: NavLinkMock }));
|
|
53
|
+
const TimeZoneOffset = () => (_jsx("div", { className: "fs-2 ff-default p-r-2", children: _jsx("span", { children: "EST (-9 hrs)" }) }));
|
|
54
|
+
export const withAllMonolithData = () => (_jsx(HeaderNavigationStacked, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), leftClassName: "d-f align-items-center", items: [
|
|
55
|
+
items.dashboard,
|
|
56
|
+
items.calendar,
|
|
57
|
+
items.calls,
|
|
58
|
+
items.accounting,
|
|
59
|
+
items.dispatch,
|
|
60
|
+
items.fleet,
|
|
61
|
+
items.followUps,
|
|
62
|
+
items.inventory,
|
|
63
|
+
items.marketing,
|
|
64
|
+
items.priceBook,
|
|
65
|
+
items.pointOfSale,
|
|
66
|
+
items.reports,
|
|
67
|
+
], navigationComponent: NavLinkMock, right: _jsxs(Fragment, { children: [_jsx(TimeZoneOffset, {}), _jsx(HeaderNavigationLink, { id: "search", to: "https://google.com", target: "_blank", iconComponent: SearchIcon, hint: "Search: for all the questions" }), _jsx(HeaderNavigationTrigger, { id: "dialpad", iconName: "phone", counter: 2 }), _jsx(HeaderNavigationTrigger, { id: "titanAdvisor", iconName: "rocket", iconClassName: Styles.rocketIcon }), _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" }));
|
|
68
|
+
//# 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
|