@jobber/components 4.69.2 → 4.69.3-JOB-84091.16

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 -2
  2. package/dist/Banner/index.js +11 -11
  3. package/dist/Button/Button.d.ts +3 -2
  4. package/dist/Card/index.js +2 -2
  5. package/dist/{Card-644dd256.js → Card-426a68a8.js} +2 -2
  6. package/dist/DataDump/index.js +2 -2
  7. package/dist/DataList/DataList.types.d.ts +8 -1
  8. package/dist/DataList/components/DataListHeaderTile/DataListHeaderTile.d.ts +2 -1
  9. package/dist/DataList/components/DataListHeaderTile/components/DataListSortingOptions.d.ts +12 -0
  10. package/dist/DataList/components/DataListHeaderTile/components/index.d.ts +1 -0
  11. package/dist/DataList/index.js +145 -83
  12. package/dist/DataTable/index.js +6 -5
  13. package/dist/FormField/FormFieldTypes.d.ts +1 -0
  14. package/dist/FormField/index.js +1 -1
  15. package/dist/{FormField-a332b2a6.js → FormField-b0e74d32.js} +2 -2
  16. package/dist/FormatFile/index.js +1 -1
  17. package/dist/{FormatFile-aae6c6e2.js → FormatFile-cc949eaf.js} +43 -2
  18. package/dist/Gallery/index.js +1 -1
  19. package/dist/InputAvatar/index.js +5 -2
  20. package/dist/InputDate/index.js +1 -1
  21. package/dist/InputEmail/index.js +1 -1
  22. package/dist/InputFile/InputFile.d.ts +12 -2
  23. package/dist/InputFile/index.js +7 -4
  24. package/dist/{InputFile-65bfbd78.js → InputFile-8767b7fd.js} +39 -13
  25. package/dist/InputNumber/index.js +2 -2
  26. package/dist/{InputNumber-3f5d3f8d.js → InputNumber-79da1cdc.js} +1 -1
  27. package/dist/InputPassword/index.js +1 -1
  28. package/dist/InputPhoneNumber/index.js +1 -1
  29. package/dist/InputText/index.js +2 -2
  30. package/dist/{InputText-e2d4ac19.js → InputText-9e61365c.js} +1 -1
  31. package/dist/InputTime/hooks/useTimePredict.d.ts +8 -0
  32. package/dist/InputTime/index.js +160 -5
  33. package/dist/Menu/index.js +1 -1
  34. package/dist/{Menu-da5d8217.js → Menu-81b12936.js} +1 -1
  35. package/dist/{Option-e5274cd8.js → Option-b715f6b4.js} +1 -1
  36. package/dist/Page/index.js +1 -1
  37. package/dist/RecurringSelect/index.js +3 -3
  38. package/dist/Select/index.js +2 -2
  39. package/dist/Toast/index.js +1 -1
  40. package/dist/utils/getClientBrowser.d.ts +7 -0
  41. package/package.json +3 -3
@@ -16,20 +16,20 @@ 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
26
  var Checkbox = require('../Checkbox-1cdd5cf6.js');
26
27
  var reactRouterDom = require('react-router-dom');
27
28
  var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
28
29
  var Combobox = require('../Combobox-95b3c413.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-e2d4ac19.js');
32
+ var InputText = require('../InputText-9e61365c.js');
33
33
  var Spinner = require('../Spinner-9d8fc7ff.js');
34
34
  var Typography = require('../Typography-c45bf216.js');
35
35
  require('../Content-2ca1ffe1.js');
@@ -40,7 +40,7 @@ require('react-hook-form');
40
40
  require('@jobber/hooks/useAssert');
41
41
  require('../Avatar-76a799fa.js');
42
42
  require('color');
43
- require('../FormField-a332b2a6.js');
43
+ require('../FormField-b0e74d32.js');
44
44
  require('@jobber/hooks/useShowClear');
45
45
  require('../InputValidation-a7a737f9.js');
46
46
 
@@ -52,13 +52,13 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
52
52
  var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
53
53
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
54
54
 
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);
55
+ 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";
56
+ 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-"};
57
+ styleInject_es.styleInject(css_248z$g);
58
58
 
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);
59
+ var css_248z$f = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
60
+ var styles$f = {"results":"F56prQsXm3A-"};
61
+ styleInject_es.styleInject(css_248z$f);
62
62
 
63
63
  const DATALIST_TOTALCOUNT_TEST_ID = "ATL-DataList-TotalCount";
