@servicetitan/design-system 10.8.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/components/Backdrop/Backdrop.css +2 -21
  2. package/dist/components/Backdrop/Backdrop.css.map +1 -1
  3. package/dist/components/Backdrop/Backdrop.d.ts +5 -7
  4. package/dist/components/Backdrop/Backdrop.js +13 -44
  5. package/dist/components/Backdrop/Backdrop.js.map +1 -1
  6. package/dist/components/Backdrop/index.css +2 -21
  7. package/dist/components/Backdrop/index.css.map +1 -1
  8. package/dist/components/Button/Button.d.ts +18 -18
  9. package/dist/components/DateRangePicker/DateRangePicker.d.ts +9 -0
  10. package/dist/components/DateRangePicker/DateRangePicker.js +9 -16
  11. package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
  12. package/dist/components/DateRangePicker/DateRangePicker.test.js +2 -2
  13. package/dist/components/DateRangePicker/DateRangePicker.test.js.map +1 -1
  14. package/dist/components/DateRangePicker/components/DateRangeInput.d.ts +6 -0
  15. package/dist/components/DateRangePicker/components/DateRangeInput.js +9 -4
  16. package/dist/components/DateRangePicker/components/DateRangeInput.js.map +1 -1
  17. package/dist/components/DateRangePicker/components/DateRangeTrigger.d.ts +6 -0
  18. package/dist/components/DateRangePicker/components/DateRangeTrigger.js +4 -5
  19. package/dist/components/DateRangePicker/components/DateRangeTrigger.js.map +1 -1
  20. package/dist/components/Dialog/Dialog.d.ts +7 -5
  21. package/dist/components/Dialog/Dialog.js +4 -9
  22. package/dist/components/Dialog/Dialog.js.map +1 -1
  23. package/dist/components/Drawer/Drawer.css +6 -1
  24. package/dist/components/Drawer/Drawer.css.map +1 -1
  25. package/dist/components/Drawer/Drawer.d.ts +16 -25
  26. package/dist/components/Drawer/Drawer.js +34 -24
  27. package/dist/components/Drawer/Drawer.js.map +1 -1
  28. package/dist/components/Drawer/index.css +6 -1
  29. package/dist/components/Drawer/index.css.map +1 -1
  30. package/dist/components/FilterButton/FilterButton.css +46 -0
  31. package/dist/components/FilterButton/FilterButton.css.map +1 -0
  32. package/dist/components/FilterButton/FilterButton.d.ts +20 -0
  33. package/dist/components/FilterButton/FilterButton.js +62 -0
  34. package/dist/components/FilterButton/FilterButton.js.map +1 -0
  35. package/dist/components/FilterButton/index.css +46 -0
  36. package/dist/components/FilterButton/index.css.map +1 -0
  37. package/dist/components/FilterButton/index.d.ts +1 -0
  38. package/dist/components/FilterButton/index.js +14 -0
  39. package/dist/components/FilterButton/index.js.map +1 -0
  40. package/dist/components/Input/Input.css +135 -201
  41. package/dist/components/Input/Input.css.map +1 -1
  42. package/dist/components/Input/Input.js +36 -60
  43. package/dist/components/Input/Input.js.map +1 -1
  44. package/dist/components/Input/index.css +135 -201
  45. package/dist/components/Input/index.css.map +1 -1
  46. package/dist/components/Modal/Modal.css +5 -2
  47. package/dist/components/Modal/Modal.css.map +1 -1
  48. package/dist/components/Modal/Modal.d.ts +9 -7
  49. package/dist/components/Modal/Modal.js +3 -3
  50. package/dist/components/Modal/Modal.js.map +1 -1
  51. package/dist/components/Modal/components.d.ts +5 -6
  52. package/dist/components/Modal/components.js +34 -13
  53. package/dist/components/Modal/components.js.map +1 -1
  54. package/dist/components/Modal/index.css +5 -2
  55. package/dist/components/Modal/index.css.map +1 -1
  56. package/dist/components/Popover/Popover.d.ts +3 -3
  57. package/dist/components/Popover/Popover.js +3 -10
  58. package/dist/components/Popover/Popover.js.map +1 -1
  59. package/dist/components/Sidebar/Sidebar.js +5 -2
  60. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  61. package/dist/components/Table/Table.css +3 -0
  62. package/dist/components/Table/Table.css.map +1 -1
  63. package/dist/components/Table/index.css +3 -0
  64. package/dist/components/Table/index.css.map +1 -1
  65. package/dist/components/Takeover/Takeover.css +10 -0
  66. package/dist/components/Takeover/Takeover.css.map +1 -1
  67. package/dist/components/Takeover/Takeover.d.ts +11 -4
  68. package/dist/components/Takeover/Takeover.js +33 -12
  69. package/dist/components/Takeover/Takeover.js.map +1 -1
  70. package/dist/components/Takeover/TakeoverFooter.css +10 -0
  71. package/dist/components/Takeover/TakeoverFooter.css.map +1 -1
  72. package/dist/components/Takeover/TakeoverSection.css +10 -0
  73. package/dist/components/Takeover/TakeoverSection.css.map +1 -1
  74. package/dist/components/Takeover/index.css +10 -0
  75. package/dist/components/Takeover/index.css.map +1 -1
  76. package/dist/components/Tooltip/Tooltip.js +1 -1
  77. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  78. package/dist/components/index.css +205 -225
  79. package/dist/components/index.css.map +1 -1
  80. package/dist/components/index.d.ts +1 -0
  81. package/dist/components/index.js +1 -0
  82. package/dist/components/index.js.map +1 -1
  83. package/dist/global/index.css +1 -1
  84. package/dist/global/version.css +1 -1
  85. package/dist/hooks/index.d.ts +0 -1
  86. package/dist/hooks/index.js +0 -1
  87. package/dist/hooks/index.js.map +1 -1
  88. package/dist/internal/Overlay/Overlay.css +18 -0
  89. package/dist/internal/Overlay/Overlay.css.map +1 -0
  90. package/dist/internal/Overlay/Overlay.d.ts +15 -0
  91. package/dist/internal/Overlay/Overlay.js +46 -0
  92. package/dist/internal/Overlay/Overlay.js.map +1 -0
  93. package/dist/internal/Overlay/index.css +18 -0
  94. package/dist/internal/Overlay/index.css.map +1 -0
  95. package/dist/internal/Overlay/index.d.ts +1 -0
  96. package/dist/internal/Overlay/index.js +14 -0
  97. package/dist/internal/Overlay/index.js.map +1 -0
  98. package/dist/internal/Popper/Popper.css +7 -0
  99. package/dist/internal/Popper/Popper.css.map +1 -1
  100. package/dist/internal/Popper/Popper.d.ts +3 -1
  101. package/dist/internal/Popper/Popper.js +20 -11
  102. package/dist/internal/Popper/Popper.js.map +1 -1
  103. package/dist/internal/Popper/index.css +7 -0
  104. package/dist/internal/Popper/index.css.map +1 -1
  105. package/dist/internal/index.css +24 -0
  106. package/dist/internal/index.css.map +1 -1
  107. package/dist/internal/index.d.ts +1 -0
  108. package/dist/internal/index.js +1 -0
  109. package/dist/internal/index.js.map +1 -1
  110. package/dist/system-light.css +137 -1
  111. package/dist/system-light.css.map +1 -1
  112. package/dist/system-light.min.css +1 -1
  113. package/dist/system.css +344 -234
  114. package/dist/system.css.map +1 -1
  115. package/dist/system.min.css +2 -2
  116. package/dist/utilities/FocusTrap/FocusTrap.d.ts +8 -0
  117. package/dist/utilities/FocusTrap/FocusTrap.js +73 -0
  118. package/dist/utilities/FocusTrap/FocusTrap.js.map +1 -0
  119. package/dist/utilities/FocusTrap/index.d.ts +1 -0
  120. package/dist/utilities/FocusTrap/index.js +14 -0
  121. package/dist/utilities/FocusTrap/index.js.map +1 -0
  122. package/dist/utilities/OverlayContext.js +2 -7
  123. package/dist/utilities/OverlayContext.js.map +1 -1
  124. package/dist/utilities/dateFormat.d.ts +10 -2
  125. package/dist/utilities/dateFormat.js +12 -10
  126. package/dist/utilities/dateFormat.js.map +1 -1
  127. package/dist/utilities/index.d.ts +1 -1
  128. package/dist/utilities/index.js +1 -1
  129. package/dist/utilities/index.js.map +1 -1
  130. package/package.json +9 -9
  131. package/dist/hooks/useFocusScope.d.ts +0 -16
  132. package/dist/hooks/useFocusScope.js +0 -89
  133. package/dist/hooks/useFocusScope.js.map +0 -1
  134. package/dist/utilities/focus-utils.d.ts +0 -4
  135. package/dist/utilities/focus-utils.js +0 -49
  136. package/dist/utilities/focus-utils.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import React, { FC } from 'react';
