@servicetitan/navigation 0.1.0 → 0.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.d.ts +25 -1
- package/dist/components/header-navigation/header-navigation.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation.js +19 -14
- package/dist/components/header-navigation/header-navigation.js.map +1 -1
- package/dist/components/header-navigation/header-navigation.module.less +32 -1
- package/dist/components/header-navigation/header-navigation.stories.d.ts +1 -0
- package/dist/components/header-navigation/header-navigation.stories.d.ts.map +1 -1
- package/dist/components/header-navigation/header-navigation.stories.js +34 -5
- package/dist/components/header-navigation/header-navigation.stories.js.map +1 -1
- package/dist/components/logo/logo.stories.js +1 -1
- package/dist/components/logo/logo.stories.js.map +1 -1
- package/dist/components/profile-dropdown/profile-dropdown.d.ts +53 -0
- package/dist/components/profile-dropdown/profile-dropdown.d.ts.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown.js +60 -0
- package/dist/components/profile-dropdown/profile-dropdown.js.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown.module.less +136 -0
- package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts +16 -0
- package/dist/components/profile-dropdown/profile-dropdown.stories.d.ts.map +1 -0
- package/dist/components/profile-dropdown/profile-dropdown.stories.js +47 -0
- package/dist/components/profile-dropdown/profile-dropdown.stories.js.map +1 -0
- package/dist/components/profile-dropdown/profile-icon.d.ts +5 -0
- package/dist/components/profile-dropdown/profile-icon.d.ts.map +1 -0
- package/dist/components/profile-dropdown/profile-icon.js +3 -0
- package/dist/components/profile-dropdown/profile-icon.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/navigation-context.d.ts +5 -0
- package/dist/utils/navigation-context.d.ts.map +1 -0
- package/dist/utils/navigation-context.js +6 -0
- package/dist/utils/navigation-context.js.map +1 -0
- package/dist/utils/navigation.d.ts +3 -2
- package/dist/utils/navigation.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/header-navigation/header-navigation.module.less +32 -1
- package/src/components/header-navigation/header-navigation.module.less.d.ts +2 -0
- package/src/components/header-navigation/header-navigation.stories.tsx +105 -5
- package/src/components/header-navigation/header-navigation.tsx +141 -71
- package/src/components/logo/logo.stories.tsx +1 -1
- package/src/components/profile-dropdown/profile-dropdown.module.less +136 -0
- package/src/components/profile-dropdown/profile-dropdown.module.less.d.ts +18 -0
- package/src/components/profile-dropdown/profile-dropdown.stories.tsx +127 -0
- package/src/components/profile-dropdown/profile-dropdown.tsx +258 -0
- package/src/components/profile-dropdown/profile-icon.tsx +52 -0
- package/src/index.ts +4 -0
- package/src/utils/navigation-context.tsx +12 -0
- package/src/utils/navigation.ts +3 -2
|
@@ -1,5 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IconPropsStrict } from '@servicetitan/design-system';
|
|
2
|
+
import { FC, HTMLAttributeAnchorTarget, ReactElement, ReactNode } from 'react';
|
|
2
3
|
import { HeaderNavigationComponentProps, HeaderNavigationLinkData } from '../../utils/navigation';
|
|
4
|
+
interface HeaderNavigationItemContentPropsStrict {
|
|
5
|
+
title?: string;
|
|
6
|
+
counter?: number;
|
|
7
|
+
iconClassName?: string;
|
|
8
|
+
iconComponent?: FC;
|
|
9
|
+
iconName?: IconPropsStrict['name'];
|
|
10
|
+
}
|
|
11
|
+
export interface HeaderNavigationTriggerPropsStrict extends HeaderNavigationItemContentPropsStrict {
|
|
12
|
+
key: string;
|
|
13
|
+
hint?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
interface HeaderNavigationTriggerProps extends HeaderNavigationTriggerPropsStrict {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
}
|
|
19
|
+
export interface HeaderNavigationLinkProps extends HeaderNavigationTriggerPropsStrict {
|
|
20
|
+
to: string;
|
|
21
|
+
isActive?: boolean | ((pathname: string) => boolean);
|
|
22
|
+
target?: HTMLAttributeAnchorTarget;
|
|
23
|
+
}
|
|
24
|
+
export declare const HeaderNavigationLink: FC<HeaderNavigationLinkProps>;
|
|
25
|
+
export declare const HeaderNavigationTrigger: FC<HeaderNavigationTriggerProps>;
|
|
3
26
|
export interface HeaderNavigationProps {
|
|
4
27
|
children?: ReactNode;
|
|
5
28
|
className?: string;
|
|
@@ -12,4 +35,5 @@ export interface HeaderNavigationProps {
|
|
|
12
35
|
navigationComponent?: FC<HeaderNavigationComponentProps>;
|
|
13
36
|
}
|
|
14
37
|
export declare const HeaderNavigation: FC<HeaderNavigationProps>;
|
|
38
|
+
export {};
|
|
15
39
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"header-navigation.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,eAAe,EAAgB,MAAM,6BAA6B,CAAC;AAElF,OAAO,EACH,EAAE,EAEF,yBAAyB,EACzB,YAAY,EACZ,SAAS,EAOZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAYlG,UAAU,sCAAsC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CACtC;AACD,MAAM,WAAW,kCAAmC,SAAQ,sCAAsC;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,4BAA6B,SAAQ,kCAAkC;IAC7E,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,kCAAkC;IACjF,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACtC;AA8BD,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAqC9D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CAsBpE,CAAC;AAmCF,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC3C,mBAAmB,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC;CAC5D;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAuFtD,CAAC"}
|
|
@@ -9,11 +9,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
+
import { createElement as _createElement } from "react";
|
|
12
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
14
|
import { Icon, Popover, Tag } from '@servicetitan/design-system';
|
|
14
15
|
import classNames from 'classnames';
|
|
15
|
-
import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from 'react';
|
|
16
|
-
import {
|
|
16
|
+
import { Fragment, useCallback, useContext, useEffect, useLayoutEffect, useRef, useState, } from 'react';
|
|
17
|
+
import { DefaultNavigationComponent, NavigationContext } from '../../utils/navigation-context';
|
|
17
18
|
import * as Styles from './header-navigation.module.less';
|
|
18
19
|
function useForceUpdate() {
|
|
19
20
|
const [, setTick] = useState(0);
|
|
@@ -21,18 +22,22 @@ function useForceUpdate() {
|
|
|
21
22
|
setTick(tick => tick + 1);
|
|
22
23
|
}, []);
|
|
23
24
|
}
|
|
24
|
-
const
|
|
25
|
-
const HeaderNavigationLink = (
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
[Styles.active]:
|
|
29
|
-
}), isActive: typeof
|
|
25
|
+
const HeaderNavigationItemContent = ({ title, counter, iconClassName, iconComponent: IconComponent, iconName, }) => (_jsxs(Fragment, { children: [IconComponent ? (_jsx("i", Object.assign({ className: Styles.icon }, { children: _jsx(IconComponent, {}) }))) : iconName ? (_jsx(Icon, { size: "inherit", name: iconName, className: Styles.icon })) : (_jsx("i", { className: classNames(Styles.icon, iconClassName) })), !!title && _jsx("ins", { children: title }), !!counter && (_jsx(Tag, Object.assign({ className: Styles.counter, compact: true, badge: true, color: "critical" }, { children: counter })))] }));
|
|
26
|
+
export const HeaderNavigationLink = ({ key, to, title, hint, counter, className, iconClassName, iconComponent, iconName, isActive, target, }) => {
|
|
27
|
+
const NavigationComponent = useContext(NavigationContext);
|
|
28
|
+
return (_jsx(NavigationComponent, Object.assign({ to: to, title: hint, className: classNames(Styles.link, className, {
|
|
29
|
+
[Styles.active]: isActive === true,
|
|
30
|
+
}), isActive: typeof isActive === 'function' ? isActive : undefined, activeClassName: Styles.active, "data-cy": `nav-item-${key}`, target: target }, { children: _jsx(HeaderNavigationItemContent, { title: title, counter: counter, iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName }) }), key));
|
|
30
31
|
};
|
|
31
|
-
const
|
|
32
|
+
export const HeaderNavigationTrigger = (_a) => {
|
|
33
|
+
var { key, hint, className, iconClassName, iconComponent, iconName } = _a, rest = __rest(_a, ["key", "hint", "className", "iconClassName", "iconComponent", "iconName"]);
|
|
34
|
+
return (_jsx("div", Object.assign({}, rest, { title: hint, className: classNames(Styles.link, 'cursor-pointer', className), "data-cy": `nav-item-${key}` }, { children: _jsx(HeaderNavigationItemContent, { iconComponent: iconComponent, iconClassName: iconClassName, iconName: iconName }) }), key));
|
|
35
|
+
};
|
|
36
|
+
const HeaderNavigationOverflow = ({ items }) => {
|
|
32
37
|
const [isOpen, setIsOpen] = useState(false);
|
|
33
|
-
return (_jsx(Popover, Object.assign({ open: isOpen, trigger: _jsx(Icon, { name: "more_vert", size: "24px", className: "c-pointer", onClick: () => setIsOpen(true), color: "white" }), direction: "bl", width: "xs", onClickOutside: () => setIsOpen(false), wrapperClassName: "d-if-i align-items-center", popoverContentClassName: Styles.overflowPopover, portal: true }, { children: _jsx("div", Object.assign({ onClick: () => setIsOpen(false) }, { children: items.map(item => (
|
|
38
|
+
return (_jsx(Popover, Object.assign({ open: isOpen, trigger: _jsx(Icon, { name: "more_vert", size: "24px", className: "c-pointer", onClick: () => setIsOpen(true), color: "white" }), direction: "bl", width: "xs", onClickOutside: () => setIsOpen(false), wrapperClassName: "d-if-i align-items-center", popoverContentClassName: Styles.overflowPopover, portal: true }, { children: _jsx("div", Object.assign({ onClick: () => setIsOpen(false), className: Styles.navigationLinks }, { children: items.map(item => (_createElement(HeaderNavigationLink, Object.assign({}, item, { key: item.key })))) })) })));
|
|
34
39
|
};
|
|
35
|
-
export const HeaderNavigation = ({ children, className, contentClassName, id, items, itemsOverflow, left, leftClassName, navigationComponent, }) => {
|
|
40
|
+
export const HeaderNavigation = ({ children, className, contentClassName, id, items, itemsOverflow, left, leftClassName, navigationComponent = DefaultNavigationComponent, }) => {
|
|
36
41
|
const leftRef = useRef(null);
|
|
37
42
|
const rightRef = useRef(null);
|
|
38
43
|
const centerRef = useRef(null);
|
|
@@ -65,8 +70,8 @@ export const HeaderNavigation = ({ children, className, contentClassName, id, it
|
|
|
65
70
|
useEffect(() => {
|
|
66
71
|
updateIsMinimized();
|
|
67
72
|
});
|
|
68
|
-
return (_jsxs("div", Object.assign({ className: classNames(Styles.header, className, {
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
return (_jsx(NavigationContext.Provider, Object.assign({ value: navigationComponent }, { children: _jsxs("div", Object.assign({ className: classNames(Styles.header, className, {
|
|
74
|
+
[Styles.minimized]: isMinimized,
|
|
75
|
+
}), id: id }, { children: [_jsx("div", Object.assign({ className: leftClassName, ref: leftRef }, { children: left })), _jsx("div", Object.assign({ ref: centerRef, className: "d-if justify-content-center flex-grow-1 flex-basis-0" }, { children: _jsxs("div", Object.assign({ ref: navigationRef, className: classNames(Styles.navigationLinks, 'd-if') }, { children: [items === null || items === void 0 ? void 0 : items.map(item => (_createElement(HeaderNavigationLink, Object.assign({}, item, { key: item.key })))), !!(itemsOverflow === null || itemsOverflow === void 0 ? void 0 : itemsOverflow.length) && (_jsx(HeaderNavigationOverflow, { items: itemsOverflow }))] })) })), _jsx("div", Object.assign({ className: classNames('d-f flex-row justify-content-end align-items-center', Styles.right, contentClassName), ref: rightRef }, { children: children }))] })) })));
|
|
71
76
|
};
|
|
72
77
|
//# sourceMappingURL=header-navigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header-navigation.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.25);
|
|
28
28
|
|
|
29
29
|
.link {
|
|
30
|
-
padding: 18px 12px;
|
|
31
30
|
max-height: 56px;
|
|
32
31
|
|
|
33
32
|
color: @color-white;
|
|
@@ -58,6 +57,27 @@
|
|
|
58
57
|
}
|
|
59
58
|
}
|
|
60
59
|
|
|
60
|
+
.right {
|
|
61
|
+
padding-right: @spacing-1;
|
|
62
|
+
|
|
63
|
+
.link {
|
|
64
|
+
padding: 18px @spacing-1;
|
|
65
|
+
|
|
66
|
+
& > i {
|
|
67
|
+
height: 24px;
|
|
68
|
+
width: 24px;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
& > * {
|
|
73
|
+
color: @color-white;
|
|
74
|
+
|
|
75
|
+
&:hover {
|
|
76
|
+
color: @color-neutral-20;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
61
81
|
&.minimized .link {
|
|
62
82
|
ins {
|
|
63
83
|
display: none;
|
|
@@ -81,6 +101,17 @@
|
|
|
81
101
|
}
|
|
82
102
|
}
|
|
83
103
|
|
|
104
|
+
.navigation-links {
|
|
105
|
+
.link {
|
|
106
|
+
padding: 18px 12px;
|
|
107
|
+
|
|
108
|
+
i {
|
|
109
|
+
height: 20px;
|
|
110
|
+
width: 20px;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
84
115
|
.overflow-popover {
|
|
85
116
|
padding: @spacing-1 @spacing-0 !important;
|
|
86
117
|
|
|
@@ -7,4 +7,5 @@ declare const _default: {
|
|
|
7
7
|
export default _default;
|
|
8
8
|
export declare const defaultNavigation: () => JSX.Element;
|
|
9
9
|
export declare const withLogoTextAndOverflow: () => JSX.Element;
|
|
10
|
+
export declare const withAllMonolithData: () => JSX.Element;
|
|
10
11
|
//# sourceMappingURL=header-navigation.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation.stories.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header-navigation.stories.d.ts","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.stories.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;;;;;;AAWrC,wBAIE;AA0CF,eAAO,MAAM,iBAAiB,mBAa7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,mBAoBnC,CAAC;AAgCF,eAAO,MAAM,mBAAmB,mBAsD/B,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Popover } from '@servicetitan/design-system';
|
|
3
|
+
import { useState } from 'react';
|
|
3
4
|
import { LogoCompanyTitle } from '../logo/logo-company-title';
|
|
4
5
|
import { LogoTitanText } from '../logo/logo-titan-text';
|
|
6
|
+
import { ProfileDropdown } from '../profile-dropdown/profile-dropdown';
|
|
7
|
+
import { HeaderNavigation, HeaderNavigationLink, HeaderNavigationTrigger, } from './header-navigation';
|
|
5
8
|
export default {
|
|
6
9
|
title: 'Navigation/HeaderNavigation',
|
|
7
10
|
component: HeaderNavigation,
|
|
@@ -9,14 +12,21 @@ export default {
|
|
|
9
12
|
};
|
|
10
13
|
const getItem = (key, data) => (Object.assign({ key, to: '/', title: key[0].toUpperCase() + key.substring(1), hint: key }, (data !== null && data !== void 0 ? data : {})));
|
|
11
14
|
const items = {
|
|
12
|
-
dashboard: getItem('dashboard', { iconName: 'dashboard', isActive: true }),
|
|
13
15
|
calendar: getItem('calendar', { iconName: 'schedule' }),
|
|
14
16
|
calls: getItem('calls', { iconName: 'phone', isActive: true, counter: 12 }),
|
|
15
|
-
|
|
17
|
+
dashboard: getItem('dashboard', { iconName: 'dashboard', isActive: true }),
|
|
16
18
|
dispatch: getItem('dispatch', { iconName: 'location_disabled' }),
|
|
17
19
|
fleet: getItem('fleet', { iconName: 'fleet-pro', title: 'Fleet Pro' }),
|
|
20
|
+
followUps: getItem('followUps', { iconName: 'flag', title: 'Follow Ups' }),
|
|
21
|
+
inventory: getItem('inventory', { iconName: 'toys' }),
|
|
22
|
+
accounting: getItem('accounting', { iconName: 'assignment' }),
|
|
23
|
+
marketing: getItem('marketing', { iconName: 'bullhorn' }),
|
|
24
|
+
priceBook: getItem('priceBook', { iconName: 'book' }),
|
|
25
|
+
pointOfSale: getItem('pointOfSale', { iconName: 'cash-register' }),
|
|
26
|
+
projects: getItem('projects', { iconName: 'folder_special' }),
|
|
27
|
+
reports: getItem('reports', { iconName: 'poll' }),
|
|
18
28
|
};
|
|
19
|
-
const NavLinkMock = props => (_jsx("a", Object.assign({ href:
|
|
29
|
+
const NavLinkMock = props => (_jsx("a", Object.assign({ href: props.to, target: props.target, onClick: e => {
|
|
20
30
|
e.preventDefault();
|
|
21
31
|
}, className: props.className }, { children: props.children })));
|
|
22
32
|
export const defaultNavigation = () => (_jsx(HeaderNavigation, { left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), items: [
|
|
@@ -35,4 +45,23 @@ export const withLogoTextAndOverflow = () => (_jsx(HeaderNavigation, { left: _js
|
|
|
35
45
|
items.dispatch,
|
|
36
46
|
items.fleet,
|
|
37
47
|
], itemsOverflow: [items.calls, items.accounting, items.dispatch], navigationComponent: NavLinkMock }));
|
|
48
|
+
const HelpCenterButton = () => {
|
|
49
|
+
const [open, setOpen] = useState(false);
|
|
50
|
+
return (_jsx(Popover, Object.assign({ onClickOutside: () => setOpen(false), open: open, direction: "bl", width: "xs", trigger: _jsx(HeaderNavigationTrigger, { iconName: "help_outline", onClick: () => setOpen(true), hint: "Help center" }, "help-center"), portal: true }, { children: "help center" })));
|
|
51
|
+
};
|
|
52
|
+
const TimeZoneOffset = () => (_jsx("div", Object.assign({ className: "fs-2 fw-bold p-x-1" }, { children: _jsx("span", { children: "EST (-9 hrs)" }) })));
|
|
53
|
+
export const withAllMonolithData = () => (_jsxs(HeaderNavigation, Object.assign({ left: _jsx(LogoCompanyTitle, { className: "m-l-1", fill: "#fff" }), items: [
|
|
54
|
+
items.dashboard,
|
|
55
|
+
items.calendar,
|
|
56
|
+
items.calls,
|
|
57
|
+
items.accounting,
|
|
58
|
+
items.dispatch,
|
|
59
|
+
items.fleet,
|
|
60
|
+
items.followUps,
|
|
61
|
+
items.inventory,
|
|
62
|
+
items.marketing,
|
|
63
|
+
items.priceBook,
|
|
64
|
+
items.pointOfSale,
|
|
65
|
+
items.reports,
|
|
66
|
+
], navigationComponent: NavLinkMock }, { children: [_jsx(TimeZoneOffset, {}), _jsx(HeaderNavigationTrigger, { iconName: "phone" }, "dialpad"), _jsx(HeaderNavigationLink, { to: "https://google.com", target: "_blank", iconName: "search", hint: "Search: for all the questions" }, "search"), _jsx(HelpCenterButton, {}), _jsx(HeaderNavigationTrigger, { iconName: "rocket" }, "titanAdvisor"), _jsx(HeaderNavigationLink, { to: "https://google.com", target: "_blank", iconName: "settings", "aria-label": "search", hint: "Settings" }, "settings"), _jsxs(ProfileDropdown, { children: [_jsx(ProfileDropdown.Link, Object.assign({ to: "https://googgle.com" }, { children: "Task Management" })), _jsx(ProfileDropdown.Divider, {}), _jsxs(ProfileDropdown.Link, Object.assign({ to: "https://googgle.com" }, { children: ["Sign Out ", _jsx("span", Object.assign({ className: "c-neutral-100 m-l-half t-truncate" }, { children: "James Bond" }))] })), _jsx(ProfileDropdown.Section, Object.assign({ className: "c-neutral-100 fs-1" }, { children: "User ID: 007" }))] })] })));
|
|
38
67
|
//# sourceMappingURL=header-navigation.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-navigation.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"header-navigation.stories.js","sourceRoot":"","sources":["../../../src/components/header-navigation/header-navigation.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,eAAe;IACX,KAAK,EAAE,6BAA6B;IACpC,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,OAAO,GAAG,CACZ,GAAW,EACX,IAAuC,EACf,EAAE,CAAC,iBAC3B,GAAG,EACH,EAAE,EAAE,GAAG,EACP,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAC9C,IAAI,EAAE,GAAG,IACN,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,EACjB,CAAC;AAEH,MAAM,KAAK,GAAG;IACV,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvD,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3E,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1E,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACtE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC1E,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACrD,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IAC7D,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACzD,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAClE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7D,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpD,CAAC;AAEF,MAAM,WAAW,GAAuC,KAAK,CAAC,EAAE,CAAC,CAC7D,0BACI,IAAI,EAAE,KAAK,CAAC,EAAE,EACd,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE;QACT,CAAC,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC,EACD,SAAS,EAAE,KAAK,CAAC,SAAS,gBAEzB,KAAK,CAAC,QAAQ,IACf,CACP,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CACnC,KAAC,gBAAgB,IACb,IAAI,EAAE,KAAC,gBAAgB,IAAC,SAAS,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,EACxD,KAAK,EAAE;QACH,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;KACd,EACD,mBAAmB,EAAE,WAAW,GAClC,CACL,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,CACzC,KAAC,gBAAgB,IACb,IAAI,EACA,KAAC,aAAa,IACV,UAAU,EAAC,SAAS,EACpB,KAAK,EAAC,YAAY,EAClB,WAAW,EAAC,oCAAoC,GAClD,EAEN,KAAK,EAAE;QACH,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;KACd,EACD,aAAa,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAC9D,mBAAmB,EAAE,WAAW,GAClC,CACL,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,OAAO,CACH,KAAC,OAAO,kBACJ,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EACpC,IAAI,EAAE,IAAI,EACV,SAAS,EAAC,IAAI,EACd,KAAK,EAAC,IAAI,EACV,OAAO,EACH,KAAC,uBAAuB,IAEpB,QAAQ,EAAC,cAAc,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAC5B,IAAI,EAAC,aAAa,IAHd,aAAa,CAInB,EAEN,MAAM,uCAGA,CACb,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,cAAc,GAAO,GAAG,EAAE,CAAC,CAC7B,4BAAK,SAAS,EAAC,oBAAoB,gBAC/B,0CAAyB,IACvB,CACT,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,CACrC,MAAC,gBAAgB,kBACb,IAAI,EAAE,KAAC,gBAAgB,IAAC,SAAS,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,EACxD,KAAK,EAAE;QACH,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,OAAO;KAChB,EACD,mBAAmB,EAAE,WAAW,iBAEhC,KAAC,cAAc,KAAG,EAElB,KAAC,uBAAuB,IAAe,QAAQ,EAAC,OAAO,IAA1B,SAAS,CAAoB,EAE1D,KAAC,oBAAoB,IAEjB,EAAE,EAAC,oBAAoB,EACvB,MAAM,EAAC,QAAQ,EACf,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAC,+BAA+B,IAJhC,QAAQ,CAKd,EAEF,KAAC,gBAAgB,KAAG,EACpB,KAAC,uBAAuB,IAAoB,QAAQ,EAAC,QAAQ,IAAhC,cAAc,CAAqB,EAEhE,KAAC,oBAAoB,IAEjB,EAAE,EAAC,oBAAoB,EACvB,MAAM,EAAC,QAAQ,EACf,QAAQ,EAAC,UAAU,gBACR,QAAQ,EACnB,IAAI,EAAC,UAAU,IALX,UAAU,CAMhB,EAEF,MAAC,eAAe,eACZ,KAAC,eAAe,CAAC,IAAI,kBAAC,EAAE,EAAC,qBAAqB,qCAAuC,EACrF,KAAC,eAAe,CAAC,OAAO,KAAG,EAC3B,MAAC,eAAe,CAAC,IAAI,kBAAC,EAAE,EAAC,qBAAqB,8BACjC,6BAAM,SAAS,EAAC,mCAAmC,gCAAkB,KAC3D,EACvB,KAAC,eAAe,CAAC,OAAO,kBAAC,SAAS,EAAC,oBAAoB,kCAE7B,IACZ,KACH,CACtB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { LogoTitan } from './logo-titan';
|
|
3
2
|
import { LogoCompanyTitle } from './logo-company-title';
|
|
3
|
+
import { LogoTitan } from './logo-titan';
|
|
4
4
|
import { LogoTitanText } from './logo-titan-text';
|
|
5
5
|
export default {
|
|
6
6
|
title: 'Navigation/Logo',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logo.stories.js","sourceRoot":"","sources":["../../../src/components/logo/logo.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"logo.stories.js","sourceRoot":"","sources":["../../../src/components/logo/logo.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,eAAe;IACX,KAAK,EAAE,iBAAiB;IACxB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,KAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,UAAU,EAAC,SAAS,GAAG,CAAC;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,KAAC,gBAAgB,KAAG,CAAC;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAC/B,KAAC,aAAa,IACV,SAAS,EAAC,uBAAuB,EACjC,UAAU,EAAC,SAAS,EACpB,KAAK,EAAC,YAAY,EAClB,WAAW,EAAC,oCAAoC,GAClD,CACL,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Popover, PopoverPropsStrict } from '@servicetitan/design-system';
|
|
2
|
+
import { FC, HTMLAttributeAnchorTarget, MouseEvent, ReactNode } from 'react';
|
|
3
|
+
interface ProfileDropdownTriggerProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
info?: {
|
|
6
|
+
title: string;
|
|
7
|
+
text: string;
|
|
8
|
+
};
|
|
9
|
+
imageSrc?: string | null;
|
|
10
|
+
avatarBadge?: boolean | string;
|
|
11
|
+
badge?: {
|
|
12
|
+
content?: number | string;
|
|
13
|
+
className: string;
|
|
14
|
+
};
|
|
15
|
+
hintArrow?: boolean;
|
|
16
|
+
onClick?(e: MouseEvent): void;
|
|
17
|
+
}
|
|
18
|
+
interface ProfileDropdownSectionProps {
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
onClick?(e: MouseEvent): void;
|
|
22
|
+
}
|
|
23
|
+
declare const ProfileDropdownSection: FC<ProfileDropdownSectionProps>;
|
|
24
|
+
declare type ProfileDropdownLinkProps = {
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
} & ({
|
|
27
|
+
target?: HTMLAttributeAnchorTarget;
|
|
28
|
+
to: string;
|
|
29
|
+
onClick?: () => void;
|
|
30
|
+
} | {
|
|
31
|
+
target?: never;
|
|
32
|
+
to?: never;
|
|
33
|
+
onClick(): void;
|
|
34
|
+
});
|
|
35
|
+
declare const ProfileDropdownLink: FC<ProfileDropdownLinkProps>;
|
|
36
|
+
export interface ProfileDropdownProps {
|
|
37
|
+
children?: ReactNode;
|
|
38
|
+
trigger?: Omit<ProfileDropdownTriggerProps, 'onClick'>;
|
|
39
|
+
hintPopup?: {
|
|
40
|
+
className?: string;
|
|
41
|
+
content: ReactNode;
|
|
42
|
+
width?: PopoverPropsStrict['width'];
|
|
43
|
+
onClose?: () => void;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface ProfileDropdownType extends FC<ProfileDropdownProps> {
|
|
47
|
+
Divider: typeof Popover.Divider;
|
|
48
|
+
Link: typeof ProfileDropdownLink;
|
|
49
|
+
Section: typeof ProfileDropdownSection;
|
|
50
|
+
}
|
|
51
|
+
export declare const ProfileDropdown: ProfileDropdownType;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=profile-dropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-dropdown.d.ts","sourceRoot":"","sources":["../../../src/components/profile-dropdown/profile-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAE1F,OAAO,EACH,EAAE,EACF,yBAAyB,EACzB,UAAU,EAEV,SAAS,EAKZ,MAAM,OAAO,CAAC;AAMf,UAAU,2BAA2B;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACjC;AA0FD,UAAU,2BAA2B;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACjC;AAED,QAAA,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAkB3D,CAAC;AAEF,aAAK,wBAAwB,GAAG;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACvB,GAAG,CACE;IAAE,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,GACxE;IAAE,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CACpD,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA6BrD,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,SAAS,CAAC;QACnB,KAAK,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACxB,CAAC;CACL;AAED,MAAM,WAAW,mBAAoB,SAAQ,EAAE,CAAC,oBAAoB,CAAC;IACjE,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,EAAE,OAAO,mBAAmB,CAAC;IACjC,OAAO,EAAE,OAAO,sBAAsB,CAAC;CAC1C;AAED,eAAO,MAAM,eAAe,EAAE,mBAwDL,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { BodyText, Icon, Popover } from '@servicetitan/design-system';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import { useCallback, useContext, useEffect, useState, } from 'react';
|
|
5
|
+
import { NavigationContext } from '../../utils/navigation-context';
|
|
6
|
+
import * as Styles from './profile-dropdown.module.less';
|
|
7
|
+
import { ProfileLogo } from './profile-icon';
|
|
8
|
+
const ProfileDropdownTrigger = ({ avatarBadge, badge, className, hintArrow, imageSrc, info, onClick, }) => {
|
|
9
|
+
const [avatarSource, setAvatarSource] = useState(imageSrc !== null && imageSrc !== void 0 ? imageSrc : '');
|
|
10
|
+
const [avatarSourceError, setAvatarSourceError] = useState(false);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const src = imageSrc !== null && imageSrc !== void 0 ? imageSrc : '';
|
|
13
|
+
if (src === avatarSource) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
setAvatarSource(src);
|
|
17
|
+
setAvatarSourceError(false);
|
|
18
|
+
}, [imageSrc, avatarSource]);
|
|
19
|
+
const onAvatarError = useCallback(() => {
|
|
20
|
+
setAvatarSourceError(true);
|
|
21
|
+
}, []);
|
|
22
|
+
return (_jsxs("div", Object.assign({ className: classNames('d-f align-items-center cursor-pointer position-relative p-y-1 p-x-1', Styles.triggerContainer, { [Styles.triggerContainerHintArrow]: hintArrow }, className), onClick: onClick }, { children: [avatarSource && !avatarSourceError ? (_jsx("img", { src: avatarSource, className: Styles.profileImage, onError: onAvatarError, alt: "user dropdown menu" })) : (_jsx(ProfileLogo, { size: 24 })), !!info && (_jsxs("div", Object.assign({ className: Styles.info }, { children: [_jsx(BodyText, Object.assign({ bold: true, title: info.title, className: "t-truncate c-white", size: "xsmall" }, { children: info.title })), _jsx(BodyText, Object.assign({ title: info.text, className: "t-truncate c-neutral-70 tt-uppercase", size: "xsmall" }, { children: info.text }))] }))), _jsx(Icon, { className: "m-l-half", name: "expand_more", size: 12 }), !!avatarBadge && (_jsx("div", { className: classNames(Styles.avatarBadge, avatarBadge === true ? 'bg-blue-500' : `bg-${avatarBadge}`) })), !!badge && (_jsx("span", Object.assign({ className: classNames(Styles.badge, badge.content ? Styles.badgeWithContent : Styles.badgeNoContent, badge.className) }, { children: badge.content })))] })));
|
|
23
|
+
};
|
|
24
|
+
const ProfileDropdownSection = ({ children, className, onClick, }) => {
|
|
25
|
+
const clickHandler = e => {
|
|
26
|
+
if (onClick) {
|
|
27
|
+
onClick(e);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
e.stopPropagation();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return (_jsx("div", Object.assign({ className: classNames(Styles.dropdownSection, className), onClick: clickHandler }, { children: children })));
|
|
34
|
+
};
|
|
35
|
+
const ProfileDropdownLink = ({ children, target, to, onClick, }) => {
|
|
36
|
+
const NavigationComponent = useContext(NavigationContext);
|
|
37
|
+
const clickHandler = (e) => {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
40
|
+
};
|
|
41
|
+
return to ? (_jsx(NavigationComponent, Object.assign({ className: classNames(Styles.dropdownSection, Styles.dropdownLink), target: target, to: to }, { children: children }))) : (_jsx("a", Object.assign({ className: classNames(Styles.dropdownSection, Styles.dropdownLink), onClick: clickHandler }, { children: children })));
|
|
42
|
+
};
|
|
43
|
+
export const ProfileDropdown = (({ children, hintPopup, trigger }) => {
|
|
44
|
+
var _a;
|
|
45
|
+
const [open, setOpen] = useState(false);
|
|
46
|
+
const onClose = useCallback(() => {
|
|
47
|
+
setOpen(false);
|
|
48
|
+
}, []);
|
|
49
|
+
const onTriggerClick = useCallback((e) => {
|
|
50
|
+
e.stopPropagation();
|
|
51
|
+
setOpen(!open);
|
|
52
|
+
}, [open]);
|
|
53
|
+
const hintShown = !!hintPopup && !open;
|
|
54
|
+
const triggerElement = (_jsx(ProfileDropdownTrigger, Object.assign({}, trigger, { onClick: children ? onTriggerClick : undefined, hintArrow: hintShown })));
|
|
55
|
+
return (_jsx("div", Object.assign({ className: "position-relative" }, { children: !!hintPopup && hintShown ? (_jsx(Popover, Object.assign({ direction: "bl", width: (_a = hintPopup.width) !== null && _a !== void 0 ? _a : 'xs', trigger: triggerElement, popoverContentClassName: Styles.hint, open: true }, { children: _jsx("div", Object.assign({ className: classNames(Styles.hintContent, hintPopup.className) }, { children: hintPopup.content })) }))) : (_jsx(Popover, Object.assign({ direction: "bl", width: "xs", trigger: triggerElement, open: open, onClickOutside: onClose, className: Styles.dropdown, popoverContentClassName: classNames(Styles.dropdownContent, Styles.dropdownContentBottomLeft) }, { children: _jsx("div", Object.assign({ className: Styles.dropdownContentWrapper, onClick: onClose }, { children: children })) }))) })));
|
|
56
|
+
});
|
|
57
|
+
ProfileDropdown.Divider = Popover.Divider;
|
|
58
|
+
ProfileDropdown.Link = ProfileDropdownLink;
|
|
59
|
+
ProfileDropdown.Section = ProfileDropdownSection;
|
|
60
|
+
//# sourceMappingURL=profile-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-dropdown.js","sourceRoot":"","sources":["../../../src/components/profile-dropdown/profile-dropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* stylelint-disable no-descending-specificity */
|
|
2
|
+
@import (reference) '@servicetitan/tokens/core/tokens.less';
|
|
3
|
+
|
|
4
|
+
.trigger-container {
|
|
5
|
+
height: 40px;
|
|
6
|
+
position: relative;
|
|
7
|
+
|
|
8
|
+
.profile-image {
|
|
9
|
+
height: 32px;
|
|
10
|
+
width: 32px;
|
|
11
|
+
border-radius: @border-radius-circular;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.info {
|
|
15
|
+
margin-left: @spacing-1;
|
|
16
|
+
max-width: 80px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.avatar-badge {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 8px;
|
|
22
|
+
left: 0;
|
|
23
|
+
height: 12px;
|
|
24
|
+
width: 12px;
|
|
25
|
+
border-radius: @border-radius-circular;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.badge {
|
|
29
|
+
position: absolute;
|
|
30
|
+
right: 16px;
|
|
31
|
+
color: @color-white;
|
|
32
|
+
font-size: @typescale-1;
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: center;
|
|
35
|
+
align-items: center;
|
|
36
|
+
font-weight: @font-weight-semibold;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.badge-no-content {
|
|
40
|
+
top: 8px;
|
|
41
|
+
height: 12px;
|
|
42
|
+
width: 12px;
|
|
43
|
+
border-radius: @border-radius-2;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.badge-with-content {
|
|
47
|
+
top: 4px;
|
|
48
|
+
height: 16px;
|
|
49
|
+
min-width: 12px;
|
|
50
|
+
padding-left: 2px;
|
|
51
|
+
padding-right: 2px;
|
|
52
|
+
border-radius: 8px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&.trigger-container-hint-arrow:first-child:before {
|
|
56
|
+
display: none;
|
|
57
|
+
content: '';
|
|
58
|
+
position: absolute;
|
|
59
|
+
background-color: @color-white;
|
|
60
|
+
height: 12px;
|
|
61
|
+
width: 12px;
|
|
62
|
+
bottom: -11px;
|
|
63
|
+
left: 14px;
|
|
64
|
+
z-index: (@z-index-popover + 2);
|
|
65
|
+
transform: rotateY(0deg) rotate(45deg);
|
|
66
|
+
border-left: 1px solid var(--colorsBorderGrey, @color-neutral-60);
|
|
67
|
+
border-top: 1px solid var(--colorsBorderGrey, @color-neutral-60);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.dropdown {
|
|
72
|
+
:global(.Popover__content) {
|
|
73
|
+
padding: @spacing-0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:global(.Popover__divider) {
|
|
77
|
+
margin: @spacing-half @spacing-0;
|
|
78
|
+
width: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:global(.Popover__content).dropdown-content {
|
|
82
|
+
padding: @spacing-1 @spacing-0;
|
|
83
|
+
font-size: @typescale-2;
|
|
84
|
+
position: relative;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.dropdown-content-bottom-left {
|
|
88
|
+
.dropdown-content-wrapper::before {
|
|
89
|
+
content: '';
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: -8px;
|
|
92
|
+
right: 8px;
|
|
93
|
+
height: 8px;
|
|
94
|
+
width: 8px;
|
|
95
|
+
background-color: coral;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.dropdown-section {
|
|
100
|
+
padding: @spacing-1 @spacing-2;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.dropdown-link {
|
|
104
|
+
display: block;
|
|
105
|
+
cursor: pointer;
|
|
106
|
+
color: @color-black;
|
|
107
|
+
|
|
108
|
+
&:hover {
|
|
109
|
+
background-color: rgba(0, 0, 0, 0.1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.hint {
|
|
115
|
+
background-color: @color-white;
|
|
116
|
+
padding: @spacing-0 !important;
|
|
117
|
+
|
|
118
|
+
.hint-content {
|
|
119
|
+
padding: @spacing-1 @spacing-2;
|
|
120
|
+
background-color: inherit;
|
|
121
|
+
|
|
122
|
+
&::before {
|
|
123
|
+
content: '';
|
|
124
|
+
position: absolute;
|
|
125
|
+
top: -6px;
|
|
126
|
+
right: 29px;
|
|
127
|
+
height: 12px;
|
|
128
|
+
width: 12px;
|
|
129
|
+
background-color: inherit;
|
|
130
|
+
transform: rotateY(0deg) rotate(45deg);
|
|
131
|
+
border-left: 1px solid @color-neutral-60;
|
|
132
|
+
border-top: 1px solid @color-neutral-60;
|
|
133
|
+
z-index: (@z-index-popover + 2);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const _default: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("./profile-dropdown").ProfileDropdownType;
|
|
5
|
+
parameters: {};
|
|
6
|
+
};
|
|
7
|
+
export default _default;
|
|
8
|
+
export declare const profileDropdownDefault: () => JSX.Element;
|
|
9
|
+
export declare const profileDropdownWithLogo: () => JSX.Element;
|
|
10
|
+
export declare const profileDropdownWithErrorLogo: () => JSX.Element;
|
|
11
|
+
export declare const profileDropdownWithInfo: () => JSX.Element;
|
|
12
|
+
export declare const profileDropdownWithCounter: () => JSX.Element;
|
|
13
|
+
export declare const profileDropdownWithBothBadges: () => JSX.Element;
|
|
14
|
+
export declare const profileDropdownWithHintPopup: () => JSX.Element;
|
|
15
|
+
export declare const profileDropdownWithHintAndInfoPopup: () => JSX.Element;
|
|
16
|
+
//# sourceMappingURL=profile-dropdown.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-dropdown.stories.d.ts","sourceRoot":"","sources":["../../../src/components/profile-dropdown/profile-dropdown.stories.tsx"],"names":[],"mappings":";;;;;;AAKA,wBAIE;AAeF,eAAO,MAAM,sBAAsB,mBAalC,CAAC;AAEF,eAAO,MAAM,uBAAuB,mBAQnC,CAAC;AAEF,eAAO,MAAM,4BAA4B,mBAQxC,CAAC;AAEF,eAAO,MAAM,uBAAuB,mBASnC,CAAC;AAEF,eAAO,MAAM,0BAA0B,mBAUtC,CAAC;AAEF,eAAO,MAAM,6BAA6B,mBASzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,mBAkBxC,CAAC;AAEF,eAAO,MAAM,mCAAmC,mBAa/C,CAAC"}
|