64
64
  function DataListTotalCount({ totalCount, loading, }) {
@@ -74,7 +74,7 @@ function DataListTotalCount({ totalCount, loading, }) {
74
74
  totalCount.toLocaleString(),
75
75
  " results)"));
76
76
  }
77
- return (React__default["default"].createElement("div", { className: styles$e.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
77
+ return (React__default["default"].createElement("div", { className: styles$f.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
78
78
  }
79
79
 
80
80
  const defaultValues$1 = {
@@ -169,9 +169,9 @@ function useActiveLayout() {
169
169
  return { layout, activeBreakpoint };
170
170
  }
171
171
 
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);
172
+ 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";
173
+ var styles$e = {"wrapper":"_8cMzUF8XEwY-","loadingItem":"Rh--6fVpkm4-","glimmer":"NFaWWvmxtkw-"};
174
+ styleInject_es.styleInject(css_248z$e);
175
175
 
176
176
  const LOADING_STATE_LIMIT_ITEMS = 10;
177
177
  const DATALIST_LOADINGSTATE_ROW_TEST_ID = "ATL-DataList-LoadingState-Row";
@@ -181,10 +181,10 @@ function DataListLoadingState() {
181
181
  if (!layout)
182
182
  return null;
183
183
  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 },
184
+ const glimmersFromHeader = Object.keys(headers).reduce((data, key) => (Object.assign(Object.assign({}, data), { [key]: (React__default["default"].createElement("div", { className: styles$e.glimmer },
185
185
  React__default["default"].createElement(Glimmer.Glimmer, { size: glimmerSize }))) })), {});
186
186
  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))))));
187
+ 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
188
  }
189
189
 
190
190
  const defaultValues = {
@@ -197,32 +197,32 @@ function useDataListLayoutContext() {
197
197
  return React.useContext(DataListLayoutContext);
198
198
  }
199
199
 
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);
200
+ 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";
201
+ var styles$d = {"menu":"jHcHGQ-HDbk-"};
202
+ styleInject_es.styleInject(css_248z$d);
203
203
 
204
204
  const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
205
205
 
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);
206
+ 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";
207
+ var styles$c = {"fadeContainer":"jbBRoxlZlNI-","overflowItems":"P6uJ-vHfKrM-","overflowGrid":"MnN8qbS4hw4-","overflowTrigger":"b-5P7Z8eGO8-","overflowLeft":"xzaCS4slLpI-","overflowRight":"Jf227kC8Nu0-"};
208
+ styleInject_es.styleInject(css_248z$c);
209
209
 
210
210
  function DataListOverflowFade({ children }) {
211
211
  const [leftRef, isLeftVisible] = useInView.useInView();
212
212
  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,
213
+ return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$c.fadeContainer, {
214
+ [styles$c.overflowLeft]: !isLeftVisible,
215
+ [styles$c.overflowRight]: !isRightVisible,
216
216
  }) },
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 }))));
217
+ React__default["default"].createElement("div", { className: styles$c.overflowGrid },
218
+ React__default["default"].createElement("span", { ref: leftRef, className: styles$c.overflowTrigger }),
219
+ React__default["default"].createElement("div", { className: styles$c.overflowItems }, children),
220
+ React__default["default"].createElement("span", { ref: rightRef, className: styles$c.overflowTrigger }))));
221
221
  }
222
222
 
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);
223
+ 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";
224
+ var styles$b = {"tagWrapper":"_8MYxAQYdZzM-","tags":"WRV-UmQmPzo-","tagsMask":"ND-cN-mX5-c-","tagCount":"liQeWCMenD0-"};
225
+ styleInject_es.styleInject(css_248z$b);
226
226
 
227
227
  function DataListTags({ items }) {
228
228
  const ref = React.useRef(null);
@@ -244,12 +244,12 @@ function DataListTags({ items }) {
244
244
  elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.unobserve(element));
245
245
  };
