@jobber/components 4.43.1 → 4.43.2-fix-import.1

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 (107) hide show
  1. package/Combobox.d.ts +1 -0
  2. package/Combobox.js +17 -0
  3. package/dist/Autocomplete/index.js +7 -7
  4. package/dist/Banner/index.js +3 -3
  5. package/dist/Button/index.js +2 -2
  6. package/dist/{Button-fd8413b2.js → Button-d89f2271.js} +1 -1
  7. package/dist/ButtonDismiss/index.js +3 -3
  8. package/dist/{ButtonDismiss-82680c7d.js → ButtonDismiss-250840a4.js} +1 -1
  9. package/dist/Card/index.js +5 -5
  10. package/dist/{Card-cc2ffbaa.js → Card-69304e99.js} +3 -3
  11. package/dist/Checkbox/index.js +3 -3
  12. package/dist/{Checkbox-3bccf65c.js → Checkbox-eac63b7f.js} +1 -1
  13. package/dist/{Chip-4916a642.js → Chip-4d8e6370.js} +4 -4
  14. package/dist/Chips/index.js +5 -5
  15. package/dist/Combobox/Combobox.d.ts +16 -0
  16. package/dist/Combobox/Combobox.types.d.ts +14 -0
  17. package/dist/Combobox/ComboboxProvider.d.ts +10 -0
  18. package/dist/Combobox/components/ComboboxAction/ComboboxAction.d.ts +12 -0
  19. package/dist/Combobox/components/ComboboxAction/index.d.ts +1 -0
  20. package/dist/Combobox/components/ComboboxContent/ComboboxContent.d.ts +33 -0
  21. package/dist/Combobox/components/ComboboxContent/ComboboxList.d.ts +14 -0
  22. package/dist/Combobox/components/ComboboxContent/ComboboxSearch.d.ts +7 -0
  23. package/dist/Combobox/components/ComboboxContent/index.d.ts +1 -0
  24. package/dist/Combobox/components/ComboboxTrigger/ComboboxTriggerButton/ComboboxTriggerButton.d.ts +3 -0
  25. package/dist/Combobox/components/ComboboxTrigger/ComboboxTriggerChip/ComboboxTriggerChip.d.ts +3 -0
  26. package/dist/Combobox/components/ComboboxTrigger/index.d.ts +2 -0
  27. package/dist/Combobox/hooks/useComboboxAccessibility.d.ts +13 -0
  28. package/dist/Combobox/hooks/useComboboxContent.d.ts +9 -0
  29. package/dist/Combobox/index.d.ts +3 -0
  30. package/dist/Combobox/index.js +295 -0
  31. package/dist/ConfirmationModal/index.js +9 -9
  32. package/dist/{ConfirmationModal-6b61ebf5.js → ConfirmationModal-92f07027.js} +2 -2
  33. package/dist/DataDump/index.js +6 -6
  34. package/dist/DataList/DataList.d.ts +5 -2
  35. package/dist/DataList/DataList.types.d.ts +13 -2
  36. package/dist/DataList/DataList.utils.d.ts +2 -1
  37. package/dist/DataList/components/DataListAction/DataListAction.d.ts +2 -3
  38. package/dist/DataList/components/DataListBulkActions/DataListBulkActions.const.d.ts +1 -0
  39. package/dist/DataList/components/DataListBulkActions/DataListBulkActions.d.ts +4 -0
  40. package/dist/DataList/components/DataListBulkActions/index.d.ts +1 -0
  41. package/dist/DataList/components/DataListItemActions/DataListItemActionsOverflow.d.ts +3 -3
  42. package/dist/DataList/components/DataListOverflowFade/DataListOverflowFade.d.ts +6 -0
  43. package/dist/DataList/components/DataListOverflowFade/index.d.ts +2 -0
  44. package/dist/DataList/index.js +283 -235
  45. package/dist/DataTable/index.js +6 -6
  46. package/dist/DatePicker/index.js +3 -3
  47. package/dist/{DatePicker-b31baae4.js → DatePicker-39d2dc8b.js} +2 -2
  48. package/dist/DescriptionList/index.js +1 -1
  49. package/dist/Disclosure/index.js +1 -1
  50. package/dist/Drawer/index.js +4 -4
  51. package/dist/Emphasis/index.js +2 -2
  52. package/dist/{Emphasis-76a10790.js → Emphasis-cc3456ac.js} +1 -1
  53. package/dist/FeatureSwitch/index.js +7 -7
  54. package/dist/FormField/index.js +5 -5
  55. package/dist/{FormField-d6138b7f.js → FormField-bef41ec9.js} +3 -3
  56. package/dist/FormatFile/index.js +10 -10
  57. package/dist/{FormatFile-aa1898f9.js → FormatFile-a470c0f2.js} +4 -4
  58. package/dist/Gallery/index.js +11 -11
  59. package/dist/Heading/index.js +2 -2
  60. package/dist/{Heading-a1191b15.js → Heading-4562900a.js} +1 -1
  61. package/dist/InlineLabel/index.js +2 -2
  62. package/dist/{InlineLabel-afd5fc6f.js → InlineLabel-3d461632.js} +1 -1
  63. package/dist/InputAvatar/index.js +3 -3
  64. package/dist/InputDate/index.js +6 -6
  65. package/dist/InputEmail/index.js +5 -5
  66. package/dist/InputFile/index.js +3 -3
  67. package/dist/{InputFile-2a06c2c0.js → InputFile-d327dee3.js} +2 -2
  68. package/dist/InputNumber/index.js +6 -6
  69. package/dist/{InputNumber-07b03067.js → InputNumber-5640fb55.js} +1 -1
  70. package/dist/InputPassword/index.js +5 -5
  71. package/dist/InputPhoneNumber/index.js +5 -5
  72. package/dist/InputText/index.js +6 -6
  73. package/dist/{InputText-d1a52550.js → InputText-5ac5cfe0.js} +1 -1
  74. package/dist/InputTime/index.js +5 -5
  75. package/dist/InputValidation/index.js +3 -3
  76. package/dist/{InputValidation-b5a3d92c.js → InputValidation-4e809bdd.js} +1 -1
  77. package/dist/LightBox/index.js +4 -4
  78. package/dist/{LightBox-437a1c8b.js → LightBox-02ca409e.js} +2 -2
  79. package/dist/List/index.js +5 -5
  80. package/dist/Markdown/index.js +5 -5
  81. package/dist/{Markdown-f6748dcb.js → Markdown-b37cf9ec.js} +3 -3
  82. package/dist/Menu/index.js +3 -3
  83. package/dist/{Menu-51f8712f.js → Menu-cec53b50.js} +2 -2
  84. package/dist/Modal/index.js +5 -5
  85. package/dist/{Modal-a9ab9565.js → Modal-dcdc0032.js} +3 -3
  86. package/dist/MultiSelect/index.js +3 -3
  87. package/dist/{Option-b903e7ac.js → Option-9f4a65da.js} +1 -1
  88. package/dist/Page/index.js +7 -7
  89. package/dist/Popover/index.js +4 -4
  90. package/dist/{Popover-bbfc6aa1.js → Popover-d401fb54.js} +1 -1
  91. package/dist/RadioGroup/index.js +3 -3
  92. package/dist/{RadioGroup-8e76d20b.js → RadioGroup-46833fac.js} +1 -1
  93. package/dist/RecurringSelect/index.js +8 -8
  94. package/dist/Select/index.js +6 -6
  95. package/dist/StatusLabel/index.js +2 -2
  96. package/dist/Switch/index.js +2 -2
  97. package/dist/{Switch-e75145cc.js → Switch-165f01e3.js} +1 -1
  98. package/dist/Tabs/index.js +1 -1
  99. package/dist/Text/index.js +2 -2
  100. package/dist/{Text-e7ed0974.js → Text-59bde58c.js} +1 -1
  101. package/dist/Toast/index.js +2 -2
  102. package/dist/Tooltip/index.js +3 -3
  103. package/dist/{Tooltip-bf67fe6e.js → Tooltip-59dbab5b.js} +1 -1
  104. package/dist/Typography/index.js +1 -1
  105. package/dist/{Typography-fd6f932a.js → Typography-9bff9c91.js} +2 -2
  106. package/package.json +3 -3
  107. /package/dist/DataList/components/{DataListFilters/DataListFilter.const.d.ts → DataListOverflowFade/DataListOverflowFade.const.d.ts} +0 -0
