@servicetitan/design-system 12.9.0 → 12.10.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/Button/Button.css +1 -1
- package/dist/components/Button/index.css +1 -1
- package/dist/components/Collapsible/Collapsible.js +3 -3
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +13 -0
- package/dist/components/DatePicker/DatePicker.js +24 -8
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DatePicker/InputDateMask.d.ts +1 -1
- package/dist/components/DatePicker/InputDateMask.js +13 -4
- package/dist/components/DatePicker/InputDateMask.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.test.js +2 -2
- package/dist/components/DateRangePicker/DateRangePicker.test.js.map +1 -1
- package/dist/components/DateRangePicker/components/DateRangeInput.js +3 -1
- package/dist/components/DateRangePicker/components/DateRangeInput.js.map +1 -1
- package/dist/components/Icon/Icon.css +1 -1
- package/dist/components/Icon/index.css +1 -1
- package/dist/components/KeyPressListener/KeyPressListener.d.ts +1 -0
- package/dist/components/KeyPressListener/KeyPressListener.js +8 -6
- package/dist/components/KeyPressListener/KeyPressListener.js.map +1 -1
- package/dist/components/SideNav/SideNav.css +10 -8
- package/dist/components/SideNav/SideNav.css.map +1 -1
- package/dist/components/SideNav/SideNav.js +13 -5
- package/dist/components/SideNav/SideNav.js.map +1 -1
- package/dist/components/SideNav/SideNavGroup.css +6 -2
- package/dist/components/SideNav/SideNavGroup.css.map +1 -1
- package/dist/components/SideNav/SideNavGroup.js +1 -1
- package/dist/components/SideNav/SideNavGroup.js.map +1 -1
- package/dist/components/SideNav/SideNavItem.css +92 -17
- package/dist/components/SideNav/SideNavItem.css.map +1 -1
- package/dist/components/SideNav/SideNavItem.d.ts +17 -4
- package/dist/components/SideNav/SideNavItem.js +105 -14
- package/dist/components/SideNav/SideNavItem.js.map +1 -1
- package/dist/components/SideNav/index.css +98 -19
- package/dist/components/SideNav/index.css.map +1 -1
- package/dist/components/index.css +99 -20
- package/dist/components/index.css.map +1 -1
- package/dist/global/index.css +1 -1
- package/dist/global/version.css +1 -1
- package/dist/internal/CollapsibleList/CollapsibleContext.d.ts +9 -0
- package/dist/internal/CollapsibleList/CollapsibleContext.js +3 -0
- package/dist/internal/CollapsibleList/CollapsibleContext.js.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleList.css +9 -0
- package/dist/internal/CollapsibleList/CollapsibleList.css.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleList.d.ts +11 -0
- package/dist/internal/CollapsibleList/CollapsibleList.js +27 -0
- package/dist/internal/CollapsibleList/CollapsibleList.js.map +1 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.d.ts +11 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.js +60 -0
- package/dist/internal/CollapsibleList/CollapsibleListItem.js.map +1 -0
- package/dist/internal/CollapsibleList/index.css +9 -0
- package/dist/internal/CollapsibleList/index.css.map +1 -0
- package/dist/internal/CollapsibleList/index.d.ts +3 -0
- package/dist/internal/CollapsibleList/index.js +4 -0
- package/dist/internal/CollapsibleList/index.js.map +1 -0
- package/dist/internal/index.css +8 -1
- package/dist/internal/index.css.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/system-light.css +8 -1
- package/dist/system-light.css.map +1 -1
- package/dist/system-light.min.css +1 -1
- package/dist/system.css +107 -21
- package/dist/system.css.map +1 -1
- package/dist/system.min.css +2 -2
- package/dist/utilities/keyCodes.d.ts +1 -1
- package/dist/utilities/keyCodes.js +1 -1
- package/dist/utilities/keyCodes.js.map +1 -1
- package/package.json +8 -8
|
@@ -8,20 +8,23 @@
|
|
|
8
8
|
color: var(--colorsTextDefault, #141414);
|
|
9
9
|
padding: 16px;
|
|
10
10
|
}
|
|
11
|
-
.SideNav .Tag {
|
|
12
|
-
margin-left: 8px;
|
|
13
|
-
transform: translateY(-1px);
|
|
14
|
-
}
|
|
15
11
|
.SideNav a {
|
|
16
12
|
text-decoration: none;
|
|
17
13
|
}
|
|
14
|
+
.SideNav .SideNav {
|
|
15
|
+
padding: 0;
|
|
16
|
+
}
|
|
18
17
|
|
|
19
18
|
.SideNav__title {
|
|
20
|
-
|
|
21
|
-
margin:
|
|
22
|
-
padding: 8px 0
|
|
19
|
+
margin: 0 8px;
|
|
20
|
+
margin-bottom: 16px;
|
|
21
|
+
padding: 8px 0;
|
|
23
22
|
color: var(--colorsTextOnGrey, #444445);
|
|
24
23
|
}
|
|
24
|
+
.SideNav__title .Tag {
|
|
25
|
+
margin-left: 8px;
|
|
26
|
+
transform: translateY(-1px);
|
|
27
|
+
}
|
|
25
28
|
|
|
26
29
|
.SideNav__list {
|
|
27
30
|
list-style: none;
|
|
@@ -29,34 +32,106 @@
|
|
|
29
32
|
margin-left: 0;
|
|
30
33
|
margin-top: 0;
|
|
31
34
|
padding-left: 0;
|
|
32
|
-
padding-top: 16px;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
.SideNavItem {
|
|
36
38
|
margin: 0;
|
|
37
39
|
padding: 0;
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
.SideNavItem__button {
|
|
41
|
+
.SideNavItem > .SideNavItem__button {
|
|
41
42
|
border-radius: 3px;
|
|
42
43
|
color: var(--colorsTextDefault, #141414);
|
|
43
44
|
font-weight: 400;
|
|
44
45
|
cursor: pointer;
|
|
45
|
-
display:
|
|
46
|
-
|
|
46
|
+
display: flex;
|
|
47
|
+
min-height: 22px;
|
|
48
|
+
padding: 6px 8px;
|
|
47
49
|
position: relative;
|
|
48
50
|
transition: color cubic-bezier(0.4, 0, 0.2, 1) 100ms 0ms;
|
|
49
51
|
text-decoration: none;
|
|
52
|
+
/* States */
|
|
50
53
|
}
|
|
51
|
-
.SideNavItem__button:
|
|
54
|
+
.SideNavItem > .SideNavItem__button:hover {
|
|
55
|
+
background: var(--colorsHoverDefault, rgba(4, 4, 4, 0.08));
|
|
56
|
+
}
|
|
57
|
+
.SideNavItem > .SideNavItem__button:active:not(:focus-within) {
|
|
58
|
+
background-color: var(--colorsActiveDefault, rgba(4, 4, 4, 0.2));
|
|
59
|
+
}
|
|
60
|
+
.SideNavItem > .SideNavItem__button.SideNavItem__button--focus-visible:focus {
|
|
52
61
|
outline: none;
|
|
62
|
+
box-shadow: inset 0 0 0 2px var(--colorsFocusRingPrimary, #a9d1ff);
|
|
53
63
|
}
|
|
54
|
-
.
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__prefix,
|
|
65
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__content,
|
|
66
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__suffix {
|
|
67
|
+
color: currentColor;
|
|
68
|
+
display: inline-flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
}
|
|
71
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__prefix {
|
|
72
|
+
margin-right: 8px;
|
|
73
|
+
}
|
|
74
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__suffix {
|
|
75
|
+
margin-left: 8px;
|
|
76
|
+
}
|
|
77
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__content {
|
|
78
|
+
flex-grow: 1;
|
|
79
|
+
margin-top: 0.5px;
|
|
80
|
+
}
|
|
81
|
+
.SideNavItem.SideNavItem--disabled > .SideNavItem__button {
|
|
82
|
+
background-color: transparent !important;
|
|
83
|
+
opacity: 0.4;
|
|
84
|
+
pointer-events: none;
|
|
57
85
|
}
|
|
58
|
-
.SideNavItem--active .SideNavItem__button {
|
|
86
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) {
|
|
87
|
+
background-color: var(--colorsHoverPrimary, rgba(34, 112, 238, 0.08));
|
|
59
88
|
color: var(--colorsTextPrimary, #2270ee);
|
|
60
89
|
}
|
|
90
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) > .SideNavItem__button__content {
|
|
91
|
+
font-weight: bold;
|
|
92
|
+
}
|
|
93
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) .a-Icon svg {
|
|
94
|
+
color: var(--colorsTextPrimary, #2270ee) !important;
|
|
95
|
+
fill: var(--colorsTextPrimary, #2270ee) !important;
|
|
96
|
+
}
|
|
97
|
+
.SideNavItem .SideNavItem__button--expanded > .SideNavItem__button__content {
|
|
98
|
+
font-weight: bold;
|
|
99
|
+
}
|
|
100
|
+
.SideNavItem .SideNav .SideNavItem > .SideNavItem__button > .SideNavItem__button__content {
|
|
101
|
+
margin-left: 28px;
|
|
102
|
+
}
|
|
103
|
+
.SideNavItem .SideNav .SideNavItem > .SideNavItem__button .SideNavItem__button__prefix {
|
|
104
|
+
display: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.SideNavItem__button__suffix__collapsible-icon {
|
|
108
|
+
transition: transform cubic-bezier(0.4, 0, 0.2, 1) 300ms 0ms;
|
|
109
|
+
transform: rotate(0) translateY(1px);
|
|
110
|
+
}
|
|
111
|
+
.SideNavItem__button--expanded .SideNavItem__button__suffix__collapsible-icon {
|
|
112
|
+
transform: rotate(180deg) translateY(0);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.SideNavItem__button .SideNavItem__button__prefix .a-Icon,
|
|
116
|
+
.SideNavItem__button .SideNavItem__button__suffix .a-Icon {
|
|
117
|
+
margin-top: -0.5px;
|
|
118
|
+
}
|
|
119
|
+
.SideNavItem__button .StatusLight {
|
|
120
|
+
margin: -4px -5px;
|
|
121
|
+
}
|
|
122
|
+
.SideNavItem__button .Button {
|
|
123
|
+
margin: -4px;
|
|
124
|
+
vertical-align: middle;
|
|
125
|
+
}
|
|
126
|
+
.SideNavItem__button .ActionMenu__TriggerWrapper {
|
|
127
|
+
margin-top: -3px;
|
|
128
|
+
}
|
|
129
|
+
.SideNavItem__button .Tooltip {
|
|
130
|
+
margin-top: -2px;
|
|
131
|
+
}
|
|
132
|
+
.SideNavItem__button .Tag {
|
|
133
|
+
margin-left: 8px;
|
|
134
|
+
transform: translateY(0);
|
|
135
|
+
}
|
|
61
136
|
|
|
62
137
|
/*# sourceMappingURL=SideNavItem.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/SideNav/SideNav.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/core/tokens.scss","../../../src/utilities/_list-unset.scss","../../../src/components/SideNav/SideNavItem.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA;AAEA;EACA;EDOA;EACA,OARc;EASd,SEiHW;;AF/GX;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/SideNav/SideNav.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/core/tokens.scss","../../../src/utilities/_list-unset.scss","../../../src/components/SideNav/SideNavItem.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA;AAEA;EACA;EDOA;EACA,OARc;EASd,SEiHW;;AF/GX;EAAI;;AAGJ;EAAW;;;AAGZ;EACC;EACA,eEuGW;EFtGX;EACA,OAnBoB;;AAqBpB;EACC,aEiGU;EFhGV;;;AAIF;EGjCC;EACA;EACA;EACA;EACA;;;ACYD;EACC;EACA;;AAEA;EACC,eFDgB;EEEhB,OJlBa;EImBb,aFoFoB;EEnFpB;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EAAU,YA5BO;;AA6BjB;EAA8B,kBA5BZ;;AA8BlB;EACC;EACA,YA3Ba;;AA8Bd;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;EAAiC,cF4EvB;;AE3EV;EAAiC,aF2EvB;;AEzEV;EACC;EACA;;AAKD;EACC;EACA,SFqDmB;EEpDnB;;AAKD;EACC,kBA7DmB;EA8DnB,OAlEW;;AAoEX;EAAkC;;AAElC;EACC;EACA;;AAKH;EAAiE;;AAGjE;EACC;;AAKA;EAA+B;;;AAKjC;EACC;EACA;;AAEA;EAAmC;;;AAOlC;AAAA;EAAU;;AAGX;EAAe;;AAEf;EACC;EACA;;AAGD;EAA8B;;AAC9B;EAAW;;AAEX;EACC,aFMU;EELV","file":"SideNavItem.css"}
|
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
import React, { FC } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
2
|
+
import { IconProps, IconPropsStrict } from '../Icon';
|
|
3
|
+
import { CollapsibleListItemProps } from '../../internal';
|
|
5
4
|
export interface SideNavItemPropsStrict {
|
|
6
5
|
/** Controls if this is the currently active item in SideNav */
|
|
7
6
|
active?: boolean;
|
|
8
7
|
/** Adds one or more classnames for an element */
|
|
9
8
|
className?: string;
|
|
9
|
+
/**
|
|
10
|
+
* If collapsible provided, item to be rendered as collapsible menu (accordion).
|
|
11
|
+
* In this case a SideNav must be provided as children.
|
|
12
|
+
*/
|
|
13
|
+
collapsible?: CollapsibleListItemProps['collapsible'];
|
|
14
|
+
/** Indicates whether the SideNav.Item is disabled or not. */
|
|
15
|
+
disabled?: boolean;
|
|
10
16
|
/** Add a href attribute so right click context menus work (open in new tab, etc) */
|
|
11
17
|
href?: string;
|
|
12
|
-
/**
|
|
18
|
+
/** Name of icon to render on right side of SideNav.Item */
|
|
19
|
+
icon?: IconPropsStrict['name'] | IconProps;
|
|
20
|
+
/** Action for when SideNav.Item is clicked */
|
|
13
21
|
onClick?: (e: React.SyntheticEvent<HTMLElement>) => void;
|
|
22
|
+
/** To be rendered on the right side of SideNav.Item */
|
|
23
|
+
prefix?: React.ReactElement;
|
|
24
|
+
/** To be rendered on the left side of SideNav.Item */
|
|
25
|
+
suffix?: React.ReactElement;
|
|
14
26
|
}
|
|
15
27
|
export interface SideNavItemProps extends SideNavItemPropsStrict {
|
|
16
28
|
/** Unstrict Props */
|
|
17
29
|
[propName: string]: any;
|
|
18
30
|
}
|
|
19
31
|
export declare const SideNavItem: FC<SideNavItemProps>;
|
|
32
|
+
export declare const SideNavItemContext: React.Context<any>;
|
|
@@ -11,27 +11,118 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import classnames from 'classnames';
|
|
14
|
+
import { useFocusManager } from '@react-aria/focus';
|
|
14
15
|
import { BodyText } from '../BodyText';
|
|
16
|
+
import { Icon } from '../Icon';
|
|
17
|
+
import { keys } from '../../utilities/keyCodes';
|
|
15
18
|
import { useFocusVisible } from '../../hooks/useFocusVisible';
|
|
19
|
+
import { CollapsibleContext, CollapsibleList, } from '../../internal';
|
|
16
20
|
export const SideNavItem = (_a) => {
|
|
17
|
-
var
|
|
18
|
-
const
|
|
19
|
-
const { isFocusVisible, focusFunction, blurFunction } = useFocusVisible(itemRef, onBlur, onFocus);
|
|
20
|
-
const onClickHandler = (e) => {
|
|
21
|
-
if (!onClick)
|
|
22
|
-
return;
|
|
23
|
-
e.preventDefault();
|
|
24
|
-
onClick(e);
|
|
25
|
-
};
|
|
26
|
-
const El = href ? 'a' : 'span';
|
|
27
|
-
const buttonProps = { href };
|
|
21
|
+
var props = __rest(_a, []);
|
|
22
|
+
const { className } = props, rest = __rest(props, ["className"]);
|
|
28
23
|
const SideNavItemClasses = classnames('SideNavItem', className, {
|
|
29
|
-
'SideNavItem--active': active,
|
|
24
|
+
'SideNavItem--active': props.active,
|
|
25
|
+
'SideNavItem--disabled': props.disabled,
|
|
30
26
|
});
|
|
27
|
+
const sideNavItemContext = React.useContext(SideNavItemContext);
|
|
28
|
+
if (props.collapsible || sideNavItemContext)
|
|
29
|
+
return (React.createElement(CollapsibleList.Item, { el: "li", collapsible: Object.assign(Object.assign({}, props.collapsible), { extractCollapsibleList: true }), className: SideNavItemClasses, "data-anvil-component": "SideNavItem" },
|
|
30
|
+
React.createElement(SideNavItemButton, Object.assign({}, rest))));
|
|
31
|
+
return (React.createElement("li", { className: SideNavItemClasses, "data-anvil-component": "SideNavItem" },
|
|
32
|
+
React.createElement(SideNavItemButton, Object.assign({}, rest))));
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* SideNav Item's Button
|
|
36
|
+
*/
|
|
37
|
+
const SideNavItemButton = (_a) => {
|
|
38
|
+
var { collapsible, children, disabled, expanded, href, icon, onClick, onFocus, onBlur, prefix, suffix } = _a, rest = __rest(_a, ["collapsible", "children", "disabled", "expanded", "href", "icon", "onClick", "onFocus", "onBlur", "prefix", "suffix"]);
|
|
39
|
+
const El = href ? 'a' : 'span';
|
|
40
|
+
const buttonRef = React.useRef(null);
|
|
41
|
+
const collapsibleContext = React.useContext(CollapsibleContext);
|
|
42
|
+
const focusManager = useFocusManager();
|
|
43
|
+
const { isFocusVisible, focusFunction, blurFunction } = useFocusVisible(buttonRef, onBlur, onFocus);
|
|
31
44
|
const SideNavItemButtonClasses = classnames('SideNavItem__button', {
|
|
32
45
|
'SideNavItem__button--focus-visible': isFocusVisible,
|
|
46
|
+
'SideNavItem__button--expanded': collapsible && (collapsibleContext === null || collapsibleContext === void 0 ? void 0 : collapsibleContext.expanded),
|
|
33
47
|
});
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
const handleClick = (e) => {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
if (collapsible || !((_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target)))
|
|
51
|
+
return; // Exclude top-level handlers
|
|
52
|
+
if (href) {
|
|
53
|
+
(_b = buttonRef === null || buttonRef === void 0 ? void 0 : buttonRef.current) === null || _b === void 0 ? void 0 : _b.click();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (onClick)
|
|
57
|
+
onClick(e);
|
|
58
|
+
};
|
|
59
|
+
const handleEnter = (e) => {
|
|
60
|
+
if (e.target !== buttonRef.current) {
|
|
61
|
+
e.stopPropagation(); // Disable top-level item handlers from firing on buttons in suffix
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (e.key === keys.space)
|
|
65
|
+
e.preventDefault(); // Disable scrolling on space keypress
|
|
66
|
+
handleClick(e);
|
|
67
|
+
};
|
|
68
|
+
const handleKeyDown = (e) => {
|
|
69
|
+
switch (e.key) {
|
|
70
|
+
case keys.right:
|
|
71
|
+
case keys.down:
|
|
72
|
+
e.stopPropagation(); // Exclude multiple keydown handles
|
|
73
|
+
e.preventDefault(); // Disable scrolling on keypress
|
|
74
|
+
focusManager.focusNext({ tabbable: true }); // Exclude disabled items with tabbable option
|
|
75
|
+
break;
|
|
76
|
+
case keys.left:
|
|
77
|
+
case keys.up:
|
|
78
|
+
e.stopPropagation();
|
|
79
|
+
e.preventDefault();
|
|
80
|
+
focusManager.focusPrevious({ tabbable: true });
|
|
81
|
+
break;
|
|
82
|
+
case keys.enter:
|
|
83
|
+
case keys.space:
|
|
84
|
+
handleEnter(e);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const renderPrefix = () => {
|
|
89
|
+
const i = renderIcon(icon);
|
|
90
|
+
if (!i && !prefix)
|
|
91
|
+
return null;
|
|
92
|
+
return (React.createElement("span", { className: "SideNavItem__button__prefix" },
|
|
93
|
+
i,
|
|
94
|
+
prefix));
|
|
95
|
+
};
|
|
96
|
+
const renderSuffix = () => {
|
|
97
|
+
const arrow = collapsible ? (React.createElement(Icon, { className: "SideNavItem__button__suffix__collapsible-icon", name: "keyboard_arrow_down", size: 20 })) : null;
|
|
98
|
+
if (!suffix && !arrow)
|
|
99
|
+
return null;
|
|
100
|
+
return (React.createElement("span", { className: "SideNavItem__button__suffix" },
|
|
101
|
+
suffix,
|
|
102
|
+
arrow));
|
|
103
|
+
};
|
|
104
|
+
const buttonProps = {
|
|
105
|
+
className: SideNavItemButtonClasses,
|
|
106
|
+
href,
|
|
107
|
+
tabIndex: disabled ? -1 : 0,
|
|
108
|
+
target: href && rest.target,
|
|
109
|
+
};
|
|
110
|
+
return (React.createElement(SideNavItemContext.Provider, { value: { buttonRef } },
|
|
111
|
+
React.createElement(El, Object.assign({ ref: buttonRef, onClick: handleClick, onKeyDown: handleKeyDown, onFocus: focusFunction, onBlur: blurFunction }, buttonProps),
|
|
112
|
+
renderPrefix(),
|
|
113
|
+
React.createElement(BodyText, { el: "span", size: "small", className: "SideNavItem__button__content" }, children),
|
|
114
|
+
renderSuffix())));
|
|
115
|
+
};
|
|
116
|
+
export const SideNavItemContext = React.createContext(null);
|
|
117
|
+
const renderIcon = (icon) => {
|
|
118
|
+
// Icon passed as Icon name
|
|
119
|
+
if (typeof icon === 'string') {
|
|
120
|
+
return (React.createElement(Icon, { className: "SideNavItem__button__icon", name: icon, size: 20 }));
|
|
121
|
+
}
|
|
122
|
+
// Icon passed as an IconProps object
|
|
123
|
+
if (icon != null && !React.isValidElement(icon)) {
|
|
124
|
+
return (React.createElement(Icon, Object.assign({ className: classnames('SideNavItem__button__icon', icon.className) }, icon)));
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
36
127
|
};
|
|
37
128
|
//# sourceMappingURL=SideNavItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavItem.js","sourceRoot":"","sources":["../../../src/components/SideNav/SideNavItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"SideNavItem.js","sourceRoot":"","sources":["../../../src/components/SideNav/SideNavItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,20 +8,23 @@
|
|
|
8
8
|
color: var(--colorsTextDefault, #141414);
|
|
9
9
|
padding: 16px;
|
|
10
10
|
}
|
|
11
|
-
.SideNav .Tag {
|
|
12
|
-
margin-left: 8px;
|
|
13
|
-
transform: translateY(-1px);
|
|
14
|
-
}
|
|
15
11
|
.SideNav a {
|
|
16
12
|
text-decoration: none;
|
|
17
13
|
}
|
|
14
|
+
.SideNav .SideNav {
|
|
15
|
+
padding: 0;
|
|
16
|
+
}
|
|
18
17
|
|
|
19
18
|
.SideNav__title {
|
|
20
|
-
|
|
21
|
-
margin:
|
|
22
|
-
padding: 8px 0
|
|
19
|
+
margin: 0 8px;
|
|
20
|
+
margin-bottom: 16px;
|
|
21
|
+
padding: 8px 0;
|
|
23
22
|
color: var(--colorsTextOnGrey, #444445);
|
|
24
23
|
}
|
|
24
|
+
.SideNav__title .Tag {
|
|
25
|
+
margin-left: 8px;
|
|
26
|
+
transform: translateY(-1px);
|
|
27
|
+
}
|
|
25
28
|
|
|
26
29
|
.SideNav__list {
|
|
27
30
|
list-style: none;
|
|
@@ -29,45 +32,121 @@
|
|
|
29
32
|
margin-left: 0;
|
|
30
33
|
margin-top: 0;
|
|
31
34
|
padding-left: 0;
|
|
32
|
-
padding-top: 16px;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
.SideNavItem {
|
|
36
38
|
margin: 0;
|
|
37
39
|
padding: 0;
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
.SideNavItem__button {
|
|
41
|
+
.SideNavItem > .SideNavItem__button {
|
|
41
42
|
border-radius: 3px;
|
|
42
43
|
color: var(--colorsTextDefault, #141414);
|
|
43
44
|
font-weight: 400;
|
|
44
45
|
cursor: pointer;
|
|
45
|
-
display:
|
|
46
|
-
|
|
46
|
+
display: flex;
|
|
47
|
+
min-height: 22px;
|
|
48
|
+
padding: 6px 8px;
|
|
47
49
|
position: relative;
|
|
48
50
|
transition: color cubic-bezier(0.4, 0, 0.2, 1) 100ms 0ms;
|
|
49
51
|
text-decoration: none;
|
|
52
|
+
/* States */
|
|
50
53
|
}
|
|
51
|
-
.SideNavItem__button:
|
|
54
|
+
.SideNavItem > .SideNavItem__button:hover {
|
|
55
|
+
background: var(--colorsHoverDefault, rgba(4, 4, 4, 0.08));
|
|
56
|
+
}
|
|
57
|
+
.SideNavItem > .SideNavItem__button:active:not(:focus-within) {
|
|
58
|
+
background-color: var(--colorsActiveDefault, rgba(4, 4, 4, 0.2));
|
|
59
|
+
}
|
|
60
|
+
.SideNavItem > .SideNavItem__button.SideNavItem__button--focus-visible:focus {
|
|
52
61
|
outline: none;
|
|
62
|
+
box-shadow: inset 0 0 0 2px var(--colorsFocusRingPrimary, #a9d1ff);
|
|
53
63
|
}
|
|
54
|
-
.
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__prefix,
|
|
65
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__content,
|
|
66
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__suffix {
|
|
67
|
+
color: currentColor;
|
|
68
|
+
display: inline-flex;
|
|
69
|
+
align-items: center;
|
|
57
70
|
}
|
|
58
|
-
.SideNavItem
|
|
71
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__prefix {
|
|
72
|
+
margin-right: 8px;
|
|
73
|
+
}
|
|
74
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__suffix {
|
|
75
|
+
margin-left: 8px;
|
|
76
|
+
}
|
|
77
|
+
.SideNavItem > .SideNavItem__button > .SideNavItem__button__content {
|
|
78
|
+
flex-grow: 1;
|
|
79
|
+
margin-top: 0.5px;
|
|
80
|
+
}
|
|
81
|
+
.SideNavItem.SideNavItem--disabled > .SideNavItem__button {
|
|
82
|
+
background-color: transparent !important;
|
|
83
|
+
opacity: 0.4;
|
|
84
|
+
pointer-events: none;
|
|
85
|
+
}
|
|
86
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) {
|
|
87
|
+
background-color: var(--colorsHoverPrimary, rgba(34, 112, 238, 0.08));
|
|
59
88
|
color: var(--colorsTextPrimary, #2270ee);
|
|
60
89
|
}
|
|
90
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) > .SideNavItem__button__content {
|
|
91
|
+
font-weight: bold;
|
|
92
|
+
}
|
|
93
|
+
.SideNavItem.SideNavItem--active > .SideNavItem__button:not(.SideNavItem__button--expanded) .a-Icon svg {
|
|
94
|
+
color: var(--colorsTextPrimary, #2270ee) !important;
|
|
95
|
+
fill: var(--colorsTextPrimary, #2270ee) !important;
|
|
96
|
+
}
|
|
97
|
+
.SideNavItem .SideNavItem__button--expanded > .SideNavItem__button__content {
|
|
98
|
+
font-weight: bold;
|
|
99
|
+
}
|
|
100
|
+
.SideNavItem .SideNav .SideNavItem > .SideNavItem__button > .SideNavItem__button__content {
|
|
101
|
+
margin-left: 28px;
|
|
102
|
+
}
|
|
103
|
+
.SideNavItem .SideNav .SideNavItem > .SideNavItem__button .SideNavItem__button__prefix {
|
|
104
|
+
display: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.SideNavItem__button__suffix__collapsible-icon {
|
|
108
|
+
transition: transform cubic-bezier(0.4, 0, 0.2, 1) 300ms 0ms;
|
|
109
|
+
transform: rotate(0) translateY(1px);
|
|
110
|
+
}
|
|
111
|
+
.SideNavItem__button--expanded .SideNavItem__button__suffix__collapsible-icon {
|
|
112
|
+
transform: rotate(180deg) translateY(0);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.SideNavItem__button .SideNavItem__button__prefix .a-Icon,
|
|
116
|
+
.SideNavItem__button .SideNavItem__button__suffix .a-Icon {
|
|
117
|
+
margin-top: -0.5px;
|
|
118
|
+
}
|
|
119
|
+
.SideNavItem__button .StatusLight {
|
|
120
|
+
margin: -4px -5px;
|
|
121
|
+
}
|
|
122
|
+
.SideNavItem__button .Button {
|
|
123
|
+
margin: -4px;
|
|
124
|
+
vertical-align: middle;
|
|
125
|
+
}
|
|
126
|
+
.SideNavItem__button .ActionMenu__TriggerWrapper {
|
|
127
|
+
margin-top: -3px;
|
|
128
|
+
}
|
|
129
|
+
.SideNavItem__button .Tooltip {
|
|
130
|
+
margin-top: -2px;
|
|
131
|
+
}
|
|
132
|
+
.SideNavItem__button .Tag {
|
|
133
|
+
margin-left: 8px;
|
|
134
|
+
transform: translateY(0);
|
|
135
|
+
}
|
|
61
136
|
|
|
62
137
|
.SideNavGroup {
|
|
63
|
-
margin-top:
|
|
138
|
+
margin-top: 24px;
|
|
64
139
|
}
|
|
65
140
|
.SideNav__list .SideNavGroup:first-child {
|
|
66
141
|
margin-top: 16px;
|
|
67
142
|
}
|
|
143
|
+
.SideNav__list .SideNavGroup:last-child {
|
|
144
|
+
margin-bottom: 16px;
|
|
145
|
+
}
|
|
68
146
|
|
|
69
147
|
.SideNavGroup__title {
|
|
70
|
-
margin:
|
|
148
|
+
margin: 8px;
|
|
149
|
+
margin-top: 0;
|
|
71
150
|
}
|
|
72
151
|
|
|
73
152
|
.SideNavGroup__list {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/SideNav/SideNav.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/core/tokens.scss","../../../src/utilities/_list-unset.scss","../../../src/components/SideNav/SideNavItem.scss","../../../src/components/SideNav/SideNavGroup.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA;AAEA;EACA;EDOA;EACA,OARc;EASd,SEiHW;;AF/GX;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/SideNav/SideNav.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/core/tokens.scss","../../../src/utilities/_list-unset.scss","../../../src/components/SideNav/SideNavItem.scss","../../../src/components/SideNav/SideNavGroup.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA;AAEA;EACA;EDOA;EACA,OARc;EASd,SEiHW;;AF/GX;EAAI;;AAGJ;EAAW;;;AAGZ;EACC;EACA,eEuGW;EFtGX;EACA,OAnBoB;;AAqBpB;EACC,aEiGU;EFhGV;;;AAIF;EGjCC;EACA;EACA;EACA;EACA;;;ACYD;EACC;EACA;;AAEA;EACC,eFDgB;EEEhB,OJlBa;EImBb,aFoFoB;EEnFpB;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EAAU,YA5BO;;AA6BjB;EAA8B,kBA5BZ;;AA8BlB;EACC;EACA,YA3Ba;;AA8Bd;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;EAAiC,cF4EvB;;AE3EV;EAAiC,aF2EvB;;AEzEV;EACC;EACA;;AAKD;EACC;EACA,SFqDmB;EEpDnB;;AAKD;EACC,kBA7DmB;EA8DnB,OAlEW;;AAoEX;EAAkC;;AAElC;EACC;EACA;;AAKH;EAAiE;;AAGjE;EACC;;AAKA;EAA+B;;;AAKjC;EACC;EACA;;AAEA;EAAmC;;;AAOlC;AAAA;EAAU;;AAGX;EAAe;;AAEf;EACC;EACA;;AAGD;EAA8B;;AAC9B;EAAW;;AAEX;EACC,aFMU;EELV;;;ACtHF;EACC,YH4HW;;AG1HX;EAA+B,YHyHpB;;AGxHX;EAA8B,eHwHnB;;;AGrHZ;EACC,QHmHW;EGlHX;;;AAGD;EFdC;EACA;EACA;EACA;EACA","file":"index.css"}
|