246
246
  }, [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,
247
+ return (React__default["default"].createElement("div", { className: styles$b.tagWrapper, ref: ref },
248
+ React__default["default"].createElement("div", { className: classnames__default["default"](styles$b.tags, {
249
+ [styles$b.tagsMask]: shouldShowTagCount,
250
250
  }) }, items.filter(Boolean).map((tag, index) => (React__default["default"].createElement("div", { key: tag, "data-tag-element": index },
251
251
  React__default["default"].createElement(InlineLabel.InlineLabel, null, tag))))),
252
- shouldShowTagCount && (React__default["default"].createElement("div", { className: styles$a.tagCount },
252
+ shouldShowTagCount && (React__default["default"].createElement("div", { className: styles$b.tagCount },
253
253
  React__default["default"].createElement(Text.Text, null,
254
254
  "+",
255
255
  visibleItems)))));
@@ -278,50 +278,107 @@ function buildIntersectionThreshold(items) {
278
278
  return thresholds;
279
279
  }
280
280
 
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);
281
+ 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";
282
+ var styles$a = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
283
+ styleInject_es.styleInject(css_248z$a);
284
284
 
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);
285
+ 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";
286
+ var styles$9 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
287
+ styleInject_es.styleInject(css_248z$9);
288
288
 
289
289
  const SORTING_ICON_TEST_ID = "ATL-DataList-Sorting-Icon";
290
290
  function DataListSortingArrows({ order }) {
291
- return (React__default["default"].createElement("div", { className: styles$8.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
291
+ return (React__default["default"].createElement("div", { className: styles$9.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
292
292
  React__default["default"].createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
293
293
  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
294
  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
295
  function getActiveClassName(targetOrder) {
296
- return order === targetOrder ? styles$8.active : styles$8.inactive;
296
+ return order === targetOrder ? styles$9.active : styles$9.inactive;
297
297
  }
298
298
  }
299
299
 
300
- function DataListHeaderTile({ headers, headerKey, }) {
300
+ 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) 0;\n padding: var(--space-small) 0;\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 margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n padding: calc(16px / 2);\n padding: var(--space-small);\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}\n\n.QaXuqbVjG04-:hover,\n.QaXuqbVjG04-:focus {\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\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\n._6kMgjgYeCwY- {\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n";
301
+ var styles$8 = {"optionsList":"thBUfVNaigs-","option":"QaXuqbVjG04-","optionSelected":"_6kMgjgYeCwY-"};
302
+ styleInject_es.styleInject(css_248z$8);
303
+
304
+ function DataListSortingOptions({ options, selectedOption, onSelectChange, onClose, optionsListRef, dataListHeaderTileRef, }) {
305
+ useRefocusOnActivator.useRefocusOnActivator(!optionsListRef.current);
306
+ useOnKeyDown.useOnKeyDown(() => onClose(), "Escape");
307
+ React__default["default"].useEffect(() => {
308
+ document.addEventListener("mousedown", handleClickOutside);
309
+ return () => {
310
+ document.removeEventListener("mousedown", handleClickOutside);
311
+ };
312
+ }, [optionsListRef, dataListHeaderTileRef, onClose]);
313
+ return (React__default["default"].createElement("ul", { className: styles$8.optionsList, ref: optionsListRef }, options.map((option, index) => (React__default["default"].createElement("li", { className: option.label === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label)
314
+ ? `${styles$8.option} ${styles$8.optionSelected}`
315
+ : styles$8.option, key: index, onClick: () => onSelectChange(option), onKeyDown: event => handleKeyDown(event, option), tabIndex: 0 },
316
+ option.label,
317
+ option.label === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) && (React__default["default"].createElement(Icon.Icon, { name: "checkmark", color: "blue" })))))));
318
+ function handleKeyDown(event, option) {
319
+ if (event.key === "Enter") {
320
+ onSelectChange(option);
321
+ }
322
+ }
323
+ function handleClickOutside(event) {
324
+ var _a, _b;
325
+ const isClickInsideOptions = (_a = optionsListRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target);
326
+ const isClickInsideHeader = (_b = dataListHeaderTileRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target);
327
+ if (!isClickInsideOptions && !isClickInsideHeader) {
328
+ onClose();
329
+ }
330
+ }
331
+ }
332
+
333
+ /* eslint-disable max-statements */
334
+ function DataListHeaderTile({ headers, headerKey, visible = false, }) {
335
+ useRefocusOnActivator.useRefocusOnActivator(visible);
301
336
  const { sorting } = useDataListContext();
302
- const isSortable = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.includes(headerKey);
337
+ const [isDropDownOpen, setIsDropDownOpen] = React__default["default"].useState(false);
338
+ const [selectedSortOption, setSelectedSortOption] = React__default["default"].useState(null);
339
+ const optionsListRef = useFocusTrap.useFocusTrap(isDropDownOpen);
340
+ const dataListHeaderTileRef = React__default["default"].useRef(null);
341
+ const sortableItem = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.find(item => item.key === headerKey);
342
+ const isSortable = Boolean(sortableItem);
303
343
  const sortingState = sorting === null || sorting === void 0 ? void 0 : sorting.state;
304
344
  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 },
345
+ return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$a.headerLabel, {
346
+ [styles$a.sortable]: isSortable,
347
+ }), onClick: handleOnClick, ref: dataListHeaderTileRef },
308
348
  React__default["default"].createElement(Text.Text, { maxLines: "single" }, headers[headerKey]),
349
+ 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
350
  (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) {
351
+ function toggleSorting(sortingKey, order) {
311
352
  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") {
353
+ const isDescending = (sortingState === null || sortingState === void 0 ? void 0 : sortingState.order) === "desc";
354
+ if (isSameKey && isDescending && order !== "asc") {
355
+ if (order === "desc")
356
+ return;
313
357
  sorting === null || sorting === void 0 ? void 0 : sorting.onSort(undefined);
314
358
  return;
315
359
  }
360
+ const sortingOrder = order || (isSameKey && !isDescending ? "desc" : "asc");
316
361
  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
362
  key: sortingKey,
363
+ order: sortingOrder,
319
364
  });
320
365
  }
321
366
  function handleOnClick() {
322
367
  if (!isSortable)
323
368
  return;
324
- toggleSorting(headerKey);
369
+ if (sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) {
370
+ setIsDropDownOpen(!isDropDownOpen);
371
+ }
372
+ else {
373
+ toggleSorting(headerKey);
374
+ }
375
+ }
376
+ function handleSelectChange(selectedOption) {
377
+ if (sortableItem) {
378
+ toggleSorting(sortableItem.key, selectedOption.order);
379
+ }
380
+ setSelectedSortOption(selectedOption);
381
+ setIsDropDownOpen(true);
325
382
  }
326
383
  }
327
384
 
@@ -374,7 +431,7 @@ function generateListItemElement(item) {
374
431
  * Generate the header elements with the default styling
375
432
  */
376
433
  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 }) })), {});
