@jobber/components 4.1.0 → 4.1.2

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 (127) hide show
  1. package/dist/Autocomplete/Autocomplete.d.ts +1 -1
  2. package/dist/Autocomplete/Option.d.ts +2 -2
  3. package/dist/Autocomplete/index.js +51 -67
  4. package/dist/Avatar/Avatar.d.ts +2 -2
  5. package/dist/Avatar/index.js +2 -2
  6. package/dist/{Avatar-cfd04e86.js → Avatar-89cfd0a6.js} +14 -18
  7. package/dist/Banner/Banner.d.ts +1 -1
  8. package/dist/Banner/index.js +15 -19
  9. package/dist/Button/Button.d.ts +1 -1
  10. package/dist/Button/index.js +3 -4
  11. package/dist/{Button-cd30df0f.js → Button-16e043ec.js} +21 -24
  12. package/dist/ButtonDismiss/index.js +4 -5
  13. package/dist/{ButtonDismiss-a9590195.js → ButtonDismiss-3fb1eaf9.js} +2 -3
  14. package/dist/Card/Card.d.ts +1 -1
  15. package/dist/Card/index.js +6 -7
  16. package/dist/Card/types.d.ts +1 -1
  17. package/dist/{Card-b9f8d6f3.js → Card-edab9c3c.js} +18 -22
  18. package/dist/Checkbox/Checkbox.d.ts +1 -1
  19. package/dist/Checkbox/index.js +4 -5
  20. package/dist/{Checkbox-5103d2b9.js → Checkbox-c1efc2f6.js} +10 -12
  21. package/dist/Chips/ChipsTypes.d.ts +1 -1
  22. package/dist/Chips/InternalChipDismissible/InternalChipDismissibleTypes.d.ts +1 -1
  23. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissible.d.ts +1 -1
  24. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissibleInput.d.ts +3 -3
  25. package/dist/Chips/InternalChipMultiSelect.d.ts +1 -1
  26. package/dist/Chips/InternalChipSingleSelect.d.ts +1 -1
  27. package/dist/Chips/index.js +165 -185
  28. package/dist/ConfirmationModal/ConfirmationModal.d.ts +1 -1
  29. package/dist/ConfirmationModal/index.js +11 -12
  30. package/dist/{ConfirmationModal-e95f46d7.js → ConfirmationModal-6a7beee2.js} +28 -31
  31. package/dist/Content/index.js +1 -1
  32. package/dist/{Content-18de5fbb.js → Content-05df8f7f.js} +2 -3
  33. package/dist/Countdown/Countdown.d.ts +1 -1
  34. package/dist/Countdown/computeTimeUnit.d.ts +1 -1
  35. package/dist/Countdown/index.js +15 -18
  36. package/dist/DataDump/index.js +9 -11
  37. package/dist/DataTable/Footer.d.ts +1 -1
  38. package/dist/DataTable/createTableSettings.d.ts +2 -2
  39. package/dist/DataTable/index.js +74 -106
  40. package/dist/DataTable/test-utilities/helpers.d.ts +1 -1
  41. package/dist/DataTable/types.d.ts +2 -2
  42. package/dist/DatePicker/DatePicker.d.ts +1 -1
  43. package/dist/DatePicker/index.js +4 -5
  44. package/dist/{DatePicker-cf813028.js → DatePicker-0696b0f0.js} +31 -36
  45. package/dist/DescriptionList/index.js +5 -10
  46. package/dist/Disclosure/index.js +8 -10
  47. package/dist/Divider/index.js +8 -10
  48. package/dist/Drawer/index.js +10 -14
  49. package/dist/Emphasis/index.js +2 -3
  50. package/dist/{Emphasis-75a3f411.js → Emphasis-23dc2a0a.js} +4 -6
  51. package/dist/FeatureSwitch/index.js +15 -17
  52. package/dist/Form/index.js +23 -33
  53. package/dist/FormField/FormFieldTypes.d.ts +2 -2
  54. package/dist/FormField/index.js +8 -8
  55. package/dist/{FormField-ac310b6f.js → FormField-34e4701b.js} +77 -77
  56. package/dist/FormatDate/index.js +2 -3
  57. package/dist/FormatEmail/index.js +2 -3
  58. package/dist/FormatFile/index.js +13 -14
  59. package/dist/{FormatFile-18e8a54a.js → FormatFile-3512f838.js} +33 -40
  60. package/dist/FormatRelativeDateTime/index.js +5 -6
  61. package/dist/FormatTime/index.js +6 -7
  62. package/dist/Gallery/GalleryTypes.d.ts +2 -2
  63. package/dist/Gallery/index.js +31 -33
  64. package/dist/Heading/index.js +2 -3
  65. package/dist/{Heading-a9a66964.js → Heading-7b203f7f.js} +4 -6
  66. package/dist/Icon/index.js +1 -1
  67. package/dist/{Icon-d5ad1a6d.js → Icon-405a216c.js} +7 -8
  68. package/dist/InlineLabel/InlineLabel.d.ts +1 -1
  69. package/dist/InlineLabel/index.js +4 -6
  70. package/dist/InputAvatar/index.js +15 -20
  71. package/dist/InputDate/index.js +15 -15
  72. package/dist/InputEmail/InputEmail.d.ts +1 -1
  73. package/dist/InputEmail/index.js +12 -12
  74. package/dist/InputFile/index.js +6 -6
  75. package/dist/{InputFile-e108a7f8.js → InputFile-5e0ed2b5.js} +48 -62
  76. package/dist/InputGroup/index.js +4 -5
  77. package/dist/InputNumber/index.js +22 -22
  78. package/dist/InputPassword/index.js +12 -12
  79. package/dist/InputText/InputText.d.ts +1 -1
  80. package/dist/InputText/index.js +9 -9
  81. package/dist/{InputText-70f7d947.js → InputText-5d29e10a.js} +23 -24
  82. package/dist/InputTime/index.js +27 -27
  83. package/dist/InputValidation/index.js +4 -5
  84. package/dist/{InputValidation-06a8a7ba.js → InputValidation-97dd0dcf.js} +7 -8
  85. package/dist/LightBox/index.js +5 -6
  86. package/dist/{LightBox-1ad62669.js → LightBox-dd1afa97.js} +22 -26
  87. package/dist/List/index.js +26 -32
  88. package/dist/Markdown/index.js +6 -7
  89. package/dist/{Markdown-b53e0308.js → Markdown-be2dcd0c.js} +12 -18
  90. package/dist/Menu/index.js +4 -5
  91. package/dist/{Menu-826cfb89.js → Menu-d6a7d17b.js} +31 -36
  92. package/dist/Modal/index.js +6 -7
  93. package/dist/{Modal-cc3bd7bf.js → Modal-757e83fd.js} +13 -17
  94. package/dist/MultiSelect/index.js +53 -60
  95. package/dist/MultiSelect/types.d.ts +1 -1
  96. package/dist/{Option-7d5de76b.js → Option-5fd699dc.js} +3 -5
  97. package/dist/Page/Page.d.ts +1 -1
  98. package/dist/Page/index.js +21 -24
  99. package/dist/Popover/index.js +11 -13
  100. package/dist/ProgressBar/index.js +1 -1
  101. package/dist/{ProgressBar-e9a49129.js → ProgressBar-f028b159.js} +3 -4
  102. package/dist/RadioGroup/RadioOption.d.ts +2 -2
  103. package/dist/RadioGroup/index.js +9 -13
  104. package/dist/RecurringSelect/types.d.ts +2 -2
  105. package/dist/Select/Select.d.ts +1 -1
  106. package/dist/Select/index.js +9 -9
  107. package/dist/Spinner/index.js +1 -1
  108. package/dist/{Spinner-e4e9c8eb.js → Spinner-ae4c8a85.js} +5 -7
  109. package/dist/StatusLabel/StatusLabel.d.ts +1 -1
  110. package/dist/StatusLabel/index.js +6 -9
  111. package/dist/Switch/index.js +2 -3
  112. package/dist/{Switch-f03b70fc.js → Switch-7ac32f7b.js} +12 -16
  113. package/dist/Table/index.js +9 -17
  114. package/dist/Tabs/index.js +28 -34
  115. package/dist/Text/index.js +2 -3
  116. package/dist/{Text-e012fb46.js → Text-7ce00adb.js} +4 -5
  117. package/dist/Toast/Toast.d.ts +2 -2
  118. package/dist/Toast/index.js +31 -32
  119. package/dist/Tooltip/index.js +3 -4
  120. package/dist/Tooltip/useTooltipPositioning.d.ts +1 -1
  121. package/dist/{Tooltip-041feb00.js → Tooltip-1090a43d.js} +25 -28
  122. package/dist/Typography/Typography.d.ts +1 -1
  123. package/dist/Typography/index.js +1 -2
  124. package/dist/{Typography-fbe0ed6e.js → Typography-9262511f.js} +5 -7
  125. package/dist/tslib.es6-efe27175.js +38 -0
  126. package/package.json +5 -5
  127. package/dist/tslib.es6-5b50eb8e.js +0 -103
