@jobber/components 4.85.4 → 4.85.5-JOB-85892.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.
@@ -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,6 +11,7 @@ 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-259af966.js');
15
16
  var Icon = require('../Icon-405a216c.js');
16
17
  var Heading = require('../Heading-1e8e4bd3.js');
@@ -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;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Chip = require('../Chip-3d1bfddc.js');
5
+ var Chip = require('../Chip-2709f19f.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-c45bf216.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-c45bf216.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-c45bf216.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-a24c8241.js');
5
+ var Combobox = require('../Combobox-e383ee96.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-3d1bfddc.js');
28
+ require('../Chip-2709f19f.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-3d1bfddc.js');
21
+ var Chip = require('./Chip-2709f19f.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,15 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ConfirmationModal = require('../ConfirmationModal-52e16873.js');
5
+ var ConfirmationModal = require('../ConfirmationModal-babb584c.js');
6
6
  require('react');
7
7
  require('@jobber/hooks/useOnKeyDown');
8
- require('../Modal-c336cac6.js');
8
+ require('../Modal-6af55ee1.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
+ require('@jobber/hooks/useIsMounted');
14
15
  require('../style-inject.es-9d2f5f4e.js');
15
16
  require('../Heading-1e8e4bd3.js');
16
17
  require('../Typography-c45bf216.js');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var React = require('react');
4
4
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
5
- var Modal = require('./Modal-c336cac6.js');
5
+ var Modal = require('./Modal-6af55ee1.js');
6
6
  var Content = require('./Content-e3f7b6fc.js');
7
7
  var Markdown = require('./Markdown-f7c55304.js');
8
8
 
@@ -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-b73a5e01.js');
16
16
  var useInView = require('@jobber/hooks/useInView');
17
17
  var isEmpty = require('lodash/isEmpty');
@@ -23,11 +23,12 @@ var Icon = require('../Icon-405a216c.js');
23
23
  var FormatDate = require('../FormatDate-70ea5b43.js');
24
24
  var Heading = require('../Heading-1e8e4bd3.js');
25
25
  var ReactDOM = require('react-dom');
26
+ var useIsMounted = require('@jobber/hooks/useIsMounted');
26
27
  var Checkbox = require('../Checkbox-787e2e47.js');
27
28
  var reactRouterDom = require('react-router-dom');
28
29
  var AnimatedSwitcher = require('../AnimatedSwitcher-3d45ec5d.js');
29
- var Combobox = require('../Combobox-a24c8241.js');
30
- var Chip = require('../Chip-3d1bfddc.js');
30
+ var Combobox = require('../Combobox-e383ee96.js');
31
+ var Chip = require('../Chip-2709f19f.js');
31
32
  var debounce = require('lodash/debounce');
32
33
  var InputText = require('../InputText-55b6cb65.js');
33
34
  var Spinner = require('../Spinner-9d8fc7ff.js');
@@ -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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormatFile = require('../FormatFile-f036902d.js');
5
+ var FormatFile = require('../FormatFile-16218f50.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('filesize');
@@ -12,13 +12,14 @@ require('react-router-dom');
12
12
  require('../Icon-405a216c.js');
13
13
  require('@jobber/design');
14
14
  require('../Typography-c45bf216.js');
15
- require('../ConfirmationModal-52e16873.js');
15
+ require('../ConfirmationModal-babb584c.js');
16
16
  require('@jobber/hooks/useOnKeyDown');
17
- require('../Modal-c336cac6.js');
17
+ require('../Modal-6af55ee1.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('@jobber/hooks/useIsMounted');
22
23
  require('../Heading-1e8e4bd3.js');
23
24
  require('../getAtlantisConfig-0f3e8af2.js');
24
25
  require('../ButtonDismiss-350af163.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-b73a5e01.js');
8
- var ConfirmationModal = require('./ConfirmationModal-52e16873.js');
8
+ var ConfirmationModal = require('./ConfirmationModal-babb584c.js');
9
9
  var Glimmer = require('./Glimmer-84dee1ed.js');
10
10
  var Icon = require('./Icon-405a216c.js');
11
11
  var Typography = require('./Typography-c45bf216.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-a89d8863.js');
9
- var FormatFile = require('../FormatFile-f036902d.js');
8
+ var LightBox = require('../LightBox-b60d2262.js');
9
+ var FormatFile = require('../FormatFile-16218f50.js');
10
10
  var Button = require('../Button-b73a5e01.js');
11
11
  require('framer-motion');
12
12
  require('react-dom');
@@ -14,10 +14,11 @@ 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-350af163.js');
18
19
  require('filesize');
19
- require('../ConfirmationModal-52e16873.js');
20
- require('../Modal-c336cac6.js');
20
+ require('../ConfirmationModal-babb584c.js');
21
+ require('../Modal-6af55ee1.js');
21
22
  require('../Heading-1e8e4bd3.js');
22
23
  require('../Typography-c45bf216.js');
23
24
  require('../getAtlantisConfig-0f3e8af2.js');
@@ -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-a89d8863.js');
5
+ var LightBox = require('../LightBox-b60d2262.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-350af163.js');
15
16
  require('../Button-b73a5e01.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-350af163.js');
12
13
  var Button = require('./Button-b73a5e01.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);
@@ -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-c336cac6.js');
5
+ var Modal = require('../Modal-6af55ee1.js');
6
6
  require('react');
7
7
  require('react-dom');
8
8
  require('classnames');
@@ -10,6 +10,7 @@ require('framer-motion');
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('../Heading-1e8e4bd3.js');
15
16
  require('../Typography-c45bf216.js');
@@ -7,6 +7,7 @@ var framerMotion = require('framer-motion');
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 Heading = require('./Heading-1e8e4bd3.js');
12
13
  var Button = require('./Button-b73a5e01.js');
@@ -31,6 +32,7 @@ function Modal({ open = false, title, size, dismissible = true, children, primar
31
32
  useRefocusOnActivator.useRefocusOnActivator(open);
32
33
  const modalRef = useFocusTrap.useFocusTrap(open);
33
34
  useOnKeyDown.useOnKeyDown(handleRequestClose, "Escape");
35
+ const mounted = useIsMounted.useIsMounted();
34
36
  const template = (React__default["default"].createElement(framerMotion.AnimatePresence, null, open && (React__default["default"].createElement("div", { ref: modalRef, role: "dialog", className: styles.container, tabIndex: 0 },
35
37
  React__default["default"].createElement(framerMotion.motion.div, { key: styles.overlay, className: styles.overlay, onClick: onRequestClose, initial: { opacity: 0 }, animate: { opacity: 0.8 }, exit: { opacity: 0 }, transition: { duration: 0.2 } }),
36
38
  React__default["default"].createElement(framerMotion.motion.div, { key: styles.modal, className: modalClassName, initial: { scale: 0.9, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0.9, opacity: 0 }, transition: {
@@ -40,7 +42,9 @@ function Modal({ open = false, title, size, dismissible = true, children, primar
40
42
  title != undefined && (React__default["default"].createElement(Header, { title: title, dismissible: dismissible, onRequestClose: onRequestClose })),
41
43
  children,
42
44
  React__default["default"].createElement(Actions, { primary: primaryAction, secondary: secondaryAction, tertiary: tertiaryAction }))))));
43
- return ReactDOM__default["default"].createPortal(template, document.body);
45
+ return mounted.current
46
+ ? ReactDOM__default["default"].createPortal(template, document.body)
47
+ : template;
44
48
  function handleRequestClose() {
45
49
  if (open && onRequestClose) {
46
50
  onRequestClose();
@@ -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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.85.4",
3
+ "version": "4.85.5-JOB-85892.0+4dc7f898",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@jobber/design": "^0.55.1",
23
- "@jobber/formatters": "*",
23
+ "@jobber/formatters": "^0.2.2",
24
24
  "@jobber/hooks": "^2.9.1",
25
25
  "@popperjs/core": "^2.0.6",
26
26
  "@std-proposal/temporal": "0.0.1",
@@ -80,5 +80,5 @@
80
80
  "> 1%",
81
81
  "IE 10"
82
82
  ],
83
- "gitHead": "615f364735ac965736352b7582c17e5902ff670e"
83
+ "gitHead": "4dc7f898b3a6a0cb396fac20b8464397c937d6d7"
84
84
  }