434
+ 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
435
  return isEmpty__default["default"](headerElements) ? undefined : headerElements;
379
436
  }
380
437
  function sortBreakpoints(sizeProp) {
@@ -517,7 +574,7 @@ function InternalDataListItemActions({ actions, }) {
517
574
  return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
518
575
  duration: TRANSITION_DURATION_IN_SECONDS,
519
576
  delay: TRANSITION_DELAY_IN_SECONDS,
520
- }, className: styles$c.menu, onContextMenu: handleContextMenu },
577
+ }, className: styles$d.menu, onContextMenu: handleContextMenu },
521
578
  React__default["default"].createElement(DataListActions, null, actions)));
522
579
  }
523
580
  function handleContextMenu(event) {
@@ -561,8 +618,8 @@ function DataListItemInternal({ children, item, }) {
561
618
  const { canSelect, hasAtLeastOneSelected, isSelectAll, selectedIDs, selected, onSelect, } = useBatchSelect();
562
619
  if (!canSelect)
563
620
  return children;
564
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectable, {
565
- [styles$f.selected]: hasAtLeastOneSelected,
621
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectable, {
622
+ [styles$g.selected]: hasAtLeastOneSelected,
566
623
  }) },
567
624
  children,
568
625
  React__default["default"].createElement(Checkbox.Checkbox, { checked: getIsChecked(), onChange: handleChange })));
@@ -607,17 +664,17 @@ function DataListItemClickableInternal({ onClick, url, to, children, }) {
607
664
  return React__default["default"].createElement(React__default["default"].Fragment, null, children);
608
665
  if (to) {
609
666
  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));
667
+ return (React__default["default"].createElement(reactRouterDom.Link, { className: styles$g.listItemClickable, to: computedTo, onClick: handleClick }, children));
611
668
  }
612
669
  if (url) {
613
670
  const href = typeof url === "string" ? url : url(activeItem);
614
- return (React__default["default"].createElement("a", { className: styles$f.listItemClickable, href: href, onClick: handleClick }, children));
671
+ return (React__default["default"].createElement("a", { className: styles$g.listItemClickable, href: href, onClick: handleClick }, children));
615
672
  }