@@ -5,59 +5,57 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  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
- var Text = require('../Text-e7ed0974.js');
8
+ var Text = require('../Text-59bde58c.js');
9
9
  var Glimmer = require('../Glimmer-cfa92a88.js');
10
10
  var framerMotion = require('framer-motion');
11
11
  var classnames = require('classnames');
12
12
  var noop = require('lodash/noop');
13
13
  var reactRouterDom = require('react-router-dom');
14
- var Button = require('../Button-fd8413b2.js');
14
+ var Button = require('../Button-d89f2271.js');
15
15
  var design = require('@jobber/design');
16
- var Typography = require('../Typography-fd6f932a.js');
16
+ var Typography = require('../Typography-9bff9c91.js');
17
17
  var ReactDOM = require('react-dom');
18
- var Tooltip = require('../Tooltip-bf67fe6e.js');
18
+ var Tooltip = require('../Tooltip-59dbab5b.js');
19
19
  require('react-popper');
20
20
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
21
21
  var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
22
22
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
23
23
  var foundation = require('@jobber/design/foundation');
24
- var styles$f = require('@jobber/components/DataList/DataList.css');
24
+ var isEmpty = require('lodash/isEmpty');
25
+ var InlineLabel = require('../InlineLabel-3d461632.js');
25
26
  require('uuid');
26
27
  require('react-hook-form');
27
- var Checkbox = require('../Checkbox-3bccf65c.js');
28
- var isEmpty = require('lodash/isEmpty');
29
- var InlineLabel = require('../InlineLabel-afd5fc6f.js');
28
+ var Checkbox = require('../Checkbox-eac63b7f.js');
30
29
  var FormatDate = require('../FormatDate-70ea5b43.js');
31
- var Heading = require('../Heading-a1191b15.js');
30
+ var Heading = require('../Heading-4562900a.js');
32
31
  var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
33
- var Icon = require('../Icon-405a216c.js');
34
32
  var useInView = require('@jobber/hooks/useInView');
35
- var Popover = require('../Popover-bbfc6aa1.js');
33
+ var Popover = require('../Popover-d401fb54.js');
36
34
  var Content = require('../Content-2ca1ffe1.js');
37
- var Chip = require('../Chip-4916a642.js');
35
+ var Chip = require('../Chip-4d8e6370.js');
38
36
  require('@jobber/hooks/useAssert');
39
37
  require('../Avatar-1aa30ee1.js');
40
38
  require('color');
41
39
  var debounce = require('lodash/debounce');
42
- var InputText = require('../InputText-d1a52550.js');
40
+ var InputText = require('../InputText-5ac5cfe0.js');
43
41
  var Spinner = require('../Spinner-9d8fc7ff.js');
44
- require('../ButtonDismiss-82680c7d.js');
42
+ var Icon = require('../Icon-405a216c.js');
43
+ require('../ButtonDismiss-250840a4.js');
45
44
  require('lodash/sortBy');
46
45
  require('@jobber/hooks/useLiveAnnounce');
47
- require('../FormField-d6138b7f.js');
48
- require('../InputValidation-b5a3d92c.js');
46
+ require('../FormField-bef41ec9.js');
47
+ require('../InputValidation-4e809bdd.js');
49
48
 
50
49
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
51
50
 
52
51
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
53
52
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
54
53
  var noop__default = /*#__PURE__*/_interopDefaultLegacy(noop);
55
- var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles$f);
56
54
  var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
57
55
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
58
56
 
