@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.
- package/Combobox.d.ts +1 -0
- package/Combobox.js +17 -0
- package/dist/Autocomplete/index.js +7 -7
- package/dist/Banner/index.js +3 -3
- package/dist/Button/index.js +2 -2
- package/dist/{Button-fd8413b2.js → Button-d89f2271.js} +1 -1
- package/dist/ButtonDismiss/index.js +3 -3
- package/dist/{ButtonDismiss-82680c7d.js → ButtonDismiss-250840a4.js} +1 -1
- package/dist/Card/index.js +5 -5
- package/dist/{Card-cc2ffbaa.js → Card-69304e99.js} +3 -3
- package/dist/Checkbox/index.js +3 -3
- package/dist/{Checkbox-3bccf65c.js → Checkbox-eac63b7f.js} +1 -1
- package/dist/{Chip-4916a642.js → Chip-4d8e6370.js} +4 -4
- package/dist/Chips/index.js +5 -5
- package/dist/Combobox/Combobox.d.ts +16 -0
- package/dist/Combobox/Combobox.types.d.ts +14 -0
- package/dist/Combobox/ComboboxProvider.d.ts +10 -0
- package/dist/Combobox/components/ComboboxAction/ComboboxAction.d.ts +12 -0
- package/dist/Combobox/components/ComboboxAction/index.d.ts +1 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContent.d.ts +33 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxList.d.ts +14 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxSearch.d.ts +7 -0
- package/dist/Combobox/components/ComboboxContent/index.d.ts +1 -0
- package/dist/Combobox/components/ComboboxTrigger/ComboboxTriggerButton/ComboboxTriggerButton.d.ts +3 -0
- package/dist/Combobox/components/ComboboxTrigger/ComboboxTriggerChip/ComboboxTriggerChip.d.ts +3 -0
- package/dist/Combobox/components/ComboboxTrigger/index.d.ts +2 -0
- package/dist/Combobox/hooks/useComboboxAccessibility.d.ts +13 -0
- package/dist/Combobox/hooks/useComboboxContent.d.ts +9 -0
- package/dist/Combobox/index.d.ts +3 -0
- package/dist/Combobox/index.js +295 -0
- package/dist/ConfirmationModal/index.js +9 -9
- package/dist/{ConfirmationModal-6b61ebf5.js → ConfirmationModal-92f07027.js} +2 -2
- package/dist/DataDump/index.js +6 -6
- package/dist/DataList/DataList.d.ts +5 -2
- package/dist/DataList/DataList.types.d.ts +13 -2
- package/dist/DataList/DataList.utils.d.ts +2 -1
- package/dist/DataList/components/DataListAction/DataListAction.d.ts +2 -3
- package/dist/DataList/components/DataListBulkActions/DataListBulkActions.const.d.ts +1 -0
- package/dist/DataList/components/DataListBulkActions/DataListBulkActions.d.ts +4 -0
- package/dist/DataList/components/DataListBulkActions/index.d.ts +1 -0
- package/dist/DataList/components/DataListItemActions/DataListItemActionsOverflow.d.ts +3 -3
- package/dist/DataList/components/DataListOverflowFade/DataListOverflowFade.d.ts +6 -0
- package/dist/DataList/components/DataListOverflowFade/index.d.ts +2 -0
- package/dist/DataList/index.js +283 -235
- package/dist/DataTable/index.js +6 -6
- package/dist/DatePicker/index.js +3 -3
- package/dist/{DatePicker-b31baae4.js → DatePicker-39d2dc8b.js} +2 -2
- package/dist/DescriptionList/index.js +1 -1
- package/dist/Disclosure/index.js +1 -1
- package/dist/Drawer/index.js +4 -4
- package/dist/Emphasis/index.js +2 -2
- package/dist/{Emphasis-76a10790.js → Emphasis-cc3456ac.js} +1 -1
- package/dist/FeatureSwitch/index.js +7 -7
- package/dist/FormField/index.js +5 -5
- package/dist/{FormField-d6138b7f.js → FormField-bef41ec9.js} +3 -3
- package/dist/FormatFile/index.js +10 -10
- package/dist/{FormatFile-aa1898f9.js → FormatFile-a470c0f2.js} +4 -4
- package/dist/Gallery/index.js +11 -11
- package/dist/Heading/index.js +2 -2
- package/dist/{Heading-a1191b15.js → Heading-4562900a.js} +1 -1
- package/dist/InlineLabel/index.js +2 -2
- package/dist/{InlineLabel-afd5fc6f.js → InlineLabel-3d461632.js} +1 -1
- package/dist/InputAvatar/index.js +3 -3
- package/dist/InputDate/index.js +6 -6
- package/dist/InputEmail/index.js +5 -5
- package/dist/InputFile/index.js +3 -3
- package/dist/{InputFile-2a06c2c0.js → InputFile-d327dee3.js} +2 -2
- package/dist/InputNumber/index.js +6 -6
- package/dist/{InputNumber-07b03067.js → InputNumber-5640fb55.js} +1 -1
- package/dist/InputPassword/index.js +5 -5
- package/dist/InputPhoneNumber/index.js +5 -5
- package/dist/InputText/index.js +6 -6
- package/dist/{InputText-d1a52550.js → InputText-5ac5cfe0.js} +1 -1
- package/dist/InputTime/index.js +5 -5
- package/dist/InputValidation/index.js +3 -3
- package/dist/{InputValidation-b5a3d92c.js → InputValidation-4e809bdd.js} +1 -1
- package/dist/LightBox/index.js +4 -4
- package/dist/{LightBox-437a1c8b.js → LightBox-02ca409e.js} +2 -2
- package/dist/List/index.js +5 -5
- package/dist/Markdown/index.js +5 -5
- package/dist/{Markdown-f6748dcb.js → Markdown-b37cf9ec.js} +3 -3
- package/dist/Menu/index.js +3 -3
- package/dist/{Menu-51f8712f.js → Menu-cec53b50.js} +2 -2
- package/dist/Modal/index.js +5 -5
- package/dist/{Modal-a9ab9565.js → Modal-dcdc0032.js} +3 -3
- package/dist/MultiSelect/index.js +3 -3
- package/dist/{Option-b903e7ac.js → Option-9f4a65da.js} +1 -1
- package/dist/Page/index.js +7 -7
- package/dist/Popover/index.js +4 -4
- package/dist/{Popover-bbfc6aa1.js → Popover-d401fb54.js} +1 -1
- package/dist/RadioGroup/index.js +3 -3
- package/dist/{RadioGroup-8e76d20b.js → RadioGroup-46833fac.js} +1 -1
- package/dist/RecurringSelect/index.js +8 -8
- package/dist/Select/index.js +6 -6
- package/dist/StatusLabel/index.js +2 -2
- package/dist/Switch/index.js +2 -2
- package/dist/{Switch-e75145cc.js → Switch-165f01e3.js} +1 -1
- package/dist/Tabs/index.js +1 -1
- package/dist/Text/index.js +2 -2
- package/dist/{Text-e7ed0974.js → Text-59bde58c.js} +1 -1
- package/dist/Toast/index.js +2 -2
- package/dist/Tooltip/index.js +3 -3
- package/dist/{Tooltip-bf67fe6e.js → Tooltip-59dbab5b.js} +1 -1
- package/dist/Typography/index.js +1 -1
- package/dist/{Typography-fd6f932a.js → Typography-9bff9c91.js} +2 -2
- package/package.json +3 -3
- /package/dist/DataList/components/{DataListFilters/DataListFilter.const.d.ts → DataListOverflowFade/DataListOverflowFade.const.d.ts} +0 -0
package/dist/DataList/index.js
CHANGED
|
@@ -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-
|
|
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-
|
|
14
|
+
var Button = require('../Button-d89f2271.js');
|
|
15
15
|
var design = require('@jobber/design');
|
|
16
|
-
var Typography = require('../Typography-
|
|
16
|
+
var Typography = require('../Typography-9bff9c91.js');
|
|
17
17
|
var ReactDOM = require('react-dom');
|
|
18
|
-
var Tooltip = require('../Tooltip-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
33
|
+
var Popover = require('../Popover-d401fb54.js');
|
|
36
34
|
var Content = require('../Content-2ca1ffe1.js');
|
|
37
|
-
var Chip = require('../Chip-
|
|
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-
|
|
40
|
+
var InputText = require('../InputText-5ac5cfe0.js');
|
|
43
41
|
var Spinner = require('../Spinner-9d8fc7ff.js');
|
|
44
|
-
require('../
|
|
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-
|
|
48
|
-
require('../InputValidation-
|
|
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
|
|
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 = ".
|
|
115
|
-
var styles$a = {"
|
|
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$
|
|
167
|
-
React__default["default"].createElement("button", { className: styles$
|
|
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
|
|
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({
|
|
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
|
-
|
|
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
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
368
|
-
var styles$
|
|
369
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
372
|
-
var styles$
|
|
373
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
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$
|
|
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$
|
|
392
|
-
[styles$
|
|
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"](
|
|
480
|
-
[
|
|
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:
|
|
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
|
-
|
|
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(
|
|
728
|
-
|
|
729
|
-
|
|
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$
|
|
739
|
-
var styles$
|
|
740
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
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$
|
|
759
|
-
var styles$
|
|
760
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
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$
|
|
783
|
-
[styles$
|
|
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$
|
|
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$
|
|
805
|
-
var styles$
|
|
806
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
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$
|
|
850
|
-
var styles$
|
|
851
|
-
styleInject_es.styleInject(css_248z$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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
|
|
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.
|
|
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;
|