616
673
  if (onClick) {
617
674
  return (
618
675
  // A button can be nested within the list item. To prevent a button inside
619
676
  // 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 => {
677
+ React__default["default"].createElement("div", { role: "button", tabIndex: 0, className: styles$g.listItemClickable, onClick: handleClick, onKeyDown: e => {
621
678
  if (e.key === "Enter" || e.key === " ") {
622
679
  e.preventDefault();
623
680
  handleClick();
@@ -667,8 +724,8 @@ function DataListItem({ item, layout, }) {
667
724
  const isContextMenuVisible = Boolean(contextPosition);
668
725
  const shouldShowContextMenu = showMenu && isContextMenuVisible && hasActions;
669
726
  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,
727
+ React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$g.listItem, {
728
+ [styles$g.active]: showMenu && isContextMenuVisible,
672
729
  }), key: item.id },
673
730
  React__default["default"].createElement(DataListItemInternal, { item: item },
674
731
  React__default["default"].createElement(DataListItemClickable, null, layout(generatedItem))),
@@ -754,14 +811,14 @@ function DataListHeaderCheckbox({ children }) {
754
811
  return children;
755
812
  const deselectText = sm ? "Deselect All" : "Deselect";
756
813
  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,
814
+ return (React__default["default"].createElement("div", { className: styles$g.selectable },
815
+ React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectAllCheckbox, {
816
+ [styles$g.visible]: canSelectAll,
760
817
  }) },
761
818
  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 },
819
+ React__default["default"].createElement("div", { className: styles$g.srOnly }, selectedLabel))),
820
+ React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: hasAtLeastOneSelected, initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$g.batchSelectContainer },
821
+ React__default["default"].createElement("div", { className: styles$g.headerBatchSelect },
765
822
  Boolean(selectedCount) && React__default["default"].createElement(Text.Text, null,
766
823
  selectedCount,
767
824
  " selected"),
@@ -804,17 +861,16 @@ function DataListHeaderCheckbox({ children }) {
804
861
  function DataListHeader() {
805
862
  const breakpoints = useResponsiveSizing();
806
863
  const { headerVisibility = { xs: true, sm: true, md: true, lg: true, xl: true }, headers, layoutBreakpoints, } = useDataListContext();
807
- const { selectedIDs } = useBatchSelect();
864
+ const { hasAtLeastOneSelected } = useBatchSelect();
808
865
  const size = getVisibleSize();
809
866
  const { layout } = useActiveLayout();
810
867
  const visible = headerVisibility[size];
811
- const noItemsSelected = (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.length) === 0;
812
- if ((!visible && noItemsSelected) || !layout)
868
+ if ((!visible && !hasAtLeastOneSelected) || !layout)
813
869
  return null;
814
870
  const headerData = generateHeaderElements(headers);
815
871
  if (!headerData)
816
872
  return null;
817
- return (React__default["default"].createElement("div", { className: styles$f.headerTitles },
873
+ return (React__default["default"].createElement("div", { className: styles$g.headerTitles },
818
874
  React__default["default"].createElement(DataListHeaderCheckbox, null, layout(headerData))));
819
875
  function getVisibleSize() {
820
876
  const visibilityKeys = Object.keys(headerVisibility);
@@ -842,16 +898,22 @@ function DataListSort() {
842
898
  sortByOptions.map(({ label, value }) => (React__default["default"].createElement(Combobox.Combobox.Option, { key: value, id: value, label: label })))));
843
899
  function getSortByOptions() {
844
900
  const options = sortable.reduce((acc, sort) => {
845
- const label = headers[sort];
901
+ const label = headers[sort.key];
846
902
  if (!label)
847
903
  return acc;
848
904
  if (label === "Last activity") {
849
- acc.push({ label: "Last Activity (Newest)", value: `${sort},desc` });
850
- acc.push({ label: "Last Activity (Oldest)", value: `${sort},asc` });
905
+ acc.push({
906
+ label: "Last Activity (Newest)",
907
+ value: `${sort.key},desc`,
908
+ });
909
+ acc.push({
910
+ label: "Last Activity (Oldest)",
911
+ value: `${sort.key},asc`,
912
+ });
851
913
  }
852
914
  else {
853
- acc.push({ label: `${label} (A-Z)`, value: `${sort},asc` });
854
- acc.push({ label: `${label} (Z-A)`, value: `${sort},desc` });
915
+ acc.push({ label: `${label} (A-Z)`, value: `${sort.key},asc` });
916
+ acc.push({ label: `${label} (Z-A)`, value: `${sort.key},desc` });
855
917
  }
856
918
  return acc;
857
919
  }, []);
@@ -1165,13 +1227,13 @@ function InternalDataList() {
1165
1227
  const initialLoading = loadingState === "initial";
1166
1228
  const showEmptyState = !initialLoading && data.length === 0;
1167
1229
  const shouldRenderLoadMoreTrigger = !initialLoading && !showEmptyState;
1168
- return (React__default["default"].createElement("div", { className: styles$f.wrapper },
1169
- React__default["default"].createElement("div", { className: styles$f.titleContainer },
1230
+ return (React__default["default"].createElement("div", { className: styles$g.wrapper },
1231
+ React__default["default"].createElement("div", { className: styles$g.titleContainer },
1170
1232
  title && React__default["default"].createElement(Heading.Heading, { level: 3 }, title),
1171
1233
  React__default["default"].createElement(DataListTotalCount, { totalCount: totalCount, loading: initialLoading })),
1172
1234
  React__default["default"].createElement("div", { ref: backToTopRef }),
1173
1235
  React__default["default"].createElement(DataListStickyHeader, null,
1174
- React__default["default"].createElement("div", { className: styles$f.headerFilters },
1236
+ React__default["default"].createElement("div", { className: styles$g.headerFilters },
1175
1237
  React__default["default"].createElement(InternalDataListFilters, null),
1176
1238
  React__default["default"].createElement(InternalDataListSearch, null)),
1177
1239
  React__default["default"].createElement(InternalDataListStatusBar, null),
@@ -1179,8 +1241,8 @@ function InternalDataList() {
1179
1241
  initialLoading && React__default["default"].createElement(DataListLoadingState, null),
1180
1242
  showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
1181
1243
  layoutComponents,
1182
- loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$f.filtering },
1183
- React__default["default"].createElement("div", { className: styles$f.filteringSpinner },
1244
+ loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$g.filtering },
1245
+ React__default["default"].createElement("div", { className: styles$g.filteringSpinner },
1184
1246
  React__default["default"].createElement(Spinner.Spinner, { size: "small" })))),
1185
1247
  shouldRenderLoadMoreTrigger && (React__default["default"].createElement(DataListLoadMore, { onBackToTop: handleBackToTop }))));
1186
1248
  function handleBackToTop() {
@@ -9,11 +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-cfa92a88.js');
11
11
  var tslib_es6 = require('../tslib.es6-5b8768b7.js');
12
- var Option = require('../Option-e5274cd8.js');
12
+ var Option = require('../Option-b715f6b4.js');
13
13
  var Button = require('../Button-b73a5e01.js');
14
14
  var Text = require('../Text-259af966.js');
15
15
  require('../Content-2ca1ffe1.js');
16
- require('../FormField-a332b2a6.js');
16
+ require('../FormField-b0e74d32.js');
17
17
  require('uuid');
18
18
  require('react-hook-form');
19
19
  require('@jobber/hooks/useShowClear');
@@ -49,8 +49,8 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
49
49
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
50
  var jobberHooks__namespace = /*#__PURE__*/_interopNamespace(jobberHooks);
51
51
 
52
- var css_248z$3 = ".m5A5oeRFaMs- {\n position: relative;\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.cY-5BrIIUg8- {\n overflow: auto;\n}\n\n.y8xnHe7fwrI- {\n width: 100%;\n border-collapse: collapse;\n text-align: left;\n}\n\n.y8xnHe7fwrI- thead tr th {\n padding: calc(16px * 1);\n padding: var(--space-base);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n white-space: nowrap;\n}\n\n.y8xnHe7fwrI- thead tr th :first-child {\n display: -ms-flexbox;\n display: flex;\n}\n\n.y8xnHe7fwrI- tbody tr {\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n}\n\n.y8xnHe7fwrI- tbody tr:last-child {\n border-bottom: none;\n}\n\n.y8xnHe7fwrI- tbody tr td {\n padding: calc(16px * 1);\n padding: var(--space-base);\n}\n\n.y8xnHe7fwrI- tfoot {\n position: sticky;\n z-index: 1;\n width: 100%;\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 border-top: calc(16px / 8) solid rgb(217, 223, 225);\n border-top: var(--border-thick) solid var(--color-border);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n bottom: 0;\n}\n\n.y8xnHe7fwrI- tfoot tr th {\n padding: calc(16px * 1);\n padding: var(--space-base);\n}\n\n.t8QYvdtkQXQ- thead tr th:first-child,\n.t8QYvdtkQXQ- tbody tr td:first-child {\n position: sticky;\n left: 0;\n z-index: 1;\n height: calc((16px * 3) + (16px / 4));\n height: calc(calc(16px * 3) + calc(16px / 4));\n height: calc(var(--space-largest) + var(--space-smaller));\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.t8QYvdtkQXQ- th:first-child::after,\n.t8QYvdtkQXQ- td:first-child::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n right: calc(-1 * (16px / 2));\n right: calc(-1 * calc(16px / 2));\n right: calc(-1 * var(--space-small));\n width: calc(16px / 2);\n width: var(--space-small);\n height: 100%;\n background: linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0.1) 0%,\n rgba(0, 0, 0, 0) 80%\n );\n background: linear-gradient(\n 90deg,\n rgba(var(--color-black--rgb), 0.1) 0%,\n rgba(var(--color-black--rgb), 0) 80%\n );\n}\n\n.Y21JuHX6fhk- {\n position: sticky;\n top: 0;\n right: 0;\n left: 0;\n z-index: 2;\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 background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.PJEX8dlqCMA-:first-child:hover {\n background: rgb(244, 246, 250);\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._9ps4aWGs8W0-:hover {\n background: rgb(244, 246, 250);\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._59XEEB8l5pI-:hover,\n._59XEEB8l5pI-:hover :first-child {\n background: rgb(238, 240, 242);\n background: var(--color-surface--background);\n cursor: pointer;\n}\n\n.a2BGGBkY5J8- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -ms-flex-direction: column;\n flex-direction: column;\n top: calc(16px * 3);\n top: var(--space-largest);\n right: 0;\n bottom: calc(16px * 3);\n bottom: var(--space-largest);\n left: 0;\n width: 100%;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n";
53
- var styles$3 = {"dataTableContainer":"m5A5oeRFaMs-","tableContainer":"cY-5BrIIUg8-","table":"y8xnHe7fwrI-","pinFirstColumn":"t8QYvdtkQXQ-","stickyHeader":"Y21JuHX6fhk-","pinFirstHeaderSortable":"PJEX8dlqCMA-","sortableColumn":"_9ps4aWGs8W0-","clickableRow":"_59XEEB8l5pI-","emptyState":"a2BGGBkY5J8-"};
52
+ var css_248z$3 = ".m5A5oeRFaMs- {\n position: relative;\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n overflow: hidden;\n}\n\n.cY-5BrIIUg8- {\n overflow: auto;\n}\n\n.y8xnHe7fwrI- {\n width: 100%;\n border-collapse: collapse;\n text-align: left;\n}\n\n.y8xnHe7fwrI- thead tr th {\n padding: calc(16px * 1);\n padding: var(--space-base);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n white-space: nowrap;\n}\n\n.y8xnHe7fwrI- thead tr th :first-child {\n display: -ms-flexbox;\n display: flex;\n}\n\n.y8xnHe7fwrI- tbody tr {\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n}\n\n.y8xnHe7fwrI- tbody tr:last-child {\n border-bottom: none;\n}\n\n.y8xnHe7fwrI- tbody tr td {\n padding: calc(16px * 1);\n padding: var(--space-base);\n}\n\n.y8xnHe7fwrI- tfoot {\n position: sticky;\n z-index: 1;\n width: 100%;\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 border-top: calc(16px / 8) solid rgb(217, 223, 225);\n border-top: var(--border-thick) solid var(--color-border);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n bottom: 0;\n}\n\n.y8xnHe7fwrI- tfoot tr th {\n padding: calc(16px * 1);\n padding: var(--space-base);\n}\n\n.t8QYvdtkQXQ- thead tr th:first-child,\n.t8QYvdtkQXQ- tbody tr td:first-child {\n position: sticky;\n left: 0;\n z-index: 1;\n height: calc((16px * 3) + (16px / 4));\n height: calc(calc(16px * 3) + calc(16px / 4));\n height: calc(var(--space-largest) + var(--space-smaller));\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.t8QYvdtkQXQ- tbody tr td.UGku9HGjQn0- {\n display: table-cell;\n position: static;\n}\n\n.t8QYvdtkQXQ- th:first-child::after,\n.t8QYvdtkQXQ- td:first-child::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n right: calc(-1 * (16px / 2));\n right: calc(-1 * calc(16px / 2));\n right: calc(-1 * var(--space-small));\n width: calc(16px / 2);\n width: var(--space-small);\n height: 100%;\n background: linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0.1) 0%,\n rgba(0, 0, 0, 0) 80%\n );\n background: linear-gradient(\n 90deg,\n rgba(var(--color-black--rgb), 0.1) 0%,\n rgba(var(--color-black--rgb), 0) 80%\n );\n}\n\n.Y21JuHX6fhk- {\n position: sticky;\n top: 0;\n right: 0;\n left: 0;\n z-index: 2;\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 background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.PJEX8dlqCMA-:first-child:hover {\n background: rgb(244, 246, 250);\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._9ps4aWGs8W0-:hover {\n background: rgb(244, 246, 250);\n background: var(--color-surface--hover);\n cursor: pointer;\n}\n\n._59XEEB8l5pI-:hover,\n._59XEEB8l5pI-:hover :first-child {\n background: rgb(238, 240, 242);\n background: var(--color-surface--background);\n cursor: pointer;\n}\n\n.a2BGGBkY5J8- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n -ms-flex-direction: column;\n flex-direction: column;\n top: calc(16px * 3);\n top: var(--space-largest);\n right: 0;\n bottom: calc(16px * 3);\n bottom: var(--space-largest);\n left: 0;\n width: 100%;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n";
53
+ var styles$3 = {"dataTableContainer":"m5A5oeRFaMs-","tableContainer":"cY-5BrIIUg8-","table":"y8xnHe7fwrI-","pinFirstColumn":"t8QYvdtkQXQ-","emptyStateCell":"UGku9HGjQn0-","stickyHeader":"Y21JuHX6fhk-","pinFirstHeaderSortable":"PJEX8dlqCMA-","sortableColumn":"_9ps4aWGs8W0-","clickableRow":"_59XEEB8l5pI-","emptyState":"a2BGGBkY5J8-"};
54
54
  styleInject_es.styleInject(css_248z$3);
55
55
 
56
56
  function BodyLoading({ table }) {
@@ -80,7 +80,8 @@ function Body({ table, onRowClick, emptyState, loading, }) {
80
80
  })));
81
81
  }))) : (React__default["default"].createElement("tbody", null,
82
82
  React__default["default"].createElement("tr", { className: bodyRowClasses },
83
- React__default["default"].createElement("td", { colSpan: table.getAllColumns().length, className: classnames__default["default"](styles$3.emptyState) }, emptyState))))));
83
+ React__default["default"].createElement("td", { colSpan: table.getAllColumns().length, className: styles$3.emptyStateCell },
84
+ React__default["default"].createElement("div", { className: styles$3.emptyState }, emptyState)))))));
84
85
  }