@@ -5,13 +5,12 @@ 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-dcee06b6.js');
8
- var Heading = require('../Heading-a9a66964.js');
9
- var ButtonDismiss = require('../ButtonDismiss-a9590195.js');
10
- require('../tslib.es6-5b50eb8e.js');
11
- require('../Typography-fbe0ed6e.js');
12
- require('../Button-cd30df0f.js');
8
+ var Heading = require('../Heading-7b203f7f.js');
9
+ var ButtonDismiss = require('../ButtonDismiss-3fb1eaf9.js');
10
+ require('../Typography-9262511f.js');
11
+ require('../Button-16e043ec.js');
13
12
  require('react-router-dom');
14
- require('../Icon-d5ad1a6d.js');
13
+ require('../Icon-405a216c.js');
15
14
  require('@jobber/design');
16
15
 
17
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -23,9 +22,8 @@ var css$1 = ":root {\n --drawer-width: calc(var(--space-base) * 17.5);\n --dra
23
22
  var styles$1 = {"container":"_3XszLcqw8Bk5bbTId3P8ZV","drawer":"_2nsJzlCbORiq2Zp1r2Zfjq","open":"BVcThJJ-WMJCtzGk9CfUq","header":"_1ql7AVWGaU-1bl2yZegFqH","contentScroll":"axZAc8S3vSa8nFC4yMJaW","content":"_3MACAQEV8zhNH4_KtJ0DiM"};
24
23
  styleInject_es.styleInject(css$1);
25
24
 
26
- function Drawer(_a) {
27
- var title = _a.title, children = _a.children, _b = _a.open, open = _b === void 0 ? true : _b, onRequestClose = _a.onRequestClose, id = _a.id;
28
- var drawerClassNames = classnames__default["default"](styles$1.container, open && styles$1.open);
25
+ function Drawer({ title, children, open = true, onRequestClose, id, }) {
26
+ const drawerClassNames = classnames__default["default"](styles$1.container, open && styles$1.open);
29
27
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
30
28
  React__default["default"].createElement("aside", { className: drawerClassNames, "data-testid": "drawer-container", "aria-label": title, "aria-hidden": !open, id: id },
31
29
  React__default["default"].createElement("div", { className: styles$1.drawer },
@@ -33,19 +31,17 @@ function Drawer(_a) {
33
31
  React__default["default"].createElement("div", { className: styles$1.contentScroll },
34
32
  React__default["default"].createElement("div", { className: styles$1.content }, children))))));
35
33
  }
