@jobber/components 4.86.1 → 4.87.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 (40) hide show
  1. package/dist/Autocomplete/Menu.d.ts +2 -2
  2. package/dist/Autocomplete/index.js +8 -3
  3. package/dist/Banner/index.js +5 -4
  4. package/dist/Card/index.js +4 -4
  5. package/dist/{Card-90fd7309.js → Card-74f078a4.js} +1 -1
  6. package/dist/Chip/index.js +3 -2
  7. package/dist/{Chip-a3ed52e8.js → Chip-76f18555.js} +1 -1
  8. package/dist/Chips/index.js +2 -1
  9. package/dist/Combobox/index.js +4 -3
  10. package/dist/{Combobox-ba1bc9ba.js → Combobox-6d864202.js} +4 -2
  11. package/dist/ConfirmationModal/index.js +6 -5
  12. package/dist/{ConfirmationModal-6d9b5dfb.js → ConfirmationModal-387aa1b5.js} +2 -2
  13. package/dist/DataDump/index.js +4 -4
  14. package/dist/DataList/components/DataListActionsMenu/DataListActionsMenu.d.ts +2 -2
  15. package/dist/DataList/index.js +13 -8
  16. package/dist/Drawer/index.js +3 -2
  17. package/dist/FeatureSwitch/index.js +4 -3
  18. package/dist/FormatFile/index.js +7 -6
  19. package/dist/{FormatFile-5b061504.js → FormatFile-6030027c.js} +1 -1
  20. package/dist/Gallery/index.js +9 -7
  21. package/dist/Heading/index.js +3 -2
  22. package/dist/{Heading-caf76d2c.js → Heading-bae3c69e.js} +2 -2
  23. package/dist/LightBox/LightBox.d.ts +2 -2
  24. package/dist/LightBox/index.js +2 -1
  25. package/dist/{LightBox-6806cc30.js → LightBox-7efe8932.js} +5 -1
  26. package/dist/List/index.js +4 -3
  27. package/dist/Markdown/index.js +4 -3
  28. package/dist/{Markdown-52c4ad31.js → Markdown-b1b65457.js} +1 -1
  29. package/dist/Modal/Modal.d.ts +2 -2
  30. package/dist/Modal/index.js +4 -3
  31. package/dist/{Modal-51497914.js → Modal-5b866c72.js} +4 -2
  32. package/dist/Page/index.js +4 -4
  33. package/dist/Popover/index.js +5 -1
  34. package/dist/Tooltip/index.js +2 -1
  35. package/dist/{Tooltip-ef3d6ef4.js → Tooltip-b9de6e57.js} +4 -2
  36. package/dist/useAtlantisConfig-ed0bee66.js +16 -0
  37. package/dist/utils/useAtlantisConfig.d.ts +3 -0
  38. package/package.json +2 -2
  39. package/dist/getAtlantisConfig-0f3e8af2.js +0 -13
  40. package/dist/utils/getAtlantisConfig.d.ts +0 -3
@@ -1,4 +1,4 @@
1
- import React, { RefObject } from "react";
1
+ import { RefObject } from "react";
2
2
  import { Option } from "./Option";
3
3
  interface MenuProps {
4
4
  readonly visible: boolean;
@@ -10,5 +10,5 @@ interface MenuProps {
10
10
  readonly attachTo: RefObject<Element | null>;
11
11
  onOptionSelect(chosenOption: Option): void;
12
12
  }
13
- export declare function Menu({ visible, options, selectedOption, onOptionSelect, attachTo, }: MenuProps): React.ReactPortal;
13
+ export declare function Menu({ visible, options, selectedOption, onOptionSelect, attachTo, }: MenuProps): JSX.Element;
14
14
  export {};
@@ -11,13 +11,14 @@ var ReactDOM = require('react-dom');
11
11
  var reactPopper = require('react-popper');
12
12
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
13
13
  var useSafeLayoutEffect = require('@jobber/hooks/useSafeLayoutEffect');
14
+ var useIsMounted = require('@jobber/hooks/useIsMounted');
14
15
  var Text = require('../Text-fbeaaca6.js');
15
16
  var Icon = require('../Icon-405a216c.js');
16
- var Heading = require('../Heading-caf76d2c.js');
17
+ var Heading = require('../Heading-bae3c69e.js');
17
18
  var InputText = require('../InputText-de22af8c.js');
18
19
  require('../Typography-e2a23b7e.js');
19
20
  require('@jobber/design');
20
- require('../getAtlantisConfig-0f3e8af2.js');
21
+ require('../useAtlantisConfig-ed0bee66.js');
21
22
  require('../FormField-3ec1c85d.js');
22
23
  require('react-hook-form');
23
24
  require('@jobber/hooks/useShowClear');
@@ -42,6 +43,9 @@ var IndexChange;
42
43
  IndexChange[IndexChange["Previous"] = -1] = "Previous";
43
44
  IndexChange[IndexChange["Next"] = 1] = "Next";
44
45
  })(IndexChange || (IndexChange = {}));