85
86
 
86
87
  function createTableSettings(data, columns, options) {
@@ -147,6 +147,7 @@ export interface FormFieldProps extends CommonFormFieldProps {
147
147
  * Blur callback.
148
148
  */
149
149
  onBlur?(): void;
150
+ onKeyUp?(event: React.KeyboardEvent<HTMLInputElement>): void;
150
151
  /**
151
152
  * Exclusively for textareas. Specifies the visible height of a textarea.
152
153
  */
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormField = require('../FormField-a332b2a6.js');
5
+ var FormField = require('../FormField-b0e74d32.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
8
  require('uuid');
@@ -146,7 +146,7 @@ function FormFieldPostFix({ variation }) {
146
146
  /*eslint max-statements: ["error", 13]*/
147
147
  function FormField(props) {
148
148
  var _a, _b;
149
- 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, clearable = "never", } = props;
149
+ 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, onKeyUp, clearable = "never", } = props;
150
150
  const { control, formState: { errors }, setValue, watch, } = reactHookForm.useFormContext() != undefined
151
151
  ? reactHookForm.useFormContext()
152
152
  : // If there isn't a Form Context being provided, get a form for this field.
@@ -188,7 +188,7 @@ function FormField(props) {
188
188
  return (React__default["default"].createElement("textarea", Object.assign({}, textFieldProps, { rows: rows, ref: inputRef })));
189
189
  default:
190
190
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
191
- React__default["default"].createElement("input", Object.assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef })),
191
+ React__default["default"].createElement("input", Object.assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef, onKeyUp: onKeyUp })),
192
192
  loading && React__default["default"].createElement(FormFieldPostFix, { variation: "spinner" }),
193
193
  children));
194
194
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormatFile = require('../FormatFile-aae6c6e2.js');
5
+ var FormatFile = require('../FormatFile-cc949eaf.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('filesize');