59
- var css_248z$e = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n display: -ms-flexbox;\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) 0;\n padding: var(--space-small) 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 -webkit-max-content;\n grid-template-columns: auto max-content;\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(225, 225, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\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(225, 225, 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-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--background);\n background-color: rgb(244, 244, 244);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n display: block;\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 * 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\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";
60
- var styles$e = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","active":"Pc0JGX6jCD4-","listItemClickable":"Tq6e0BGwcSM-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-"};
57
+ var css_248z$e = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n display: -ms-flexbox;\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) 0;\n padding: var(--space-small) 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 -webkit-max-content;\n grid-template-columns: auto max-content;\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(225, 225, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\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 width: 100%;\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: calc(16px / 4);\n gap: var(--space-smaller);\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(225, 225, 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-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--background);\n background-color: rgb(244, 244, 244);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n display: block;\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 * 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.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";
58
+ var styles$e = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","active":"Pc0JGX6jCD4-","listItemClickable":"Tq6e0BGwcSM-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-","srOnly":"esUiRgWabYw-"};
61
59
  styleInject_es.styleInject(css_248z$e);
62
60
 
63
61
  var css_248z$d = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
@@ -111,27 +109,10 @@ var css_248z$b = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n
111
109
  var styles$b = {"menu":"jHcHGQ-HDbk-"};
112
110
  styleInject_es.styleInject(css_248z$b);
113
111
 
114
- var css_248z$a = ".iyg43v-S9yU- {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n min-height: 44px;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: none;\n border-radius: 0;\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 text-align: left;\n background: none;\n cursor: pointer;\n transition: background 200ms ease;\n transition: background var(--timing-base) ease;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.iyg43v-S9yU-:hover,\n.iyg43v-S9yU-:focus {\n background-color: rgb(250, 246, 219);\n background-color: var(--color-surface--hover);\n}\n\n.AUJNqz93ZDA- {\n font-weight: 500;\n}\n";
115
- var styles$a = {"action":"iyg43v-S9yU-","label":"AUJNqz93ZDA-"};
112
+ var css_248z$a = ".aokwZU8jbWU- {\n position: fixed;\n top: 0;\n top: var(--actions-menu-y, 0);\n left: 0;\n left: var(--actions-menu-x, 0);\n z-index: 6;\n z-index: var(--elevation-menu);\n min-width: 150px;\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(225, 225, 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}\n\n.XtVRP97TVSE- {\n position: fixed;\n top: 0;\n left: 0;\n z-index: calc(6 - 1);\n z-index: calc(var(--elevation-menu) - 1);\n width: 100%;\n height: 100%;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n";
113
+ var styles$a = {"menu":"aokwZU8jbWU-","overlay":"XtVRP97TVSE-"};
116
114
  styleInject_es.styleInject(css_248z$a);
117
115
 
118
- function DataListAction(
119
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
120
- _) {
121
- return null;
122
- }
123
- function InternalDataListAction({ label, icon, destructive, onClick, item, }) {
124
- const color = destructive ? "critical" : "blue";
125
- return (React__default["default"].createElement("button", { className: styles$a.action, onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick(item) },
126
- icon && React__default["default"].createElement(Icon.Icon, { name: icon, color: color }),
127
- React__default["default"].createElement(Typography.Typography, { textColor: color },
128
- React__default["default"].createElement("span", { className: styles$a.label }, label))));
129
- }
130
-
131
- var css_248z$9 = ".aokwZU8jbWU- {\n position: fixed;\n top: 0;\n top: var(--actions-menu-y, 0);\n left: 0;\n left: var(--actions-menu-x, 0);\n z-index: 6;\n z-index: var(--elevation-menu);\n min-width: 150px;\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(225, 225, 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}\n\n.XtVRP97TVSE- {\n position: fixed;\n top: 0;\n left: 0;\n z-index: calc(6 - 1);\n z-index: calc(var(--elevation-menu) - 1);\n width: 100%;\n height: 100%;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n";
132
- var styles$9 = {"menu":"aokwZU8jbWU-","overlay":"XtVRP97TVSE-"};
133
- styleInject_es.styleInject(css_248z$9);
134
-
135
116
  const EMPTY_RESULTS_MESSAGE = "List is looking empty";
136
117
  const EMPTY_FILTER_RESULTS_MESSAGE = "No results for selected filters";
137
118
  const EMPTY_STATE_ACTION_BUTTON_ONLY_ERROR = "DataListEmptyState action prop must be a Button component";
@@ -163,8 +144,8 @@ function DataListActionsMenu({ visible = false, position, onRequestClose, childr
163
144
  const focusTrapRef = useFocusTrap.useFocusTrap(visible);
164
145
  useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
165
146
  return ReactDOM.createPortal(React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef },
166
- React__default["default"].createElement(framerMotion.motion.div, { role: "menu", ref: setRef, variants: variants$1, initial: "hidden", animate: "visible", exit: "hidden", transition: { duration: TRANSITION_DELAY_IN_SECONDS }, className: styles$9.menu, style: getPositionCssVars(), onClick: onRequestClose }, children),
167
- React__default["default"].createElement("button", { className: styles$9.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))), document.body);
147
+ React__default["default"].createElement(framerMotion.motion.div, { role: "menu", ref: setRef, variants: variants$1, initial: "hidden", animate: "visible", exit: "hidden", transition: { duration: TRANSITION_DELAY_IN_SECONDS }, className: styles$a.menu, style: getPositionCssVars(), onClick: onRequestClose }, children),
148
+ React__default["default"].createElement("button", { className: styles$a.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))), document.body);
168
149
  function getPositionCssVars() {
169
150
  const { posX, posY } = getPosition();
170
151
  return {
@@ -175,7 +156,7 @@ function DataListActionsMenu({ visible = false, position, onRequestClose, childr
175
156
  function getPosition() {
176
157
  const rect = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect();
177
158
  const { width = 0, height = 0 } = rect || {};
178
- const { x = 0, y = 0 } = position;
159
+ const { x, y } = position;
179
160
  const xIsOffScreen = x + width > window.innerWidth;
180
161
  const yIsOffScreen = y + height > window.innerHeight;
181
162
  const xOffSet = x + width - window.innerWidth + foundation.tokens["space-base"];
@@ -186,13 +167,13 @@ function DataListActionsMenu({ visible = false, position, onRequestClose, childr
186
167
  }
187
168
  }
188
169
 
189
- function DataListItemActionsOverflow({ item, actions, }) {
170
+ function DataListItemActionsOverflow({ actions, }) {
190
171
  const [menuPosition, setMenuPosition] = React.useState({ x: 0, y: 0 });
191
172
  const [showMenu, setShowMenu] = React.useState(false);
192
173
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
193
174
  React__default["default"].createElement(Tooltip.Tooltip, { message: "More actions" },
194
175
  React__default["default"].createElement(Button.Button, { icon: "more", ariaLabel: "More actions", type: "secondary", variation: "subtle", onClick: handleMoreClick })),
195
- item && (React__default["default"].createElement(DataListActionsMenu, { visible: showMenu, position: menuPosition, onRequestClose: handleClose }, React.Children.map(actions, action => (React__default["default"].createElement(InternalDataListAction, Object.assign({}, action.props, { item: item }))))))));
176
+ actions && (React__default["default"].createElement(DataListActionsMenu, { visible: showMenu, position: menuPosition, onRequestClose: handleClose }, actions))));
196
177
  function handleMoreClick(event) {
197
178
  setShowMenu(true);
198
179
  const rect = event.currentTarget.getBoundingClientRect();
@@ -205,114 +186,9 @@ function DataListItemActionsOverflow({ item, actions, }) {
205
186
  }
206
187
  }
207
188
 
208
- // This component is meant to capture the props of the DataList.ItemActions
209
- function DataListItemActions(
210
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
211
- _) {
212
- return null;
213
- }
214
- const variants = {
215
- hidden: { opacity: 0, y: 10 },
216
- visible: { opacity: 1, y: 0 },
217
- };
218
- function InternalDataListItemActions({ item, }) {
219
- const { itemActionComponent } = useDataListContext();
220
- if (!itemActionComponent)
221
- return null;
222
- const { children } = itemActionComponent.props;
223
- const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
224
- const exposedActions = getExposedActions(childrenArray);
225
- childrenArray.splice(0, exposedActions.length);
226
- return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
227
- duration: TRANSITION_DURATION_IN_SECONDS,
228
- delay: TRANSITION_DELAY_IN_SECONDS,
229
- }, className: styles$b.menu, onContextMenu: handleContextMenu },
230
- exposedActions.map(({ props }) => {
231
- if (!props.icon)
232
- return null;
233
- return (React__default["default"].createElement(Tooltip.Tooltip, { key: props.label, message: props.label },
234
- React__default["default"].createElement(Button.Button, { icon: props.icon, ariaLabel: props.label, onClick: () => { var _a; return (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, item); }, type: "secondary", variation: "subtle" })));
235
- }),
236
- React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray, item: item })));
237
- }
238
- function handleContextMenu(event) {
239
- event.stopPropagation();
240
- }
241
- function getExposedActions(childrenArray) {
242
- const firstTwoChildren = childrenArray.slice(0, 2);
243
- return firstTwoChildren.reduce((result, child, i) => {
244
- const hasIcon = Boolean(child.props.icon);
245
- const isFirstChild = i === 0;
246
- if (isFirstChild && hasIcon) {
247
- return [...result, child];
248
- }
249
- const isSecondChild = i === 1;
250
- const hasFirstChild = result.length === 1;
251
- if (isSecondChild && hasIcon && hasFirstChild) {
252
- return [...result, child];
253
- }
254
- return result;
255
- }, []);
256
- }
257
-
258
- const DataListLayoutActionsContext = React.createContext({ activeItem: undefined });
259
- function useDataListLayoutActionsContext() {
260
- return React.useContext(DataListLayoutActionsContext);
261
- }
262
-
263
- function DataListItemInternal({ children, item, }) {
264
- const { selected, onSelect } = useDataListContext();
265
- if (selected !== undefined && onSelect) {
266
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles__default["default"].selectable, {
267
- [styles__default["default"].selected]: selected === null || selected === void 0 ? void 0 : selected.length,
268
- }) },
269
- children,
270
- React__default["default"].createElement(Checkbox.Checkbox, { checked: selected === null || selected === void 0 ? void 0 : selected.includes(item.id), onChange: handleChange })));
271
- }
272
- return children;
273
- function handleChange() {
274
- if (selected === null || selected === void 0 ? void 0 : selected.includes(item.id)) {
275
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected === null || selected === void 0 ? void 0 : selected.filter(id => id !== item.id));
276
- }
277
- else if (selected) {
278
- onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selected, item.id]);
279
- }
280
- }
281
- }
282
-
283
- function DataListItemClickableInternal({ onClick, url, to, children, }) {
284
- const { activeItem } = useDataListLayoutActionsContext();
285
- if (!activeItem)
286
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
287
- if (to) {
288
- const computedTo = typeof to === "string" ? to : to(activeItem);
289
- return (React__default["default"].createElement(reactRouterDom.Link, { className: styles__default["default"].listItemClickable, to: computedTo, onClick: handleClick }, children));
290
- }
291
- if (url) {
292
- const href = typeof url === "string" ? url : url(activeItem);
293
- return (React__default["default"].createElement("a", { className: styles__default["default"].listItemClickable, href: href, onClick: handleClick }, children));
294
- }
295
- if (onClick) {
296
- return (React__default["default"].createElement("button", { className: styles__default["default"].listItemClickable, onClick: handleClick }, children));
297
- }
298
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
299
- function handleClick() {
300
- activeItem && (onClick === null || onClick === void 0 ? void 0 : onClick(activeItem));
301
- }
302
- }
303
-
304
- function DataListItemClickable({ children }) {
305
- const { itemActionComponent } = useDataListContext();
306
- if (itemActionComponent) {
307
- const props = itemActionComponent.props;
308
- return (React__default["default"].createElement(DataListItemClickableInternal, Object.assign({}, props), children));
309
- }
310
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
311
- }
312
-
313
- var css_248z$8 = ".WRV-UmQmPzo- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n overflow: hidden;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.liQeWCMenD0- {\n --overflow-bg: var(--data-list-item-active-color, var(--color-surface));\n\n display: -ms-flexbox;\n\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n padding-left: calc(16px * 1);\n padding-left: var(--space-base);\n background-image: linear-gradient(\n 90deg,\n transparent 0,\n rgba(255, 255, 255, 1) calc(16px * 1),\n rgba(255, 255, 255, 1) 100%\n );\n background-image: linear-gradient(\n 90deg,\n transparent 0,\n var(--overflow-bg) var(--space-base),\n var(--overflow-bg) 100%\n );\n -ms-flex-align: center;\n align-items: center;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n";
314
- var styles$8 = {"tags":"WRV-UmQmPzo-","tagCount":"liQeWCMenD0-"};
315
- styleInject_es.styleInject(css_248z$8);
189
+ var css_248z$9 = ".WRV-UmQmPzo- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n overflow: hidden;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.liQeWCMenD0- {\n --overflow-bg: var(--data-list-item-active-color, var(--color-surface));\n\n display: -ms-flexbox;\n\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n padding-left: calc(16px * 1);\n padding-left: var(--space-base);\n background-image: linear-gradient(\n 90deg,\n transparent 0,\n rgba(255, 255, 255, 1) calc(16px * 1),\n rgba(255, 255, 255, 1) 100%\n );\n background-image: linear-gradient(\n 90deg,\n transparent 0,\n var(--overflow-bg) var(--space-base),\n var(--overflow-bg) 100%\n );\n -ms-flex-align: center;\n align-items: center;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n";
190
+ var styles$9 = {"tags":"WRV-UmQmPzo-","tagCount":"liQeWCMenD0-"};
191
+ styleInject_es.styleInject(css_248z$9);
316
192
 