46
+ // Adding useIsMounted is what tipped this to 13 statements.
47
+ // Any additions beyond useIsMounted should probably see this component refactored a bit
48
+ // eslint-disable-next-line max-statements
45
49
  function Menu({ visible, options, selectedOption, onOptionSelect, attachTo, }) {
46
50
  const [highlightedIndex, setHighlightedIndex] = React.useState(0);
47
51
  const { menuRef, setMenuRef, styles: popperStyles, attributes, targetWidth, } = useRepositionMenu(attachTo, visible);
@@ -51,6 +55,7 @@ function Menu({ visible, options, selectedOption, onOptionSelect, attachTo, }) {
51
55
  const initialHighlight = options.some(detectGroups) ? 1 : 0;
52
56
  setupKeyListeners();
53
57
  React.useEffect(() => setHighlightedIndex(initialHighlight), [options]);
58
+ const mounted = useIsMounted.useIsMounted();
54
59
  const menu = (React__default["default"].createElement("div", Object.assign({ className: classnames__default["default"](styles.options, { [styles.visible]: visible }), ref: setMenuRef, style: Object.assign(Object.assign({}, popperStyles.popper), { width: targetWidth }) }, attributes.popper), options.map((option, index) => {
55
60
  const optionClass = classnames__default["default"](styles.option, {
56
61
  [styles.active]: index === highlightedIndex,
@@ -69,7 +74,7 @@ function Menu({ visible, options, selectedOption, onOptionSelect, attachTo, }) {
69
74
  option.details !== undefined && (React__default["default"].createElement("div", { className: styles.details },
70
75
  React__default["default"].createElement(Text.Text, null, option.details))))));
71
76
  })));
72
- return ReactDOM.createPortal(menu, document.body);
77
+ return mounted.current ? ReactDOM.createPortal(menu, document.body) : menu;
73
78
  function setupKeyListeners() {
74
79
  React.useEffect(() => {
75
80
  var _a, _b;
@@ -6,10 +6,11 @@ var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var jobberHooks = require('@jobber/hooks/useResizeObserver');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
- var getAtlantisConfig = require('../getAtlantisConfig-0f3e8af2.js');
9
+ var useAtlantisConfig = require('../useAtlantisConfig-ed0bee66.js');
10
10
  var Icon = require('../Icon-405a216c.js');
11
11
  var Text = require('../Text-fbeaaca6.js');
12
12
  var Button = require('../Button-6b922fc1.js');
13
+ require('@jobber/hooks/useSafeLayoutEffect');
13
14
  require('@jobber/design');
14
15
  require('../Typography-e2a23b7e.js');
15
16
  require('react-router-dom');
@@ -32,7 +33,7 @@ var iconStyles = {"success":"_5-B0X5vn0eA-","error":"r3hqur-vxwI-","warning":"-c
32
33
  styleInject_es.styleInject(css_248z);
33
34
 
34
35
  function BannerIcon({ icon, type }) {
35
- const { JOBBER_RETHEME } = getAtlantisConfig.getAtlantisConfig();
36
+ const { JOBBER_RETHEME } = useAtlantisConfig.useAtlantisConfig();
36
37
  if (JOBBER_RETHEME) {
37
38
  return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.iconWrapper, iconStyles[type]) },
38
39
  React__default["default"].createElement(Icon.Icon, { name: icon, color: "white", size: "small" })));
@@ -41,7 +42,7 @@ function BannerIcon({ icon, type }) {
41
42
  }
42
43
 
43
44
  function Banner({ children, type, primaryAction, dismissible = true, icon, onDismiss, }) {
44
- const { JOBBER_RETHEME } = getAtlantisConfig.getAtlantisConfig();
45
+ const { JOBBER_RETHEME } = useAtlantisConfig.useAtlantisConfig();
45
46
  const [showBanner, setShowBanner] = React.useState(true);
46
47
  const bannerIcon = icon || getBannerIcon(type);
47
48
  const bannerWidths = {
@@ -84,7 +85,7 @@ function Banner({ children, type, primaryAction, dismissible = true, icon, onDis
84
85
  }
85
86
  }
86
87
  function getBannerIcon(type) {
87
- const { JOBBER_RETHEME } = getAtlantisConfig.getAtlantisConfig();
88
+ const { JOBBER_RETHEME } = useAtlantisConfig.useAtlantisConfig();
88
89
  if (!JOBBER_RETHEME)
89
90
  return;
90
91
  switch (type) {
@@ -2,13 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Card = require('../Card-90fd7309.js');
5
+ var Card = require('../Card-74f078a4.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
- require('../Heading-caf76d2c.js');
9
+ require('../Heading-bae3c69e.js');
10
10
  require('../Typography-e2a23b7e.js');
11
- require('../getAtlantisConfig-0f3e8af2.js');
11
+ require('../useAtlantisConfig-ed0bee66.js');
12
+ require('@jobber/hooks/useSafeLayoutEffect');
12
13
  require('../Button-6b922fc1.js');
13
14
  require('react-router-dom');
14
15
  require('../Icon-405a216c.js');
@@ -17,7 +18,6 @@ require('../Menu-d6dd673e.js');
17
18
  require('framer-motion');
18
19
  require('@jobber/hooks/useOnKeyDown');
19
20
  require('@jobber/hooks/useRefocusOnActivator');
20
- require('@jobber/hooks/useSafeLayoutEffect');
21
21
 
22
22
 
23
23
 
@@ -3,7 +3,7 @@
3
3
  var React = require('react');
4
4
  var classnames = require('classnames');
5
5
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
- var Heading = require('./Heading-caf76d2c.js');
6
+ var Heading = require('./Heading-bae3c69e.js');
7
7
  var Button = require('./Button-6b922fc1.js');
8
8
  var Menu = require('./Menu-d6dd673e.js');
9
9
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Chip = require('../Chip-a3ed52e8.js');
5
+ var Chip = require('../Chip-76f18555.js');
6
6
  var tslib_es6 = require('../tslib.es6-754e2961.js');
7
7
  var React = require('react');
8
8
  var Icon = require('../Icon-405a216c.js');
@@ -12,10 +12,11 @@ require('../style-inject.es-9d2f5f4e.js');
12
12
  require('../Avatar-76a799fa.js');
13
13
  require('color');
14
14
  require('../Typography-e2a23b7e.js');
15
- require('../Tooltip-ef3d6ef4.js');
15
+ require('../Tooltip-b9de6e57.js');
16
16
  require('react-dom');
17
17
  require('framer-motion');
18
18
  require('@jobber/hooks/useSafeLayoutEffect');
19
+ require('@jobber/hooks/useIsMounted');
19
20
  require('react-popper');
20
21
  require('@jobber/design');
21
22
 
@@ -7,7 +7,7 @@ var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
7
  var Avatar = require('./Avatar-76a799fa.js');
8
8
  var Icon = require('./Icon-405a216c.js');
9
9
  var Typography = require('./Typography-e2a23b7e.js');
10
- var Tooltip = require('./Tooltip-ef3d6ef4.js');
10
+ var Tooltip = require('./Tooltip-b9de6e57.js');
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
@@ -9,7 +9,7 @@ var useAssert = require('@jobber/hooks/useAssert');
9
9
  var Icon = require('../Icon-405a216c.js');
10
10
  var Avatar = require('../Avatar-76a799fa.js');
11
11
  var Typography = require('../Typography-e2a23b7e.js');
12
- var Tooltip = require('../Tooltip-ef3d6ef4.js');
12
+ var Tooltip = require('../Tooltip-b9de6e57.js');
13
13
  var sortBy = require('lodash/sortBy');
14
14
  var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
15
15
  var debounce = require('lodash/debounce');
@@ -22,6 +22,7 @@ require('color');
22
22
  require('react-dom');
23
23
  require('framer-motion');
24
24
  require('@jobber/hooks/useSafeLayoutEffect');
25
+ require('@jobber/hooks/useIsMounted');
25
26
  require('react-router-dom');
26
27
 
27
28
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Combobox = require('../Combobox-ba1bc9ba.js');
5
+ var Combobox = require('../Combobox-6d864202.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-dom');
@@ -25,11 +25,12 @@ require('@jobber/hooks/useRefocusOnActivator');
25
25
  require('@jobber/hooks/useFocusTrap');
26
26
  require('react-popper');
27
27
  require('@jobber/hooks/useOnKeyDown');
28
- require('../Chip-a3ed52e8.js');
28
+ require('../Chip-76f18555.js');
29
29
  require('../Avatar-76a799fa.js');
30
30
  require('color');
31
- require('../Tooltip-ef3d6ef4.js');
31
+ require('../Tooltip-b9de6e57.js');
32
32
  require('@jobber/hooks/useSafeLayoutEffect');
33
+ require('@jobber/hooks/useIsMounted');
33
34
  require('lodash/debounce');
34
35
  require('lodash/noop');
35
36
  require('@jobber/hooks/useAssert');
@@ -18,7 +18,7 @@ var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
18
18
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
19
19
  var reactPopper = require('react-popper');
20
20
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
21
- var Chip = require('./Chip-a3ed52e8.js');
21
+ var Chip = require('./Chip-76f18555.js');
22
22
  var debounce = require('lodash/debounce');
23
23
  var noop = require('lodash/noop');
24
24
  require('@jobber/design');
@@ -313,7 +313,9 @@ function ComboboxContent(props) {
313
313
  props.actionElements && (React__default["default"].createElement("div", { className: styles$7.actions, role: "group" }, props.actionElements.map((child, index, childrenArray) => (React__default["default"].createElement("div", { key: index, className: classnames__default["default"]({
314
314
  [styles$7.actionPadding]: index === childrenArray.length - 1,
315
315
  }) }, child)))))));
316
- return ReactDOM__default["default"].createPortal(template, document.body);
316
+ return (globalThis === null || globalThis === void 0 ? void 0 : globalThis.document)
317
+ ? ReactDOM__default["default"].createPortal(template, document.body)
318
+ : template;
317
319
  }
318
320
 
319
321
  var css_248z$1 = ".Ow9wSNnGP-g- {\n width: 100%;\n box-sizing: border-box;\n padding: 0 calc(16px / 2);\n padding: 0 var(--space-small);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.ncp0nKHQ7d8- {\n position: relative;\n width: 100%;\n min-height: calc((calc(16px * 3) - calc(16px / 2)));\n min-height: calc((var(--space-largest) - var(--space-small)));\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n text-align: left;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.jobber-retheme .ncp0nKHQ7d8- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.ncp0nKHQ7d8-:focus {\n outline: none;\n}\n\n.ncp0nKHQ7d8-:hover,\n.ncp0nKHQ7d8-:focus-visible {\n outline: none;\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n.ncp0nKHQ7d8-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.ncp0nKHQ7d8- span {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
@@ -2,26 +2,27 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ConfirmationModal = require('../ConfirmationModal-6d9b5dfb.js');
5
+ var ConfirmationModal = require('../ConfirmationModal-387aa1b5.js');
6
6
  require('react');
7
7
  require('@jobber/hooks/useOnKeyDown');
8
- require('../Modal-51497914.js');
8
+ require('../Modal-5b866c72.js');
9
9
  require('react-dom');
10
10
  require('classnames');
11
11
  require('framer-motion');
12
12
  require('@jobber/hooks/useRefocusOnActivator');
13
13
  require('@jobber/hooks/useFocusTrap');
14
14
  require('../style-inject.es-9d2f5f4e.js');
15
- require('../Heading-caf76d2c.js');
15
+ require('../Heading-bae3c69e.js');
16
16
  require('../Typography-e2a23b7e.js');
17
- require('../getAtlantisConfig-0f3e8af2.js');
17
+ require('../useAtlantisConfig-ed0bee66.js');
18
+ require('@jobber/hooks/useSafeLayoutEffect');
18
19
  require('../Button-6b922fc1.js');
19
20
  require('react-router-dom');
20
21
  require('../Icon-405a216c.js');
21
22
  require('@jobber/design');
22
23
  require('../ButtonDismiss-a3ba1de2.js');
23
24
  require('../Content-e3f7b6fc.js');
24
- require('../Markdown-52c4ad31.js');
25
+ require('../Markdown-b1b65457.js');
25
26
  require('react-markdown');
26
27
  require('../Text-fbeaaca6.js');
27
28
  require('../Emphasis-a77d8ee9.js');
@@ -2,9 +2,9 @@
2
2
 
3
3
  var React = require('react');
4
4
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
5
- var Modal = require('./Modal-51497914.js');
5
+ var Modal = require('./Modal-5b866c72.js');
6
6
  var Content = require('./Content-e3f7b6fc.js');
7
- var Markdown = require('./Markdown-52c4ad31.js');
7
+ var Markdown = require('./Markdown-b1b65457.js');
8
8
 
9
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
10
 
@@ -3,14 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var Card = require('../Card-90fd7309.js');
6
+ var Card = require('../Card-74f078a4.js');
7
7
  var Content = require('../Content-e3f7b6fc.js');
8
8
  var Emphasis = require('../Emphasis-a77d8ee9.js');
9
9
  require('classnames');
10
10
  require('../style-inject.es-9d2f5f4e.js');
11
- require('../Heading-caf76d2c.js');
11
+ require('../Heading-bae3c69e.js');
12
12
  require('../Typography-e2a23b7e.js');
13
- require('../getAtlantisConfig-0f3e8af2.js');
13
+ require('../useAtlantisConfig-ed0bee66.js');
14
+ require('@jobber/hooks/useSafeLayoutEffect');
14
15
  require('../Button-6b922fc1.js');
15
16
  require('react-router-dom');
16
17
  require('../Icon-405a216c.js');
@@ -19,7 +20,6 @@ require('../Menu-d6dd673e.js');
19
20
  require('framer-motion');
20
21
  require('@jobber/hooks/useOnKeyDown');
21
22
  require('@jobber/hooks/useRefocusOnActivator');
22
- require('@jobber/hooks/useSafeLayoutEffect');
23
23
 
24
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
25
 
@@ -1,4 +1,4 @@
1
- import React, { PropsWithChildren } from "react";
1
+ import { PropsWithChildren } from "react";
2
2
  interface DataListActionsMenuProps {
3
3
  readonly visible: boolean;
4
4
  readonly position: {
@@ -7,5 +7,5 @@ interface DataListActionsMenuProps {
7
7
  };
8
8
  readonly onRequestClose: () => void;
9
9
  }
10
- export declare function DataListActionsMenu({ visible, position, onRequestClose, children, }: PropsWithChildren<DataListActionsMenuProps>): React.ReactPortal;
10
+ export declare function DataListActionsMenu({ visible, position, onRequestClose, children, }: PropsWithChildren<DataListActionsMenuProps>): JSX.Element;
11
11
  export {};
@@ -11,7 +11,7 @@ var noop = require('lodash/noop');
11
11
  var design = require('@jobber/design');
12
12
  var framerMotion = require('framer-motion');
13
13
  var classnames = require('classnames');
14
- var Tooltip = require('../Tooltip-ef3d6ef4.js');
14
+ var Tooltip = require('../Tooltip-b9de6e57.js');
15
15
  var Button = require('../Button-6b922fc1.js');
16
16
  var useInView = require('@jobber/hooks/useInView');
17
17
  var isEmpty = require('lodash/isEmpty');
@@ -21,13 +21,14 @@ var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
21
21
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
22
22
  var Icon = require('../Icon-405a216c.js');
23
23
  var FormatDate = require('../FormatDate-70ea5b43.js');
24
- var Heading = require('../Heading-caf76d2c.js');
24
+ var Heading = require('../Heading-bae3c69e.js');
25
25
  var ReactDOM = require('react-dom');
26
+ var useIsMounted = require('@jobber/hooks/useIsMounted');
26
27
  var Checkbox = require('../Checkbox-e481a4b1.js');
27
28
  var reactRouterDom = require('react-router-dom');
28
29
  var AnimatedSwitcher = require('../AnimatedSwitcher-3d45ec5d.js');
29
- var Combobox = require('../Combobox-ba1bc9ba.js');
30
- var Chip = require('../Chip-a3ed52e8.js');
30
+ var Combobox = require('../Combobox-6d864202.js');
31
+ var Chip = require('../Chip-76f18555.js');
31
32
  var debounce = require('lodash/debounce');
32
33
  var InputText = require('../InputText-de22af8c.js');
33
34
  var Spinner = require('../Spinner-9d8fc7ff.js');
@@ -35,7 +36,7 @@ var Typography = require('../Typography-e2a23b7e.js');
35
36
  require('../Content-e3f7b6fc.js');
36
37
  require('@jobber/hooks/useSafeLayoutEffect');
37
38
  require('react-popper');
38
- require('../getAtlantisConfig-0f3e8af2.js');
39
+ require('../useAtlantisConfig-ed0bee66.js');
39
40
  require('react-hook-form');
40
41
  require('../AnimatedPresence-20a02aaa.js');
41
42
  require('../Flex-d490c4db.js');
@@ -312,7 +313,7 @@ function DataListSortingOptions({ options, selectedOption, onSelectChange, onClo
312
313
  document.removeEventListener("mousedown", handleClickOutside);
313
314
  };
314
315
  }, [optionsListRef, dataListHeaderTileRef, onClose]);
315
- return (React__default["default"].createElement("ul", { className: styles$8.optionsList, ref: optionsListRef }, options.map(option => (React__default["default"].createElement("li", { className: styles$8.option, key: option.id, onClick: () => onSelectChange(option), onKeyDown: event => handleKeyDown(event, option), tabIndex: 0, "data-value": option.id },
316
+ return (React__default["default"].createElement("ul", { className: styles$8.optionsList, ref: optionsListRef }, options.map(option => (React__default["default"].createElement("li", { className: styles$8.option, key: `${option.id}${option.order}`, onClick: () => onSelectChange(option), onKeyDown: event => handleKeyDown(event, option), tabIndex: 0, "data-value": option.id },
316
317
  option.label,
317
318
  option.label === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) && (React__default["default"].createElement(Icon.Icon, { name: "checkmark", color: "blue" })))))));
318
319
  function handleKeyDown(event, option) {
@@ -470,12 +471,16 @@ const variants$1 = {
470
471
  };
471
472
  function DataListActionsMenu({ visible = false, position, onRequestClose, children, }) {
472
473
  const [ref, setRef] = React.useState();
474
+ const mounted = useIsMounted.useIsMounted();
473
475
  useRefocusOnActivator.useRefocusOnActivator(visible);
474
476
  const focusTrapRef = useFocusTrap.useFocusTrap(visible);
475
477
  useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
476
- return ReactDOM.createPortal(React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef, onClick: handleClick },
478
+ const actionsMenu = (React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef, onClick: handleClick },
477
479
  React__default["default"].createElement(framerMotion.motion.div, { role: "menu", ref: setRef, variants: variants$1, initial: "hidden", animate: "visible", exit: "hidden", transition: { duration: TRANSITION_DELAY_IN_SECONDS }, className: styles$7.menu, style: getPositionCssVars(), onClick: onRequestClose }, children),
478
- React__default["default"].createElement("button", { type: "button", className: styles$7.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))), document.body);
480
+ React__default["default"].createElement("button", { type: "button", className: styles$7.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))));
481
+ return mounted.current
482
+ ? ReactDOM.createPortal(actionsMenu, document.body)
483
+ : actionsMenu;
479
484
  function handleClick(event) {
480
485
  // Prevent menu from firing the parent's onClick event when it is nested
481
486
  // within a clickable list item
@@ -5,10 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
- var Heading = require('../Heading-caf76d2c.js');
8
+ var Heading = require('../Heading-bae3c69e.js');
9
9
  var ButtonDismiss = require('../ButtonDismiss-a3ba1de2.js');
10
10
  require('../Typography-e2a23b7e.js');
11
- require('../getAtlantisConfig-0f3e8af2.js');
11
+ require('../useAtlantisConfig-ed0bee66.js');
12
+ require('@jobber/hooks/useSafeLayoutEffect');
12
13
  require('../Button-6b922fc1.js');
13
14
  require('react-router-dom');
14
15
  require('../Icon-405a216c.js');
@@ -6,15 +6,16 @@ var React = require('react');
6
6
  var framerMotion = require('framer-motion');
7
7
  var classnames = require('classnames');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
- var Heading = require('../Heading-caf76d2c.js');
9
+ var Heading = require('../Heading-bae3c69e.js');
10
10
  var Text = require('../Text-fbeaaca6.js');
11
11
  var Content = require('../Content-e3f7b6fc.js');
12
12
  var Switch = require('../Switch-eac89586.js');
13
13
  var Button = require('../Button-6b922fc1.js');
14
14
  var Emphasis = require('../Emphasis-a77d8ee9.js');
15
- var Markdown = require('../Markdown-52c4ad31.js');
15
+ var Markdown = require('../Markdown-b1b65457.js');
16
16
  require('../Typography-e2a23b7e.js');
17
- require('../getAtlantisConfig-0f3e8af2.js');
17
+ require('../useAtlantisConfig-ed0bee66.js');
18
+ require('@jobber/hooks/useSafeLayoutEffect');
18
19
  require('react-router-dom');
19
20
  require('../Icon-405a216c.js');
20
21
  require('@jobber/design');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormatFile = require('../FormatFile-5b061504.js');
5
+ var FormatFile = require('../FormatFile-6030027c.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('filesize');
@@ -12,18 +12,19 @@ require('react-router-dom');
12
12
  require('../Icon-405a216c.js');
13
13
  require('@jobber/design');
14
14
  require('../Typography-e2a23b7e.js');
15
- require('../ConfirmationModal-6d9b5dfb.js');
15
+ require('../ConfirmationModal-387aa1b5.js');
16
16
  require('@jobber/hooks/useOnKeyDown');
17
- require('../Modal-51497914.js');
17
+ require('../Modal-5b866c72.js');
18
18
  require('react-dom');
19
19
  require('framer-motion');
20
20
  require('@jobber/hooks/useRefocusOnActivator');
21
21
  require('@jobber/hooks/useFocusTrap');
22
- require('../Heading-caf76d2c.js');
23
- require('../getAtlantisConfig-0f3e8af2.js');
22
+ require('../Heading-bae3c69e.js');
23
+ require('../useAtlantisConfig-ed0bee66.js');
24
+ require('@jobber/hooks/useSafeLayoutEffect');
24
25
  require('../ButtonDismiss-a3ba1de2.js');
25
26
  require('../Content-e3f7b6fc.js');
26
- require('../Markdown-52c4ad31.js');
27
+ require('../Markdown-b1b65457.js');
27
28
  require('react-markdown');
28
29
  require('../Text-fbeaaca6.js');
29
30
  require('../Emphasis-a77d8ee9.js');
@@ -5,7 +5,7 @@ var classnames = require('classnames');
5
5
  var getHumanReadableFileSize = require('filesize');
6
6
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
7
  var Button = require('./Button-6b922fc1.js');
8
- var ConfirmationModal = require('./ConfirmationModal-6d9b5dfb.js');
8
+ var ConfirmationModal = require('./ConfirmationModal-387aa1b5.js');
9
9
  var Glimmer = require('./Glimmer-84dee1ed.js');
10
10
  var Icon = require('./Icon-405a216c.js');
11
11
  var Typography = require('./Typography-e2a23b7e.js');
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
- var LightBox = require('../LightBox-6806cc30.js');
9
- var FormatFile = require('../FormatFile-5b061504.js');
8
+ var LightBox = require('../LightBox-7efe8932.js');
9
+ var FormatFile = require('../FormatFile-6030027c.js');
10
10
  var Button = require('../Button-6b922fc1.js');
11
11
  require('framer-motion');
12
12
  require('react-dom');
@@ -14,15 +14,17 @@ require('lodash/debounce');
14
14
  require('@jobber/hooks/useRefocusOnActivator');
15
15
  require('@jobber/hooks/useOnKeyDown');
16
16
  require('@jobber/hooks/useFocusTrap');
17
+ require('@jobber/hooks/useIsMounted');
17
18
  require('../ButtonDismiss-a3ba1de2.js');
18
19
  require('filesize');
19
- require('../ConfirmationModal-6d9b5dfb.js');
20
- require('../Modal-51497914.js');
21
- require('../Heading-caf76d2c.js');
20
+ require('../ConfirmationModal-387aa1b5.js');
21
+ require('../Modal-5b866c72.js');
22
+ require('../Heading-bae3c69e.js');
22
23
  require('../Typography-e2a23b7e.js');
23
- require('../getAtlantisConfig-0f3e8af2.js');
24
+ require('../useAtlantisConfig-ed0bee66.js');
25
+ require('@jobber/hooks/useSafeLayoutEffect');
24
26
  require('../Content-e3f7b6fc.js');
25
- require('../Markdown-52c4ad31.js');
27
+ require('../Markdown-b1b65457.js');
26
28
  require('react-markdown');
27
29
  require('../Text-fbeaaca6.js');
28
30
  require('../Emphasis-a77d8ee9.js');
@@ -2,12 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Heading = require('../Heading-caf76d2c.js');
5
+ var Heading = require('../Heading-bae3c69e.js');
6
6
  require('react');
7
7
  require('../Typography-e2a23b7e.js');
8
8
  require('classnames');
9
9
  require('../style-inject.es-9d2f5f4e.js');
10
- require('../getAtlantisConfig-0f3e8af2.js');
10
+ require('../useAtlantisConfig-ed0bee66.js');
11
+ require('@jobber/hooks/useSafeLayoutEffect');
11
12
 
12
13
 
13
14
 
@@ -2,14 +2,14 @@
2
2
 
3
3
  var React = require('react');
4
4
  var Typography = require('./Typography-e2a23b7e.js');
5
- var getAtlantisConfig = require('./getAtlantisConfig-0f3e8af2.js');
5
+ var useAtlantisConfig = require('./useAtlantisConfig-ed0bee66.js');
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
9
9
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
10
 
11
11
  function Heading({ level = 5, children }) {
12
- const { JOBBER_RETHEME: inRetheme } = getAtlantisConfig.getAtlantisConfig();
12
+ const { JOBBER_RETHEME: inRetheme } = useAtlantisConfig.useAtlantisConfig();
13
13
  const levelMap = {
14
14
  1: {
15
15
  element: "h1",
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ /// <reference types="react" />
2
2
  interface PresentedImage {
3
3
  title?: string;
4
4
  caption?: string;
@@ -33,5 +33,5 @@ interface LightBoxProps {
33
33
  */
34
34
  onRequestClose(options: RequestCloseOptions): void;
35
35
  }
36
- export declare function LightBox({ open, images, imageIndex, onRequestClose, }: LightBoxProps): React.ReactPortal;
36
+ export declare function LightBox({ open, images, imageIndex, onRequestClose, }: LightBoxProps): JSX.Element;
37
37
  export {};
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var LightBox = require('../LightBox-6806cc30.js');
5
+ var LightBox = require('../LightBox-7efe8932.js');
6
6
  require('react');
7
7
  require('framer-motion');
8
8
  require('react-dom');
@@ -10,6 +10,7 @@ require('lodash/debounce');
10
10
  require('@jobber/hooks/useRefocusOnActivator');
11
11
  require('@jobber/hooks/useOnKeyDown');
12
12
  require('@jobber/hooks/useFocusTrap');
13
+ require('@jobber/hooks/useIsMounted');
13
14
  require('../style-inject.es-9d2f5f4e.js');
14
15
  require('../ButtonDismiss-a3ba1de2.js');
15
16
  require('../Button-6b922fc1.js');
@@ -7,6 +7,7 @@ var debounce = require('lodash/debounce');
7
7
  var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
8
8
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
9
9
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
10
+ var useIsMounted = require('@jobber/hooks/useIsMounted');
10
11
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
11
12
  var ButtonDismiss = require('./ButtonDismiss-a3ba1de2.js');
12
13
  var Button = require('./Button-6b922fc1.js');
@@ -60,6 +61,7 @@ function LightBox({ open, images, imageIndex = 0, onRequestClose, }) {
60
61
  const lightboxRef = useFocusTrap.useFocusTrap(open);
61
62
  const debouncedHandleNext = debounce__default["default"](handleMoveNext, debounceDuration);
62
63
  const debouncedHandlePrevious = debounce__default["default"](handleMovePrevious, debounceDuration);
64
+ const mounted = useIsMounted.useIsMounted();
63
65
  useRefocusOnActivator.useRefocusOnActivator(open);
64
66
  useOnKeyDown.useOnKeyDown(handleRequestClose, "Escape");
65
67
  useOnKeyDown.useOnKeyDown(debouncedHandlePrevious, {
@@ -83,7 +85,9 @@ function LightBox({ open, images, imageIndex = 0, onRequestClose, }) {
83
85
  React__default["default"].createElement(NextButton, { onClick: debouncedHandleNext }))),
84
86
  React__default["default"].createElement("div", { className: styles.toolbar }, images[currentImageIndex].caption),
85
87
  React__default["default"].createElement("div", { className: styles.overlay, onClick: handleRequestClose })))));
86
- return ReactDOM__default["default"].createPortal(template, document.body);
88
+ return mounted.current
89
+ ? ReactDOM__default["default"].createPortal(template, document.body)
90
+ : template;
87
91
  function handleMovePrevious() {
88
92
  setDirection(-1);
89
93
  setCurrentImageIndex((currentImageIndex + images.length - 1) % images.length);
@@ -9,12 +9,13 @@ var groupBy = require('lodash/groupBy');
9
9
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
10
10
  var Icon = require('../Icon-405a216c.js');
11
11
  var Text = require('../Text-fbeaaca6.js');
12
- var Heading = require('../Heading-caf76d2c.js');
12
+ var Heading = require('../Heading-bae3c69e.js');
13
13
  var Typography = require('../Typography-e2a23b7e.js');
14
- var Markdown = require('../Markdown-52c4ad31.js');
14
+ var Markdown = require('../Markdown-b1b65457.js');
15
15
  var Emphasis = require('../Emphasis-a77d8ee9.js');
16
16
  require('@jobber/design');
17
- require('../getAtlantisConfig-0f3e8af2.js');
17
+ require('../useAtlantisConfig-ed0bee66.js');
18
+ require('@jobber/hooks/useSafeLayoutEffect');
18
19
  require('react-markdown');
19
20
  require('../Content-e3f7b6fc.js');
20
21
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Markdown = require('../Markdown-52c4ad31.js');
5
+ var Markdown = require('../Markdown-b1b65457.js');
6
6
  require('react');
7
7
  require('react-markdown');
8
8
  require('../Text-fbeaaca6.js');
@@ -10,8 +10,9 @@ require('../Typography-e2a23b7e.js');
10
10
  require('classnames');
11
11
  require('../style-inject.es-9d2f5f4e.js');
12
12
  require('../Emphasis-a77d8ee9.js');
13
- require('../Heading-caf76d2c.js');
14
- require('../getAtlantisConfig-0f3e8af2.js');
13
+ require('../Heading-bae3c69e.js');
14
+ require('../useAtlantisConfig-ed0bee66.js');
15
+ require('@jobber/hooks/useSafeLayoutEffect');
15
16
  require('../Content-e3f7b6fc.js');
16
17
 
17
18
 
@@ -4,7 +4,7 @@ var React = require('react');
4
4
  var ReactMarkdown = require('react-markdown');
5
5
  var Text = require('./Text-fbeaaca6.js');
6
6
  var Emphasis = require('./Emphasis-a77d8ee9.js');
7
- var Heading = require('./Heading-caf76d2c.js');
7
+ var Heading = require('./Heading-bae3c69e.js');
8
8
  var Content = require('./Content-e3f7b6fc.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -1,4 +1,4 @@
1
- import React, { ReactNode } from "react";
1
+ import { ReactNode } from "react";
2
2
  import sizes from "./Sizes.css";
3
3
  import { ButtonProps } from "../Button";
4
4
  export interface ModalProps {
@@ -18,4 +18,4 @@ export interface ModalProps {
18
18
  readonly tertiaryAction?: ButtonProps;
19
19
  onRequestClose?(): void;
20
20
  }
21
- export declare function Modal({ open, title, size, dismissible, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, }: ModalProps): React.ReactPortal;
21
+ export declare function Modal({ open, title, size, dismissible, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, }: ModalProps): JSX.Element;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Modal = require('../Modal-51497914.js');
5
+ var Modal = require('../Modal-5b866c72.js');
6
6
  require('react');
7
7
  require('react-dom');
8
8
  require('classnames');
@@ -11,9 +11,10 @@ require('@jobber/hooks/useRefocusOnActivator');
11
11
  require('@jobber/hooks/useOnKeyDown');
12
12
  require('@jobber/hooks/useFocusTrap');
13
13
  require('../style-inject.es-9d2f5f4e.js');
14
- require('../Heading-caf76d2c.js');
14
+ require('../Heading-bae3c69e.js');
15
15
  require('../Typography-e2a23b7e.js');
16
- require('../getAtlantisConfig-0f3e8af2.js');
16
+ require('../useAtlantisConfig-ed0bee66.js');
17
+ require('@jobber/hooks/useSafeLayoutEffect');
17
18
  require('../Button-6b922fc1.js');
18
19
  require('react-router-dom');
19
20
  require('../Icon-405a216c.js');
@@ -8,7 +8,7 @@ var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
8
8
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
9
9
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
10
10
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
11
- var Heading = require('./Heading-caf76d2c.js');
11
+ var Heading = require('./Heading-bae3c69e.js');
12
12
  var Button = require('./Button-6b922fc1.js');
13
13
  var ButtonDismiss = require('./ButtonDismiss-a3ba1de2.js');
14
14
 
@@ -40,7 +40,9 @@ function Modal({ open = false, title, size, dismissible = true, children, primar
40
40
  title != undefined && (React__default["default"].createElement(Header, { title: title, dismissible: dismissible, onRequestClose: onRequestClose })),
41
41
  children,
42
42
  React__default["default"].createElement(Actions, { primary: primaryAction, secondary: secondaryAction, tertiary: tertiaryAction }))))));
43
- return ReactDOM__default["default"].createPortal(template, document.body);
43
+ return (globalThis === null || globalThis === void 0 ? void 0 : globalThis.document)
44
+ ? ReactDOM__default["default"].createPortal(template, document.body)
45
+ : template;
44
46
  function handleRequestClose() {
45
47
  if (open && onRequestClose) {
46
48
  onRequestClose();
@@ -6,15 +6,16 @@ var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var jobberHooks = require('@jobber/hooks/useResizeObserver');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
- var Heading = require('../Heading-caf76d2c.js');
9
+ var Heading = require('../Heading-bae3c69e.js');
10
10
  var Text = require('../Text-fbeaaca6.js');
11
11
  var Content = require('../Content-e3f7b6fc.js');
12
- var Markdown = require('../Markdown-52c4ad31.js');
12
+ var Markdown = require('../Markdown-b1b65457.js');
13
13
  var Button = require('../Button-6b922fc1.js');
14
14
  var Menu = require('../Menu-d6dd673e.js');
15
15
  var Emphasis = require('../Emphasis-a77d8ee9.js');
16
16
  require('../Typography-e2a23b7e.js');
17
- require('../getAtlantisConfig-0f3e8af2.js');
17
+ require('../useAtlantisConfig-ed0bee66.js');
18
+ require('@jobber/hooks/useSafeLayoutEffect');
18
19
  require('react-markdown');
19
20
  require('react-router-dom');
20
21
  require('../Icon-405a216c.js');
@@ -22,7 +23,6 @@ require('@jobber/design');
22
23
  require('framer-motion');
23
24
  require('@jobber/hooks/useOnKeyDown');
24
25
  require('@jobber/hooks/useRefocusOnActivator');
25
- require('@jobber/hooks/useSafeLayoutEffect');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
28
 
@@ -25,7 +25,7 @@ styleInject_es.styleInject(css_248z);
25
25
  function Popover({ onRequestClose, children, attachTo, open, preferredPlacement = "auto", }) {
26
26
  const [popperElement, setPopperElement] = React.useState();
27
27
  const [arrowElement, setArrowElement] = React.useState();
28
- const { styles: popperStyles, attributes } = reactPopper.usePopper(attachTo instanceof Element ? attachTo : attachTo.current, popperElement, {
28
+ const { styles: popperStyles, attributes } = reactPopper.usePopper(isHTMLElement(attachTo) ? attachTo : attachTo.current, popperElement, {
29
29
  modifiers: buildModifiers(arrowElement),
30
30
  placement: preferredPlacement,
31
31
  });
@@ -57,5 +57,9 @@ function buildModifiers(arrowElement) {
57
57
  ];
58
58
  return modifiers;
59
59
  }
60
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
+ function isHTMLElement(el) {
62
+ return (globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) && el instanceof Element;
63
+ }
60
64
 
61
65
  exports.Popover = Popover;
@@ -2,12 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Tooltip = require('../Tooltip-ef3d6ef4.js');
5
+ var Tooltip = require('../Tooltip-b9de6e57.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-dom');
9
9
  require('framer-motion');
10
10
  require('@jobber/hooks/useSafeLayoutEffect');
11
+ require('@jobber/hooks/useIsMounted');
11
12
  require('../style-inject.es-9d2f5f4e.js');
12
13
  require('react-popper');
13
14
 
@@ -5,6 +5,7 @@ var classnames = require('classnames');
5
5
  var ReactDOM = require('react-dom');
6
6
  var framerMotion = require('framer-motion');
7
7
  var useSafeLayoutEffect = require('@jobber/hooks/useSafeLayoutEffect');
8
+ var useIsMounted = require('@jobber/hooks/useIsMounted');
8
9
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
9
10
  var reactPopper = require('react-popper');
10
11
 
@@ -44,19 +45,20 @@ const variation = {
44
45
  };
45
46
  function Tooltip({ message, children }) {
46
47
  const [show, setShow] = React.useState(false);
48
+ const mounted = useIsMounted.useIsMounted();
47
49
  const { attributes, placement, shadowRef, styles: popperStyles, setArrowRef, setTooltipRef, } = useTooltipPositioning();
48
50
  initializeListeners();
49
51
  const toolTipClassNames = classnames__default["default"](styles.tooltipWrapper, placement === "bottom" && styles.below, placement === "top" && styles.above);
50
52
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
51
53
  React__default["default"].createElement("span", { className: styles.shadowActivator, ref: shadowRef }),
52
54
  children,
53
- React__default["default"].createElement(TooltipPortal, null, show && Boolean(message) && (React__default["default"].createElement("div", Object.assign({ className: toolTipClassNames, style: popperStyles.popper, ref: setTooltipRef, role: "tooltip" }, attributes.popper),
55
+ mounted.current ? (React__default["default"].createElement(TooltipPortal, null, show && Boolean(message) && (React__default["default"].createElement("div", Object.assign({ className: toolTipClassNames, style: popperStyles.popper, ref: setTooltipRef, role: "tooltip" }, attributes.popper),
54
56
  React__default["default"].createElement(framerMotion.motion.div, { className: styles.tooltip, variants: variation, initial: "startOrStop", animate: "done", exit: "startOrStop", transition: {
55
57
  damping: 50,
56
58
  stiffness: 500,
57
59
  } },
58
60
  React__default["default"].createElement("p", { className: styles.tooltipMessage }, message),
59
- React__default["default"].createElement("div", { ref: setArrowRef, style: popperStyles.arrow, className: styles.arrow })))))));
61
+ React__default["default"].createElement("div", { ref: setArrowRef, style: popperStyles.arrow, className: styles.arrow })))))) : null));
60
62
  function initializeListeners() {
61
63
  const showTooltip = () => {
62
64
  setShow(true);
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ var useSafeLayoutEffect = require('@jobber/hooks/useSafeLayoutEffect');
4
+ var React = require('react');
5
+
6
+ // For retheme purposes only.
7
+ // This will be removed once the retheme is out of the experiment.
8
+ function useAtlantisConfig() {
9
+ const [JOBBER_RETHEME, setJOBBER_RETHEME] = React.useState(false);
10
+ useSafeLayoutEffect.useSafeLayoutEffect(() => {
11
+ setJOBBER_RETHEME(document.body.classList.contains("jobber-retheme"));
12
+ }, []);
13
+ return { JOBBER_RETHEME };
14
+ }
15
+
16
+ exports.useAtlantisConfig = useAtlantisConfig;
@@ -0,0 +1,3 @@
1
+ export declare function useAtlantisConfig(): {
2
+ JOBBER_RETHEME: boolean;
3
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.86.1",
3
+ "version": "4.87.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -80,5 +80,5 @@
80
80
  "> 1%",
81
81
  "IE 10"
82
82
  ],
83
- "gitHead": "bddb79d4e7a5125c5881d30bfa875f6535db49f6"
83
+ "gitHead": "e82c5fcab4efce9778fb3de7a1336fb5473d1776"
84
84
  }
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- // For retheme purposes only.
4
- // This will be removed once the retheme is out of the experiment.
5
- function getAtlantisConfig() {
6
- let JOBBER_RETHEME = false;
7
- if (typeof window !== "undefined") {
8
- JOBBER_RETHEME = document.body.classList.contains("jobber-retheme");
9
- }
10
- return { JOBBER_RETHEME };
11
- }
12
-
13
- exports.getAtlantisConfig = getAtlantisConfig;
@@ -1,3 +0,0 @@
1
- export declare function getAtlantisConfig(): {
2
- JOBBER_RETHEME: boolean;
3
- };