@jobber/components 4.75.0 → 4.76.1-job-85845.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 (41) hide show
  1. package/dist/Autocomplete/index.js +2 -3
  2. package/dist/Card/index.js +2 -3
  3. package/dist/{Card-426a68a8.js → Card-84e80c94.js} +1 -1
  4. package/dist/Checkbox/index.js +1 -2
  5. package/dist/{Checkbox-1cdd5cf6.js → Checkbox-2915069b.js} +1 -2
  6. package/dist/Chips/index.js +3 -4
  7. package/dist/DataDump/index.js +2 -3
  8. package/dist/DataList/DataList.types.d.ts +8 -2
  9. package/dist/DataList/components/DataListHeaderTile/DataListHeaderTile.d.ts +2 -1
  10. package/dist/DataList/components/DataListHeaderTile/components/DataListSortingOptions.d.ts +12 -0
  11. package/dist/DataList/components/DataListHeaderTile/components/index.d.ts +1 -0
  12. package/dist/DataList/index.js +158 -90
  13. package/dist/DataTable/index.js +2 -3
  14. package/dist/FormField/index.js +1 -2
  15. package/dist/{FormField-b0e74d32.js → FormField-5d977ffd.js} +2 -3
  16. package/dist/InputAvatar/index.js +1 -2
  17. package/dist/InputDate/index.js +1 -2
  18. package/dist/InputEmail/index.js +1 -2
  19. package/dist/InputFile/InputFile.d.ts +1 -1
  20. package/dist/InputFile/index.js +1 -2
  21. package/dist/{InputFile-d080dec5.js → InputFile-b396510d.js} +1 -2
  22. package/dist/InputNumber/index.js +2 -3
  23. package/dist/{InputNumber-79da1cdc.js → InputNumber-7c6d8aa5.js} +1 -1
  24. package/dist/InputPassword/index.js +1 -2
  25. package/dist/InputPhoneNumber/index.js +1 -2
  26. package/dist/InputText/index.js +2 -3
  27. package/dist/{InputText-9e61365c.js → InputText-ed025475.js} +1 -1
  28. package/dist/InputTime/index.js +1 -2
  29. package/dist/Menu/Menu.d.ts +4 -4
  30. package/dist/Menu/index.js +1 -2
  31. package/dist/{Menu-81b12936.js → Menu-3e137b7d.js} +2 -3
  32. package/dist/MultiSelect/index.js +1 -2
  33. package/dist/{Option-b715f6b4.js → Option-2234938d.js} +1 -1
  34. package/dist/Page/index.js +1 -2
  35. package/dist/RadioGroup/index.js +1 -2
  36. package/dist/{RadioGroup-ca7a5978.js → RadioGroup-17b67ade.js} +2 -3
  37. package/dist/RecurringSelect/components/DayOfMonthSelect.d.ts +2 -2
  38. package/dist/RecurringSelect/components/WeeklySelect.d.ts +2 -2
  39. package/dist/RecurringSelect/index.js +6 -7
  40. package/dist/Select/index.js +2 -3
  41. package/package.json +3 -3
@@ -13,12 +13,11 @@ var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
13
13
  var Text = require('../Text-259af966.js');
14
14
  var Icon = require('../Icon-405a216c.js');
15
15
  var Heading = require('../Heading-1e8e4bd3.js');
16
- var InputText = require('../InputText-9e61365c.js');
16
+ var InputText = require('../InputText-ed025475.js');
17
17
  require('../Typography-c45bf216.js');
18
18
  require('@jobber/design');
19
19
  require('../getAtlantisConfig-0f3e8af2.js');
20
- require('../FormField-b0e74d32.js');
21
- require('uuid');
20
+ require('../FormField-5d977ffd.js');
22
21
  require('react-hook-form');
23
22
  require('@jobber/hooks/useShowClear');
24
23
  require('../Button-b73a5e01.js');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Card = require('../Card-426a68a8.js');