317
193
  function DataListTags({ items }) {
318
194
  const ref = React.useRef(null);
@@ -332,10 +208,10 @@ function DataListTags({ items }) {
332
208
  elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.unobserve(element));
333
209
  };
334
210
  }, [items]);
335
- return (React__default["default"].createElement("div", { className: styles$8.tags, ref: ref },
211
+ return (React__default["default"].createElement("div", { className: styles$9.tags, ref: ref },
336
212
  items.filter(Boolean).map((tag, index) => (React__default["default"].createElement("div", { key: tag, "data-tag-element": index },
337
213
  React__default["default"].createElement(InlineLabel.InlineLabel, null, tag)))),
338
- Boolean(visibleItems) && (React__default["default"].createElement("div", { className: styles$8.tagCount },
214
+ Boolean(visibleItems) && (React__default["default"].createElement("div", { className: styles$9.tagCount },
339
215
  React__default["default"].createElement(Text.Text, null,
340
216
  "+",
341
217
  visibleItems)))));
@@ -364,22 +240,22 @@ function buildIntersectionThreshold(items) {
364
240
  return thresholds;
365
241
  }
366
242
 
367
- var css_248z$7 = ".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.UG8cHUT3Hds- {\n cursor: pointer;\n}\n";
368
- var styles$7 = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
369
- styleInject_es.styleInject(css_248z$7);
243
+ var css_248z$8 = ".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.UG8cHUT3Hds- {\n cursor: pointer;\n}\n";
244
+ var styles$8 = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
245
+ styleInject_es.styleInject(css_248z$8);
370
246
 
371
- var css_248z$6 = ".AN5egORYy-0- {\n padding-right: calc(16px / 2);\n padding-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-greyBlue);\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-blue);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(193, 201, 206);\n fill: var(--color-greyBlue--lighter);\n}\n";
372
- var styles$6 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
373
- styleInject_es.styleInject(css_248z$6);
247
+ var css_248z$7 = ".AN5egORYy-0- {\n padding-right: calc(16px / 2);\n padding-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-greyBlue);\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-blue);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(193, 201, 206);\n fill: var(--color-greyBlue--lighter);\n}\n";
248
+ var styles$7 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
249
+ styleInject_es.styleInject(css_248z$7);
374
250
 
375
251
  const SORTING_ICON_TEST_ID = "ATL-DataList-Sorting-Icon";
376
252
  function DataListSortingArrows({ order }) {
377
- return (React__default["default"].createElement("div", { className: styles$6.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
253
+ return (React__default["default"].createElement("div", { className: styles$7.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
378
254
  React__default["default"].createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
379
255
  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" }),
380
256
  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" }))));
381
257
  function getActiveClassName(targetOrder) {
382
- return order === targetOrder ? styles$6.active : styles$6.inactive;
258
+ return order === targetOrder ? styles$7.active : styles$7.inactive;
383
259
  }
384
260
  }
385
261
 
@@ -388,8 +264,8 @@ function DataListHeaderTile({ headers, headerKey, }) {
388
264
  const isSortable = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.includes(headerKey);
389
265
  const sortingState = sorting === null || sorting === void 0 ? void 0 : sorting.state;
390
266
  const Tag = isSortable ? "button" : "div";
391
- return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$7.headerLabel, {
392
- [styles$7.sortable]: isSortable,
267
+ return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$8.headerLabel, {
268
+ [styles$8.sortable]: isSortable,
393
269
  }), onClick: handleOnClick },
394
270
  React__default["default"].createElement(Text.Text, { maxLines: "single" }, headers[headerKey]),
395
271
  (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key) === headerKey && (React__default["default"].createElement(DataListSortingArrows, { order: sortingState.order }))));
@@ -465,6 +341,109 @@ function generateHeaderElements(headers) {
465
341
  function sortSizeProp(sizeProp) {
466
342
  return sizeProp.sort((a, b) => BREAKPOINTS.indexOf(a) - BREAKPOINTS.indexOf(b));
467
343
  }
344
+ function getExposedActions(childrenArray, childCount = 2) {
345
+ const firstNChildren = childrenArray.slice(0, childCount);
346
+ return firstNChildren.reduce((result, child, i) => {
347
+ const hasIcon = Boolean(child.props.icon);
348
+ if (!hasIcon)
349
+ return result; // If the child does not have an icon, continue.
350
+ const isLastChildAdded = result.length === i;
351
+ // If it's the first child or if the previous child was added, then add this child.
352
+ if (i === 0 || (i < childCount && isLastChildAdded)) {
353
+ return [...result, child];
354
+ }
355
+ return result;
356
+ }, []);
357
+ }
358
+
359
+ // This component is meant to capture the props of the DataList.ItemActions
360
+ function DataListItemActions(
361
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
362
+ _) {
363
+ return null;
364
+ }
365
+ const variants = {
366
+ hidden: { opacity: 0, y: 10 },
367
+ visible: { opacity: 1, y: 0 },
368
+ };
369
+ function InternalDataListItemActions({ item, }) {
370
+ const { itemActionComponent } = useDataListContext();
371
+ if (!itemActionComponent)
372
+ return null;
373
+ const { children } = itemActionComponent.props;
374
+ const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
375
+ const exposedActions = getExposedActions(childrenArray);
376
+ childrenArray.splice(0, exposedActions.length);
377
+ return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
378
+ duration: TRANSITION_DURATION_IN_SECONDS,
379
+ delay: TRANSITION_DELAY_IN_SECONDS,
380
+ }, className: styles$b.menu, onContextMenu: handleContextMenu },
381
+ exposedActions.map(({ props }) => {
382
+ if (!props.icon)
383
+ return null;
384
+ return (React__default["default"].createElement(Tooltip.Tooltip, { key: props.label, message: props.label },
385
+ React__default["default"].createElement(Button.Button, { icon: props.icon, ariaLabel: props.label, onClick: () => { var _a; return (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, item); }, type: "secondary", variation: "subtle" })));
386
+ }),
387
+ Boolean(childrenArray.length) && (React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray }))));
388
+ }
389
+ function handleContextMenu(event) {
390
+ event.stopPropagation();
391
+ }
392
+
393
+ const DataListLayoutActionsContext = React.createContext({ activeItem: undefined });
394
+ function useDataListLayoutActionsContext() {
395
+ return React.useContext(DataListLayoutActionsContext);
396
+ }
397
+
398
+ function DataListItemInternal({ children, item, }) {
399
+ const { selected, onSelect } = useDataListContext();
400
+ if (selected !== undefined && onSelect) {
401
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.selectable, {
402
+ [styles$e.selected]: selected === null || selected === void 0 ? void 0 : selected.length,
403
+ }) },
404
+ children,
405
+ React__default["default"].createElement(Checkbox.Checkbox, { checked: selected === null || selected === void 0 ? void 0 : selected.includes(item.id), onChange: handleChange })));
406
+ }
407
+ return children;
408
+ function handleChange() {
409
+ if (selected === null || selected === void 0 ? void 0 : selected.includes(item.id)) {
410
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected === null || selected === void 0 ? void 0 : selected.filter(id => id !== item.id));
411
+ }
412
+ else if (selected) {
413
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selected, item.id]);
414
+ }
415
+ }
416
+ }
417
+
418
+ function DataListItemClickableInternal({ onClick, url, to, children, }) {
419
+ const { activeItem } = useDataListLayoutActionsContext();
420
+ if (!activeItem)
421
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
422
+ if (to) {
423
+ const computedTo = typeof to === "string" ? to : to(activeItem);
424
+ return (React__default["default"].createElement(reactRouterDom.Link, { className: styles$e.listItemClickable, to: computedTo, onClick: handleClick }, children));
425
+ }
426
+ if (url) {
427
+ const href = typeof url === "string" ? url : url(activeItem);
428
+ return (React__default["default"].createElement("a", { className: styles$e.listItemClickable, href: href, onClick: handleClick }, children));
429
+ }
430
+ if (onClick) {
431
+ return (React__default["default"].createElement("button", { className: styles$e.listItemClickable, onClick: handleClick }, children));
432
+ }
433
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
434
+ function handleClick() {
435
+ activeItem && (onClick === null || onClick === void 0 ? void 0 : onClick(activeItem));
436
+ }
437
+ }
438
+
439
+ function DataListItemClickable({ children }) {
440
+ const { itemActionComponent } = useDataListContext();
441
+ if (itemActionComponent) {
442
+ const props = itemActionComponent.props;
443
+ return (React__default["default"].createElement(DataListItemClickableInternal, Object.assign({}, props), children));
444
+ }
445
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
446
+ }
468
447
 