36
- function Header(_a) {
37
- var title = _a.title, onRequestClose = _a.onRequestClose;
34
+ function Header({ title, onRequestClose }) {
38
35
  return (React__default["default"].createElement("div", { className: styles$1.header, "data-testid": "drawer-header" },
39
36
  React__default["default"].createElement(Heading.Heading, { level: 3 }, title),
40
- React__default["default"].createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: "Close " + (title || "drawer") })));
37
+ React__default["default"].createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: `Close ${title || "drawer"}` })));
41
38
  }
42
39
 
43
40
  var css = ".Sc90BtF67zpsMHXh3g9kq {\n display: grid;\n width: 100%;\n height: 100%;\n overflow: hidden;\n grid-template-columns: minmax(0, 1fr) minmax(-webkit-min-content, -webkit-max-content);\n grid-template-columns: minmax(0, 1fr) minmax(min-content, max-content);\n grid-template-rows: 1fr;\n}\n";
44
41
  var styles = {"drawerGrid":"Sc90BtF67zpsMHXh3g9kq"};
45
42
  styleInject_es.styleInject(css);
46
43
 
47
- function DrawerGrid(_a) {
48
- var children = _a.children;
44
+ function DrawerGrid({ children }) {
49
45
  return React__default["default"].createElement("div", { className: styles.drawerGrid }, children);
50
46
  }
51
47
 
@@ -2,10 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Emphasis = require('../Emphasis-75a3f411.js');
6
- require('../tslib.es6-5b50eb8e.js');
5
+ var Emphasis = require('../Emphasis-23dc2a0a.js');
7
6
  require('react');
8
- require('../Typography-fbe0ed6e.js');
7
+ require('../Typography-9262511f.js');
9
8
  require('classnames');
10
9
  require('../style-inject.es-dcee06b6.js');
11
10
 
@@ -1,21 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
4
3
  var React = require('react');
5
- var Typography = require('./Typography-fbe0ed6e.js');
4
+ var Typography = require('./Typography-9262511f.js');
6
5
 
7
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
7
 
9
8
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
9
 
11
- function Emphasis(_a) {
12
- var variation = _a.variation, children = _a.children;
13
- var variationMap = {
10
+ function Emphasis({ variation, children }) {
11
+ const variationMap = {
14
12
  bold: { element: "b", fontWeight: "bold" },
15
13
  italic: { element: "em", emphasisType: "italic" },
16
14
  highlight: { element: "strong", emphasisType: "highlight" },
17
15
  };
18
- return React__default["default"].createElement(Typography.Typography, tslib_es6.__assign({}, variationMap[variation]), children);
16
+ return React__default["default"].createElement(Typography.Typography, Object.assign({}, variationMap[variation]), children);
19
17
  }
20
18
 
21
19
  exports.Emphasis = Emphasis;
@@ -2,21 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
6
5
  var React = require('react');
7
6
  var framerMotion = require('framer-motion');
8
7
  var classnames = require('classnames');
9
8
  var styleInject_es = require('../style-inject.es-dcee06b6.js');
10
- var Heading = require('../Heading-a9a66964.js');
11
- var Text = require('../Text-e012fb46.js');
12
- var Content = require('../Content-18de5fbb.js');
13
- var Switch = require('../Switch-f03b70fc.js');
14
- var Button = require('../Button-cd30df0f.js');
15
- var Emphasis = require('../Emphasis-75a3f411.js');
16
- var Markdown = require('../Markdown-b53e0308.js');
17
- require('../Typography-fbe0ed6e.js');
9
+ var Heading = require('../Heading-7b203f7f.js');
10
+ var Text = require('../Text-7ce00adb.js');
11
+ var Content = require('../Content-05df8f7f.js');
12
+ var Switch = require('../Switch-7ac32f7b.js');
13
+ var Button = require('../Button-16e043ec.js');
14
+ var Emphasis = require('../Emphasis-23dc2a0a.js');
15
+ var Markdown = require('../Markdown-be2dcd0c.js');
16
+ require('../Typography-9262511f.js');
18
17
  require('react-router-dom');
19
- require('../Icon-d5ad1a6d.js');
18
+ require('../Icon-405a216c.js');
20
19
  require('@jobber/design');
21
20
  require('react-markdown');
22
21
 
@@ -29,10 +28,9 @@ var css = "._2wLd_KRTNAGUWLuHUk3oW {\n display: -ms-flexbox;\n display: flex;\
29
28
  var styles = {"container":"_2wLd_KRTNAGUWLuHUk3oW","content":"_3S4AEFcAzye_0NKuyb26Pt","action":"_3fTQ2YTOZjh3z63IpmHOEX","savedIndicator":"vVv_rOT7pURJPkU4rvJPE","featureContent":"f8zTHuP6EgBAklxGjSv1O","enabled":"NweVtD0555WFOwkVpskgX"};
30
29
  styleInject_es.styleInject(css);
31
30
 
32
- function FeatureSwitch(_a) {
33
- var children = _a.children, description = _a.description, _b = _a.disabled, disabled = _b === void 0 ? false : _b, enabled = _a.enabled, _c = _a.externalLink, externalLink = _c === void 0 ? false : _c, onEdit = _a.onEdit, onSwitch = _a.onSwitch, _d = _a.hasSaveIndicator, hasSaveIndicator = _d === void 0 ? false : _d, title = _a.title;
34
- var _e = tslib_es6.__read(React.useState(false), 2), savedIndicator = _e[0], setSavedIndicator = _e[1];
35
- var featureContentClassnames = classnames__default["default"](styles.featureContent, styles.content, enabled && styles.enabled);
31
+ function FeatureSwitch({ children, description, disabled = false, enabled, externalLink = false, onEdit, onSwitch, hasSaveIndicator = false, title, }) {
32
+ const [savedIndicator, setSavedIndicator] = React.useState(false);
33
+ const featureContentClassnames = classnames__default["default"](styles.featureContent, styles.content, enabled && styles.enabled);
36
34
  shouldShowSavedIndicator();
37
35
  return (React__default["default"].createElement(Content.Content, null,
38
36
  React__default["default"].createElement("div", { className: styles.container },
@@ -57,9 +55,9 @@ function FeatureSwitch(_a) {
57
55
  React__default["default"].createElement(Button.Button, { label: "Edit", type: "tertiary", onClick: onEdit })))))));
58
56
  function shouldShowSavedIndicator() {
59
57
  // Check if the component is mounted
60
- var _a = tslib_es6.__read(React.useState(false), 2), didMount = _a[0], setDidMount = _a[1];
61
- React.useEffect(function () { return setDidMount(true); }, []);
62
- React.useEffect(function () {
58
+ const [didMount, setDidMount] = React.useState(false);
59
+ React.useEffect(() => setDidMount(true), []);
60
+ React.useEffect(() => {
63
61
  didMount && hasSaveIndicator && setSavedIndicator(true);
64
62
  }, [enabled]);
65
63
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
5
+ var tslib_es6 = require('../tslib.es6-efe27175.js');
6
6
  var React = require('react');
7
7
  var reactHookForm = require('react-hook-form');
8
8
 
@@ -10,55 +10,45 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
 
11
11
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
12
 
13
- var Form = React.forwardRef(function InternalForm(_a, ref) {
14
- var _this = this;
15
- var onSubmit = _a.onSubmit, children = _a.children, onStateChange = _a.onStateChange;
16
- var methods = reactHookForm.useForm({ mode: "onTouched" });
17
- var errors = methods.errors, trigger = methods.trigger, handleSubmit = methods.handleSubmit, _b = methods.formState, isDirty = _b.isDirty, isValid = _b.isValid;
18
- React.useEffect(function () { return onStateChange && onStateChange({ isDirty: isDirty, isValid: isValid }); }, [isDirty, isValid]);
19
- React.useImperativeHandle(ref, function () { return ({
13
+ const Form = React.forwardRef(function InternalForm({ onSubmit, children, onStateChange }, ref) {
14
+ const methods = reactHookForm.useForm({ mode: "onTouched" });
15
+ const { trigger, handleSubmit, formState: { isDirty, isValid, errors }, } = methods;
16
+ React.useEffect(() => onStateChange && onStateChange({ isDirty, isValid }), [isDirty, isValid]);
17
+ React.useImperativeHandle(ref, () => ({
20
18
  /**
21
19
  * The `trigger()` method can also accept an array
22
20
  * of fields to validate. We may at some point want
23
21
  * to consider adding a `validate()` method to the
24
22
  * `Form` component.
25
23
  */
26
- submit: function () { return tslib_es6.__awaiter(_this, void 0, void 0, function () {
27
- var valid;
28
- return tslib_es6.__generator(this, function (_a) {
29
- switch (_a.label) {
30
- case 0: return [4 /*yield*/, trigger()];
31
- case 1:
32
- valid = _a.sent();
33
- if (valid) {
34
- submitHandler();
35
- }
36
- else {
37
- trigger();
38
- errorHandler(errors);
39
- }
40
- return [2 /*return*/];
41
- }
42
- });
43
- }); },
44
- }); });
24
+ submit: () => tslib_es6.__awaiter(this, void 0, void 0, function* () {
25
+ const valid = yield trigger();
26
+ if (valid) {
27
+ submitHandler();
28
+ }
29
+ else {
30
+ trigger();
31
+ errorHandler(errors);
32
+ }
33
+ }),
34
+ }));
45
35
  /**
46
36
  * If an onSubmit is not passed into a form, it will only be used
47
37
  * for validation. For that, we do not need to wrap it in a <form>
48
38
  * tag. This allows the <Form> component to be used in legacy code.
49
39
  */
50
- var Wrapper = onSubmit ? "form" : "div";
51
- var formProps = {
40
+ const Wrapper = onSubmit ? "form" : "div";
41
+ const formProps = {
52
42
  onSubmit: onSubmit && handleSubmit(submitHandler, errorHandler),
53
43
  };
54
- return (React__default["default"].createElement(reactHookForm.FormProvider, tslib_es6.__assign({}, methods),
55
- React__default["default"].createElement(Wrapper, tslib_es6.__assign({}, formProps, { "data-testid": "atlantis-form" }), children)));
44
+ return (React__default["default"].createElement(reactHookForm.FormProvider, Object.assign({}, methods),
45
+ React__default["default"].createElement(Wrapper, Object.assign({}, formProps, { "data-testid": "atlantis-form" }), children)));
56
46
  function submitHandler() {
57
47
  onSubmit && onSubmit();
58
48
  }
59
49
  function errorHandler(errs) {
60
- var firstErrName = Object.keys(errs)[0];
61
- var element = document.querySelector("[name=\"" + firstErrName + "\"]");
50
+ const firstErrName = Object.keys(errs)[0];
51
+ const element = document.querySelector(`[name="${firstErrName}"]`);
62
52
  if (typeof element != undefined) {
63
53
  element === null || element === void 0 ? void 0 : element.focus();
64
54
  }
@@ -2,8 +2,8 @@ import { ChangeEvent, ReactNode, RefObject } from "react";
2
2
  import { RegisterOptions } from "react-hook-form";
3
3
  import { XOR } from "ts-xor";
4
4
  import { IconNames } from "../Icon";
5
- export declare type FormFieldTypes = "text" | "password" | "number" | "time" | "textarea" | "select" | "email";
6
- export declare type AutocompleteTypes = "one-time-code" | "address-line1" | "address-line2";
5
+ export type FormFieldTypes = "text" | "password" | "number" | "time" | "textarea" | "select" | "email";
6
+ export type AutocompleteTypes = "one-time-code" | "address-line1" | "address-line2";
7
7
  export interface FieldActionsRef {
8
8
  setValue(value: string | number): void;
9
9
  }
@@ -2,22 +2,22 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormField = require('../FormField-ac310b6f.js');
6
- require('../tslib.es6-5b50eb8e.js');
5
+ var FormField = require('../FormField-34e4701b.js');
6
+ require('../tslib.es6-efe27175.js');
7
7
  require('react');
8
8
  require('uuid');
9
9
  require('react-hook-form');
10
10
  require('../style-inject.es-dcee06b6.js');
11
11
  require('classnames');
12
- require('../Button-cd30df0f.js');
12
+ require('../Button-16e043ec.js');
13
13
  require('react-router-dom');
14
- require('../Icon-d5ad1a6d.js');
14
+ require('../Icon-405a216c.js');
15
15
  require('@jobber/design');
16
- require('../Typography-fbe0ed6e.js');
17
- require('../Text-e012fb46.js');
18
- require('../InputValidation-06a8a7ba.js');
16
+ require('../Typography-9262511f.js');
17
+ require('../Text-7ce00adb.js');
18
+ require('../InputValidation-97dd0dcf.js');
19
19
  require('framer-motion');
20
- require('../Spinner-e4e9c8eb.js');
20
+ require('../Spinner-ae4c8a85.js');
21
21
 
22
22
 
23
23
 
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
3
+ var tslib_es6 = require('./tslib.es6-efe27175.js');
4
4
  var React = require('react');
5
5
  var uuid = require('uuid');
6
6
  var reactHookForm = require('react-hook-form');
7
7
  var styleInject_es = require('./style-inject.es-dcee06b6.js');
8
8
  var classnames = require('classnames');
9
- var Button = require('./Button-cd30df0f.js');
10
- var Icon = require('./Icon-d5ad1a6d.js');
11
- var Text = require('./Text-e012fb46.js');
12
- var InputValidation = require('./InputValidation-06a8a7ba.js');
13
- var Spinner = require('./Spinner-e4e9c8eb.js');
9
+ var Button = require('./Button-16e043ec.js');
10
+ var Icon = require('./Icon-405a216c.js');
11
+ var Text = require('./Text-7ce00adb.js');
12
+ var InputValidation = require('./InputValidation-97dd0dcf.js');
13
+ var Spinner = require('./Spinner-ae4c8a85.js');
14
14
 
15
15
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
16
 
@@ -21,22 +21,18 @@ var css = ":root {\n /**\n * These `--public-field` properties are used in ot
21
21
  var styles = {"wrapper":"_2bOj_Hpd2VvA3mi9t4RcZO","miniLabel":"IVFKQabHAwX8Kn2aNj8gM","textarea":"_1hfSn_RRn6Enf7teCHrbV8","invalid":"_3H2M7GlXG4Qh417lRbpzS7","disabled":"_2xkImc45YUzsUp6bZ3Ik_4","small":"_2N7Ipv_CbNRzrdEGCrptrV","large":"_2RtHPlAJG3Hp2QD9Q9cfD_","inline-left":"_3AHR56Sam4H_gp9JyzxRLl","inline-right":"_3AHR56Sam4H_gp9JyzxRLl","inline":"_3AHR56Sam4H_gp9JyzxRLl","center":"_19KcCv1flBCB9mHUlTLkQL","right":"_1wVbgkkxLyHZUFsS-xEPlc","maxLength":"_1tABQjw4-IkgUE3cbBzs7r","inputWrapper":"_1WnxEaBZY0zLsD8oKwh20b","input":"_3koQsrzZZXPVxXmmESjSG_","select":"Ntcl388Qhhu4uLJc2d1Ll","label":"ktPFw5_r1v4MB-Ts5rPTG","postfix":"_1yJbSG5N0hfPjPkrih4Q99","affixIcon":"_1EBMzQ2qM74AhLWsJH_VD7","suffix":"_2k-tb4HuwDpSggx3JEm4Rp","hasAction":"_1Pm2Qo4Aw45IfKYq1qX4CW","affixLabel":"_2PE8Igv1VLxZ4mpQc6iiR4","description":"_1iN0xB6nTG687YOOopowf"};
22
22
  styleInject_es.styleInject(css);
23
23
 
24
- function AffixLabel(_a) {
25
- var _b;
26
- var label = _a.label, _c = _a.variation, variation = _c === void 0 ? "prefix" : _c, labelRef = _a.labelRef;
27
- var affixLabelClass = classnames__default["default"](styles.affixLabel, (_b = {},
28
- _b[styles.suffix] = variation === "suffix",
29
- _b));
24
+ function AffixLabel({ label, variation = "prefix", labelRef, }) {
25
+ const affixLabelClass = classnames__default["default"](styles.affixLabel, {
26
+ [styles.suffix]: variation === "suffix",
27
+ });
30
28
  return (React__default["default"].createElement("div", { ref: labelRef, className: affixLabelClass }, label));
31
29
  }
32
- function AffixIcon(_a) {
33
- var _b;
34
- var icon = _a.icon, onClick = _a.onClick, ariaLabel = _a.ariaLabel, _c = _a.variation, variation = _c === void 0 ? "prefix" : _c, size = _a.size;
35
- var affixIconClass = classnames__default["default"](styles.affixIcon, (_b = {},
36
- _b[styles.suffix] = variation === "suffix",
37
- _b[styles.hasAction] = onClick,
38
- _b));
39
- var iconSize = size === "small" ? "small" : "base";
30
+ function AffixIcon({ icon, onClick, ariaLabel, variation = "prefix", size, }) {
31
+ const affixIconClass = classnames__default["default"](styles.affixIcon, {
32
+ [styles.suffix]: variation === "suffix",
33
+ [styles.hasAction]: onClick,
34
+ });
35
+ const iconSize = size === "small" ? "small" : "base";
40
36
  if (!icon)
41
37
  return React__default["default"].createElement(React__default["default"].Fragment, null);
42
38
  return (React__default["default"].createElement("div", { className: affixIconClass }, onClick ? (React__default["default"].createElement(Button.Button
@@ -52,123 +48,121 @@ function AffixIcon(_a) {
52
48
  ariaLabel: ariaLabel, icon: icon, onClick: onClick, variation: "subtle", type: "tertiary", size: iconSize })) : (React__default["default"].createElement(Icon.Icon, { name: icon, size: iconSize, color: "greyBlue" }))));
53
49
  }
54
50
 
55
- function FormFieldDescription(_a) {
56
- var id = _a.id, description = _a.description;
51
+ function FormFieldDescription({ id, description, }) {
57
52
  return (React__default["default"].createElement("div", { id: id, className: styles.description },
58
53
  React__default["default"].createElement(Text.Text, { size: "small", variation: "subdued" }, description)));
59
54
  }
60
55
 
61
- function FormFieldWrapper(_a) {
62
- var _b, _c;
63
- var align = _a.align, description = _a.description, descriptionIdentifier = _a.descriptionIdentifier, placeholder = _a.placeholder, value = _a.value, children = _a.children, invalid = _a.invalid, error = _a.error, size = _a.size, prefix = _a.prefix, suffix = _a.suffix, max = _a.max, maxLength = _a.maxLength, type = _a.type, disabled = _a.disabled, inline = _a.inline, identifier = _a.identifier;
64
- var wrapperClasses = classnames__default["default"](styles.wrapper, size && styles[size], align && styles[align], (_b = {},
65
- _b[styles.miniLabel] = (placeholder && value !== "") ||
56
+ function FormFieldWrapper({ align, description, descriptionIdentifier, placeholder, value, children, invalid, error, size, prefix, suffix, max, maxLength, type, disabled, inline, identifier, }) {
57
+ const wrapperClasses = classnames__default["default"](styles.wrapper, size && styles[size], align && styles[align], {
58
+ [styles.miniLabel]: (placeholder && value !== "") ||
66
59
  (placeholder && type === "select") ||
67
60
  (placeholder && type === "time"),
68
- _b[styles.textarea] = type === "textarea",
69
- _b[styles.invalid] = invalid !== null && invalid !== void 0 ? invalid : error,
70
- _b[styles.disabled] = disabled,
71
- _b[styles.inline] = inline,
72
- _b[styles.maxLength] = maxLength,
73
- _b[styles.select] = type === "select",
74
- _b));
75
- var wrapperInlineStyle = (_c = {},
76
- _c["--formField-maxLength"] = maxLength || max,
77
- _c);
78
- var prefixRef = React.useRef();
79
- var suffixRef = React.useRef();
80
- var _d = tslib_es6.__read(React.useState({
61
+ [styles.textarea]: type === "textarea",
62
+ [styles.invalid]: invalid !== null && invalid !== void 0 ? invalid : error,
63
+ [styles.disabled]: disabled,
64
+ [styles.inline]: inline,
65
+ [styles.maxLength]: maxLength,
66
+ [styles.select]: type === "select",
67
+ });
68
+ const wrapperInlineStyle = {
69
+ ["--formField-maxLength"]: maxLength || max,
70
+ };
71
+ const prefixRef = React.useRef();
72
+ const suffixRef = React.useRef();
73
+ const [labelStyle, setLabelStyle] = React.useState({
81
74
  paddingLeft: undefined,
82
75
  paddingRight: undefined,
83
- }), 2), labelStyle = _d[0], setLabelStyle = _d[1];
84
- React.useEffect(function () {
76
+ });
77
+ React.useEffect(() => {
85
78
  setLabelStyle(getAffixPaddding);
86
79
  }, [value]);
87
80
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
88
81
  React__default["default"].createElement("div", { className: wrapperClasses, style: wrapperInlineStyle },
89
- (prefix === null || prefix === void 0 ? void 0 : prefix.icon) && React__default["default"].createElement(AffixIcon, tslib_es6.__assign({}, prefix, { size: size })),
82
+ (prefix === null || prefix === void 0 ? void 0 : prefix.icon) && React__default["default"].createElement(AffixIcon, Object.assign({}, prefix, { size: size })),
90
83
  React__default["default"].createElement("div", { className: styles.inputWrapper },
91
84
  React__default["default"].createElement("label", { className: styles.label, htmlFor: identifier, style: (prefixRef === null || prefixRef === void 0 ? void 0 : prefixRef.current) || (suffixRef === null || suffixRef === void 0 ? void 0 : suffixRef.current) ? labelStyle : undefined }, placeholder),
92
- (prefix === null || prefix === void 0 ? void 0 : prefix.label) && React__default["default"].createElement(AffixLabel, tslib_es6.__assign({}, prefix, { labelRef: prefixRef })),
85
+ (prefix === null || prefix === void 0 ? void 0 : prefix.label) && React__default["default"].createElement(AffixLabel, Object.assign({}, prefix, { labelRef: prefixRef })),
93
86
  children,
94
- (suffix === null || suffix === void 0 ? void 0 : suffix.label) && (React__default["default"].createElement(AffixLabel, tslib_es6.__assign({}, suffix, { labelRef: suffixRef, variation: "suffix" })))),
95
- (suffix === null || suffix === void 0 ? void 0 : suffix.icon) && (React__default["default"].createElement(AffixIcon, tslib_es6.__assign({}, suffix, { variation: "suffix", size: size })))),
87
+ (suffix === null || suffix === void 0 ? void 0 : suffix.label) && (React__default["default"].createElement(AffixLabel, Object.assign({}, suffix, { labelRef: suffixRef, variation: "suffix" })))),
88
+ (suffix === null || suffix === void 0 ? void 0 : suffix.icon) && (React__default["default"].createElement(AffixIcon, Object.assign({}, suffix, { variation: "suffix", size: size })))),
96
89
  description && !inline && (React__default["default"].createElement(FormFieldDescription, { id: descriptionIdentifier, description: description })),
97
90
  error && !inline && React__default["default"].createElement(InputValidation.InputValidation, { message: error })));
98
91
  function getAffixPaddding() {
99
- var hasValue = value !== "";
100
- var newPadding = {
92
+ const hasValue = value !== "";
93
+ const newPadding = {
101
94
  paddingLeft: undefined,
102
95
  paddingRight: undefined,
103
96
  };
104
97
  if ((prefixRef === null || prefixRef === void 0 ? void 0 : prefixRef.current) && !hasValue) {
105
- var offsetWidth = prefixRef.current.offsetWidth;
98
+ const { offsetWidth } = prefixRef.current;
106
99
  newPadding.paddingLeft = offset(offsetWidth);
107
100
  }
108
101
  if ((suffixRef === null || suffixRef === void 0 ? void 0 : suffixRef.current) && !hasValue) {
109
- var offsetWidth = suffixRef.current.offsetWidth;
102
+ const { offsetWidth } = suffixRef.current;
110
103
  newPadding.paddingRight = offset(offsetWidth);
111
104
  }
112
105
  function offset(width) {
113
- return "calc(" + width + "px + var(--space-smallest)";
106
+ return `calc(${width}px + var(--space-smallest)`;
114
107
  }
115
108
  return newPadding;
116
109
  }
117
110
  }
118
111
 
119
- function FormFieldPostFix(_a) {
120
- var variation = _a.variation;
112
+ function FormFieldPostFix({ variation }) {
121
113
  return (React__default["default"].createElement("span", { className: styles.postfix }, variation === "select" ? (React__default["default"].createElement(Icon.Icon, { name: "arrowDown" })) : (React__default["default"].createElement(Spinner.Spinner, { size: "small" }))));
122
114
  }
123
115
 
116
+ // eslint-disable-next-line max-statements
124
117
  function FormField(props) {
125
- var _a;
126
- var actionsRef = props.actionsRef, _b = props.autocomplete, autocomplete = _b === void 0 ? true : _b, children = props.children, defaultValue = props.defaultValue, description = props.description, disabled = props.disabled, inputRef = props.inputRef, inline = props.inline, keyboard = props.keyboard, max = props.max, maxLength = props.maxLength, min = props.min, name = props.name, readonly = props.readonly, rows = props.rows, loading = props.loading, _c = props.type, type = _c === void 0 ? "text" : _c, validations = props.validations, value = props.value, onChange = props.onChange, onEnter = props.onEnter, onFocus = props.onFocus, onBlur = props.onBlur, onValidation = props.onValidation;
127
- var _d = reactHookForm.useFormContext() != undefined
118
+ var _a, _b;
119
+ const { actionsRef, autocomplete = true, children, defaultValue, description, disabled, inputRef, inline, keyboard, max, maxLength, min, name, readonly, rows, loading, type = "text", validations, value, onChange, onEnter, onFocus, onBlur, onValidation, } = props;
120
+ const { control, formState: { errors }, setValue, watch, } = reactHookForm.useFormContext() != undefined
128
121
  ? reactHookForm.useFormContext()
129
- : reactHookForm.useForm({ mode: "onTouched" }), control = _d.control, errors = _d.errors, setValue = _d.setValue, watch = _d.watch;
130
- var _e = tslib_es6.__read(React.useState(uuid.v1()), 1), identifier = _e[0];
131
- var _f = tslib_es6.__read(React.useState("descriptionUUID--" + uuid.v1()), 1), descriptionIdentifier = _f[0];
122
+ : reactHookForm.useForm({ mode: "onTouched" });
123
+ const [identifier] = React.useState(uuid.v1());
124
+ const [descriptionIdentifier] = React.useState(`descriptionUUID--${uuid.v1()}`);
132
125
  /**
133
126
  * Generate a name if one is not supplied, this is the name
134
127
  * that will be used for react-hook-form and not neccessarily
135
128
  * attached to the DOM
136
129
  */
137
- var _g = tslib_es6.__read(React.useState(name ? name : "generatedName--" + identifier), 1), controlledName = _g[0];
138
- React.useEffect(function () {
130
+ const [controlledName] = React.useState(name ? name : `generatedName--${identifier}`);
131
+ React.useEffect(() => {
139
132
  if (value != undefined) {
140
133
  setValue(controlledName, value);
141
134
  }
142
135
  }, [value, watch(controlledName)]);
143
- React.useImperativeHandle(actionsRef, function () { return ({
144
- setValue: function (newValue) {
136
+ React.useImperativeHandle(actionsRef, () => ({
137
+ setValue: newValue => {
145
138
  setValue(controlledName, newValue);
146
139
  },
147
- }); });
148
- var error = errors[controlledName] && errors[controlledName].message;
149
- React.useEffect(function () { return handleValidation(); }, [error]);
150
- return (React__default["default"].createElement(reactHookForm.Controller, { control: control, name: controlledName, rules: tslib_es6.__assign({}, validations), defaultValue: (_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : "", render: function (_a) {
151
- var onControllerChange = _a.onChange, onControllerBlur = _a.onBlur, controllerName = _a.name, rest = tslib_es6.__rest(_a, ["onChange", "onBlur", "name"]);
152
- var fieldProps = tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, rest), { id: identifier, className: styles.input, name: (validations || name) && controllerName, disabled: disabled, readOnly: readonly, inputMode: keyboard, onChange: handleChange }), (description &&
140
+ }));
141
+ const message = (_a = errors[controlledName]) === null || _a === void 0 ? void 0 : _a.message;
142
+ const error = getErrorMessage();
143
+ React.useEffect(() => handleValidation(), [error]);
144
+ return (React__default["default"].createElement(reactHookForm.Controller, { control: control, name: controlledName, rules: Object.assign({}, validations), defaultValue: (_b = value !== null && value !== void 0 ? value : defaultValue) !== null && _b !== void 0 ? _b : "", render: (_a) => {
145
+ var _b = _a.field, { onChange: onControllerChange, onBlur: onControllerBlur, name: controllerName } = _b, rest = tslib_es6.__rest(_b, ["onChange", "onBlur", "name"]);
146
+ const fieldProps = Object.assign(Object.assign(Object.assign({}, rest), { id: identifier, className: styles.input, name: (validations || name) && controllerName, disabled: disabled, readOnly: readonly, inputMode: keyboard, onChange: handleChange }), (description &&
153
147
  !inline && { "aria-describedby": descriptionIdentifier }));
154
- var textFieldProps = tslib_es6.__assign(tslib_es6.__assign({}, fieldProps), { onBlur: handleBlur, onFocus: handleFocus, onKeyDown: handleKeyDown });
155
- return (React__default["default"].createElement(FormFieldWrapper, tslib_es6.__assign({}, props, { value: rest.value, error: error, identifier: identifier, descriptionIdentifier: descriptionIdentifier }), renderField()));
148
+ const textFieldProps = Object.assign(Object.assign({}, fieldProps), { onBlur: handleBlur, onFocus: handleFocus, onKeyDown: handleKeyDown });
149
+ return (React__default["default"].createElement(FormFieldWrapper, Object.assign({}, props, { value: rest.value, error: error, identifier: identifier, descriptionIdentifier: descriptionIdentifier }), renderField()));
156
150
  function renderField() {
157
151
  switch (type) {
158
152
  case "select":
159
153
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
160
- React__default["default"].createElement("select", tslib_es6.__assign({}, fieldProps), children),
154
+ React__default["default"].createElement("select", Object.assign({}, fieldProps), children),
161
155
  React__default["default"].createElement(FormFieldPostFix, { variation: "select" })));
162
156
  case "textarea":
163
- return (React__default["default"].createElement("textarea", tslib_es6.__assign({}, textFieldProps, { rows: rows, ref: inputRef })));
157
+ return (React__default["default"].createElement("textarea", Object.assign({}, textFieldProps, { rows: rows, ref: inputRef })));
164
158
  default:
165
159
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
166
- React__default["default"].createElement("input", tslib_es6.__assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef })),
160
+ React__default["default"].createElement("input", Object.assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef })),
167
161
  loading && React__default["default"].createElement(FormFieldPostFix, { variation: "spinner" })));
168
162
  }
169
163
  }
170
164
  function handleChange(event) {
171
- var newValue;
165
+ let newValue;
172
166
  newValue = event.currentTarget.value;
173
167
  if (type === "number" && newValue.length > 0) {
174
168
  newValue = parseFloat(newValue);
@@ -187,8 +181,8 @@ function FormField(props) {
187
181
  onEnter && onEnter(event);
188
182
  }
189
183
  function handleFocus(event) {
190
- var target = event.currentTarget;
191
- setTimeout(function () { return readonly && target.select(); });
184
+ const target = event.currentTarget;
185
+ setTimeout(() => readonly && target.select());
192
186
  onFocus && onFocus();
193
187
  }
194
188
  function handleBlur() {
@@ -196,6 +190,12 @@ function FormField(props) {
196
190
  onControllerBlur();
197
191
  }
198
192
  } }));
193
+ function getErrorMessage() {
194
+ if (typeof message === "string") {
195
+ return message;
196
+ }
197
+ return "";
198
+ }
199
199
  function handleValidation() {
200
200
  onValidation && onValidation(error);
201
201
  }
@@ -8,9 +8,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
10
 
11
- function FormatDate(_a) {
12
- var inputDate = _a.date;
13
- var dateObject;
11
+ function FormatDate({ date: inputDate }) {
12
+ let dateObject;
14
13
  if (inputDate instanceof Date) {
15
14
  dateObject = inputDate;
16
15
  }
@@ -15,9 +15,8 @@ var css = "._2WQ6E_TFQTKhlZCeQv65zh {\n font-style: normal;\n}\n";
15
15
  var styles = {"email":"_2WQ6E_TFQTKhlZCeQv65zh"};
16
16
  styleInject_es.styleInject(css);
17
17
 
18
- function FormatEmail(_a) {
19
- var email = _a.email;
20
- var className = classnames__default["default"](styles.email);
18
+ function FormatEmail({ email }) {
19
+ const className = classnames__default["default"](styles.email);
21
20
  return React__default["default"].createElement("address", { className: className }, email);
22
21
  }
23
22
 
@@ -2,30 +2,29 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormatFile = require('../FormatFile-18e8a54a.js');
5
+ var FormatFile = require('../FormatFile-3512f838.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('filesize');
9
9
  require('../style-inject.es-dcee06b6.js');
10
- require('../tslib.es6-5b50eb8e.js');
11
- require('../Button-cd30df0f.js');
10
+ require('../Button-16e043ec.js');
12
11
  require('react-router-dom');
13
- require('../Icon-d5ad1a6d.js');
12
+ require('../Icon-405a216c.js');
14
13
  require('@jobber/design');
15
- require('../Typography-fbe0ed6e.js');
16
- require('../ConfirmationModal-e95f46d7.js');
14
+ require('../Typography-9262511f.js');
15
+ require('../ConfirmationModal-6a7beee2.js');
17
16
  require('@jobber/hooks');
18
- require('../Modal-cc3bd7bf.js');
17
+ require('../Modal-757e83fd.js');
19
18
  require('react-dom');
20
19
  require('framer-motion');
21
- require('../Heading-a9a66964.js');
22
- require('../ButtonDismiss-a9590195.js');
23
- require('../Content-18de5fbb.js');
24
- require('../Markdown-b53e0308.js');
20
+ require('../Heading-7b203f7f.js');
21
+ require('../ButtonDismiss-3fb1eaf9.js');
22
+ require('../Content-05df8f7f.js');
23
+ require('../Markdown-be2dcd0c.js');
25
24
  require('react-markdown');
26
- require('../Text-e012fb46.js');
27
- require('../Emphasis-75a3f411.js');
28
- require('../ProgressBar-e9a49129.js');
25
+ require('../Text-7ce00adb.js');
26
+ require('../Emphasis-23dc2a0a.js');
27
+ require('../ProgressBar-f028b159.js');
29
28
 
30
29
 
31
30