2
- import { ModalWindow, ModalHeader, ModalHeaderProps, ModalFooter, ModalContent } from '../Modal/components';
3
- import { FocusScopeOptions } from '../../hooks/useFocusScope';
4
- export interface DialogProps extends ModalHeaderProps {
2
+ import { ModalWindow, ModalWindowProps, ModalHeader, ModalHeaderProps, ModalFooter, ModalContent } from '../Modal/components';
3
+ import { FocusTrapProps } from '../../utilities/FocusTrap';
4
+ export interface DialogProps extends ModalHeaderProps, ModalWindowProps {
5
5
  /** Action buttons layout direction */
6
6
  actionsLayout?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
7
7
  /** Adds one or more classnames for an element */
@@ -14,12 +14,14 @@ export interface DialogProps extends ModalHeaderProps {
14
14
  onSecondaryActionClick?: (e: React.SyntheticEvent<HTMLElement>) => void;
15
15
  /** Whether the dialog is open or not */
16
16
  open?: boolean;
17
+ /** Render in a React Portal */
18
+ portal?: boolean;
17
19
  /** Text for the primary button */
18
20
  primaryActionName: string;
19
21
  /** Text for the secondary button */
20
22
  secondaryActionName?: string;
21
- /** Options passed into useFocusScope hook */
22
- focusScopeOptions?: FocusScopeOptions;
23
+ /** Options passed into FocusTrap */
24
+ focusTrapOptions?: FocusTrapProps;
23
25
  }
24
26
  interface Dialog extends FC<DialogProps> {
25
27
  /** Subcomponents */
@@ -32,18 +32,13 @@ var components_1 = require("../Modal/components");
32
32
  var Button_1 = require("../Button");
33
33
  var Stack_1 = require("../Stack");
34
34
  var Dialog = function (_a) {
35
- var _b = _a.open, open = _b === void 0 ? false : _b, children = _a.children, className = _a.className, onClose = _a.onClose, title = _a.title, actionsLayout = _a.actionsLayout, negative = _a.negative, onPrimaryActionClick = _a.onPrimaryActionClick, onSecondaryActionClick = _a.onSecondaryActionClick, primaryActionName = _a.primaryActionName, secondaryActionName = _a.secondaryActionName, focusScopeOptions = _a.focusScopeOptions, rest = __rest(_a, ["open", "children", "className", "onClose", "title", "actionsLayout", "negative", "onPrimaryActionClick", "onSecondaryActionClick", "primaryActionName", "secondaryActionName", "focusScopeOptions"]);
36
- react_1.default.useEffect(function () {
37
- if (rest.closable) {
38
- console.warn('@servicetitan/design-system: The `closable` prop of the Dialog component will be removed in a future release. It also never worked. Please remove.');
39
- }
40
- });
35
+ var _b = _a.open, open = _b === void 0 ? false : _b, children = _a.children, className = _a.className, onClose = _a.onClose, title = _a.title, actionsLayout = _a.actionsLayout, negative = _a.negative, onPrimaryActionClick = _a.onPrimaryActionClick, onSecondaryActionClick = _a.onSecondaryActionClick, _c = _a.portal, portal = _c === void 0 ? true : _c, primaryActionName = _a.primaryActionName, secondaryActionName = _a.secondaryActionName, focusTrapOptions = _a.focusTrapOptions, rest = __rest(_a, ["open", "children", "className", "onClose", "title", "actionsLayout", "negative", "onPrimaryActionClick", "onSecondaryActionClick", "portal", "primaryActionName", "secondaryActionName", "focusTrapOptions"]);
41
36
  var DialogClasses = (0, classnames_1.default)('Dialog', className);
42
- return (open && (react_1.default.createElement(components_1.ModalWindow, __assign({ className: DialogClasses, onClose: onClose, size: components_1.ModalSizes.XS, focusScopeOptions: focusScopeOptions }, rest),
43
- react_1.default.createElement(components_1.ModalHeader, { onClose: onClose, title: title, className: "Dialog__header" }),
37
+ return (react_1.default.createElement(components_1.ModalWindow, __assign({ className: DialogClasses, onClose: onClose, size: components_1.ModalSizes.XS, focusTrapOptions: focusTrapOptions, open: open, portal: portal }, rest),
38
+ react_1.default.createElement(components_1.ModalHeader, { title: title, className: "Dialog__header" }),
44
39
  react_1.default.createElement(components_1.ModalContent, { className: "Dialog__content" }, children),
45
40
  react_1.default.createElement(components_1.ModalFooter, { className: "Dialog__footer" },
46
- react_1.default.createElement(DialogActions, { actionsLayout: actionsLayout, negative: negative, onPrimaryActionClick: onPrimaryActionClick, onSecondaryActionClick: onSecondaryActionClick, primaryActionName: primaryActionName, secondaryActionName: secondaryActionName })))));
41
+ react_1.default.createElement(DialogActions, { actionsLayout: actionsLayout, negative: negative, onPrimaryActionClick: onPrimaryActionClick, onSecondaryActionClick: onSecondaryActionClick, primaryActionName: primaryActionName, secondaryActionName: secondaryActionName }))));
47
42
  };
48
43
  exports.Dialog = Dialog;
49
44
  var DialogActions = function (props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,12 @@
14
14
  right: 0;
15
15
  top: 0;
16
16
  width: 90%;
17
- z-index: 1100;
17
+ }
18
+ .Drawer:focus {
19
+ outline: none;
20
+ }
21
+ .Drawer:focus-visible {
22
+ outline: none;
18
23
  }
19
24
  .Drawer .Drawer__header {
20
25
  align-items: center;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/Drawer/Drawer.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA,OCiBa;ADfb;EACA;EDOA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAlBc;EAmBd,SE0HiB;;AFxHjB;EACC;EACA;EACA,YEWiB;EFVjB;EACA;EACA;EACA;EACA;EACA;;AAGD;EAAc;;;AAGf;EAAkB;;;AAElB;EAAgB,WArCM;;;AAsCtB;EAAe,WArCM;;;AAsCrB;EAAe,WArCM;;;AAsCrB;EAAe,WArCM;;;AAuCrB;EACC;EACA;EACA;EACA,WEoFa;EFnFb;EACA;EACA,OEPmB;;;AFUpB;EACC,aEkEW;EFjEX;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC,SEiDW;EFhDX;EACA","file":"Drawer.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/Drawer/Drawer.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA,OCiBa;ADfb;EACA;EDOA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAlBc;;AAqBd;EAAU;;AAGV;EAAkB;;AAElB;EACC;EACA;EACA,YEMiB;EFLjB;EACA;EACA;EACA;EACA;EACA;;AAGD;EAAc;;;AAGf;EAAkB;;;AAElB;EAAgB,WA1CM;;;AA2CtB;EAAe,WA1CM;;;AA2CrB;EAAe,WA1CM;;;AA2CrB;EAAe,WA1CM;;;AA4CrB;EACC;EACA;EACA;EACA,WE+Ea;EF9Eb;EACA;EACA,OEZmB;;;AFepB;EACC,aE6DW;EF5DX;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC,SE4CW;EF3CX;EACA","file":"Drawer.css"}
@@ -1,37 +1,28 @@
1
1
  import React, { FC } from 'react';
2
- import { DrawerHeader } from './DrawerHeader';
3
- import { DrawerFooter, DrawerFooterProps } from './DrawerFooter';
4
- import { DrawerWindow } from './DrawerWindow';
5
- import { FocusScopeOptions } from '../../hooks/useFocusScope';
6
- interface DrawerPropsStrict {
2
+ import { OverlayProps } from '../../internal/Overlay';
3
+ import { JustifyProps } from '../../utilities/justify-props';
4
+ import { FocusTrapProps } from '../../utilities/FocusTrap';
5
+ interface DrawerPropsStrict extends OverlayProps {
6
+ /** Use animation for visibility transitions */
7
+ animate?: boolean;
7
8
  /** Adds one or more classnames for an element */
8
9
  className?: string;
9
- /** Footer for the drawer */
10
+ /** Footer Element */
10
11
  footer?: React.ReactElement;
11
- /** Basic alignment for header */
12
- footerAlign?: DrawerFooterProps['align'];
13
- /** Header for the drawer */
12
+ /** Footer button alignment */
13
+ footerAlign?: JustifyProps;
14
+ /** Drawer Header */
14
15
  header?: React.ReactElement | string;
15
- /** Give Drawer a backdrop effect */
16
- backdrop?: boolean;
17
- /** Opens the drawer */
16
+ /** Visibility of Drawer */
18
17
  open?: boolean;
19
- /** Makes Drawer open through ReactDOM.createPortal */
20
- portal?: boolean;
21
- /** Define the width property of the drawer */
18
+ /** Width of the Drawer */
22
19
  width?: 'xs' | 's' | 'm' | 'l';
23
- /** Options passed into useFocusScope hook */
24
- focusScopeOptions?: FocusScopeOptions;
20
+ /** Options passed into FocusTrap */
21
+ focusTrapOptions?: FocusTrapProps;
25
22
  }
26
- interface DrawerProps extends DrawerPropsStrict {
23
+ export interface DrawerProps extends DrawerPropsStrict {
27
24
  /** Unstrict Props */
28
25
  [propName: string]: any;
29
26
  }
30
- interface Drawer extends FC<DrawerProps> {
31
- /** Subcomponents */
32
- Header: typeof DrawerHeader;
33
- Footer: typeof DrawerFooter;
34
- Window: typeof DrawerWindow;
35
- }
36
- export declare const Drawer: Drawer;
27
+ export declare const Drawer: FC<DrawerProps>;
37
28
  export {};
@@ -46,24 +46,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
46
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
47
  exports.Drawer = void 0;
48
48
  var react_1 = __importStar(require("react"));
49
- var classnames_1 = __importDefault(require("classnames"));
50
49
  var framer_motion_1 = require("framer-motion");
50
+ var classnames_1 = __importDefault(require("classnames"));
51
51
  var tokens_1 = __importDefault(require("@servicetitan/tokens"));
52
- var DrawerHeader_1 = require("./DrawerHeader");
53
- var DrawerFooter_1 = require("./DrawerFooter");
54
- var DrawerWindow_1 = require("./DrawerWindow");
55
- var OverlayContext_1 = require("../../utilities/OverlayContext");
56
- var Portal_1 = require("../../internal/Portal");
57
- var useFocusScope_1 = require("../../hooks/useFocusScope");
58
- var focus_utils_1 = require("../../utilities/focus-utils");
52
+ var __1 = require("../");
53
+ var Overlay_1 = require("../../internal/Overlay");
54
+ var FocusTrap_1 = require("../../utilities/FocusTrap");
59
55
  var Drawer = function (_a) {
60
56
  var _b;
61
- var children = _a.children, className = _a.className, footer = _a.footer, footerAlign = _a.footerAlign, header = _a.header, onClose = _a.onClose, open = _a.open, _c = _a.portal, portal = _c === void 0 ? true : _c, backdrop = _a.backdrop, _d = _a.width, width = _d === void 0 ? 's' : _d, focusScopeOptions = _a.focusScopeOptions, rest = __rest(_a, ["children", "className", "footer", "footerAlign", "header", "onClose", "open", "portal", "backdrop", "width", "focusScopeOptions"]);
62
- var overlayContext = (0, react_1.useContext)(OverlayContext_1.OverlayContext);
57
+ var _c = _a.animate, animate = _c === void 0 ? true : _c, children = _a.children, className = _a.className, footer = _a.footer, _d = _a.footerAlign, footerAlign = _d === void 0 ? 'right' : _d, header = _a.header, onClose = _a.onClose, open = _a.open, _e = _a.portal, portal = _e === void 0 ? true : _e, backdrop = _a.backdrop, _f = _a.width, width = _f === void 0 ? 's' : _f, focusTrapOptions = _a.focusTrapOptions, rest = __rest(_a, ["animate", "children", "className", "footer", "footerAlign", "header", "onClose", "open", "portal", "backdrop", "width", "focusTrapOptions"]);
63
58
  var drawerRef = (0, react_1.useRef)(null);
64
- // eslint-disable-next-line react-hooks/exhaustive-deps
65
- var lastActiveElement = (0, react_1.useMemo)(function () { return (0, focus_utils_1.getActiveElement)(); }, [open]);
66
- var handleTab = (0, useFocusScope_1.useFocusScope)(drawerRef, __assign({ disableAutofocus: !open, disableTrapping: !open, restoreFocusRef: { current: lastActiveElement } }, focusScopeOptions)).handleTab;
59
+ var _g = react_1.default.useState(1), focusWrapper = _g[0], setFocusWrapper = _g[1];
67
60
  var DrawerClasses = (0, classnames_1.default)('Drawer', className, (_b = {
68
61
  'Drawer--open': open,
69
62
  'Drawer--portal': portal || backdrop,
@@ -71,23 +64,40 @@ var Drawer = function (_a) {
71
64
  },
72
65
  _b["Drawer--w-" + width] = width,
73
66
  _b));
67
+ var DrawerFooterClassNames = (0, classnames_1.default)('Drawer__footer', className, {
68
+ 'justify-content-start': footerAlign === 'left',
69
+ 'justify-content-center': footerAlign === 'center',
70
+ 'justify-content-end': footerAlign === 'right',
71
+ 'justify-content-between': footerAlign === 'space-between',
72
+ });
74
73
  var durationSlow = parseInt(tokens_1.default.durationSlow, 10) / 1000; // '300ms' -> 0.3
75
- var drawerAnimation = {
74
+ var framerAnimation = {
76
75
  initial: { opacity: 0, x: '100%' },
77
76
  animate: { opacity: 1, x: 0 },
78
77
  exit: { opacity: 0, x: '100%' },
79
78
  transition: { type: 'easeInOut', duration: durationSlow },
80
79
  };
81
- var drawerContent = (react_1.default.createElement(framer_motion_1.motion.div, __assign({ className: DrawerClasses, ref: drawerRef, onKeyDown: handleTab }, drawerAnimation, rest),
82
- react_1.default.createElement(OverlayContext_1.OverlayContext.Provider, { value: overlayContext.concat('drawer') },
83
- header && (react_1.default.createElement(DrawerHeader_1.DrawerHeader, { onClose: onClose }, header)),
84
- react_1.default.createElement("div", { className: "Drawer__content" }, children),
85
- footer && (react_1.default.createElement(DrawerFooter_1.DrawerFooter, { align: footerAlign }, footer)))));
86
- var drawer = backdrop ? (react_1.default.createElement(DrawerWindow_1.DrawerWindow, { animate: true, onClose: onClose }, drawerContent)) : (react_1.default.createElement(framer_motion_1.AnimatePresence, null, drawerContent));
87
- return open && react_1.default.createElement(Portal_1.Portal, { conditional: portal && !backdrop }, drawer);
80
+ var DrawerEl = animate ? framer_motion_1.motion.div : 'div';
81
+ var DrawerProps = __assign(__assign({ className: DrawerClasses, ref: drawerRef, tabIndex: focusWrapper }, (animate && framerAnimation)), rest);
82
+ react_1.default.useEffect(function () {
83
+ // Removes wrapper to be focusable element after initial tab
84
+ function eventHandler(event) {
85
+ event.key === 'Tab' && setFocusWrapper(-1);
86
+ document.removeEventListener('keydown', eventHandler);
87
+ }
88
+ document.addEventListener('keydown', eventHandler);
89
+ }, []);
90
+ react_1.default.useEffect(function () {
91
+ setFocusWrapper(1);
92
+ }, [open]);
93
+ return (react_1.default.createElement(Overlay_1.Overlay, { animate: animate, portal: portal, backdrop: backdrop, onClose: onClose, open: open },
94
+ react_1.default.createElement(framer_motion_1.AnimatePresence, null, open && (react_1.default.createElement(FocusTrap_1.FocusTrap, __assign({}, focusTrapOptions),
95
+ react_1.default.createElement(DrawerEl, __assign({}, DrawerProps),
96
+ header && (react_1.default.createElement("div", { className: "Drawer__header" },
97
+ react_1.default.createElement(__1.Headline, { className: "Drawer__header-title" }, header),
98
+ onClose && (react_1.default.createElement(__1.Button, { fill: "subtle", className: "Drawer__header-close", iconName: "clear", size: "xsmall", onClick: onClose })))),
99
+ react_1.default.createElement("div", { className: "Drawer__content" }, children),
100
+ footer && (react_1.default.createElement("div", { className: DrawerFooterClassNames }, footer))))))));
88
101
  };
89
102
  exports.Drawer = Drawer;
90
- exports.Drawer.Header = DrawerHeader_1.DrawerHeader;
91
- exports.Drawer.Footer = DrawerFooter_1.DrawerFooter;
92
- exports.Drawer.Window = DrawerWindow_1.DrawerWindow;
93
103
  //# sourceMappingURL=Drawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Drawer.js","sourceRoot":"","sources":["../../../src/components/Drawer/Drawer.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,12 @@
14
14
  right: 0;
15
15
  top: 0;
16
16
  width: 90%;
17
- z-index: 1100;
17
+ }
18
+ .Drawer:focus {
19
+ outline: none;
20
+ }
21
+ .Drawer:focus-visible {
22
+ outline: none;
18
23
  }
19
24
  .Drawer .Drawer__header {
20
25
  align-items: center;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/Drawer/Drawer.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA,OCiBa;ADfb;EACA;EDOA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAlBc;EAmBd,SE0HiB;;AFxHjB;EACC;EACA;EACA,YEWiB;EFVjB;EACA;EACA;EACA;EACA;EACA;;AAGD;EAAc;;;AAGf;EAAkB;;;AAElB;EAAgB,WArCM;;;AAsCtB;EAAe,WArCM;;;AAsCrB;EAAe,WArCM;;;AAsCrB;EAAe,WArCM;;;AAuCrB;EACC;EACA;EACA;EACA,WEoFa;EFnFb;EACA;EACA,OEPmB;;;AFUpB;EACC,aEkEW;EFjEX;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC,SEiDW;EFhDX;EACA","file":"index.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/Drawer/Drawer.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACSA;ACRC;EACA,OCiBa;ADfb;EACA;EDOA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAlBc;;AAqBd;EAAU;;AAGV;EAAkB;;AAElB;EACC;EACA;EACA,YEMiB;EFLjB;EACA;EACA;EACA;EACA;EACA;;AAGD;EAAc;;;AAGf;EAAkB;;;AAElB;EAAgB,WA1CM;;;AA2CtB;EAAe,WA1CM;;;AA2CrB;EAAe,WA1CM;;;AA2CrB;EAAe,WA1CM;;;AA4CrB;EACC;EACA;EACA;EACA,WE+Ea;EF9Eb;EACA;EACA,OEZmB;;;AFepB;EACC,aE6DW;EF5DX;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC,SE4CW;EF3CX;EACA","file":"index.css"}
@@ -0,0 +1,46 @@
1
+ /* Hide element visually, keeping it focusable (with keyboard) and available for screen-readers */
2
+ .FilterButton {
3
+ /* Set color on root of component. It can be overridden after the @include */
4
+ color: #141414;
5
+ /* Make sure font-family goes across entire component */
6
+ font-family: "Nunito Sans", sans-serif;
7
+ display: inline-flex;
8
+ padding: 4px 8px;
9
+ border-radius: 500em;
10
+ border: 1px solid var(--colorsBorderGreyStrong, #bcbcbd);
11
+ color: var(--colorsTextDefault, #141414);
12
+ font-size: 12px;
13
+ cursor: pointer;
14
+ background-color: transparent;
15
+ align-self: flex-start;
16
+ }
17
+ .FilterButton .BodyText {
18
+ color: inherit;
19
+ }
20
+ .FilterButton.FilterButton--focus-visible:focus {
21
+ outline: 0;
22
+ box-shadow: 0 0 0 3px var(--colorsFocusRingPrimary, #a9d1ff);
23
+ }
24
+ .FilterButton .FilterButton__Icon {
25
+ height: 21px;
26
+ width: 21px;
27
+ justify-content: center;
28
+ align-items: center;
29
+ display: flex;
30
+ }
31
+ .FilterButton .FilterButton__ExpandIcon,
32
+ .FilterButton .FilterButton__Tag {
33
+ margin-left: 4px;
34
+ }
35
+ .FilterButton.FilterButton--active {
36
+ color: var(--colorsTextSecondary, #6954c0);
37
+ border: none;
38
+ background-color: var(--colorsSurfaceSecondarySubdued, #f1edff);
39
+ padding: calc(4px + 1px) calc(8px + 1px);
40
+ }
41
+ .FilterButton.FilterButton--active .FilterButton__Icon,
42
+ .FilterButton.FilterButton--active .FilterButton__ExpandIcon {
43
+ color: var(--colorsTextSecondary, #6954c0);
44
+ }
45
+
46
+ /*# sourceMappingURL=FilterButton.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/FilterButton/FilterButton.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACYA;ACXC;EACA,OCiBa;ADfb;EACA;EDUA;EACA;EACA,eEPoB;EFQpB;EACA,OAhBc;EAiBd,WE+Ga;EF9Gb;EACA;EACA;;AAEA;EAAY;;AAEZ;EACC;EACA,YAnBc;;AAsBf;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC,aEuFa;;AFpFd;EACC,OAxCY;EAyCZ;EACA,kBAzCkB;EA0ClB;;AAEA;AAAA;EAEC,OA/CW","file":"FilterButton.css"}
@@ -0,0 +1,20 @@
1
+ import { FC } from 'react';
2
+ import { IconPropsStrict } from '../Icon';
3
+ export interface FilterButtonPropsStrict {
4
+ /** Additional classes */
5
+ className?: string;
6
+ /** React element to be rendered as an icon */
7
+ icon?: IconPropsStrict['name'];
8
+ /** To show expand icon */
9
+ expandIcon?: boolean | null;
10
+ /** Displays the label of the Filter Button */
11
+ label: string;
12
+ /** Displays the value of the Filter Button */
13
+ value?: boolean | number | string;
14
+ /** Calls when the Filter Button is clicked */
15
+ onClick?: () => void;
16
+ }
17
+ export interface FilterButtonProps extends FilterButtonPropsStrict {
18
+ [propName: string]: any;
19
+ }
20
+ export declare const FilterButton: FC<FilterButtonProps>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.FilterButton = void 0;
29
+ var react_1 = __importDefault(require("react"));
30
+ var classnames_1 = __importDefault(require("classnames"));
31
+ var useFocusVisible_1 = require("../../hooks/useFocusVisible");
32
+ var Stack_1 = require("../Stack");
33
+ var Icon_1 = require("../Icon");
34
+ var BodyText_1 = require("../BodyText");
35
+ var Tag_1 = require("../Tag");
36
+ exports.FilterButton = react_1.default.forwardRef(function (_a, ref) {
37
+ var className = _a.className, icon = _a.icon, onClick = _a.onClick, _b = _a.expandIcon, expandIcon = _b === void 0 ? null : _b, value = _a.value, label = _a.label, rest = __rest(_a, ["className", "icon", "onClick", "expandIcon", "value", "label"]);
38
+ var _c = react_1.default.useState(value), IValue = _c[0], setIValue = _c[1];
39
+ var newRef = react_1.default.useRef(null);
40
+ var itemRef = ref ? ref : newRef;
41
+ var isFocusVisible = (0, useFocusVisible_1.useFocusVisible)(itemRef).isFocusVisible;
42
+ var filterButtonClassName = (0, classnames_1.default)('FilterButton', className, {
43
+ 'FilterButton--active': IValue,
44
+ 'FilterButton--focus-visible': isFocusVisible,
45
+ });
46
+ var onClickHandler = function () {
47
+ onClick === null || onClick === void 0 ? void 0 : onClick();
48
+ };
49
+ react_1.default.useEffect(function () {
50
+ setIValue(value);
51
+ }, [value]);
52
+ return (react_1.default.createElement("button", __assign({ className: filterButtonClassName, onClick: function () { return onClickHandler(); }, ref: itemRef, "aria-valuetext": "" + IValue, "aria-expanded": expandIcon, "aria-label": "Filter " + label, "aria-selected": !!IValue }, rest),
53
+ react_1.default.createElement(Stack_1.Stack, { alignItems: "center" },
54
+ icon && (react_1.default.createElement(Icon_1.Icon, { name: icon, size: "16px", className: "FilterButton__Icon" })),
55
+ !icon && label && (react_1.default.createElement(BodyText_1.BodyText, { el: "span", size: "small", className: "FilterButton__Label" }, label)),
56
+ typeof IValue === 'string' ? (react_1.default.createElement(BodyText_1.BodyText, { el: "span", size: "small" }, ": ",
57
+ react_1.default.createElement(BodyText_1.BodyText, { el: "span", size: "small", bold: true }, IValue))) : typeof IValue === 'number' ? (react_1.default.createElement(Tag_1.Tag, { color: "info", badge: true, compact: true, className: "FilterButton__Tag" }, IValue)) : null,
58
+ expandIcon !== null && (react_1.default.createElement(Icon_1.Icon, { name: expandIcon
59
+ ? 'keyboard_arrow_up'
60
+ : 'keyboard_arrow_down', className: "FilterButton__ExpandIcon" })))));
61
+ });
62
+ //# sourceMappingURL=FilterButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterButton.js","sourceRoot":"","sources":["../../../src/components/FilterButton/FilterButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkC;AAClC,0DAAoC;AACpC,+DAA8D;AAC9D,kCAAiC;AACjC,gCAAgD;AAChD,wCAAuC;AACvC,8BAA6B;AA0BhB,QAAA,YAAY,GAA0B,eAAK,CAAC,UAAU,CAClE,UACC,EAAsE,EACtE,GAAiC;IAD/B,IAAA,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,kBAAiB,EAAjB,UAAU,mBAAG,IAAI,KAAA,EAAE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAK,IAAI,cAApE,gEAAsE,CAAF;IAG9D,IAAA,KAAsB,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAA1C,MAAM,QAAA,EAAE,SAAS,QAAyB,CAAC;IAElD,IAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,IAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3B,IAAA,cAAc,GAAK,IAAA,iCAAe,EAAC,OAAO,CAAC,eAA7B,CAA8B;IAEpD,IAAM,qBAAqB,GAAG,IAAA,oBAAU,EAAC,cAAc,EAAE,SAAS,EAAE;QACnE,sBAAsB,EAAE,MAAM;QAC9B,6BAA6B,EAAE,cAAc;KAC7C,CAAC,CAAC;IAEH,IAAM,cAAc,GAAG;QACtB,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC;IACb,CAAC,CAAC;IAEF,eAAK,CAAC,SAAS,CAAC;QACf,SAAS,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACN,mDACC,SAAS,EAAE,qBAAqB,EAChC,OAAO,EAAE,cAAM,OAAA,cAAc,EAAE,EAAhB,CAAgB,EAC/B,GAAG,EAAE,OAAO,oBACI,KAAG,MAAQ,mBACZ,UAAU,gBACb,YAAU,KAAO,mBACd,CAAC,CAAC,MAAM,IACnB,IAAI;QAER,8BAAC,aAAK,IAAC,UAAU,EAAC,QAAQ;YACxB,IAAI,IAAI,CACR,8BAAC,WAAI,IACJ,IAAI,EAAE,IAAI,EACV,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,oBAAoB,GAC7B,CACF;YACA,CAAC,IAAI,IAAI,KAAK,IAAI,CAClB,8BAAC,mBAAQ,IACR,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,qBAAqB,IAE9B,KAAK,CACI,CACX;YACA,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC7B,8BAAC,mBAAQ,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,IAC9B,IAAI;gBACL,8BAAC,mBAAQ,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,UACnC,MAAM,CACG,CACD,CACX,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,8BAAC,SAAG,IACH,KAAK,EAAC,MAAM,EACZ,KAAK,QACL,OAAO,QACP,SAAS,EAAC,mBAAmB,IAE5B,MAAM,CACF,CACN,CAAC,CAAC,CAAC,IAAI;YACP,UAAU,KAAK,IAAI,IAAI,CACvB,8BAAC,WAAI,IACJ,IAAI,EACH,UAAU;oBACT,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,qBAAqB,EAEzB,SAAS,EAAC,0BAA0B,GACnC,CACF,CACM,CACA,CACT,CAAC;AACH,CAAC,CACD,CAAC"}
@@ -0,0 +1,46 @@
1
+ /* Hide element visually, keeping it focusable (with keyboard) and available for screen-readers */
2
+ .FilterButton {
3
+ /* Set color on root of component. It can be overridden after the @include */
4
+ color: #141414;
5
+ /* Make sure font-family goes across entire component */
6
+ font-family: "Nunito Sans", sans-serif;
7
+ display: inline-flex;
8
+ padding: 4px 8px;
9
+ border-radius: 500em;
10
+ border: 1px solid var(--colorsBorderGreyStrong, #bcbcbd);
11
+ color: var(--colorsTextDefault, #141414);
12
+ font-size: 12px;
13
+ cursor: pointer;
14
+ background-color: transparent;
15
+ align-self: flex-start;
16
+ }
17
+ .FilterButton .BodyText {
18
+ color: inherit;
19
+ }
20
+ .FilterButton.FilterButton--focus-visible:focus {
21
+ outline: 0;
22
+ box-shadow: 0 0 0 3px var(--colorsFocusRingPrimary, #a9d1ff);
23
+ }
24
+ .FilterButton .FilterButton__Icon {
25
+ height: 21px;
26
+ width: 21px;
27
+ justify-content: center;
28
+ align-items: center;
29
+ display: flex;
30
+ }
31
+ .FilterButton .FilterButton__ExpandIcon,
32
+ .FilterButton .FilterButton__Tag {
33
+ margin-left: 4px;
34
+ }
35
+ .FilterButton.FilterButton--active {
36
+ color: var(--colorsTextSecondary, #6954c0);
37
+ border: none;
38
+ background-color: var(--colorsSurfaceSecondarySubdued, #f1edff);
39
+ padding: calc(4px + 1px) calc(8px + 1px);
40
+ }
41
+ .FilterButton.FilterButton--active .FilterButton__Icon,
42
+ .FilterButton.FilterButton--active .FilterButton__ExpandIcon {
43
+ color: var(--colorsTextSecondary, #6954c0);
44
+ }
45
+
46
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/utilities/_visually-hidden.scss","../../../src/components/FilterButton/FilterButton.scss","../../../src/utilities/_component-reset.scss","../../../node_modules/@servicetitan/tokens/dist/tokens.scss"],"names":[],"mappings":"AAAA;ACYA;ACXC;EACA,OCiBa;ADfb;EACA;EDUA;EACA;EACA,eEPoB;EFQpB;EACA,OAhBc;EAiBd,WE+Ga;EF9Gb;EACA;EACA;;AAEA;EAAY;;AAEZ;EACC;EACA,YAnBc;;AAsBf;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC,aEuFa;;AFpFd;EACC,OAxCY;EAyCZ;EACA,kBAzCkB;EA0ClB;;AAEA;AAAA;EAEC,OA/CW","file":"index.css"}
@@ -0,0 +1 @@
1
+ export * from './FilterButton';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./FilterButton"), exports);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FilterButton/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA+B"}