469
448
  function DataListItem({ item, layout, }) {
470
449
  const { itemActionComponent } = useDataListContext();
@@ -476,15 +455,14 @@ function DataListItem({ item, layout, }) {
476
455
  const isContextMenuVisible = Boolean(contextPosition);
477
456
  const shouldShowContextMenu = showMenu && isContextMenuVisible && Boolean(contextMenuActions);
478
457
  return (React__default["default"].createElement(DataListLayoutActionsContext.Provider, { value: { activeItem: item } },
479
- React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles__default["default"].listItem, {
480
- [styles__default["default"].active]: showMenu && isContextMenuVisible,
458
+ React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$e.listItem, {
459
+ [styles$e.active]: showMenu && isContextMenuVisible,
481
460
  }), key: item.id },
482
461
  React__default["default"].createElement(DataListItemInternal, { item: item },
483
462
  React__default["default"].createElement(DataListItemClickable, null, layout.props.children(generatedItem))),
484
463
  React__default["default"].createElement(framerMotion.AnimatePresence, null,
485
464
  showMenu && !hasInLayoutActions && (React__default["default"].createElement(InternalDataListItemActions, { item: item })),
486
- React__default["default"].createElement(DataListActionsMenu, { key: item.id, visible: shouldShowContextMenu, position: contextPosition || { x: 0, y: 0 }, onRequestClose: () => setContextPosition(undefined) }, contextMenuActions &&
487
- React.Children.map(contextMenuActions, action => (React__default["default"].createElement(InternalDataListAction, Object.assign({ key: item.id }, action.props, { item: item })))))))));
465
+ React__default["default"].createElement(DataListActionsMenu, { key: item.id, visible: shouldShowContextMenu, position: contextPosition || { x: 0, y: 0 }, onRequestClose: () => setContextPosition(undefined) }, contextMenuActions)))));
488
466
  function handleShowMenu() {
489
467
  setShowMenu(true);
490
468
  }
@@ -544,21 +522,93 @@ function DataListItems({ layouts, mediaMatches, data, }) {
544
522
  React__default["default"].createElement(DataListLayoutInternal, { layouts: layouts, mediaMatches: mediaMatches, renderLayout: layout => (React__default["default"].createElement(React__default["default"].Fragment, null, data.map((child, i) => (React__default["default"].createElement(DataListItem, { key: data[i].id, index: i, item: child, layout: layout }))))) })));
545
523
  }
546
524
 
525
+ const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
526
+
527
+ var css_248z$6 = ".jbBRoxlZlNI- {\n -ms-flex-item-align: center;\n align-self: center;\n position: relative;\n min-width: 0;\n}\n\n.MnN8qbS4hw4- {\n display: grid;\n overflow-x: auto;\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.MnN8qbS4hw4- > :nth-child(n + 3):not(:last-child) {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\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: 0;\n}\n\n.Jf227kC8Nu0-::after {\n --data-list-overflow-shadow-angle: to left;\n right: 0;\n}\n";
528
+ var styles$6 = {"fadeContainer":"jbBRoxlZlNI-","overflowGrid":"MnN8qbS4hw4-","overflowTrigger":"b-5P7Z8eGO8-","overflowLeft":"xzaCS4slLpI-","overflowRight":"Jf227kC8Nu0-"};
529
+ styleInject_es.styleInject(css_248z$6);
530
+
531
+ function DataListOverflowFade({ children }) {
532
+ const [leftRef, isLeftVisible] = useInView.useInView();
533
+ const [rightRef, isRightVisible] = useInView.useInView();
534
+ return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$6.fadeContainer, {
535
+ [styles$6.overflowLeft]: !isLeftVisible,
536
+ [styles$6.overflowRight]: !isRightVisible,
537
+ }) },
538
+ React__default["default"].createElement("div", { className: styles$6.overflowGrid },
539
+ React__default["default"].createElement("span", { ref: leftRef, className: styles$6.overflowTrigger }),
540
+ children,
541
+ React__default["default"].createElement("span", { ref: rightRef, className: styles$6.overflowTrigger }))));
542
+ }
543
+
544
+ // This component is meant to capture the props of the DataList.BulkActions
545
+ function DataListBulkActions(
546
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
547
+ _) {
548
+ return null;
549
+ }
550
+ function InternalDataListBulkActions() {
551
+ const { bulkActionsComponent } = useDataListContext();
552
+ if (!bulkActionsComponent)
553
+ return null;
554
+ const { children } = bulkActionsComponent.props;
555
+ const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
556
+ const exposedActions = getExposedActions(childrenArray, 3);
557
+ childrenArray.splice(0, exposedActions.length);
558
+ return (React__default["default"].createElement(DataListOverflowFade, null,
559
+ exposedActions.map(({ props }) => {
560
+ if (!props.icon)
561
+ return null;
562
+ return (React__default["default"].createElement(Tooltip.Tooltip, { key: props.label, message: props.label },
563
+ React__default["default"].createElement(Button.Button, { icon: props.icon, ariaLabel: props.label, onClick: () => { var _a; return (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props); }, type: "secondary", variation: "subtle" })));
564
+ }),
565
+ React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray })));
566
+ }
567
+
568
+ function useMediaQuery(CSSMediaQuery) {
569
+ const [matches, setMatches] = React.useState(window.matchMedia(CSSMediaQuery).matches);
570
+ React.useEffect(() => {
571
+ const media = window.matchMedia(CSSMediaQuery);
572
+ if (media.matches !== matches) {
573
+ setMatches(media.matches);
574
+ }
575
+ const listener = () => setMatches(media.matches);
576
+ media.addEventListener("change", listener);
577
+ return () => media.removeEventListener("change", listener);
578
+ }, [CSSMediaQuery]);
579
+ return matches;
580
+ }
581
+
582
+ function useResponsiveSizing() {
583
+ const xs = useMediaQuery(`(width > ${BREAKPOINT_SIZES.xs}px)`);
584
+ const sm = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.sm}px)`);
585
+ const md = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.md}px)`);
586
+ const lg = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.lg}px)`);
587
+ const xl = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.xl}px)`);
588
+ return { xs, sm, md, lg, xl };
589
+ }
590
+
547
591
  function DataListHeaderCheckbox({ children }) {
548
592
  const { data, totalCount, selected = [], onSelectAll, onSelect, } = useDataListContext();
549
593
  if (!onSelectAll && !onSelect)
550
594
  return children;
595
+ const { sm } = useResponsiveSizing();
596
+ // Show "Deselect All" if breakpoint is sm or higher
597
+ const deselectText = sm ? "Deselect All" : "Deselect";
598
+ const selectedLabel = selected.length ? `${selected.length} selected` : "";
551
599
  return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.selectable) },
552
600
  React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.selectAllCheckbox, {
553
601
  [styles$e.visible]: Boolean(onSelectAll),
554
602
  }) },
555
- React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: selected.length > 0 && !isAllSelected(), onChange: onSelectAll })),
603
+ React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: selected.length > 0 && !isAllSelected(), onChange: onSelectAll },
604
+ React__default["default"].createElement("div", { className: styles$e.srOnly }, selectedLabel))),
556
605
  React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: Boolean(selected.length), initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$e.headerBatchSelect },