5
+ var Card = require('../Card-84e80c94.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('../style-inject.es-9d2f5f4e.js');
@@ -13,8 +13,7 @@ require('../Button-b73a5e01.js');
13
13
  require('react-router-dom');
14
14
  require('../Icon-405a216c.js');
15
15
  require('@jobber/design');
16
- require('../Menu-81b12936.js');
17
- require('uuid');
16
+ require('../Menu-3e137b7d.js');
18
17
  require('framer-motion');
19
18
  require('@jobber/hooks/useOnKeyDown');
20
19
  require('@jobber/hooks/useRefocusOnActivator');
@@ -5,7 +5,7 @@ var classnames = require('classnames');
5
5
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
6
  var Heading = require('./Heading-1e8e4bd3.js');
7
7
  var Button = require('./Button-b73a5e01.js');
8
- var Menu = require('./Menu-81b12936.js');
8
+ var Menu = require('./Menu-3e137b7d.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
11
 
@@ -2,10 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Checkbox = require('../Checkbox-1cdd5cf6.js');
5
+ var Checkbox = require('../Checkbox-2915069b.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
- require('uuid');
9
8
  require('classnames');
10
9
  require('react-hook-form');
11
10
  require('../style-inject.es-9d2f5f4e.js');
@@ -2,7 +2,6 @@
2
2
 
3
3
  var tslib_es6 = require('./tslib.es6-5b8768b7.js');
4
4
  var React = require('react');
5
- var uuid = require('uuid');
6
5
  var classnames = require('classnames');
7
6
  var reactHookForm = require('react-hook-form');
8
7
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
@@ -23,7 +22,7 @@ function Checkbox({ checked, defaultChecked, disabled, label, name, value, indet
23
22
  ? reactHookForm.useFormContext()
24
23
  : // If there isn't a Form Context being provided, get a form for this field.
25
24
  reactHookForm.useForm({ mode: "onTouched" });
26
- const [identifier] = React.useState(uuid.v1());
25
+ const [identifier] = React.useState(React.useId());
27
26
  /**
28
27
  * Generate a name if one is not supplied, this is the name
29
28
  * that will be used for react-hook-form and not neccessarily
@@ -10,15 +10,14 @@ var Icon = require('../Icon-405a216c.js');
10
10
  var Avatar = require('../Avatar-76a799fa.js');
11
11
  var Typography = require('../Typography-c45bf216.js');
12
12
  var Tooltip = require('../Tooltip-27771182.js');
13
- var uuid = require('uuid');
14
13
  var sortBy = require('lodash/sortBy');
15
14
  var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
16
15
  var debounce = require('lodash/debounce');
16
+ require('@jobber/design');
17
17
  var reactPopper = require('react-popper');
18
18
  var Text = require('../Text-259af966.js');
19
19
  var Button = require('../Button-b73a5e01.js');
20
20
  var Spinner = require('../Spinner-9d8fc7ff.js');
21
- require('@jobber/design');
22
21
  require('color');
23
22
  require('react-dom');
24
23
  require('framer-motion');
@@ -129,7 +128,7 @@ function ChipDismissible({ label, disabled, invalid, prefix, onClick, onRequestR
129
128
  return (React__default["default"].createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
130
129
  }
131
130
 
132
- function InternalChipSingleSelect({ children, selected, name = uuid.v1(), onChange, onClick, }) {
131
+ function InternalChipSingleSelect({ children, selected, name = React.useId(), onChange, onClick, }) {
133
132
  return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "singleselect-chips" }, React__default["default"].Children.map(children, child => {
134
133
  const isSelected = child.props.value === selected;
135
134
  return (React__default["default"].createElement("label", null,
@@ -269,9 +268,9 @@ function useInternalChipDismissible({ children, selected, onChange, onClick, onC
269
268
  availableChipOptions });
270
269
  }
271
270
 
272
- const menuId = uuid.v1();
273
271
  // eslint-disable-next-line max-statements
274
272
  function useInternalChipDismissibleInput({ options, isLoadingMore = false, onCustomOptionSelect, onOptionSelect, onSearch, }) {
273
+ const menuId = React.useId();
275
274
  const [allOptions, setAllOptions] = React.useState([]);
276
275
  const [searchValue, setSearchValue] = React.useState("");
277
276
  const [menuOpen, setMenuOpen] = React.useState(false);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var Card = require('../Card-426a68a8.js');
6
+ var Card = require('../Card-84e80c94.js');
7
7
  var Content = require('../Content-e3f7b6fc.js');
8
8
  var Emphasis = require('../Emphasis-bda56d3b.js');
9
9
  require('classnames');
@@ -15,8 +15,7 @@ require('../Button-b73a5e01.js');
15
15
  require('react-router-dom');
16
16
  require('../Icon-405a216c.js');
17
17
  require('@jobber/design');
18
- require('../Menu-81b12936.js');
19
- require('uuid');
18
+ require('../Menu-3e137b7d.js');
20
19
  require('framer-motion');
21
20
  require('@jobber/hooks/useOnKeyDown');
22
21
  require('@jobber/hooks/useRefocusOnActivator');
@@ -31,8 +31,11 @@ export interface DataListObject {
31
31
  export type DataListHeader<T extends DataListObject> = {
32
32
  readonly [K in keyof T]?: string;
33
33
  };
34
- export interface DataListSorting {
34
+ export interface DataListSorting extends SortableOptions {
35
35
  readonly key: string;
36
+ }
37
+ export interface SortableOptions {
38
+ readonly label: string;
36
39
  readonly order: "asc" | "desc";
37
40
  }
38
41
  export interface DataListProps<T extends DataListObject> {
@@ -88,7 +91,10 @@ export interface DataListProps<T extends DataListObject> {
88
91
  * `onSort`: The callback function when the user sorting a column.
89
92
  */
90
93
  readonly sorting?: {
91
- readonly sortable: (keyof DataListHeader<T>)[];
94
+ readonly sortable: {
95
+ key: string;
96
+ options?: SortableOptions[];
97
+ }[];
92
98
  readonly state: DataListSorting | undefined;
93
99
  readonly onSort: (sorting?: DataListSorting) => void;
94
100
  };
@@ -3,6 +3,7 @@ import { DataListHeader, DataListObject } from "../../DataList.types";
3
3
  interface DataListHeaderTileProps<T extends DataListObject> {
4
4
  readonly headers: DataListHeader<T>;
5
5
  readonly headerKey: string;
6
+ readonly visible: boolean;
6
7
  }
7
- export declare function DataListHeaderTile<T extends DataListObject>({ headers, headerKey, }: DataListHeaderTileProps<T>): JSX.Element;
8
+ export declare function DataListHeaderTile<T extends DataListObject>({ headers, headerKey, visible, }: DataListHeaderTileProps<T>): JSX.Element;
8
9
  export {};
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { SortableOptions } from "../../../DataList.types";
3
+ interface DataListSortingOptionsProps {
4
+ readonly options: SortableOptions[];
5
+ readonly selectedOption: SortableOptions | null;
6
+ readonly onSelectChange: (selectedOption: SortableOptions) => void;
7
+ readonly onClose: () => void;
8
+ readonly optionsListRef: React.RefObject<HTMLUListElement>;
9
+ readonly dataListHeaderTileRef: React.RefObject<HTMLElement>;
10
+ }
11
+ export declare function DataListSortingOptions({ options, selectedOption, onSelectChange, onClose, optionsListRef, dataListHeaderTileRef, }: DataListSortingOptionsProps): JSX.Element;
12
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./DataListSortingOptions";
@@ -16,31 +16,30 @@ var Button = require('../Button-b73a5e01.js');
16
16
  var useInView = require('@jobber/hooks/useInView');
17
17
  var isEmpty = require('lodash/isEmpty');
18
18
  var InlineLabel = require('../InlineLabel-a6557829.js');
19
- var FormatDate = require('../FormatDate-70ea5b43.js');
20
- var Heading = require('../Heading-1e8e4bd3.js');
21
19
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
22
20
  var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
23
21
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
22
+ var Icon = require('../Icon-405a216c.js');
23
+ var FormatDate = require('../FormatDate-70ea5b43.js');
24
+ var Heading = require('../Heading-1e8e4bd3.js');
24
25
  var ReactDOM = require('react-dom');
25
- var Checkbox = require('../Checkbox-1cdd5cf6.js');
26
+ var Checkbox = require('../Checkbox-2915069b.js');
26
27
  var reactRouterDom = require('react-router-dom');
27
28
  var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
28
29
  var Combobox = require('../Combobox-ac089920.js');
29
30
  var Chip = require('../Chip-c91fd6c8.js');
30
- var Icon = require('../Icon-405a216c.js');
31
31
  var debounce = require('lodash/debounce');
32
- var InputText = require('../InputText-9e61365c.js');
32
+ var InputText = require('../InputText-ed025475.js');
33
33
  var Spinner = require('../Spinner-9d8fc7ff.js');
34
34
  var Typography = require('../Typography-c45bf216.js');
35
35
  require('../Content-e3f7b6fc.js');
36
36
  require('react-popper');
37
37
  require('../getAtlantisConfig-0f3e8af2.js');
38
- require('uuid');
39
38
  require('react-hook-form');
40
39
  require('@jobber/hooks/useAssert');
41
40
  require('../Avatar-76a799fa.js');
42
41
  require('color');
43
- require('../FormField-b0e74d32.js');
42
+ require('../FormField-5d977ffd.js');
44
43
  require('@jobber/hooks/useShowClear');
45
44
  require('../InputValidation-a7a737f9.js');
46
45
 
@@ -52,13 +51,13 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
52
51
  var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
53
52
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
54
53
 
55
- var css_248z$f = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n --data-list--minimum-item-height: calc(var(--base-unit) * 3.5);\n\n display: -ms-flexbox;\n\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n -ms-flex: 1;\n flex: 1;\n}\n\n/*\n * Header\n */\n\n.IcAlZHoB4LI- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 1;\n z-index: var(--elevation-base);\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.TFO76ysivmg- {\n display: grid;\n padding: calc((16px / 2) + (16px / 4)) 0;\n padding: calc(calc(16px / 2) + calc(16px / 4)) 0;\n padding: calc(var(--space-small) + var(--space-smaller)) 0;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n grid-template-columns: auto fit-content(calc(16px * 14));\n grid-template-columns: auto fit-content(calc(var(--base-unit) * 14));\n}\n\n.jGHZZYZm1ZY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n min-height: calc(16px * 3);\n min-height: var(--space-largest);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 8) solid rgb(217, 223, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.GiD7MjZJbcw- {\n --data-list--header-actions-gap: var(--space-small);\n display: -ms-flexbox;\n display: flex;\n gap: calc(16px / 2);\n gap: var(--data-list--header-actions-gap);\n}\n\n@media (max-width: 489px) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n@media (--small-screens-and-below) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n white-space: nowrap;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n -ms-flex-align: center;\n align-items: center;\n gap: var(--data-list--header-actions-gap);\n}\n\n/*\n * List Item\n */\n\n.ise8kHCfhCY- {\n position: relative;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ise8kHCfhCY-,\n.Tq6e0BGwcSM- {\n display: grid;\n grid-template-columns: minmax(0px, auto);\n min-height: var(--data-list--minimum-item-height);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.ise8kHCfhCY-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--hover);\n background-color: rgb(244, 246, 250);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n text-align: left;\n -webkit-text-decoration: none;\n text-decoration: none;\n background-color: transparent;\n cursor: pointer;\n}\n\n/**\n * Reset CSS properties on focus to ensure we only have the focus state on the\n * parent .listItem\n */\n\n.Tq6e0BGwcSM-:focus {\n outline: none;\n background-color: transparent;\n}\n\n/**\n * Enable a better hover and focus experience when :has() is supported.\n * This is a workaround for Firefox where the :has() selector is not supported.\n */\n\n@supports selector(*:has(*)) {\n .ise8kHCfhCY-:hover,\n .ise8kHCfhCY-:focus-within {\n background-color: transparent;\n }\n\n .ise8kHCfhCY-:has(.Tq6e0BGwcSM-:hover, .Tq6e0BGwcSM-:focus) {\n background-color: var(--data-list-item-active-color);\n }\n}\n\n/*\n * List Item Selection\n */\n\n.d-79rkMqufg- {\n display: grid;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (min-width: 768px) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n.d-79rkMqufg-,\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n grid-template-columns: -webkit-max-content minmax(0px, auto);\n grid-template-columns: max-content minmax(0px, auto);\n -webkit-column-gap: calc(16px / 2);\n -webkit-column-gap: var(--space-small);\n -moz-column-gap: calc(16px / 2);\n -moz-column-gap: var(--space-small);\n column-gap: calc(16px / 2);\n column-gap: var(--space-small);\n}\n\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n display: grid;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qm-SSuWTXkI- {\n display: -ms-flexbox;\n display: flex;\n visibility: hidden;\n\n /* To compensate the Checkbox's label margin that we are using for screen-readers */\n margin-right: calc((16px * 1) * -1);\n margin-right: calc(calc(16px * 1) * -1);\n margin-right: calc(var(--space-base) * -1);\n}\n\n.qm-SSuWTXkI-.VA9RnQp6nbI- {\n visibility: visible;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :first-child {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n -ms-flex-order: 1;\n order: 1;\n padding-top: calc(16px / 4);\n padding-top: var(--space-smaller);\n opacity: 1;\n transition: opacity 100ms ease-in-out;\n transition: opacity var(--transition-properties);\n --transition-properties: var(--timing-quick) ease-in-out;\n}\n\n@media (min-width: 768px) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n.ise8kHCfhCY-:hover .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY-:focus-within .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY- .d-79rkMqufg-._4L7iXXzLr5k- > :last-child {\n opacity: 1;\n}\n\n/*\n * Filters\n */\n\n.Kkp-IYmwq-s- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(255, 255, 255, 0.6);\n background-color: var(--color-overlay--dimmed);\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.m-eCShL7TU4- {\n position: sticky;\n top: 50vh;\n}\n\n/* This hides the text from the UI but not from the screen readers */\n\n.esUiRgWabYw- {\n position: absolute;\n top: auto;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n text-indent: -10000px;\n}\n";
56
- var styles$f = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","batchSelectContainer":"GiD7MjZJbcw-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","listItemClickable":"Tq6e0BGwcSM-","active":"Pc0JGX6jCD4-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-","srOnly":"esUiRgWabYw-"};
57
- styleInject_es.styleInject(css_248z$f);
54
+ var css_248z$g = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n --data-list--minimum-item-height: calc(var(--base-unit) * 3.5);\n\n display: -ms-flexbox;\n\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n -ms-flex: 1;\n flex: 1;\n}\n\n/*\n * Header\n */\n\n.IcAlZHoB4LI- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 1;\n z-index: var(--elevation-base);\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.TFO76ysivmg- {\n display: grid;\n padding: calc((16px / 2) + (16px / 4)) 0;\n padding: calc(calc(16px / 2) + calc(16px / 4)) 0;\n padding: calc(var(--space-small) + var(--space-smaller)) 0;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n grid-template-columns: auto fit-content(calc(16px * 14));\n grid-template-columns: auto fit-content(calc(var(--base-unit) * 14));\n}\n\n.jGHZZYZm1ZY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n min-height: calc(16px * 3);\n min-height: var(--space-largest);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 8) solid rgb(217, 223, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.GiD7MjZJbcw- {\n --data-list--header-actions-gap: var(--space-small);\n display: -ms-flexbox;\n display: flex;\n gap: calc(16px / 2);\n gap: var(--data-list--header-actions-gap);\n}\n\n@media (max-width: 489px) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n@media (--small-screens-and-below) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n white-space: nowrap;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n -ms-flex-align: center;\n align-items: center;\n gap: var(--data-list--header-actions-gap);\n}\n\n/*\n * List Item\n */\n\n.ise8kHCfhCY- {\n position: relative;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ise8kHCfhCY-,\n.Tq6e0BGwcSM- {\n display: grid;\n grid-template-columns: minmax(0px, auto);\n min-height: var(--data-list--minimum-item-height);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.ise8kHCfhCY-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--hover);\n background-color: rgb(244, 246, 250);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n text-align: left;\n -webkit-text-decoration: none;\n text-decoration: none;\n background-color: transparent;\n cursor: pointer;\n}\n\n/**\n * Reset CSS properties on focus to ensure we only have the focus state on the\n * parent .listItem\n */\n\n.Tq6e0BGwcSM-:focus {\n outline: none;\n background-color: transparent;\n}\n\n/**\n * Enable a better hover and focus experience when :has() is supported.\n * This is a workaround for Firefox where the :has() selector is not supported.\n */\n\n@supports selector(*:has(*)) {\n .ise8kHCfhCY-:hover,\n .ise8kHCfhCY-:focus-within {\n background-color: transparent;\n }\n\n .ise8kHCfhCY-:has(.Tq6e0BGwcSM-:hover, .Tq6e0BGwcSM-:focus) {\n background-color: var(--data-list-item-active-color);\n }\n}\n\n/*\n * List Item Selection\n */\n\n.d-79rkMqufg- {\n display: grid;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (min-width: 768px) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n.d-79rkMqufg-,\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n grid-template-columns: -webkit-max-content minmax(0px, auto);\n grid-template-columns: max-content minmax(0px, auto);\n -webkit-column-gap: calc(16px / 2);\n -webkit-column-gap: var(--space-small);\n -moz-column-gap: calc(16px / 2);\n -moz-column-gap: var(--space-small);\n column-gap: calc(16px / 2);\n column-gap: var(--space-small);\n}\n\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n display: grid;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qm-SSuWTXkI- {\n display: -ms-flexbox;\n display: flex;\n visibility: hidden;\n\n /* To compensate the Checkbox's label margin that we are using for screen-readers */\n margin-right: calc((16px * 1) * -1);\n margin-right: calc(calc(16px * 1) * -1);\n margin-right: calc(var(--space-base) * -1);\n}\n\n.qm-SSuWTXkI-.VA9RnQp6nbI- {\n visibility: visible;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :first-child {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n -ms-flex-order: 1;\n order: 1;\n padding-top: calc(16px / 4);\n padding-top: var(--space-smaller);\n opacity: 1;\n transition: opacity 100ms ease-in-out;\n transition: opacity var(--transition-properties);\n --transition-properties: var(--timing-quick) ease-in-out;\n}\n\n@media (min-width: 768px) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n.ise8kHCfhCY-:hover .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY-:focus-within .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY- .d-79rkMqufg-._4L7iXXzLr5k- > :last-child {\n opacity: 1;\n}\n\n/*\n * Filters\n */\n\n.Kkp-IYmwq-s- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(255, 255, 255, 0.6);\n background-color: var(--color-overlay--dimmed);\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.m-eCShL7TU4- {\n position: sticky;\n top: 50vh;\n}\n\n/* This hides the text from the UI but not from the screen readers */\n\n.esUiRgWabYw- {\n position: absolute;\n top: auto;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n text-indent: -10000px;\n}\n";
55
+ var styles$g = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","batchSelectContainer":"GiD7MjZJbcw-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","listItemClickable":"Tq6e0BGwcSM-","active":"Pc0JGX6jCD4-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-","srOnly":"esUiRgWabYw-"};
56
+ styleInject_es.styleInject(css_248z$g);
58
57
 
59
- var css_248z$e = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
60
- var styles$e = {"results":"F56prQsXm3A-"};
61
- styleInject_es.styleInject(css_248z$e);
58
+ var css_248z$f = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
59
+ var styles$f = {"results":"F56prQsXm3A-"};
60
+ styleInject_es.styleInject(css_248z$f);
62
61
 
63
62
  const DATALIST_TOTALCOUNT_TEST_ID = "ATL-DataList-TotalCount";
64
63
  function DataListTotalCount({ totalCount, loading, }) {
@@ -74,7 +73,7 @@ function DataListTotalCount({ totalCount, loading, }) {
74
73
  totalCount.toLocaleString(),
75
74
  " results)"));
76
75
  }
77
- return (React__default["default"].createElement("div", { className: styles$e.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
76
+ return (React__default["default"].createElement("div", { className: styles$f.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
78
77
  }
79
78
 
80
79
  const defaultValues$1 = {
@@ -169,9 +168,9 @@ function useActiveLayout() {
169
168
  return { layout, activeBreakpoint };
170
169
  }
171
170
 
172
- var css_248z$d = "._8cMzUF8XEwY- {\n position: relative;\n}\n\n._8cMzUF8XEwY-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100px;\n background-image: linear-gradient(\n to top,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n to top,\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n}\n\n.Rh--6fVpkm4- {\n padding: calc(16px * 1) calc(16px / 2);\n padding: var(--space-base) var(--space-small);\n}\n\n.NFaWWvmxtkw- {\n width: 100%;\n min-width: calc(16px * 3);\n min-width: var(--space-largest);\n}\n";
173
- var styles$d = {"wrapper":"_8cMzUF8XEwY-","loadingItem":"Rh--6fVpkm4-","glimmer":"NFaWWvmxtkw-"};
174
- styleInject_es.styleInject(css_248z$d);
171
+ var css_248z$e = "._8cMzUF8XEwY- {\n position: relative;\n}\n\n._8cMzUF8XEwY-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100px;\n background-image: linear-gradient(\n to top,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n to top,\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n}\n\n.Rh--6fVpkm4- {\n padding: calc(16px * 1) calc(16px / 2);\n padding: var(--space-base) var(--space-small);\n}\n\n.NFaWWvmxtkw- {\n width: 100%;\n min-width: calc(16px * 3);\n min-width: var(--space-largest);\n}\n";
172
+ var styles$e = {"wrapper":"_8cMzUF8XEwY-","loadingItem":"Rh--6fVpkm4-","glimmer":"NFaWWvmxtkw-"};
173
+ styleInject_es.styleInject(css_248z$e);
175
174
 
176
175
  const LOADING_STATE_LIMIT_ITEMS = 10;
177
176
  const DATALIST_LOADINGSTATE_ROW_TEST_ID = "ATL-DataList-LoadingState-Row";
@@ -181,10 +180,10 @@ function DataListLoadingState() {
181
180
  if (!layout)
182
181
  return null;
183
182
  const glimmerSize = activeBreakpoint === "xs" ? "small" : "large";
184
- const glimmersFromHeader = Object.keys(headers).reduce((data, key) => (Object.assign(Object.assign({}, data), { [key]: (React__default["default"].createElement("div", { className: styles$d.glimmer },
183
+ const glimmersFromHeader = Object.keys(headers).reduce((data, key) => (Object.assign(Object.assign({}, data), { [key]: (React__default["default"].createElement("div", { className: styles$e.glimmer },
185
184
  React__default["default"].createElement(Glimmer.Glimmer, { size: glimmerSize }))) })), {});
186
185
  const loadingData = new Array(LOADING_STATE_LIMIT_ITEMS).fill(glimmersFromHeader);
187
- return (React__default["default"].createElement("div", { className: styles$d.wrapper }, loadingData.map((child, i) => (React__default["default"].createElement("div", { key: i, className: styles$d.loadingItem, "data-testid": DATALIST_LOADINGSTATE_ROW_TEST_ID }, layout(child))))));
186
+ return (React__default["default"].createElement("div", { className: styles$e.wrapper }, loadingData.map((child, i) => (React__default["default"].createElement("div", { key: i, className: styles$e.loadingItem, "data-testid": DATALIST_LOADINGSTATE_ROW_TEST_ID }, layout(child))))));
188
187
  }
189
188
 
190
189
  const defaultValues = {
@@ -197,32 +196,32 @@ function useDataListLayoutContext() {
197
196
  return React.useContext(DataListLayoutContext);
198
197
  }
199
198
 
200
- var css_248z$c = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc((16px / 2) * -1);\n top: calc(calc(16px / 2) * -1);\n top: calc(var(--space-small) * -1);\n right: 0;\n z-index: 6;\n z-index: var(--elevation-menu);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.jobber-retheme .jHcHGQ-HDbk- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n";
201
- var styles$c = {"menu":"jHcHGQ-HDbk-"};
202
- styleInject_es.styleInject(css_248z$c);
199
+ var css_248z$d = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc((16px / 2) * -1);\n top: calc(calc(16px / 2) * -1);\n top: calc(var(--space-small) * -1);\n right: 0;\n z-index: 6;\n z-index: var(--elevation-menu);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.jobber-retheme .jHcHGQ-HDbk- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n";
200
+ var styles$d = {"menu":"jHcHGQ-HDbk-"};
201
+ styleInject_es.styleInject(css_248z$d);
203
202
 
204
203
  const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
205
204
 
206
- var css_248z$b = ".jbBRoxlZlNI- {\n --overflow-fade--offset: var(--space-smaller);\n --overflow-fade--negative-offset: calc(var(--overflow-fade--offset) * -1);\n\n -ms-flex-item-align: center;\n\n align-self: center;\n position: relative;\n min-width: 0;\n}\n\n.P6uJ-vHfKrM-,\n.MnN8qbS4hw4- {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: -webkit-max-content;\n grid-auto-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.P6uJ-vHfKrM- {\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.MnN8qbS4hw4- {\n margin: var(--overflow-fade--negative-offset);\n padding: var(--overflow-fade--offset);\n overflow-x: auto;\n overflow-y: visible;\n}\n\n.b-5P7Z8eGO8- {\n visibility: hidden;\n}\n\n.xzaCS4slLpI-::before,\n.Jf227kC8Nu0-::after {\n content: \"\";\n position: absolute;\n top: 0;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: 100%;\n background-image: linear-gradient(\n to right,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n var(--data-list-overflow-shadow-angle, to right),\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n pointer-events: none;\n}\n\n.xzaCS4slLpI-::before {\n left: var(--overflow-fade--negative-offset);\n}\n\n.Jf227kC8Nu0-::after {\n --data-list-overflow-shadow-angle: to left;\n right: var(--overflow-fade--negative-offset);\n}\n";
207
- var styles$b = {"fadeContainer":"jbBRoxlZlNI-","overflowItems":"P6uJ-vHfKrM-","overflowGrid":"MnN8qbS4hw4-","overflowTrigger":"b-5P7Z8eGO8-","overflowLeft":"xzaCS4slLpI-","overflowRight":"Jf227kC8Nu0-"};
208
- styleInject_es.styleInject(css_248z$b);
205
+ var css_248z$c = ".jbBRoxlZlNI- {\n --overflow-fade--offset: var(--space-smaller);\n --overflow-fade--negative-offset: calc(var(--overflow-fade--offset) * -1);\n\n -ms-flex-item-align: center;\n\n align-self: center;\n position: relative;\n min-width: 0;\n}\n\n.P6uJ-vHfKrM-,\n.MnN8qbS4hw4- {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: -webkit-max-content;\n grid-auto-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.P6uJ-vHfKrM- {\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.MnN8qbS4hw4- {\n margin: var(--overflow-fade--negative-offset);\n padding: var(--overflow-fade--offset);\n overflow-x: auto;\n overflow-y: visible;\n}\n\n.b-5P7Z8eGO8- {\n visibility: hidden;\n}\n\n.xzaCS4slLpI-::before,\n.Jf227kC8Nu0-::after {\n content: \"\";\n position: absolute;\n top: 0;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: 100%;\n background-image: linear-gradient(\n to right,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n var(--data-list-overflow-shadow-angle, to right),\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n pointer-events: none;\n}\n\n.xzaCS4slLpI-::before {\n left: var(--overflow-fade--negative-offset);\n}\n\n.Jf227kC8Nu0-::after {\n --data-list-overflow-shadow-angle: to left;\n right: var(--overflow-fade--negative-offset);\n}\n";
206
+ var styles$c = {"fadeContainer":"jbBRoxlZlNI-","overflowItems":"P6uJ-vHfKrM-","overflowGrid":"MnN8qbS4hw4-","overflowTrigger":"b-5P7Z8eGO8-","overflowLeft":"xzaCS4slLpI-","overflowRight":"Jf227kC8Nu0-"};
207
+ styleInject_es.styleInject(css_248z$c);
209
208
 
210
209
  function DataListOverflowFade({ children }) {
211
210
  const [leftRef, isLeftVisible] = useInView.useInView();
212
211
  const [rightRef, isRightVisible] = useInView.useInView();
213
- return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$b.fadeContainer, {
214
- [styles$b.overflowLeft]: !isLeftVisible,
215
- [styles$b.overflowRight]: !isRightVisible,
212
+ return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$c.fadeContainer, {
213
+ [styles$c.overflowLeft]: !isLeftVisible,
214
+ [styles$c.overflowRight]: !isRightVisible,
216
215
  }) },
217
- React__default["default"].createElement("div", { className: styles$b.overflowGrid },
218
- React__default["default"].createElement("span", { ref: leftRef, className: styles$b.overflowTrigger }),
219
- React__default["default"].createElement("div", { className: styles$b.overflowItems }, children),
220
- React__default["default"].createElement("span", { ref: rightRef, className: styles$b.overflowTrigger }))));
216
+ React__default["default"].createElement("div", { className: styles$c.overflowGrid },
217
+ React__default["default"].createElement("span", { ref: leftRef, className: styles$c.overflowTrigger }),
218
+ React__default["default"].createElement("div", { className: styles$c.overflowItems }, children),
219
+ React__default["default"].createElement("span", { ref: rightRef, className: styles$c.overflowTrigger }))));
221
220
  }
222
221
 
223
- var css_248z$a = "._8MYxAQYdZzM- {\n position: relative;\n}\n\n.WRV-UmQmPzo- {\n --inline-label-height: calc(\n var(--typography--fontSize-small) * 1.5 + calc(var(--space-smaller) * 1.25) *\n 2\n );\n\n display: -ms-flexbox;\n\n display: flex;\n z-index: 0;\n z-index: var(--elevation-default);\n max-height: calc((\n ((16px * 1) * 0.75) * 1.5 + ((16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(calc(\n calc(calc(16px * 1) * 0.75) * 1.5 + calc(calc(16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(var(--inline-label-height) * 2);\n overflow: hidden;\n white-space: nowrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.ND-cN-mX5-c- {\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n}\n\n.liQeWCMenD0- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n -ms-flex-align: center;\n align-items: center;\n}\n";
224
- var styles$a = {"tagWrapper":"_8MYxAQYdZzM-","tags":"WRV-UmQmPzo-","tagsMask":"ND-cN-mX5-c-","tagCount":"liQeWCMenD0-"};
225
- styleInject_es.styleInject(css_248z$a);
222
+ var css_248z$b = "._8MYxAQYdZzM- {\n position: relative;\n}\n\n.WRV-UmQmPzo- {\n --inline-label-height: calc(\n var(--typography--fontSize-small) * 1.5 + calc(var(--space-smaller) * 1.25) *\n 2\n );\n\n display: -ms-flexbox;\n\n display: flex;\n z-index: 0;\n z-index: var(--elevation-default);\n max-height: calc((\n ((16px * 1) * 0.75) * 1.5 + ((16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(calc(\n calc(calc(16px * 1) * 0.75) * 1.5 + calc(calc(16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(var(--inline-label-height) * 2);\n overflow: hidden;\n white-space: nowrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.ND-cN-mX5-c- {\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n}\n\n.liQeWCMenD0- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n -ms-flex-align: center;\n align-items: center;\n}\n";
223
+ var styles$b = {"tagWrapper":"_8MYxAQYdZzM-","tags":"WRV-UmQmPzo-","tagsMask":"ND-cN-mX5-c-","tagCount":"liQeWCMenD0-"};
224
+ styleInject_es.styleInject(css_248z$b);
226
225
 
227
226
  function DataListTags({ items }) {
228
227
  const ref = React.useRef(null);
@@ -244,12 +243,12 @@ function DataListTags({ items }) {
244
243
  elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.unobserve(element));
245
244
  };
246
245
  }, [items]);
247
- return (React__default["default"].createElement("div", { className: styles$a.tagWrapper, ref: ref },
248
- React__default["default"].createElement("div", { className: classnames__default["default"](styles$a.tags, {
249
- [styles$a.tagsMask]: shouldShowTagCount,
246
+ return (React__default["default"].createElement("div", { className: styles$b.tagWrapper, ref: ref },
247
+ React__default["default"].createElement("div", { className: classnames__default["default"](styles$b.tags, {
248
+ [styles$b.tagsMask]: shouldShowTagCount,
250
249
  }) }, items.filter(Boolean).map((tag, index) => (React__default["default"].createElement("div", { key: tag, "data-tag-element": index },
251
250
  React__default["default"].createElement(InlineLabel.InlineLabel, null, tag))))),
252
- shouldShowTagCount && (React__default["default"].createElement("div", { className: styles$a.tagCount },
251
+ shouldShowTagCount && (React__default["default"].createElement("div", { className: styles$b.tagCount },
253
252
  React__default["default"].createElement(Text.Text, null,
254
253
  "+",
255
254
  visibleItems)))));
@@ -278,50 +277,109 @@ function buildIntersectionThreshold(items) {
278
277
  return thresholds;
279
278
  }
280
279
 
281
- var css_248z$9 = ".fLmJZJJqMcE- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n\n.fLmJZJJqMcE-:focus,\n.fLmJZJJqMcE-:focus-visible {\n outline: none;\n}\n\n.fLmJZJJqMcE-: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.UG8cHUT3Hds- {\n cursor: pointer;\n}\n";
282
- var styles$9 = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
283
- styleInject_es.styleInject(css_248z$9);
280
+ var css_248z$a = ".fLmJZJJqMcE- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n -ms-flex-align: center;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n\n.fLmJZJJqMcE-:focus,\n.fLmJZJJqMcE-:focus-visible {\n outline: none;\n}\n\n.fLmJZJJqMcE-: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.UG8cHUT3Hds- {\n cursor: pointer;\n}\n";
281
+ var styles$a = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
282
+ styleInject_es.styleInject(css_248z$a);
284
283
 
285
- var css_248z$8 = ".AN5egORYy-0- {\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n\n.AN5egORYy-0- path.F1uTDCK0Sb0- {\n fill: rgb(1, 41, 57);\n fill: var(--color-heading);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(217, 223, 225);\n fill: var(--color-inactive--surface);\n}\n\n.AN5egORYy-0-:hover path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n";
286
- var styles$8 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
287
- styleInject_es.styleInject(css_248z$8);
284
+ var css_248z$9 = ".AN5egORYy-0- {\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n\n.AN5egORYy-0- path.F1uTDCK0Sb0- {\n fill: rgb(1, 41, 57);\n fill: var(--color-heading);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(217, 223, 225);\n fill: var(--color-inactive--surface);\n}\n\n.AN5egORYy-0-:hover path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n";
285
+ var styles$9 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
286
+ styleInject_es.styleInject(css_248z$9);
288
287
 
289
288
  const SORTING_ICON_TEST_ID = "ATL-DataList-Sorting-Icon";
290
289
  function DataListSortingArrows({ order }) {
291
- return (React__default["default"].createElement("div", { className: styles$8.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
290
+ return (React__default["default"].createElement("div", { className: styles$9.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
292
291
  React__default["default"].createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
293
292
  React__default["default"].createElement("path", { className: getActiveClassName("asc"), d: "M16.2929 10.6661C15.9024 11.0566 15.2692 11.0566 14.8787 10.6661L12.2891 8.14263L9.70711 10.6661C9.31658 11.0566 8.68342 11.0566 8.29289 10.6661C7.90237 10.2756 7.90237 9.64239 8.29289 9.25186L11.5858 5.95897C11.9763 5.56845 12.6095 5.56845 13 5.95897L16.2929 9.25186C16.6834 9.64239 16.6834 10.2756 16.2929 10.6661Z" }),
294
293
  React__default["default"].createElement("path", { className: getActiveClassName("desc"), d: "M8.29292 13.3339C8.68345 12.9434 9.31661 12.9434 9.70714 13.3339L12.2968 15.8573L14.8787 13.3339C15.2692 12.9434 15.9024 12.9434 16.2929 13.3339C16.6834 13.7244 16.6834 14.3576 16.2929 14.7481L13 18.041C12.6095 18.4315 11.9763 18.4315 11.5858 18.041L8.29292 14.7481C7.9024 14.3576 7.9024 13.7244 8.29292 13.3339Z" }))));
295
294
  function getActiveClassName(targetOrder) {
296
- return order === targetOrder ? styles$8.active : styles$8.inactive;
295
+ return order === targetOrder ? styles$9.active : styles$9.inactive;
297
296
  }
298
297
  }
299
298
 
300
- function DataListHeaderTile({ headers, headerKey, }) {
299
+ var css_248z$8 = ".thBUfVNaigs- {\n position: absolute;\n top: 100%;\n left: 0;\n max-width: var(--popover--width);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n margin-top: calc(16px / 4);\n margin-top: var(--space-smaller);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background: rgba(255, 255, 255, 1);\n background: var(--color-surface);\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.QaXuqbVjG04- {\n display: -ms-flexbox;\n display: flex;\n min-width: calc((16px * 3) * 3.5);\n min-width: calc(calc(16px * 3) * 3.5);\n min-width: calc(var(--space-largest) * 3.5);\n min-height: calc((calc(16px * 3) - calc(16px / 4)));\n min-height: calc((var(--space-largest) - var(--space-smaller)));\n box-sizing: border-box;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n font-weight: 500;\n white-space: nowrap;\n list-style: none;\n cursor: pointer;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.jobber-retheme .QaXuqbVjG04-,\n.jobber-retheme .thBUfVNaigs- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.QaXuqbVjG04-:hover,\n.QaXuqbVjG04-:focus {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n.QaXuqbVjG04-: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";
300
+ var styles$8 = {"optionsList":"thBUfVNaigs-","option":"QaXuqbVjG04-"};
301
+ styleInject_es.styleInject(css_248z$8);
302
+
303
+ function DataListSortingOptions({ options, selectedOption, onSelectChange, onClose, optionsListRef, dataListHeaderTileRef, }) {
304
+ useRefocusOnActivator.useRefocusOnActivator(!optionsListRef.current);
305
+ useOnKeyDown.useOnKeyDown(() => onClose(), "Escape");
306
+ React__default["default"].useEffect(() => {
307
+ document.addEventListener("mousedown", handleClickOutside);
308
+ return () => {
309
+ document.removeEventListener("mousedown", handleClickOutside);
310
+ };
311
+ }, [optionsListRef, dataListHeaderTileRef, onClose]);
312
+ return (React__default["default"].createElement("ul", { className: styles$8.optionsList, ref: optionsListRef }, options.map((option, index) => (React__default["default"].createElement("li", { className: styles$8.option, key: index, onClick: () => onSelectChange(option), onKeyDown: event => handleKeyDown(event, option), tabIndex: 0 },
313
+ option.label,
314
+ option.label === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) && (React__default["default"].createElement(Icon.Icon, { name: "checkmark", color: "blue" })))))));
315
+ function handleKeyDown(event, option) {
316
+ if (event.key === "Enter") {
317
+ onSelectChange(option);
318
+ }
319
+ }
320
+ function handleClickOutside(event) {
321
+ var _a, _b;
322
+ const isClickInsideOptions = (_a = optionsListRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target);
323
+ const isClickInsideHeader = (_b = dataListHeaderTileRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);
324
+ if (!isClickInsideOptions && !isClickInsideHeader) {
325
+ onClose();
326
+ }
327
+ }
328
+ }
329
+
330
+ /* eslint-disable max-statements */
331
+ function DataListHeaderTile({ headers, headerKey, visible = false, }) {
332
+ useRefocusOnActivator.useRefocusOnActivator(visible);
301
333
  const { sorting } = useDataListContext();
302
- const isSortable = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.includes(headerKey);
334
+ const [isDropDownOpen, setIsDropDownOpen] = React__default["default"].useState(false);
335
+ const [selectedSortOption, setSelectedSortOption] = React__default["default"].useState(null);
336
+ const optionsListRef = useFocusTrap.useFocusTrap(isDropDownOpen);
337
+ const dataListHeaderTileRef = React__default["default"].useRef(null);
338
+ const sortableItem = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.find(item => item.key === headerKey);
339
+ const isSortable = Boolean(sortableItem);
303
340
  const sortingState = sorting === null || sorting === void 0 ? void 0 : sorting.state;
304
341
  const Tag = isSortable ? "button" : "div";
305
- return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$9.headerLabel, {
306
- [styles$9.sortable]: isSortable,
307
- }), onClick: handleOnClick },
342
+ return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$a.headerLabel, {
343
+ [styles$a.sortable]: isSortable,
344
+ }), onClick: handleOnClick, ref: dataListHeaderTileRef },
308
345
  React__default["default"].createElement(Text.Text, { maxLines: "single" }, headers[headerKey]),
346
+ isSortable && (sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) && isDropDownOpen && (React__default["default"].createElement(DataListSortingOptions, { options: sortableItem.options, selectedOption: selectedSortOption, onSelectChange: handleSelectChange, onClose: () => setIsDropDownOpen(false), optionsListRef: optionsListRef, dataListHeaderTileRef: dataListHeaderTileRef })),
309
347
  (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key) === headerKey ? (React__default["default"].createElement(DataListSortingArrows, { order: sortingState.order })) : (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key) !== headerKey && isSortable ? (React__default["default"].createElement(DataListSortingArrows, { order: "none" })) : null));
310
- function toggleSorting(sortingKey) {
311
- const isSameKey = sortingKey === (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key);
312
- if (isSameKey && (sortingState === null || sortingState === void 0 ? void 0 : sortingState.order) === "desc") {
348
+ function toggleSorting(sortingKey, label, order) {
349
+ const isSameKey = (sortingState === null || sortingState === void 0 ? void 0 : sortingState.label) === label && sortingKey === (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key);
350
+ const isDescending = (sortingState === null || sortingState === void 0 ? void 0 : sortingState.order) === "desc";
351
+ if (isSameKey && isDescending && order !== "asc") {
352
+ if (order === "desc")
353
+ return;
313
354
  sorting === null || sorting === void 0 ? void 0 : sorting.onSort(undefined);
314
355
  return;
315
356
  }
357
+ const sortingOrder = order || (isSameKey && !isDescending ? "desc" : "asc");
316
358
  sorting === null || sorting === void 0 ? void 0 : sorting.onSort({
317
- order: isSameKey && (sortingState === null || sortingState === void 0 ? void 0 : sortingState.order) === "asc" ? "desc" : "asc",
318
359
  key: sortingKey,
360
+ label,
361
+ order: sortingOrder,
319
362
  });
320
363
  }
321
364
  function handleOnClick() {
322
365
  if (!isSortable)
323
366
  return;
324
- toggleSorting(headerKey);
367
+ if (sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) {
368
+ setIsDropDownOpen(!isDropDownOpen);
369
+ }
370
+ else {
371
+ const headerValue = headers[headerKey];
372
+ if (headerValue !== undefined) {
373
+ toggleSorting(headerKey, headerValue);
374
+ }
375
+ }
376
+ }
377
+ function handleSelectChange(selectedOption) {
378
+ if (sortableItem) {
379
+ toggleSorting(sortableItem.key, selectedOption.label, selectedOption.order);
380
+ }
381
+ setSelectedSortOption(selectedOption);
382
+ setIsDropDownOpen(true);
325
383
  }
326
384
  }
327
385
 
@@ -374,7 +432,7 @@ function generateListItemElement(item) {
374
432
  * Generate the header elements with the default styling
375
433
  */
376
434
  function generateHeaderElements(headers) {
377
- const headerElements = Object.keys(headers).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: React__default["default"].createElement(DataListHeaderTile, { headers: headers, headerKey: key }) })), {});
435
+ const headerElements = Object.keys(headers).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: React__default["default"].createElement(DataListHeaderTile, { headers: headers, headerKey: key, visible: true }) })), {});
378
436
  return isEmpty__default["default"](headerElements) ? undefined : headerElements;
379
437
  }
380
438
  function sortBreakpoints(sizeProp) {
@@ -517,7 +575,7 @@ function InternalDataListItemActions({ actions, }) {
517
575
  return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
518
576
  duration: TRANSITION_DURATION_IN_SECONDS,
519
577
  delay: TRANSITION_DELAY_IN_SECONDS,
520
- }, className: styles$c.menu, onContextMenu: handleContextMenu },
578
+ }, className: styles$d.menu, onContextMenu: handleContextMenu },
521
579
  React__default["default"].createElement(DataListActions, null, actions)));
522
580
  }
523
581
  function handleContextMenu(event) {
@@ -561,8 +619,8 @@ function DataListItemInternal({ children, item, }) {
561
619
  const { canSelect, hasAtLeastOneSelected, isSelectAll, selectedIDs, selected, onSelect, } = useBatchSelect();
562
620
  if (!canSelect)
563
621
  return children;
564
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectable, {
565
- [styles$f.selected]: hasAtLeastOneSelected,
622
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectable, {
623
+ [styles$g.selected]: hasAtLeastOneSelected,
566
624
  }) },
567
625
  children,
568
626
  React__default["default"].createElement(Checkbox.Checkbox, { checked: getIsChecked(), onChange: handleChange })));
@@ -607,17 +665,17 @@ function DataListItemClickableInternal({ onClick, url, to, children, }) {
607
665
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
608
666
  if (to) {
609
667
  const computedTo = typeof to === "string" ? to : to(activeItem);
610
- return (React__default["default"].createElement(reactRouterDom.Link, { className: styles$f.listItemClickable, to: computedTo, onClick: handleClick }, children));
668
+ return (React__default["default"].createElement(reactRouterDom.Link, { className: styles$g.listItemClickable, to: computedTo, onClick: handleClick }, children));
611
669
  }
612
670
  if (url) {
613
671
  const href = typeof url === "string" ? url : url(activeItem);
614
- return (React__default["default"].createElement("a", { className: styles$f.listItemClickable, href: href, onClick: handleClick }, children));
672
+ return (React__default["default"].createElement("a", { className: styles$g.listItemClickable, href: href, onClick: handleClick }, children));
615
673
  }
616
674
  if (onClick) {
617
675
  return (
618
676
  // A button can be nested within the list item. To prevent a button inside
619
677
  // button error, we need to manually declare a div to be a button
620
- React__default["default"].createElement("div", { role: "button", tabIndex: 0, className: styles$f.listItemClickable, onClick: handleClick, onKeyDown: e => {
678
+ React__default["default"].createElement("div", { role: "button", tabIndex: 0, className: styles$g.listItemClickable, onClick: handleClick, onKeyDown: e => {
621
679
  if (e.key === "Enter" || e.key === " ") {
622
680
  e.preventDefault();
623
681
  handleClick();
@@ -667,8 +725,8 @@ function DataListItem({ item, layout, }) {
667
725
  const isContextMenuVisible = Boolean(contextPosition);
668
726
  const shouldShowContextMenu = showMenu && isContextMenuVisible && hasActions;
669
727
  return (React__default["default"].createElement(DataListLayoutActionsContext.Provider, { value: { activeItem: item } },
670
- React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$f.listItem, {
671
- [styles$f.active]: showMenu && isContextMenuVisible,
728
+ React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$g.listItem, {
729
+ [styles$g.active]: showMenu && isContextMenuVisible,
672
730
  }), key: item.id },
673
731
  React__default["default"].createElement(DataListItemInternal, { item: item },
674
732
  React__default["default"].createElement(DataListItemClickable, null, layout(generatedItem))),
@@ -754,14 +812,14 @@ function DataListHeaderCheckbox({ children }) {
754
812
  return children;
755
813
  const deselectText = sm ? "Deselect All" : "Deselect";
756
814
  const selectedLabel = selectedCount ? `${selectedCount} selected` : "";
757
- return (React__default["default"].createElement("div", { className: styles$f.selectable },
758
- React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectAllCheckbox, {
759
- [styles$f.visible]: canSelectAll,
815
+ return (React__default["default"].createElement("div", { className: styles$g.selectable },
816
+ React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectAllCheckbox, {
817
+ [styles$g.visible]: canSelectAll,
760
818
  }) },
761
819
  React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: isIndeterminate(), onChange: handleSelectAll },
762
- React__default["default"].createElement("div", { className: styles$f.srOnly }, selectedLabel))),
763
- React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: hasAtLeastOneSelected, initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$f.batchSelectContainer },
764
- React__default["default"].createElement("div", { className: styles$f.headerBatchSelect },
820
+ React__default["default"].createElement("div", { className: styles$g.srOnly }, selectedLabel))),
821
+ React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: hasAtLeastOneSelected, initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$g.batchSelectContainer },
822
+ React__default["default"].createElement("div", { className: styles$g.headerBatchSelect },
765
823
  Boolean(selectedCount) && React__default["default"].createElement(Text.Text, null,
766
824
  selectedCount,
767
825
  " selected"),
@@ -813,7 +871,7 @@ function DataListHeader() {
813
871
  const headerData = generateHeaderElements(headers);
814
872
  if (!headerData)
815
873
  return null;
816
- return (React__default["default"].createElement("div", { className: styles$f.headerTitles },
874
+ return (React__default["default"].createElement("div", { className: styles$g.headerTitles },
817
875
  React__default["default"].createElement(DataListHeaderCheckbox, null, layout(headerData))));
818
876
  function getVisibleSize() {
819
877
  const visibilityKeys = Object.keys(headerVisibility);
@@ -831,7 +889,7 @@ function DataListSort() {
831
889
  const sortByOptions = getSortByOptions();
832
890
  return (React__default["default"].createElement(Combobox.Combobox, { onSelect: selection => handleKeyChange(selection[0].id.toString()), selected: [
833
891
  {
834
- id: `${state === null || state === void 0 ? void 0 : state.key},${state === null || state === void 0 ? void 0 : state.order}`,
892
+ id: `${state === null || state === void 0 ? void 0 : state.key},${state === null || state === void 0 ? void 0 : state.order},${state === null || state === void 0 ? void 0 : state.label}`,
835
893
  label: (state === null || state === void 0 ? void 0 : state.order) || "",
836
894
  },
837
895
  ] },
@@ -841,17 +899,27 @@ function DataListSort() {
841
899
  sortByOptions.map(({ label, value }) => (React__default["default"].createElement(Combobox.Combobox.Option, { key: value, id: value, label: label })))));
842
900
  function getSortByOptions() {
843
901
  const options = sortable.reduce((acc, sort) => {
844
- const label = headers[sort];
902
+ const label = headers[sort.key];
845
903
  if (!label)
846
904
  return acc;
847
- if (label === "Last activity") {
848
- acc.push({ label: "Last Activity (Newest)", value: `${sort},desc` });
849
- acc.push({ label: "Last Activity (Oldest)", value: `${sort},asc` });
850
- }
851
- else {
852
- acc.push({ label: `${label} (A-Z)`, value: `${sort},asc` });
853
- acc.push({ label: `${label} (Z-A)`, value: `${sort},desc` });
905
+ const customOptions = sort.options;
906
+ if (customOptions) {
907
+ customOptions.forEach(option => {
908
+ acc.push({
909
+ label: option.label || "",
910
+ value: `${sort.key},${option.order},${option.label}`,
911
+ });
912
+ });
913
+ return acc;
854
914
  }
915
+ acc.push({
916
+ label: `${label} (A-Z)`,
917
+ value: `${sort.key},asc,${label}`,
918
+ });
919
+ acc.push({
920
+ label: `${label} (Z-A)`,
921
+ value: `${sort.key},desc,${label}`,
922
+ });
855
923
  return acc;
856
924
  }, []);
857
925
  // Inject a none option as the first option
@@ -859,13 +927,13 @@ function DataListSort() {
859
927
  return options;
860
928
  }
861
929
  function getButtonLabel() {
862
- const selectedOption = sortByOptions.find(option => option.value === `${state === null || state === void 0 ? void 0 : state.key},${state === null || state === void 0 ? void 0 : state.order}`);
930
+ const selectedOption = sortByOptions.find(option => option.value === `${state === null || state === void 0 ? void 0 : state.key},${state === null || state === void 0 ? void 0 : state.order},${state === null || state === void 0 ? void 0 : state.label}`);
863
931
  return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || "";
864
932
  }
865
933
  function handleKeyChange(value) {
866
934
  if (value && value !== "none") {
867
- const [key, order] = value.split(",");
868
- onSort({ key, order: order });
935
+ const [key, order, label] = value.split(",");
936
+ onSort({ key, order: order, label });
869
937
  return;
870
938
  }
871
939
  onSort(undefined);
@@ -1164,13 +1232,13 @@ function InternalDataList() {
1164
1232
  const initialLoading = loadingState === "initial";
1165
1233
  const showEmptyState = !initialLoading && data.length === 0;
1166
1234
  const shouldRenderLoadMoreTrigger = !initialLoading && !showEmptyState;
1167
- return (React__default["default"].createElement("div", { className: styles$f.wrapper },
1168
- React__default["default"].createElement("div", { className: styles$f.titleContainer },
1235
+ return (React__default["default"].createElement("div", { className: styles$g.wrapper },
1236
+ React__default["default"].createElement("div", { className: styles$g.titleContainer },
1169
1237
  title && React__default["default"].createElement(Heading.Heading, { level: 3 }, title),
1170
1238
  React__default["default"].createElement(DataListTotalCount, { totalCount: totalCount, loading: initialLoading })),
1171
1239
  React__default["default"].createElement("div", { ref: backToTopRef }),
1172
1240
  React__default["default"].createElement(DataListStickyHeader, null,
1173
- React__default["default"].createElement("div", { className: styles$f.headerFilters },
1241
+ React__default["default"].createElement("div", { className: styles$g.headerFilters },
1174
1242
  React__default["default"].createElement(InternalDataListFilters, null),
1175
1243
  React__default["default"].createElement(InternalDataListSearch, null)),
1176
1244
  React__default["default"].createElement(InternalDataListStatusBar, null),
@@ -1178,8 +1246,8 @@ function InternalDataList() {
1178
1246
  initialLoading && React__default["default"].createElement(DataListLoadingState, null),
1179
1247
  showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
1180
1248
  layoutComponents,
1181
- loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$f.filtering },
1182
- React__default["default"].createElement("div", { className: styles$f.filteringSpinner },
1249
+ loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$g.filtering },
1250
+ React__default["default"].createElement("div", { className: styles$g.filteringSpinner },
1183
1251
  React__default["default"].createElement(Spinner.Spinner, { size: "small" })))),
1184
1252
  shouldRenderLoadMoreTrigger && (React__default["default"].createElement(DataListLoadMore, { onBackToTop: handleBackToTop }))));
1185
1253
  function handleBackToTop() {
@@ -9,12 +9,11 @@ var jobberHooks = require('@jobber/hooks/useResizeObserver');
9
9
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
10
10
  var Glimmer = require('../Glimmer-f40d5ea5.js');
11
11
  var tslib_es6 = require('../tslib.es6-5b8768b7.js');
12
- var Option = require('../Option-b715f6b4.js');
12
+ var Option = require('../Option-2234938d.js');
13
13
  var Button = require('../Button-b73a5e01.js');
14
14
  var Text = require('../Text-259af966.js');
15
15
  require('../Content-e3f7b6fc.js');
16
- require('../FormField-b0e74d32.js');
17
- require('uuid');
16
+ require('../FormField-5d977ffd.js');
18
17
  require('react-hook-form');
19
18
  require('@jobber/hooks/useShowClear');
20
19
  require('../Icon-405a216c.js');
@@ -2,10 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormField = require('../FormField-b0e74d32.js');
5
+ var FormField = require('../FormField-5d977ffd.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
- require('uuid');
9
8
  require('react-hook-form');
10
9
  require('../style-inject.es-9d2f5f4e.js');
11
10
  require('classnames');
@@ -2,7 +2,6 @@
2
2
 
3
3
  var tslib_es6 = require('./tslib.es6-5b8768b7.js');
4
4
  var React = require('react');
5
- var uuid = require('uuid');
6
5
  var reactHookForm = require('react-hook-form');
7
6
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
8
7
  var classnames = require('classnames');
@@ -151,8 +150,8 @@ function FormField(props) {
151
150
  ? reactHookForm.useFormContext()
152
151
  : // If there isn't a Form Context being provided, get a form for this field.
153
152
  reactHookForm.useForm({ mode: "onTouched" });
154
- const [identifier] = React.useState(uuid.v1());
155
- const [descriptionIdentifier] = React.useState(`descriptionUUID--${uuid.v1()}`);
153
+ const [identifier] = React.useState(React.useId());
154
+ const [descriptionIdentifier] = React.useState(`descriptionUUID--${React.useId()}`);
156
155
  /**
157
156
  * Generate a name if one is not supplied, this is the name
158
157
  * that will be used for react-hook-form and not neccessarily
@@ -6,7 +6,7 @@ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
6
6
  var React = require('react');
7
7
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
8
  var Avatar = require('../Avatar-76a799fa.js');
9
- var InputFile = require('../InputFile-d080dec5.js');
9
+ var InputFile = require('../InputFile-b396510d.js');
10
10
  var ProgressBar = require('../ProgressBar-b68edc8f.js');
11
11
  var Button = require('../Button-b73a5e01.js');
12
12
  require('classnames');
@@ -15,7 +15,6 @@ require('../Icon-405a216c.js');
15
15
  require('@jobber/design');
16
16
  require('react-dropzone');
17
17
  require('axios');
18
- require('uuid');
19
18
  require('../InputValidation-a7a737f9.js');
20
19
  require('framer-motion');
21
20
  require('../Text-259af966.js');
@@ -4,10 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var omit = require('lodash/omit');
6
6
  var React = require('react');
7
- var FormField = require('../FormField-b0e74d32.js');
7
+ var FormField = require('../FormField-5d977ffd.js');
8
8
  var DatePicker = require('../DatePicker-64c5ab1a.js');
9
9
  require('../tslib.es6-5b8768b7.js');
10
- require('uuid');
11
10
  require('react-hook-form');
12
11
  require('../style-inject.es-9d2f5f4e.js');
13
12
  require('classnames');
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var FormField = require('../FormField-b0e74d32.js');
6
+ var FormField = require('../FormField-5d977ffd.js');
7
7
  require('../tslib.es6-5b8768b7.js');
8
- require('uuid');
9
8
  require('react-hook-form');
10
9
  require('../style-inject.es-9d2f5f4e.js');
11
10
  require('classnames');
@@ -39,7 +39,7 @@ export interface UploadParams {
39
39
  readonly url: string;
40
40
  /**
41
41
  * Key to identify file.
42
- * If unspecified a `uuid` will be used.
42
+ * If unspecified a `useId` will be used.
43
43
  */
44
44
  readonly key?: string;
45
45
  /**
@@ -2,13 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var InputFile = require('../InputFile-d080dec5.js');
5
+ var InputFile = require('../InputFile-b396510d.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
8
  require('classnames');
9
9
  require('react-dropzone');
10
10
  require('axios');
11
- require('uuid');
12
11
  require('../style-inject.es-9d2f5f4e.js');
13
12
  require('../InputValidation-a7a737f9.js');
14
13
  require('framer-motion');
@@ -5,7 +5,6 @@ var React = require('react');
5
5
  var classnames = require('classnames');
6
6
  var reactDropzone = require('react-dropzone');
7
7
  var axios = require('axios');
8
- var uuid = require('uuid');
9
8
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
10
9
  var InputValidation = require('./InputValidation-a7a737f9.js');
11
10
  var Button = require('./Button-b73a5e01.js');
@@ -72,7 +71,7 @@ function InputFile({ variation = "dropzone", size = "base", buttonLabel: provide
72
71
  onUploadError && onUploadError(new Error("Failed to get upload params"));
73
72
  return;
74
73
  }
75
- const { url, key = uuid.v1(), fields = {}, httpMethod = "POST" } = params;
74
+ const { url, key = React.useId(), fields = {}, httpMethod = "POST" } = params;
76
75
  const fileUpload = getFileUpload(file, key, url);
77
76
  onUploadStart && onUploadStart(Object.assign({}, fileUpload));
78
77
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -2,11 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var InputNumber = require('../InputNumber-79da1cdc.js');
5
+ var InputNumber = require('../InputNumber-7c6d8aa5.js');
6
6
  require('react');
7
- require('../FormField-b0e74d32.js');
7
+ require('../FormField-5d977ffd.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
- require('uuid');
10
9
  require('react-hook-form');
11
10
  require('../style-inject.es-9d2f5f4e.js');
12
11
  require('classnames');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-b0e74d32.js');
4
+ var FormField = require('./FormField-5d977ffd.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var FormField = require('../FormField-b0e74d32.js');
6
+ var FormField = require('../FormField-5d977ffd.js');
7
7
  require('../tslib.es6-5b8768b7.js');
8
- require('uuid');
9
8
  require('react-hook-form');
10
9
  require('../style-inject.es-9d2f5f4e.js');
11
10
  require('classnames');
@@ -6,8 +6,7 @@ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
6
6
  var React = require('react');
7
7
  var reactHookForm = require('react-hook-form');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
- var FormField = require('../FormField-b0e74d32.js');
10
- require('uuid');
9
+ var FormField = require('../FormField-5d977ffd.js');
11
10
  require('classnames');
12
11
  require('@jobber/hooks/useShowClear');
13
12
  require('../Button-b73a5e01.js');
@@ -2,11 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var InputText = require('../InputText-9e61365c.js');
5
+ var InputText = require('../InputText-ed025475.js');
6
6
  require('react');
7
- require('../FormField-b0e74d32.js');
7
+ require('../FormField-5d977ffd.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
- require('uuid');
10
9
  require('react-hook-form');
11
10
  require('../style-inject.es-9d2f5f4e.js');
12
11
  require('classnames');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-b0e74d32.js');
4
+ var FormField = require('./FormField-5d977ffd.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -6,8 +6,7 @@ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
6
6
  var React = require('react');
7
7
  var debounce = require('lodash/debounce');
8
8
  var temporal = require('@std-proposal/temporal');
9
- var FormField = require('../FormField-b0e74d32.js');
10
- require('uuid');
9
+ var FormField = require('../FormField-5d977ffd.js');
11
10
  require('react-hook-form');
12
11
  require('../style-inject.es-9d2f5f4e.js');
13
12
  require('classnames');
@@ -25,15 +25,15 @@ export interface ActionProps {
25
25
  /**
26
26
  * Action label
27
27
  */
28
- label: string;
28
+ readonly label: string;
29
29
  /**
30
30
  * Parent Section Label
31
31
  */
32
- sectionLabel?: string;
32
+ readonly sectionLabel?: string;
33
33
  /**
34
34
  * Visual cue for the action label
35
35
  */
36
- icon?: IconNames;
36
+ readonly icon?: IconNames;
37
37
  /**
38
38
  * Callback when an action gets clicked
39
39
  */
@@ -41,5 +41,5 @@ export interface ActionProps {
41
41
  /**
42
42
  * Focus on the action when rendered
43
43
  */
44
- shouldFocus?: boolean;
44
+ readonly shouldFocus?: boolean;
45
45
  }
@@ -2,9 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Menu = require('../Menu-81b12936.js');
5
+ var Menu = require('../Menu-3e137b7d.js');
6
6
  require('react');
7
- require('uuid');
8
7
  require('classnames');
9
8
  require('framer-motion');
10
9
  require('@jobber/hooks/useOnKeyDown');
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var uuid = require('uuid');
5
4
  var classnames = require('classnames');
6
5
  var framerMotion = require('framer-motion');
7
6
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
@@ -42,8 +41,8 @@ function Menu({ activator, items }) {
42
41
  horizontal: "right",
43
42
  });
44
43
  const wrapperRef = React.createRef();
45
- const buttonID = uuid.v1();
46
- const menuID = uuid.v1();
44
+ const buttonID = React.useId();
45
+ const menuID = React.useId();
47
46
  useOnKeyDown.useOnKeyDown(handleKeyboardShortcut, ["Escape"]);
48
47
  React.useLayoutEffect(() => {
49
48
  if (wrapperRef.current) {
@@ -5,11 +5,10 @@ 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 Checkbox = require('../Checkbox-1cdd5cf6.js');
8
+ var Checkbox = require('../Checkbox-2915069b.js');
9
9
  var Text = require('../Text-259af966.js');
10
10
  var Icon = require('../Icon-405a216c.js');
11
11
  require('../tslib.es6-5b8768b7.js');
12
- require('uuid');
13
12
  require('react-hook-form');
14
13
  require('../Typography-c45bf216.js');
15
14
  require('@jobber/design');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-b0e74d32.js');
4
+ var FormField = require('./FormField-5d977ffd.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -11,7 +11,7 @@ var Text = require('../Text-259af966.js');
11
11
  var Content = require('../Content-e3f7b6fc.js');
12
12
  var Markdown = require('../Markdown-f7c55304.js');
13
13
  var Button = require('../Button-b73a5e01.js');
14
- var Menu = require('../Menu-81b12936.js');
14
+ var Menu = require('../Menu-3e137b7d.js');
15
15
  var Emphasis = require('../Emphasis-bda56d3b.js');
16
16
  require('../Typography-c45bf216.js');
17
17
  require('../getAtlantisConfig-0f3e8af2.js');
@@ -19,7 +19,6 @@ require('react-markdown');
19
19
  require('react-router-dom');
20
20
  require('../Icon-405a216c.js');
21
21
  require('@jobber/design');
22
- require('uuid');
23
22
  require('framer-motion');
24
23
  require('@jobber/hooks/useOnKeyDown');
25
24
  require('@jobber/hooks/useRefocusOnActivator');
@@ -2,9 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var RadioGroup = require('../RadioGroup-ca7a5978.js');
5
+ var RadioGroup = require('../RadioGroup-17b67ade.js');
6
6
  require('react');
7
- require('uuid');
8
7
  require('../style-inject.es-9d2f5f4e.js');
9
8
  require('../Text-259af966.js');
10
9
  require('../Typography-c45bf216.js');
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var uuid = require('uuid');
5
4
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
5
  var Text = require('./Text-259af966.js');
7
6
 
@@ -21,7 +20,7 @@ function RadioOption({ children }) {
21
20
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
22
21
  }
23
22
  function InternalRadioOption({ value, name, label, description, disabled, checked, children, onChange, }) {
24
- const inputId = `${value.toString()}_${uuid.v1()}`;
23
+ const inputId = `${value.toString()}_${React.useId()}`;
25
24
  const shouldRenderIndependentChildren = label && children;
26
25
  return (React__default["default"].createElement("div", null,
27
26
  React__default["default"].createElement("input", { onChange: handleChange, type: "radio", name: name, value: value, disabled: disabled, checked: checked, id: inputId, className: styles.input, "aria-describedby": description ? `${inputId}_description` : undefined }),
@@ -34,7 +33,7 @@ function InternalRadioOption({ value, name, label, description, disabled, checke
34
33
  }
35
34
  }
36
35
 
37
- function RadioGroup({ children, value, ariaLabel, onChange, name = uuid.v1(), }) {
36
+ function RadioGroup({ children, value, ariaLabel, onChange, name = React.useId(), }) {
38
37
  return (React__default["default"].createElement("div", { role: "radiogroup", "aria-label": ariaLabel, className: styles.radioGroup }, React__default["default"].Children.map(children, option => (React__default["default"].createElement(InternalRadioOption, Object.assign({ checked: value === option.props.value, name: name, onChange: handleChange }, option.props), option.props.children)))));
39
38
  function handleChange(newValue) {
40
39
  if (newValue !== value) {
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import { DayOfMonth } from "../types";
3
3
  interface DayOfMonthSelectProps {
4
- selectedDays: Set<DayOfMonth>;
5
- disabled: boolean;
4
+ readonly selectedDays: Set<DayOfMonth>;
5
+ readonly disabled: boolean;
6
6
  onChange(selectedDays: Set<DayOfMonth>): void;
7
7
  }
8
8
  export declare function DayOfMonthSelect({ selectedDays, disabled, onChange, }: DayOfMonthSelectProps): JSX.Element;
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import { WeekDay } from "../types";
3
3
  interface WeeklySelectProps {
4
- disabled: boolean;
5
- selectedDays: Set<WeekDay>;
4
+ readonly disabled: boolean;
5
+ readonly selectedDays: Set<WeekDay>;
6
6
  onChange(selectedDays: Set<WeekDay>): void;
7
7
  }
8
8
  export declare function WeeklySelect({ onChange, selectedDays, disabled, }: WeeklySelectProps): JSX.Element;
@@ -3,17 +3,16 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var uuid = require('uuid');
7
6
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
- var RadioGroup = require('../RadioGroup-ca7a5978.js');
7
+ var RadioGroup = require('../RadioGroup-17b67ade.js');
9
8
  var Text = require('../Text-259af966.js');
10
9
  require('classnames');
11
10
  require('../Typography-c45bf216.js');
12
- var Option = require('../Option-b715f6b4.js');
13
- var InputNumber = require('../InputNumber-79da1cdc.js');
11
+ var Option = require('../Option-2234938d.js');
12
+ var InputNumber = require('../InputNumber-7c6d8aa5.js');
14
13
  var InputGroup = require('../InputGroup-8d4fd4eb.js');
15
14
  var Content = require('../Content-e3f7b6fc.js');
16
- require('../FormField-b0e74d32.js');
15
+ require('../FormField-5d977ffd.js');
17
16
  require('../tslib.es6-5b8768b7.js');
18
17
  require('react-hook-form');
19
18
  require('@jobber/hooks/useShowClear');
@@ -99,7 +98,7 @@ function WeeklySelect({ onChange, selectedDays, disabled, }) {
99
98
  };
100
99
  return (React__default["default"].createElement("div", { className: styles$4.container }, weekDays.map(weekDay => {
101
100
  const isSelected = selectedDays.has(weekDay);
102
- const inputId = uuid.v1();
101
+ const inputId = React.useId();
103
102
  return (React__default["default"].createElement("div", { key: `${weekDay}`, className: checkboxStyles.checkboxWrapper },
104
103
  React__default["default"].createElement("input", { className: checkboxStyles.dayCheckboxInput, disabled: disabled, type: "checkbox", onChange: onChangeWeekDays, id: `weekly-select-${weekDay}${inputId}`, "aria-checked": isSelected, checked: isSelected, value: weekDay }),
105
104
  React__default["default"].createElement("label", { className: checkboxStyles.dayCheckbox, htmlFor: `weekly-select-${weekDay}${inputId}` }, `${exports.WeekDay[weekDay].substr(0, 1).toUpperCase()}`)));
@@ -144,7 +143,7 @@ const daysInMonth = [...Array.from({ length: 31 }, (_, i) => i + 1), "LAST"];
144
143
  function DayOfMonthSelect({ selectedDays, disabled, onChange, }) {
145
144
  return (React__default["default"].createElement("div", { className: styles$1.container }, daysInMonth.map(day => {
146
145
  const isSelected = selectedDays.has(day);
147
- const inputId = uuid.v1();
146
+ const inputId = React.useId();
148
147
  return (React__default["default"].createElement("div", { key: `${day}`, className: checkboxStyles.checkboxWrapper },
149
148
  React__default["default"].createElement("input", { className: checkboxStyles.dayCheckboxInput, disabled: disabled, type: "checkbox", id: `${day}-${inputId}`, onChange: handleChangeDayOfMonth, "aria-checked": isSelected, checked: isSelected, value: day }),
150
149
  React__default["default"].createElement("label", { className: checkboxStyles.dayCheckbox, htmlFor: `${day}-${inputId}` }, `${day === "LAST" ? "Last day" : day}`)));
@@ -2,11 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Option = require('../Option-b715f6b4.js');
5
+ var Option = require('../Option-2234938d.js');
6
6
  require('react');
7
- require('../FormField-b0e74d32.js');
7
+ require('../FormField-5d977ffd.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
- require('uuid');
10
9
  require('react-hook-form');
11
10
  require('../style-inject.es-9d2f5f4e.js');
12
11
  require('classnames');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.75.0",
3
+ "version": "4.76.1-job-85845.0+c80c7b3b",
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.52.0",
23
- "@jobber/formatters": "*",
23
+ "@jobber/formatters": "^0.2.2",
24
24
  "@jobber/hooks": "^2.8.1",
25
25
  "@popperjs/core": "^2.0.6",
26
26
  "@std-proposal/temporal": "0.0.1",
@@ -84,5 +84,5 @@
84
84
  "> 1%",
85
85
  "IE 10"
86
86
  ],
87
- "gitHead": "27452dd8241062254d7f71c756bbf4076b700471"
87
+ "gitHead": "c80c7b3bfdd8c97776012b151664530ab59bd575"
88
88
  }