557
606
  React__default["default"].createElement(Text.Text, null,
558
607
  React__default["default"].createElement("b", null,
559
608
  selected.length,
560
609
  " selected")),
561
- React__default["default"].createElement(Button.Button, { label: "Deselect All", onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect([]), type: "tertiary" })) })));
610
+ React__default["default"].createElement(Button.Button, { label: deselectText, onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect([]), type: "tertiary" }),
611
+ React__default["default"].createElement(InternalDataListBulkActions, null)) })));
562
612
  function isAllSelected() {
563
613
  // If there's a totalCount, we can use that to accurately determine if the
564
614
  // user have "selected all".
@@ -573,29 +623,6 @@ function DataListHeaderCheckbox({ children }) {
573
623
  }
574
624
  }
575
625
 
576
- function useMediaQuery(CSSMediaQuery) {
577
- const [matches, setMatches] = React.useState(window.matchMedia(CSSMediaQuery).matches);
578
- React.useEffect(() => {
579
- const media = window.matchMedia(CSSMediaQuery);
580
- if (media.matches !== matches) {
581
- setMatches(media.matches);
582
- }
583
- const listener = () => setMatches(media.matches);
584
- media.addEventListener("change", listener);
585
- return () => media.removeEventListener("change", listener);
586
- }, [CSSMediaQuery]);
587
- return matches;
588
- }
589
-
590
- function useResponsiveSizing() {
591
- const xs = useMediaQuery(`(width > ${BREAKPOINT_SIZES.xs}px)`);
592
- const sm = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.sm}px)`);
593
- const md = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.md}px)`);
594
- const lg = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.lg}px)`);
595
- const xl = useMediaQuery(`(width >= ${BREAKPOINT_SIZES.xl}px)`);
596
- return { xs, sm, md, lg, xl };
597
- }
598
-
599
626
  function useShowHeader() {
600
627
  const { headerVisibility } = useDataListContext();
601
628
  if (headerVisibility === undefined)
@@ -612,7 +639,9 @@ function useShowHeader() {
612
639
 
613
640
  function DataListHeader({ layouts, mediaMatches, headerData, }) {
614
641
  const showHeader = useShowHeader();
615
- if (!showHeader || !headerData)
642
+ const { selected } = useDataListContext();
643
+ const noItemsSelected = (selected === null || selected === void 0 ? void 0 : selected.length) === 0;
644
+ if ((!showHeader && noItemsSelected) || !headerData)
616
645
  return null;
617
646
  return (React__default["default"].createElement(DataListLayoutInternal, { layouts: layouts, mediaMatches: mediaMatches, renderLayout: layout => (React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.headerTitles) },
618
647
  React__default["default"].createElement(DataListHeaderCheckbox, null, layout.props.children(headerData)))) }));
@@ -647,12 +676,6 @@ _) {
647
676
  return React__default["default"].createElement(React__default["default"].Fragment, null);
648
677
  }
649
678
 
650
- var css_248z$5 = ".E-mG3prPSN8- {\n -ms-flex-item-align: center;\n align-self: center;\n position: relative;\n min-width: 0;\n}\n\n._0LGNoZxtqSE- {\n display: grid;\n overflow-x: auto;\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._0LGNoZxtqSE- > :nth-child(n + 3):not(:last-child) {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n\n.LA3-gtgehrE- {\n visibility: hidden;\n}\n\n.fSPvawYWzZ8-::before,\n.ChfEJMPPVTk-::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-filters-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.fSPvawYWzZ8-::before {\n left: 0;\n}\n\n.ChfEJMPPVTk-::after {\n --data-list-filters-overflow-shadow-angle: to left;\n right: 0;\n}\n";
651
- var styles$5 = {"filters":"E-mG3prPSN8-","filterActions":"_0LGNoZxtqSE-","overflowTrigger":"LA3-gtgehrE-","overflowLeft":"fSPvawYWzZ8-","overflowRight":"ChfEJMPPVTk-"};
652
- styleInject_es.styleInject(css_248z$5);
653
-
654
- const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
655
-
656
679
  function DataListSort() {
657
680
  const { sorting, headers } = useDataListContext();
658
681
  const divRef = React.useRef(null);
@@ -719,25 +742,17 @@ function InternalDataListFilters() {
719
742
  const showHeader = useShowHeader();
720
743
  const showSortButton = !showHeader;
721
744
  const component = getCompoundComponent(parentChildren, DataListFilters);
722
- const [leftRef, isLeftVisible] = useInView.useInView();
723
- const [rightRef, isRightVisible] = useInView.useInView();
724
745
  if (!showSortButton && !component)
725
746
  return null;
726
747
  const children = component === null || component === void 0 ? void 0 : component.props.children;
727
- return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$5.filters, {
728
- [styles$5.overflowLeft]: !isLeftVisible,
729
- [styles$5.overflowRight]: !isRightVisible,
730
- }) },
731
- React__default["default"].createElement("div", { className: styles$5.filterActions },
732
- React__default["default"].createElement("span", { ref: leftRef, className: styles$5.overflowTrigger }),
733
- children && children,
734
- showSortButton && React__default["default"].createElement(DataListSort, null),
735
- React__default["default"].createElement("span", { ref: rightRef, className: styles$5.overflowTrigger }))));
748
+ return (React__default["default"].createElement(DataListOverflowFade, null,
749
+ children && children,
750
+ showSortButton && React__default["default"].createElement(DataListSort, null)));
736
751
  }
737
752
 
738
- var css_248z$4 = ".PGOHzrMh374- {\n --offset: 1px;\n --sticky-header-transition-properties: var(--timing-base) ease-in-out;\n\n position: sticky;\n top: calc(1px * -1);\n top: calc(var(--offset) * -1);\n z-index: 1;\n z-index: var(--elevation-base);\n padding-top: 1px;\n padding-top: var(--offset);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n/**\n * Draw a border that gets covered by the column headers border when it shows up.\n *\n * Mostly to prevent us from writing some complex JS to remove the border when\n * the column headers show up.\n */\n\n.PGOHzrMh374-::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: -1;\n width: 0;\n height: 0;\n background-color: rgb(225, 225, 225);\n background-color: var(--color-border);\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n transition: height var(--sticky-header-transition-properties)\n 100ms,\n width var(--sticky-header-transition-properties);\n transition: height var(--sticky-header-transition-properties)\n var(--timing-quick),\n width var(--sticky-header-transition-properties);\n}\n\n.PGjWc5ocjpI-::before {\n width: 100%;\n height: calc(16px / 8);\n height: var(--border-thick);\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) 100ms;\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) var(--timing-quick);\n}\n";
739
- var styles$4 = {"header":"PGOHzrMh374-","stuck":"PGjWc5ocjpI-"};
740
- styleInject_es.styleInject(css_248z$4);
753
+ var css_248z$5 = ".PGOHzrMh374- {\n --offset: 1px;\n --sticky-header-transition-properties: var(--timing-base) ease-in-out;\n\n position: sticky;\n top: calc(1px * -1);\n top: calc(var(--offset) * -1);\n z-index: 1;\n z-index: var(--elevation-base);\n padding-top: 1px;\n padding-top: var(--offset);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n/**\n * Draw a border that gets covered by the column headers border when it shows up.\n *\n * Mostly to prevent us from writing some complex JS to remove the border when\n * the column headers show up.\n */\n\n.PGOHzrMh374-::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: -1;\n width: 0;\n height: 0;\n background-color: rgb(225, 225, 225);\n background-color: var(--color-border);\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n transition: height var(--sticky-header-transition-properties)\n 100ms,\n width var(--sticky-header-transition-properties);\n transition: height var(--sticky-header-transition-properties)\n var(--timing-quick),\n width var(--sticky-header-transition-properties);\n}\n\n.PGjWc5ocjpI-::before {\n width: 100%;\n height: calc(16px / 8);\n height: var(--border-thick);\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) 100ms;\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) var(--timing-quick);\n}\n";
754
+ var styles$5 = {"header":"PGOHzrMh374-","stuck":"PGjWc5ocjpI-"};
755
+ styleInject_es.styleInject(css_248z$5);
741
756
 
742
757
  function DataListStickyHeader({ children }) {
743
758
  const [isStuck, setIsStuck] = React.useState(false);
@@ -752,12 +767,12 @@ function DataListStickyHeader({ children }) {
752
767
  ref.current && observer.unobserve(ref.current);
753
768
  };
754
769
  }, [handleObserver, ref.current]);
755
- return (React__default["default"].createElement("div", { ref: ref, className: classnames__default["default"](styles$4.header, { [styles$4.stuck]: isStuck }) }, children));
770
+ return (React__default["default"].createElement("div", { ref: ref, className: classnames__default["default"](styles$5.header, { [styles$5.stuck]: isStuck }) }, children));
756
771
  }
757
772
 
758
- var css_248z$3 = ".SaPMOnvw-3c- {\n --transition-properties: var(--timing-base) ease-in-out;\n --button-offset: calc(var(--space-largest) - var(--space-smallest));\n\n position: absolute;\n /* Inputs are off by 1 when put beside a button */\n top: calc((16px / 2) + 1px);\n top: calc(calc(16px / 2) + 1px);\n top: calc(var(--space-small) + 1px);\n right: calc((16px * 3) - (16px / 8));\n right: calc(calc(16px * 3) - calc(16px / 8));\n right: var(--button-offset);\n visibility: hidden;\n width: 0;\n opacity: 0;\n transition: opacity 200ms ease-in-out,\n width 200ms ease-in-out, visibility 200ms ease-in-out;\n transition: opacity var(--transition-properties),\n width var(--transition-properties), visibility var(--transition-properties);\n}\n\n._3S1-91v2SYI- {\n visibility: visible;\n width: calc(100% - var(--button-offset));\n opacity: 1;\n}\n\n@media (min-width: 768px) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n }\n\n._9GlBktsUALw- {\n display: block;\n}\n\n@media (min-width: 768px) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n/*\n * No Filters Styling\n *\n * When there are no filters, the search input is always visible.\n * ------------------------------------------------------------------------- */\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n\n@media (min-width: 768px) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n._3Pjrt42x454- ._9GlBktsUALw- {\n display: none;\n}\n";
759
- var styles$3 = {"searchInput":"SaPMOnvw-3c-","searchInputVisible":"_3S1-91v2SYI-","searchButton":"_9GlBktsUALw-","withNoFilters":"_3Pjrt42x454-"};
760
- styleInject_es.styleInject(css_248z$3);
773
+ var css_248z$4 = ".SaPMOnvw-3c- {\n --transition-properties: var(--timing-base) ease-in-out;\n --button-offset: calc(var(--space-largest) - var(--space-smallest));\n\n position: absolute;\n /* Inputs are off by 1 when put beside a button */\n top: calc((16px / 2) + 1px);\n top: calc(calc(16px / 2) + 1px);\n top: calc(var(--space-small) + 1px);\n right: calc((16px * 3) - (16px / 8));\n right: calc(calc(16px * 3) - calc(16px / 8));\n right: var(--button-offset);\n visibility: hidden;\n width: 0;\n opacity: 0;\n transition: opacity 200ms ease-in-out,\n width 200ms ease-in-out, visibility 200ms ease-in-out;\n transition: opacity var(--transition-properties),\n width var(--transition-properties), visibility var(--transition-properties);\n}\n\n._3S1-91v2SYI- {\n visibility: visible;\n width: calc(100% - var(--button-offset));\n opacity: 1;\n}\n\n@media (min-width: 768px) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n }\n\n._9GlBktsUALw- {\n display: block;\n}\n\n@media (min-width: 768px) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n/*\n * No Filters Styling\n *\n * When there are no filters, the search input is always visible.\n * ------------------------------------------------------------------------- */\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n\n@media (min-width: 768px) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n._3Pjrt42x454- ._9GlBktsUALw- {\n display: none;\n}\n";
774
+ var styles$4 = {"searchInput":"SaPMOnvw-3c-","searchInputVisible":"_3S1-91v2SYI-","searchButton":"_9GlBktsUALw-","withNoFilters":"_3Pjrt42x454-"};
775
+ styleInject_es.styleInject(css_248z$4);
761
776
 
762
777
  const DATA_LIST_SEARCH_TEST_ID = "ATL-DataList-Search-input-wrapper";
763
778
  // This component is meant to capture the props of the DataList.Search
@@ -777,13 +792,13 @@ function InternalDataListSearch() {
777
792
  return null;
778
793
  const { placeholder } = searchComponent.props;
779
794
  return (React__default["default"].createElement("div", { className: classnames__default["default"]({
780
- [styles$3.withNoFilters]: !filterComponent && !sorting,
795
+ [styles$4.withNoFilters]: !filterComponent && !sorting,
781
796
  }) },
782
- React__default["default"].createElement("div", { "data-testid": DATA_LIST_SEARCH_TEST_ID, className: classnames__default["default"](styles$3.searchInput, {
783
- [styles$3.searchInputVisible]: visible,
797
+ React__default["default"].createElement("div", { "data-testid": DATA_LIST_SEARCH_TEST_ID, className: classnames__default["default"](styles$4.searchInput, {
798
+ [styles$4.searchInputVisible]: visible,
784
799
  }) },
785
800
  React__default["default"].createElement(InputText.InputText, { ref: inputRef, placeholder: getPlaceholder(), onChange: debouncedSearch, prefix: { icon: "search" }, size: "small" })),
786
- React__default["default"].createElement("div", { className: styles$3.searchButton },
801
+ React__default["default"].createElement("div", { className: styles$4.searchButton },
787
802
  React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: visible, initialChild: React__default["default"].createElement(Button.Button, { variation: "subtle", icon: "search", ariaLabel: "Search", onClick: toggleSearch }), switchTo: React__default["default"].createElement(Button.Button, { variation: "subtle", icon: "remove", ariaLabel: "Close search bar", onClick: toggleSearch }) }))));
788
803
  function getPlaceholder() {
789
804
  if (placeholder)
@@ -801,9 +816,9 @@ function InternalDataListSearch() {
801
816
  }
802
817
  }
803
818
 
804
- var css_248z$2 = ".zg3w9nQga-M- {\n display: -ms-flexbox;\n display: flex;\n box-sizing: border-box;\n padding: calc(16px * 1);\n padding: var(--space-base);\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-direction: column;\n flex-direction: column;\n row-gap: calc(16px * 1);\n row-gap: var(--space-base);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex: 1;\n flex: 1;\n}\n";
805
- var styles$2 = {"emptyStateWrapper":"zg3w9nQga-M-"};
806
- styleInject_es.styleInject(css_248z$2);
819
+ var css_248z$3 = ".zg3w9nQga-M- {\n display: -ms-flexbox;\n display: flex;\n box-sizing: border-box;\n padding: calc(16px * 1);\n padding: var(--space-base);\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-direction: column;\n flex-direction: column;\n row-gap: calc(16px * 1);\n row-gap: var(--space-base);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex: 1;\n flex: 1;\n}\n";
820
+ var styles$3 = {"emptyStateWrapper":"zg3w9nQga-M-"};
821
+ styleInject_es.styleInject(css_248z$3);
807
822
 
808
823
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
809
824
  function DataListEmptyState(_) {
@@ -812,7 +827,7 @@ function DataListEmptyState(_) {
812
827
  function InternalDataListEmptyState() {
813
828
  const { emptyStateComponents: components, filtered } = React.useContext(DataListContext);
814
829
  const { message, action } = getMessages();
815
- return (React__default["default"].createElement("div", { className: styles$2.emptyStateWrapper },
830
+ return (React__default["default"].createElement("div", { className: styles$3.emptyStateWrapper },
816
831
  React__default["default"].createElement(Text.Text, { align: "center" }, message),
817
832
  renderButton(action)));
818
833
  function getMessages() {
@@ -846,9 +861,9 @@ function getEmptyStates(components) {
846
861
  return { defaultEmptyState, filteredEmptyState };
847
862
  }
848
863
 
849
- var css_248z$1 = ".IC-Y9bTIVFo- {\n position: relative;\n -webkit-transform: translateY(calc((16px * 3) * -1));\n -webkit-transform: translateY(calc(calc(16px * 3) * -1));\n -webkit-transform: translateY(calc(var(--space-largest) * -1));\n transform: translateY(calc((16px * 3) * -1));\n transform: translateY(calc(calc(16px * 3) * -1));\n transform: translateY(calc(var(--space-largest) * -1));\n}\n\n.PbZLGpbI6ZM-,\n._6zA6B-jmz6o- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: calc(16px / 2);\n padding: var(--space-small);\n}\n\n._6zA6B-jmz6o- {\n opacity: 0;\n -webkit-animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n -webkit-animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n}\n\n@-webkit-keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";
850
- var styles$1 = {"trigger":"IC-Y9bTIVFo-","loadingMore":"PbZLGpbI6ZM-","backToTop":"_6zA6B-jmz6o-","fadeIn":"gZ4DUv82g5I-"};
851
- styleInject_es.styleInject(css_248z$1);
864
+ var css_248z$2 = ".IC-Y9bTIVFo- {\n position: relative;\n -webkit-transform: translateY(calc((16px * 3) * -1));\n -webkit-transform: translateY(calc(calc(16px * 3) * -1));\n -webkit-transform: translateY(calc(var(--space-largest) * -1));\n transform: translateY(calc((16px * 3) * -1));\n transform: translateY(calc(calc(16px * 3) * -1));\n transform: translateY(calc(var(--space-largest) * -1));\n}\n\n.PbZLGpbI6ZM-,\n._6zA6B-jmz6o- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: calc(16px / 2);\n padding: var(--space-small);\n}\n\n._6zA6B-jmz6o- {\n opacity: 0;\n -webkit-animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n -webkit-animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n}\n\n@-webkit-keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";
865
+ var styles$2 = {"trigger":"IC-Y9bTIVFo-","loadingMore":"PbZLGpbI6ZM-","backToTop":"_6zA6B-jmz6o-","fadeIn":"gZ4DUv82g5I-"};
866
+ styleInject_es.styleInject(css_248z$2);
852
867
 
853
868
  function DataListLoadMoreTrigger() {
854
869
  const { onLoadMore } = useDataListContext();
@@ -856,7 +871,7 @@ function DataListLoadMoreTrigger() {
856
871
  React.useEffect(() => {
857
872
  isInView && (onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore());
858
873
  }, [isInView]);
859
- return (React__default["default"].createElement("div", { ref: inViewRef, className: styles$1.trigger, "data-testid": DATA_LOAD_MORE_TEST_ID }));
874
+ return (React__default["default"].createElement("div", { ref: inViewRef, className: styles$2.trigger, "data-testid": DATA_LOAD_MORE_TEST_ID }));
860
875
  }
861
876
 
862
877
  const MAX_DATA_COUNT = 50;
@@ -865,12 +880,33 @@ function DataListLoadMore({ onBackToTop }) {
865
880
  const showBackToTop = data.length > MAX_DATA_COUNT && loadingState !== "loadingMore";
866
881
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
867
882
  React__default["default"].createElement(DataListLoadMoreTrigger, { key: data.length }),
868
- loadingState === "loadingMore" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_LOADING_MORE_SPINNER_TEST_ID, className: styles$1.loadingMore },
883
+ loadingState === "loadingMore" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_LOADING_MORE_SPINNER_TEST_ID, className: styles$2.loadingMore },
869
884
  React__default["default"].createElement(Spinner.Spinner, { size: "small" }))),
870
- showBackToTop && (React__default["default"].createElement("div", { className: styles$1.backToTop },
885
+ showBackToTop && (React__default["default"].createElement("div", { className: styles$2.backToTop },
871
886
  React__default["default"].createElement(Button.Button, { label: "Back to top", onClick: onBackToTop, size: "small", variation: "subtle" })))));
872
887
  }
873
888
 
889
+ var css_248z$1 = ".iyg43v-S9yU- {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n min-height: 44px;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: none;\n border-radius: 0;\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 text-align: left;\n background: none;\n cursor: pointer;\n transition: background 200ms ease;\n transition: background var(--timing-base) ease;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.iyg43v-S9yU-:hover,\n.iyg43v-S9yU-:focus {\n background-color: rgb(250, 246, 219);\n background-color: var(--color-surface--hover);\n}\n\n.AUJNqz93ZDA- {\n font-weight: 500;\n}\n";
890
+ var styles$1 = {"action":"iyg43v-S9yU-","label":"AUJNqz93ZDA-"};
891
+ styleInject_es.styleInject(css_248z$1);
892
+
893
+ function DataListAction({ label, icon, destructive, onClick, }) {
894
+ const { activeItem } = useDataListLayoutActionsContext();
895
+ const color = destructive ? "critical" : "blue";
896
+ return (React__default["default"].createElement("button", { className: styles$1.action, onClick: handleClick },
897
+ icon && React__default["default"].createElement(Icon.Icon, { name: icon, color: color }),
898
+ React__default["default"].createElement(Typography.Typography, { textColor: color },
899
+ React__default["default"].createElement("span", { className: styles$1.label }, label))));
900
+ function handleClick() {
901
+ if (activeItem) {
902
+ onClick === null || onClick === void 0 ? void 0 : onClick(activeItem);
903
+ }
904
+ else {
905
+ onClick === null || onClick === void 0 ? void 0 : onClick();
906
+ }
907
+ }
908
+ }
909
+
874
910
  var css_248z = "._0m75bgCVBhk- {\n visibility: hidden;\n}\n";
875
911
  var styles = {"hidden":"_0m75bgCVBhk-"};
876
912
  styleInject_es.styleInject(css_248z);
@@ -878,7 +914,6 @@ styleInject_es.styleInject(css_248z);
878
914
  function DataListLayoutActions() {
879
915
  const { itemActionComponent } = useDataListContext();
880
916
  const { setHasInLayoutActions } = useDataListLayoutContext();
881
- const { activeItem } = useDataListLayoutActionsContext();
882
917
  const { children: actionsChildren } = (itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props) || {};
883
918
  const actions = React.Children.toArray(actionsChildren);
884
919
  const hasActions = actions.length > 0;
@@ -891,7 +926,7 @@ function DataListLayoutActions() {
891
926
  if (!hasActions)
892
927
  return null;
893
928
  return (React__default["default"].createElement(DataListLayoutActionsWrapper, null,
894
- React__default["default"].createElement(DataListItemActionsOverflow, { actions: actions, item: activeItem })));
929
+ React__default["default"].createElement(DataListItemActionsOverflow, { actions: actions })));
895
930
  }
896
931
  function DataListLayoutActionsWrapper({ children }) {
897
932
  const { isInLayoutProvider } = useDataListLayoutContext();
@@ -933,11 +968,13 @@ function DataList(_a) {
933
968
  const layoutComponents = getCompoundComponents(props.children, DataListLayout);
934
969
  const emptyStateComponents = getCompoundComponents(props.children, DataListEmptyState);
935
970
  const itemActionComponent = getCompoundComponent(props.children, DataListItemActions);
971
+ const bulkActionsComponent = getCompoundComponent(props.children, DataListBulkActions);
936
972
  return (React__default["default"].createElement(DataListContext.Provider, { value: Object.assign(Object.assign({ searchComponent,
937
973
  filterComponent,
938
974
  layoutComponents,
939
975
  emptyStateComponents,
940
- itemActionComponent }, props), { selected: (_b = props.selected) !== null && _b !== void 0 ? _b : [],
976
+ itemActionComponent,
977
+ bulkActionsComponent }, props), { selected: (_b = props.selected) !== null && _b !== void 0 ? _b : [],
941
978
  // T !== DataListObject
942
979
  sorting: sorting }) },
943
980
  React__default["default"].createElement(InternalDataList, null)));
@@ -1006,10 +1043,21 @@ DataList.Search = DataListSearch;
1006
1043
  * Defines the group actions you could do on a single DataList item.
1007
1044
  */
1008
1045
  DataList.ItemActions = DataListItemActions;
1046
+ /**
1047
+ * Defines the group actions you could do on multiple DataList items.
1048
+ */
1049
+ DataList.BulkActions = DataListBulkActions;
1009
1050
  /**
1010
1051
  * Defines the action in a DataList. This should be used inside the
1011
1052
  * DataListItemActions component.
1012
1053
  */
1013
- DataList.Action = DataListAction;
1054
+ DataList.ItemAction = DataListAction;
1055
+ /**
1056
+ * Defines the batch action in a DataList. This should be used inside the
1057
+ * DataListBulkActions component.
1058
+ */
1059
+ DataList.BatchAction = function DataListBatchAction(props) {
1060
+ return React__default["default"].createElement(DataListAction, Object.assign({}, props));
1061
+ };
1014
1062
 
1015
1063
  exports.DataList = DataList;