@jobber/components 4.41.0 → 4.42.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/dist/DataList/DataList.d.ts +3 -1
- package/dist/DataList/DataList.types.d.ts +13 -0
- package/dist/DataList/DataList.utils.d.ts +2 -2
- package/dist/DataList/components/DataListActionsMenu/DataListActionsMenu.d.ts +2 -2
- package/dist/DataList/components/DataListItem/DataListItem.d.ts +9 -0
- package/dist/DataList/components/{DataListLayoutInternal → DataListItem}/DataListItemInternal.d.ts +1 -1
- package/dist/DataList/components/DataListItem/index.d.ts +1 -0
- package/dist/DataList/components/DataListItemActions/DataListItemActionsOverflow.d.ts +1 -1
- package/dist/DataList/components/DataListItemActions/index.d.ts +1 -0
- package/dist/DataList/components/DataListLayoutActions/DataListLayoutActions.d.ts +2 -0
- package/dist/DataList/components/DataListLayoutActions/DataListLayoutContext/DataListLayoutContext.d.ts +4 -0
- package/dist/DataList/components/DataListLayoutActions/DataListLayoutContext/index.d.ts +1 -0
- package/dist/DataList/components/DataListLayoutActions/index.d.ts +1 -0
- package/dist/DataList/components/DataListLayoutInternal/DataListItems.d.ts +2 -2
- package/dist/DataList/context/DataListContext/DataListContext.d.ts +1 -7
- package/dist/DataList/context/DataListLayoutContext/DataListLayoutContext.d.ts +5 -0
- package/dist/DataList/context/DataListLayoutContext/index.d.ts +1 -0
- package/dist/DataList/index.js +356 -273
- package/package.json +2 -2
|
@@ -3,12 +3,14 @@ import { DataListLayout } from "./components/DataListLayout";
|
|
|
3
3
|
import { DataListFilters } from "./components/DataListFilters";
|
|
4
4
|
import { DataListSearch } from "./components/DataListSearch";
|
|
5
5
|
import { DataListEmptyState } from "./components/DataListEmptyState";
|
|
6
|
-
import { DataListObject, DataListProps } from "./DataList.types";
|
|
7
6
|
import { DataListItemActions } from "./components/DataListItemActions";
|
|
8
7
|
import { DataListAction } from "./components/DataListAction";
|
|
8
|
+
import { DataListLayoutActions } from "./components/DataListLayoutActions";
|
|
9
|
+
import { DataListObject, DataListProps } from "./DataList.types";
|
|
9
10
|
export declare function DataList<T extends DataListObject>({ sorting, ...props }: DataListProps<T>): JSX.Element;
|
|
10
11
|
export declare namespace DataList {
|
|
11
12
|
var Layout: typeof DataListLayout;
|
|
13
|
+
var LayoutActions: typeof DataListLayoutActions;
|
|
12
14
|
var EmptyState: typeof DataListEmptyState;
|
|
13
15
|
var Filters: typeof DataListFilters;
|
|
14
16
|
var Search: typeof DataListSearch;
|
|
@@ -148,6 +148,19 @@ export interface DataListContextProps<T extends DataListObject> extends DataList
|
|
|
148
148
|
readonly layoutComponents?: ReactElement<DataListLayoutProps<T>>[];
|
|
149
149
|
readonly itemActionComponent?: ReactElement<DataListItemActionsProps<T>>;
|
|
150
150
|
}
|
|
151
|
+
export interface DataListLayoutContextProps {
|
|
152
|
+
readonly isInLayoutProvider: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Determine if the consumer of the DataList manually added an action to the
|
|
155
|
+
* layout. This is used to determine if the DataList should render the
|
|
156
|
+
* action column.
|
|
157
|
+
*/
|
|
158
|
+
readonly hasInLayoutActions: boolean;
|
|
159
|
+
readonly setHasInLayoutActions: (state: boolean) => void;
|
|
160
|
+
}
|
|
161
|
+
export interface DataListLayoutActionsContextProps<T extends DataListObject> {
|
|
162
|
+
readonly activeItem?: T;
|
|
163
|
+
}
|
|
151
164
|
type Fragment<T> = T | T[];
|
|
152
165
|
export interface DataListItemActionsProps<T extends DataListObject> {
|
|
153
166
|
/**
|
|
@@ -10,9 +10,9 @@ export declare function getCompoundComponent<T>(children: ReactElement | ReactEl
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function getCompoundComponents<T>(children: ReactElement | ReactElement[], type: ReactElement<T>["type"]): ReactElement<T>[];
|
|
12
12
|
/**
|
|
13
|
-
* Generate the default
|
|
13
|
+
* Generate the default element the DataList would use on the data provided.
|
|
14
14
|
*/
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function generateListItemElement<T extends DataListObject>(item: T): DataListItemType<T[]>;
|
|
16
16
|
/**
|
|
17
17
|
* Generate the header elements with the default styling
|
|
18
18
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PropsWithChildren } from "react";
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
2
|
interface DataListActionsMenuProps {
|
|
3
3
|
readonly visible: boolean;
|
|
4
4
|
readonly position: {
|
|
@@ -7,5 +7,5 @@ interface DataListActionsMenuProps {
|
|
|
7
7
|
};
|
|
8
8
|
readonly onRequestClose: () => void;
|
|
9
9
|
}
|
|
10
|
-
export declare function DataListActionsMenu({ visible, position, onRequestClose, children, }: PropsWithChildren<DataListActionsMenuProps>):
|
|
10
|
+
export declare function DataListActionsMenu({ visible, position, onRequestClose, children, }: PropsWithChildren<DataListActionsMenuProps>): React.ReactPortal;
|
|
11
11
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ReactElement } from "react";
|
|
2
|
+
import { DataListLayoutProps, DataListObject } from "@jobber/components/DataList/DataList.types";
|
|
3
|
+
interface DataListItem<T extends DataListObject> {
|
|
4
|
+
readonly item: T;
|
|
5
|
+
readonly index: number;
|
|
6
|
+
readonly layout: ReactElement<DataListLayoutProps<T>>;
|
|
7
|
+
}
|
|
8
|
+
export declare function DataListItem<T extends DataListObject>({ item, layout, }: DataListItem<T>): JSX.Element;
|
|
9
|
+
export {};
|
package/dist/DataList/components/{DataListLayoutInternal → DataListItem}/DataListItemInternal.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { DataListObject } from "
|
|
2
|
+
import { DataListObject } from "@jobber/components/DataList/DataList.types";
|
|
3
3
|
interface ListItemInternalProps<T extends DataListObject> {
|
|
4
4
|
readonly children: JSX.Element;
|
|
5
5
|
readonly item: T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DataListItem";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactElement } from "react";
|
|
2
2
|
import { DataListActionProps, DataListObject, InternalDataListActionProps } from "../../DataList.types";
|
|
3
|
-
interface DataListItemActionsOverflowProps<T extends DataListObject> extends Pick<InternalDataListActionProps<T>, "item"
|
|
3
|
+
interface DataListItemActionsOverflowProps<T extends DataListObject> extends Partial<Pick<InternalDataListActionProps<T>, "item">> {
|
|
4
4
|
readonly actions: ReactElement<DataListActionProps<T>>[];
|
|
5
5
|
}
|
|
6
6
|
export declare function DataListItemActionsOverflow<T extends DataListObject>({ item, actions, }: DataListItemActionsOverflowProps<T>): JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DataListLayoutActionsContextProps, DataListObject } from "@jobber/components/DataList/DataList.types";
|
|
3
|
+
export declare const DataListLayoutActionsContext: import("react").Context<DataListLayoutActionsContextProps<DataListObject>>;
|
|
4
|
+
export declare function useDataListLayoutActionsContext(): DataListLayoutActionsContextProps<DataListObject>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DataListLayoutContext";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DataListLayoutActions } from "./DataListLayoutActions";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Breakpoints } from "
|
|
3
|
-
import { DataListLayoutProps, DataListObject } from "
|
|
2
|
+
import { Breakpoints } from "@jobber/components/DataList/DataList.const";
|
|
3
|
+
import { DataListLayoutProps, DataListObject } from "@jobber/components/DataList/DataList.types";
|
|
4
4
|
interface DataListItemsProps<T extends DataListObject> {
|
|
5
5
|
readonly layouts: React.ReactElement<DataListLayoutProps<T>>[] | undefined;
|
|
6
6
|
readonly mediaMatches?: Record<Breakpoints, boolean>;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DataListContextProps, DataListObject } from "../../DataList.types";
|
|
3
|
-
export declare const defaultValues:
|
|
4
|
-
title: string;
|
|
5
|
-
data: never[];
|
|
6
|
-
headers: {};
|
|
7
|
-
children: never[];
|
|
8
|
-
selected: never[];
|
|
9
|
-
};
|
|
3
|
+
export declare const defaultValues: DataListContextProps<DataListObject>;
|
|
10
4
|
export declare const DataListContext: import("react").Context<DataListContextProps<DataListObject>>;
|
|
11
5
|
export declare function useDataListContext(): DataListContextProps<DataListObject>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DataListLayoutContextProps } from "@jobber/components/DataList/DataList.types";
|
|
3
|
+
export declare const defaultValues: DataListLayoutContextProps;
|
|
4
|
+
export declare const DataListLayoutContext: import("react").Context<DataListLayoutContextProps>;
|
|
5
|
+
export declare function useDataListLayoutContext(): DataListLayoutContextProps;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DataListLayoutContext";
|
package/dist/DataList/index.js
CHANGED
|
@@ -9,23 +9,26 @@ var Text = require('../Text-e7ed0974.js');
|
|
|
9
9
|
var Glimmer = require('../Glimmer-cfa92a88.js');
|
|
10
10
|
var framerMotion = require('framer-motion');
|
|
11
11
|
var classnames = require('classnames');
|
|
12
|
-
var
|
|
13
|
-
var isEmpty = require('lodash/isEmpty');
|
|
14
|
-
var InlineLabel = require('../InlineLabel-afd5fc6f.js');
|
|
15
|
-
var FormatDate = require('../FormatDate-70ea5b43.js');
|
|
16
|
-
var Heading = require('../Heading-a1191b15.js');
|
|
17
|
-
require('uuid');
|
|
18
|
-
require('react-hook-form');
|
|
19
|
-
var Checkbox = require('../Checkbox-3bccf65c.js');
|
|
20
|
-
var Typography = require('../Typography-fd6f932a.js');
|
|
12
|
+
var noop = require('lodash/noop');
|
|
21
13
|
require('react-router-dom');
|
|
22
14
|
var Button = require('../Button-fd8413b2.js');
|
|
23
|
-
require('
|
|
15
|
+
var design = require('@jobber/design');
|
|
16
|
+
var Typography = require('../Typography-fd6f932a.js');
|
|
17
|
+
var ReactDOM = require('react-dom');
|
|
24
18
|
var Tooltip = require('../Tooltip-bf67fe6e.js');
|
|
25
19
|
require('react-popper');
|
|
26
20
|
var useFocusTrap = require('@jobber/hooks/useFocusTrap');
|
|
27
21
|
var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
|
|
28
22
|
var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
|
|
23
|
+
var foundation = require('@jobber/design/foundation');
|
|
24
|
+
var styles$f = require('@jobber/components/DataList/DataList.css');
|
|
25
|
+
require('uuid');
|
|
26
|
+
require('react-hook-form');
|
|
27
|
+
var Checkbox = require('../Checkbox-3bccf65c.js');
|
|
28
|
+
var isEmpty = require('lodash/isEmpty');
|
|
29
|
+
var InlineLabel = require('../InlineLabel-afd5fc6f.js');
|
|
30
|
+
var FormatDate = require('../FormatDate-70ea5b43.js');
|
|
31
|
+
var Heading = require('../Heading-a1191b15.js');
|
|
29
32
|
var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
|
|
30
33
|
var Icon = require('../Icon-405a216c.js');
|
|
31
34
|
var useInView = require('@jobber/hooks/useInView');
|
|
@@ -48,16 +51,18 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
48
51
|
|
|
49
52
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
50
53
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
54
|
+
var noop__default = /*#__PURE__*/_interopDefaultLegacy(noop);
|
|
55
|
+
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles$f);
|
|
51
56
|
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
|
52
57
|
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
53
58
|
|
|
54
|
-
var css_248z$
|
|
55
|
-
var styles$
|
|
56
|
-
styleInject_es.styleInject(css_248z$
|
|
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.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.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 --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.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 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- > :first-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :first-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n.ise8kHCfhCY-:hover .d-79rkMqufg- > :first-child,\n.ise8kHCfhCY-:focus-within .d-79rkMqufg- > :first-child,\n.ise8kHCfhCY- .d-79rkMqufg-._4L7iXXzLr5k- > :first-child {\n opacity: 1;\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-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-"};
|
|
61
|
+
styleInject_es.styleInject(css_248z$e);
|
|
57
62
|
|
|
58
|
-
var css_248z$
|
|
59
|
-
var styles$
|
|
60
|
-
styleInject_es.styleInject(css_248z$
|
|
63
|
+
var css_248z$d = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
|
|
64
|
+
var styles$d = {"results":"F56prQsXm3A-"};
|
|
65
|
+
styleInject_es.styleInject(css_248z$d);
|
|
61
66
|
|
|
62
67
|
const DATALIST_TOTALCOUNT_TEST_ID = "ATL-DataList-TotalCount";
|
|
63
68
|
function DataListTotalCount({ totalCount, loading, }) {
|
|
@@ -73,13 +78,60 @@ function DataListTotalCount({ totalCount, loading, }) {
|
|
|
73
78
|
totalCount.toLocaleString(),
|
|
74
79
|
" results)"));
|
|
75
80
|
}
|
|
76
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
81
|
+
return (React__default["default"].createElement("div", { className: styles$d.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var css_248z$c = ".Rh--6fVpkm4- {\n padding: calc(16px / 2);\n padding: var(--space-small);\n}\n\n.zbS7UvpVoWI- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: justify;\n justify-content: space-between;\n height: calc(16px * 3);\n height: var(--space-largest);\n padding: calc(16px * 1) 0;\n padding: var(--space-base) 0;\n}\n";
|
|
85
|
+
var styles$c = {"loadingItem":"Rh--6fVpkm4-","mobileLoadingState":"zbS7UvpVoWI-"};
|
|
86
|
+
styleInject_es.styleInject(css_248z$c);
|
|
87
|
+
|
|
88
|
+
const defaultValues$1 = {
|
|
89
|
+
title: "",
|
|
90
|
+
data: [],
|
|
91
|
+
headers: {},
|
|
92
|
+
children: [],
|
|
93
|
+
selected: [],
|
|
94
|
+
};
|
|
95
|
+
const DataListContext = React.createContext(defaultValues$1);
|
|
96
|
+
function useDataListContext() {
|
|
97
|
+
return React.useContext(DataListContext);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const defaultValues = {
|
|
101
|
+
isInLayoutProvider: false,
|
|
102
|
+
hasInLayoutActions: false,
|
|
103
|
+
setHasInLayoutActions: noop__default["default"],
|
|
104
|
+
};
|
|
105
|
+
const DataListLayoutContext = React.createContext(defaultValues);
|
|
106
|
+
function useDataListLayoutContext() {
|
|
107
|
+
return React.useContext(DataListLayoutContext);
|
|
77
108
|
}
|
|
78
109
|
|
|
79
|
-
var css_248z$b = ".
|
|
80
|
-
var styles$b = {"
|
|
110
|
+
var css_248z$b = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc((16px / 2) * -1);\n top: calc(calc(16px / 2) * -1);\n top: calc(var(--space-small) * -1);\n right: 0;\n z-index: 6;\n z-index: var(--elevation-menu);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(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 gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n";
|
|
111
|
+
var styles$b = {"menu":"jHcHGQ-HDbk-"};
|
|
81
112
|
styleInject_es.styleInject(css_248z$b);
|
|
82
113
|
|
|
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-"};
|
|
116
|
+
styleInject_es.styleInject(css_248z$a);
|
|
117
|
+
|
|
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: 6;\n z-index: var(--elevation-menu);\n width: 100%;\n height: 100%;\n}\n";
|
|
132
|
+
var styles$9 = {"menu":"aokwZU8jbWU-","overlay":"XtVRP97TVSE-"};
|
|
133
|
+
styleInject_es.styleInject(css_248z$9);
|
|
134
|
+
|
|
83
135
|
const EMPTY_RESULTS_MESSAGE = "List is looking empty";
|
|
84
136
|
const EMPTY_FILTER_RESULTS_MESSAGE = "No results for selected filters";
|
|
85
137
|
const EMPTY_STATE_ACTION_BUTTON_ONLY_ERROR = "DataListEmptyState action prop must be a Button component";
|
|
@@ -101,9 +153,137 @@ const DATA_LOAD_MORE_TEST_ID = "ATL-DataList-LoadMore-trigger";
|
|
|
101
153
|
const TRANSITION_DURATION_IN_SECONDS = design.tokens["timing-base"] / 1000;
|
|
102
154
|
const TRANSITION_DELAY_IN_SECONDS = design.tokens["timing-quick"] / 1000;
|
|
103
155
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
156
|
+
const variants$1 = {
|
|
157
|
+
hidden: { opacity: 0, y: -10 },
|
|
158
|
+
visible: { opacity: 1, y: 0 },
|
|
159
|
+
};
|
|
160
|
+
function DataListActionsMenu({ visible = false, position, onRequestClose, children, }) {
|
|
161
|
+
const [ref, setRef] = React.useState();
|
|
162
|
+
useRefocusOnActivator.useRefocusOnActivator(visible);
|
|
163
|
+
const focusTrapRef = useFocusTrap.useFocusTrap(visible);
|
|
164
|
+
useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
|
|
165
|
+
return ReactDOM.createPortal(React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
166
|
+
React__default["default"].createElement("div", { className: styles$9.overlay, onClick: onRequestClose }),
|
|
167
|
+
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 },
|
|
168
|
+
React__default["default"].createElement("div", { tabIndex: 0, ref: focusTrapRef }, children))))), document.body);
|
|
169
|
+
function getPositionCssVars() {
|
|
170
|
+
const { posX, posY } = getPosition();
|
|
171
|
+
return {
|
|
172
|
+
"--actions-menu-x": `${posX}px`,
|
|
173
|
+
"--actions-menu-y": `${posY}px`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function getPosition() {
|
|
177
|
+
const rect = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect();
|
|
178
|
+
const { width = 0, height = 0 } = rect || {};
|
|
179
|
+
const { x = 0, y = 0 } = position;
|
|
180
|
+
const xIsOffScreen = x + width > window.innerWidth;
|
|
181
|
+
const yIsOffScreen = y + height > window.innerHeight;
|
|
182
|
+
const xOffSet = x + width - window.innerWidth + foundation.tokens["space-base"];
|
|
183
|
+
const yOffSet = y + height - window.innerHeight;
|
|
184
|
+
const newPosX = Math.floor(xIsOffScreen ? x - xOffSet : x);
|
|
185
|
+
const newPosY = Math.floor(yIsOffScreen ? y - yOffSet : y);
|
|
186
|
+
return { posX: newPosX, posY: newPosY };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function DataListItemActionsOverflow({ item, actions, }) {
|
|
191
|
+
const [menuPosition, setMenuPosition] = React.useState({ x: 0, y: 0 });
|
|
192
|
+
const [showMenu, setShowMenu] = React.useState(false);
|
|
193
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
194
|
+
React__default["default"].createElement(Tooltip.Tooltip, { message: "More actions" },
|
|
195
|
+
React__default["default"].createElement(Button.Button, { icon: "more", ariaLabel: "More actions", type: "secondary", variation: "subtle", onClick: handleMoreClick })),
|
|
196
|
+
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 }))))))));
|
|
197
|
+
function handleMoreClick(event) {
|
|
198
|
+
setShowMenu(true);
|
|
199
|
+
const rect = event.currentTarget.getBoundingClientRect();
|
|
200
|
+
const posX = rect.x;
|
|
201
|
+
const posY = rect.y + rect.height;
|
|
202
|
+
setMenuPosition({ x: posX, y: posY });
|
|
203
|
+
}
|
|
204
|
+
function handleClose() {
|
|
205
|
+
setShowMenu(false);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// This component is meant to capture the props of the DataList.ItemActions
|
|
210
|
+
function DataListItemActions(
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
212
|
+
_) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
const variants = {
|
|
216
|
+
hidden: { opacity: 0, y: 10 },
|
|
217
|
+
visible: { opacity: 1, y: 0 },
|
|
218
|
+
};
|
|
219
|
+
function InternalDataListItemActions({ item, }) {
|
|
220
|
+
const { itemActionComponent } = useDataListContext();
|
|
221
|
+
if (!itemActionComponent)
|
|
222
|
+
return null;
|
|
223
|
+
const { children } = itemActionComponent.props;
|
|
224
|
+
const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
|
|
225
|
+
const exposedActions = getExposedActions(childrenArray);
|
|
226
|
+
childrenArray.splice(0, exposedActions.length);
|
|
227
|
+
return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
|
|
228
|
+
duration: TRANSITION_DURATION_IN_SECONDS,
|
|
229
|
+
delay: TRANSITION_DELAY_IN_SECONDS,
|
|
230
|
+
}, className: styles$b.menu, onContextMenu: handleContextMenu },
|
|
231
|
+
exposedActions.map(({ props }) => {
|
|
232
|
+
if (!props.icon)
|
|
233
|
+
return null;
|
|
234
|
+
return (React__default["default"].createElement(Tooltip.Tooltip, { key: props.label, message: props.label },
|
|
235
|
+
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" })));
|
|
236
|
+
}),
|
|
237
|
+
React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray, item: item })));
|
|
238
|
+
}
|
|
239
|
+
function handleContextMenu(event) {
|
|
240
|
+
event.stopPropagation();
|
|
241
|
+
}
|
|
242
|
+
function getExposedActions(childrenArray) {
|
|
243
|
+
const firstTwoChildren = childrenArray.slice(0, 2);
|
|
244
|
+
return firstTwoChildren.reduce((result, child, i) => {
|
|
245
|
+
const hasIcon = Boolean(child.props.icon);
|
|
246
|
+
const isFirstChild = i === 0;
|
|
247
|
+
if (isFirstChild && hasIcon) {
|
|
248
|
+
return [...result, child];
|
|
249
|
+
}
|
|
250
|
+
const isSecondChild = i === 1;
|
|
251
|
+
const hasFirstChild = result.length === 1;
|
|
252
|
+
if (isSecondChild && hasIcon && hasFirstChild) {
|
|
253
|
+
return [...result, child];
|
|
254
|
+
}
|
|
255
|
+
return result;
|
|
256
|
+
}, []);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const DataListLayoutActionsContext = React.createContext({ activeItem: undefined });
|
|
260
|
+
function useDataListLayoutActionsContext() {
|
|
261
|
+
return React.useContext(DataListLayoutActionsContext);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function DataListItemInternal({ children, item, }) {
|
|
265
|
+
const { selected, onSelect } = useDataListContext();
|
|
266
|
+
if (selected !== undefined && onSelect) {
|
|
267
|
+
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles__default["default"].selectable, {
|
|
268
|
+
[styles__default["default"].selected]: selected === null || selected === void 0 ? void 0 : selected.length,
|
|
269
|
+
}) },
|
|
270
|
+
React__default["default"].createElement(Checkbox.Checkbox, { checked: selected === null || selected === void 0 ? void 0 : selected.includes(item.id), onChange: handleChange }),
|
|
271
|
+
children));
|
|
272
|
+
}
|
|
273
|
+
return children;
|
|
274
|
+
function handleChange() {
|
|
275
|
+
if (selected === null || selected === void 0 ? void 0 : selected.includes(item.id)) {
|
|
276
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected === null || selected === void 0 ? void 0 : selected.filter(id => id !== item.id));
|
|
277
|
+
}
|
|
278
|
+
else if (selected) {
|
|
279
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selected, item.id]);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
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";
|
|
285
|
+
var styles$8 = {"tags":"WRV-UmQmPzo-","tagCount":"liQeWCMenD0-"};
|
|
286
|
+
styleInject_es.styleInject(css_248z$8);
|
|
107
287
|
|
|
108
288
|
function DataListTags({ items }) {
|
|
109
289
|
const ref = React.useRef(null);
|
|
@@ -123,10 +303,10 @@ function DataListTags({ items }) {
|
|
|
123
303
|
elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.unobserve(element));
|
|
124
304
|
};
|
|
125
305
|
}, [items]);
|
|
126
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
306
|
+
return (React__default["default"].createElement("div", { className: styles$8.tags, ref: ref },
|
|
127
307
|
items.filter(Boolean).map((tag, index) => (React__default["default"].createElement("div", { key: tag, "data-tag-element": index },
|
|
128
308
|
React__default["default"].createElement(InlineLabel.InlineLabel, null, tag)))),
|
|
129
|
-
Boolean(visibleItems) && (React__default["default"].createElement("div", { className: styles$
|
|
309
|
+
Boolean(visibleItems) && (React__default["default"].createElement("div", { className: styles$8.tagCount },
|
|
130
310
|
React__default["default"].createElement(Text.Text, null,
|
|
131
311
|
"+",
|
|
132
312
|
visibleItems)))));
|
|
@@ -155,44 +335,32 @@ function buildIntersectionThreshold(items) {
|
|
|
155
335
|
return thresholds;
|
|
156
336
|
}
|
|
157
337
|
|
|
158
|
-
var css_248z$
|
|
159
|
-
var styles$
|
|
160
|
-
styleInject_es.styleInject(css_248z$
|
|
338
|
+
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";
|
|
339
|
+
var styles$7 = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
|
|
340
|
+
styleInject_es.styleInject(css_248z$7);
|
|
161
341
|
|
|
162
|
-
var css_248z$
|
|
163
|
-
var styles$
|
|
164
|
-
styleInject_es.styleInject(css_248z$
|
|
342
|
+
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";
|
|
343
|
+
var styles$6 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
|
|
344
|
+
styleInject_es.styleInject(css_248z$6);
|
|
165
345
|
|
|
166
346
|
const SORTING_ICON_TEST_ID = "ATL-DataList-Sorting-Icon";
|
|
167
347
|
function DataListSortingArrows({ order }) {
|
|
168
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
348
|
+
return (React__default["default"].createElement("div", { className: styles$6.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
|
|
169
349
|
React__default["default"].createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
170
350
|
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" }),
|
|
171
351
|
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" }))));
|
|
172
352
|
function getActiveClassName(targetOrder) {
|
|
173
|
-
return order === targetOrder ? styles$
|
|
353
|
+
return order === targetOrder ? styles$6.active : styles$6.inactive;
|
|
174
354
|
}
|
|
175
355
|
}
|
|
176
356
|
|
|
177
|
-
const defaultValues = {
|
|
178
|
-
title: "",
|
|
179
|
-
data: [],
|
|
180
|
-
headers: {},
|
|
181
|
-
children: [],
|
|
182
|
-
selected: [],
|
|
183
|
-
};
|
|
184
|
-
const DataListContext = React.createContext(defaultValues);
|
|
185
|
-
function useDataListContext() {
|
|
186
|
-
return React.useContext(DataListContext);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
357
|
function DataListHeaderTile({ headers, headerKey, }) {
|
|
190
358
|
const { sorting } = useDataListContext();
|
|
191
359
|
const isSortable = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.includes(headerKey);
|
|
192
360
|
const sortingState = sorting === null || sorting === void 0 ? void 0 : sorting.state;
|
|
193
361
|
const Tag = isSortable ? "button" : "div";
|
|
194
|
-
return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$
|
|
195
|
-
[styles$
|
|
362
|
+
return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$7.headerLabel, {
|
|
363
|
+
[styles$7.sortable]: isSortable,
|
|
196
364
|
}), onClick: handleOnClick },
|
|
197
365
|
React__default["default"].createElement(Text.Text, { maxLines: "single" }, headers[headerKey]),
|
|
198
366
|
(sortingState === null || sortingState === void 0 ? void 0 : sortingState.key) === headerKey && (React__default["default"].createElement(DataListSortingArrows, { order: sortingState.order }))));
|
|
@@ -231,10 +399,10 @@ function getCompoundComponents(children, type) {
|
|
|
231
399
|
return elements;
|
|
232
400
|
}
|
|
233
401
|
/**
|
|
234
|
-
* Generate the default
|
|
402
|
+
* Generate the default element the DataList would use on the data provided.
|
|
235
403
|
*/
|
|
236
|
-
function
|
|
237
|
-
return
|
|
404
|
+
function generateListItemElement(item) {
|
|
405
|
+
return Object.keys(item).reduce((acc, key) => {
|
|
238
406
|
const currentItem = item[key];
|
|
239
407
|
if (!currentItem) {
|
|
240
408
|
return acc;
|
|
@@ -256,7 +424,7 @@ function generateListItemElements(data) {
|
|
|
256
424
|
acc[key] = React__default["default"].createElement(Text.Text, { variation: "subdued" }, currentItem);
|
|
257
425
|
}
|
|
258
426
|
return acc;
|
|
259
|
-
}, {})
|
|
427
|
+
}, {});
|
|
260
428
|
}
|
|
261
429
|
/**
|
|
262
430
|
* Generate the header elements with the default styling
|
|
@@ -269,6 +437,41 @@ function sortSizeProp(sizeProp) {
|
|
|
269
437
|
return sizeProp.sort((a, b) => BREAKPOINTS.indexOf(a) - BREAKPOINTS.indexOf(b));
|
|
270
438
|
}
|
|
271
439
|
|
|
440
|
+
function DataListItem({ item, layout, }) {
|
|
441
|
+
const { itemActionComponent } = useDataListContext();
|
|
442
|
+
const { hasInLayoutActions } = useDataListLayoutContext();
|
|
443
|
+
const [showMenu, setShowMenu] = React.useState(false);
|
|
444
|
+
const [contextPosition, setContextPosition] = React.useState();
|
|
445
|
+
const generatedItem = React.useMemo(() => generateListItemElement(item), [item]);
|
|
446
|
+
const contextMenuActions = itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props.children;
|
|
447
|
+
const isContextMenuVisible = Boolean(contextPosition);
|
|
448
|
+
const shouldShowContextMenu = showMenu && isContextMenuVisible && Boolean(contextMenuActions);
|
|
449
|
+
return (React__default["default"].createElement(DataListLayoutActionsContext.Provider, { value: { activeItem: item } },
|
|
450
|
+
React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles__default["default"].listItem, {
|
|
451
|
+
[styles__default["default"].active]: showMenu && isContextMenuVisible,
|
|
452
|
+
}), key: item.id },
|
|
453
|
+
React__default["default"].createElement(DataListItemInternal, { item: item }, layout.props.children(generatedItem)),
|
|
454
|
+
React__default["default"].createElement(framerMotion.AnimatePresence, null,
|
|
455
|
+
showMenu && !hasInLayoutActions && (React__default["default"].createElement(InternalDataListItemActions, { item: item })),
|
|
456
|
+
React__default["default"].createElement(DataListActionsMenu, { key: item.id, visible: shouldShowContextMenu, position: contextPosition || { x: 0, y: 0 }, onRequestClose: () => setContextPosition(undefined) }, contextMenuActions &&
|
|
457
|
+
React.Children.map(contextMenuActions, action => (React__default["default"].createElement(InternalDataListAction, Object.assign({ key: item.id }, action.props, { item: item })))))))));
|
|
458
|
+
function handleShowMenu() {
|
|
459
|
+
setShowMenu(true);
|
|
460
|
+
}
|
|
461
|
+
function handleHideMenu() {
|
|
462
|
+
setShowMenu(false);
|
|
463
|
+
}
|
|
464
|
+
function handleContextMenu(event) {
|
|
465
|
+
if (!contextMenuActions || isContextMenuVisible)
|
|
466
|
+
return;
|
|
467
|
+
event.preventDefault();
|
|
468
|
+
setContextPosition({
|
|
469
|
+
x: event.clientX,
|
|
470
|
+
y: event.clientY,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
272
475
|
function DataListLayoutInternal({ layouts, renderLayout, mediaMatches, }) {
|
|
273
476
|
const sizePropsOfLayouts = layouts === null || layouts === void 0 ? void 0 : layouts.map(layout => layout.props.size || "xs");
|
|
274
477
|
const layoutToRender = layouts === null || layouts === void 0 ? void 0 : layouts.find(layout => {
|
|
@@ -301,200 +504,26 @@ function isLayoutVisible({ layoutSize, mediaMatches, sizePropsOfLayouts, }) {
|
|
|
301
504
|
return isVisibleBreakpoint && largerLayoutIsNotVisible;
|
|
302
505
|
}
|
|
303
506
|
|
|
304
|
-
function DataListItemInternal({ children, item, }) {
|
|
305
|
-
const { selected, onSelect } = useDataListContext();
|
|
306
|
-
if (selected !== undefined && onSelect) {
|
|
307
|
-
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$d.selectable, {
|
|
308
|
-
[styles$d.selected]: selected === null || selected === void 0 ? void 0 : selected.length,
|
|
309
|
-
}) },
|
|
310
|
-
React__default["default"].createElement(Checkbox.Checkbox, { checked: selected === null || selected === void 0 ? void 0 : selected.includes(item.id), onChange: handleChange }),
|
|
311
|
-
children));
|
|
312
|
-
}
|
|
313
|
-
return children;
|
|
314
|
-
function handleChange() {
|
|
315
|
-
if (selected === null || selected === void 0 ? void 0 : selected.includes(item.id)) {
|
|
316
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected === null || selected === void 0 ? void 0 : selected.filter(id => id !== item.id));
|
|
317
|
-
}
|
|
318
|
-
else if (selected) {
|
|
319
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selected, item.id]);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
var css_248z$7 = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc((16px / 2) * -1);\n top: calc(calc(16px / 2) * -1);\n top: calc(var(--space-small) * -1);\n right: 0;\n z-index: 6;\n z-index: var(--elevation-menu);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(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 gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n";
|
|
325
|
-
var styles$7 = {"menu":"jHcHGQ-HDbk-"};
|
|
326
|
-
styleInject_es.styleInject(css_248z$7);
|
|
327
|
-
|
|
328
|
-
var css_248z$6 = ".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 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";
|
|
329
|
-
var styles$6 = {"action":"iyg43v-S9yU-","label":"AUJNqz93ZDA-"};
|
|
330
|
-
styleInject_es.styleInject(css_248z$6);
|
|
331
|
-
|
|
332
|
-
function DataListAction(
|
|
333
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
334
|
-
_) {
|
|
335
|
-
return null;
|
|
336
|
-
}
|
|
337
|
-
function InternalDataListAction({ label, icon, destructive, onClick, item, }) {
|
|
338
|
-
const color = destructive ? "critical" : "blue";
|
|
339
|
-
return (React__default["default"].createElement("button", { className: styles$6.action, onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick(item) },
|
|
340
|
-
icon && React__default["default"].createElement(Icon.Icon, { name: icon, color: color }),
|
|
341
|
-
React__default["default"].createElement(Typography.Typography, { textColor: color },
|
|
342
|
-
React__default["default"].createElement("span", { className: styles$6.label }, label))));
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
var css_248z$5 = ".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: 6;\n z-index: var(--elevation-menu);\n width: 100%;\n height: 100%;\n}\n";
|
|
346
|
-
var styles$5 = {"menu":"aokwZU8jbWU-","overlay":"XtVRP97TVSE-"};
|
|
347
|
-
styleInject_es.styleInject(css_248z$5);
|
|
348
|
-
|
|
349
|
-
const variants$1 = {
|
|
350
|
-
hidden: { opacity: 0, y: -10 },
|
|
351
|
-
visible: { opacity: 1, y: 0 },
|
|
352
|
-
};
|
|
353
|
-
function DataListActionsMenu({ visible = false, position, onRequestClose, children, }) {
|
|
354
|
-
const [ref, setRef] = React.useState();
|
|
355
|
-
useRefocusOnActivator.useRefocusOnActivator(visible);
|
|
356
|
-
const focusTrapRef = useFocusTrap.useFocusTrap(visible);
|
|
357
|
-
useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
|
|
358
|
-
return (React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
359
|
-
React__default["default"].createElement("div", { className: styles$5.overlay, onClick: onRequestClose }),
|
|
360
|
-
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$5.menu, style: getPositionCssVars() },
|
|
361
|
-
React__default["default"].createElement("div", { tabIndex: 0, ref: focusTrapRef }, children))))));
|
|
362
|
-
function getPositionCssVars() {
|
|
363
|
-
const { posX, posY } = getPosition();
|
|
364
|
-
return {
|
|
365
|
-
"--actions-menu-x": `${posX}px`,
|
|
366
|
-
"--actions-menu-y": `${posY}px`,
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
function getPosition() {
|
|
370
|
-
const rect = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect();
|
|
371
|
-
const { width = 0, height = 0 } = rect || {};
|
|
372
|
-
const { x = 0, y = 0 } = position;
|
|
373
|
-
const xIsOffScreen = x + width > window.innerWidth;
|
|
374
|
-
const yIsOffScreen = y + height > window.innerHeight;
|
|
375
|
-
const yOffSet = y + height - window.innerHeight;
|
|
376
|
-
const newPosX = Math.floor(xIsOffScreen ? x - width : x);
|
|
377
|
-
const newPosY = Math.floor(yIsOffScreen ? y - yOffSet : y);
|
|
378
|
-
return { posX: newPosX, posY: newPosY };
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
function DataListItemActionsOverflow({ item, actions, }) {
|
|
383
|
-
const [menuPosition, setMenuPosition] = React.useState({ x: 0, y: 0 });
|
|
384
|
-
const [showMenu, setShowMenu] = React.useState(false);
|
|
385
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
386
|
-
React__default["default"].createElement(Tooltip.Tooltip, { message: "More actions" },
|
|
387
|
-
React__default["default"].createElement(Button.Button, { icon: "more", ariaLabel: "More actions", type: "secondary", variation: "subtle", onClick: handleMoreClick })),
|
|
388
|
-
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 })))))));
|
|
389
|
-
function handleMoreClick(event) {
|
|
390
|
-
setShowMenu(true);
|
|
391
|
-
const rect = event.currentTarget.getBoundingClientRect();
|
|
392
|
-
const posX = rect.x + rect.width;
|
|
393
|
-
const posY = rect.y + rect.height;
|
|
394
|
-
setMenuPosition({ x: posX, y: posY });
|
|
395
|
-
}
|
|
396
|
-
function handleClose() {
|
|
397
|
-
setShowMenu(false);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// This component is meant to capture the props of the DataList.ItemActions
|
|
402
|
-
function DataListItemActions(
|
|
403
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
404
|
-
_) {
|
|
405
|
-
return null;
|
|
406
|
-
}
|
|
407
|
-
const variants = {
|
|
408
|
-
hidden: { opacity: 0, y: 10 },
|
|
409
|
-
visible: { opacity: 1, y: 0 },
|
|
410
|
-
};
|
|
411
|
-
function InternalDataListItemActions({ item, }) {
|
|
412
|
-
const { itemActionComponent } = useDataListContext();
|
|
413
|
-
if (!itemActionComponent)
|
|
414
|
-
return null;
|
|
415
|
-
const { children } = itemActionComponent.props;
|
|
416
|
-
const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
|
|
417
|
-
const exposedActions = getExposedActions(childrenArray);
|
|
418
|
-
childrenArray.splice(0, exposedActions.length);
|
|
419
|
-
return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
|
|
420
|
-
duration: TRANSITION_DURATION_IN_SECONDS,
|
|
421
|
-
delay: TRANSITION_DELAY_IN_SECONDS,
|
|
422
|
-
}, className: styles$7.menu, onContextMenu: handleContextMenu },
|
|
423
|
-
exposedActions.map(({ props }) => {
|
|
424
|
-
if (!props.icon)
|
|
425
|
-
return null;
|
|
426
|
-
return (React__default["default"].createElement(Tooltip.Tooltip, { key: props.label, message: props.label },
|
|
427
|
-
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" })));
|
|
428
|
-
}),
|
|
429
|
-
React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray, item: item })));
|
|
430
|
-
}
|
|
431
|
-
function handleContextMenu(event) {
|
|
432
|
-
event.stopPropagation();
|
|
433
|
-
}
|
|
434
|
-
function getExposedActions(childrenArray) {
|
|
435
|
-
const firstTwoChildren = childrenArray.slice(0, 2);
|
|
436
|
-
return firstTwoChildren.reduce((result, child, i) => {
|
|
437
|
-
const hasIcon = Boolean(child.props.icon);
|
|
438
|
-
const isFirstChild = i === 0;
|
|
439
|
-
if (isFirstChild && hasIcon) {
|
|
440
|
-
return [...result, child];
|
|
441
|
-
}
|
|
442
|
-
const isSecondChild = i === 1;
|
|
443
|
-
const hasFirstChild = result.length === 1;
|
|
444
|
-
if (isSecondChild && hasIcon && hasFirstChild) {
|
|
445
|
-
return [...result, child];
|
|
446
|
-
}
|
|
447
|
-
return result;
|
|
448
|
-
}, []);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
507
|
function DataListItems({ layouts, mediaMatches, data, }) {
|
|
452
|
-
const
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
const item = data[i];
|
|
460
|
-
const isActive = activeID === item.id;
|
|
461
|
-
const shouldShowContextMenu = isActive && isContextMenuVisible && Boolean(contextMenuActions);
|
|
462
|
-
return (React__default["default"].createElement("div", { onMouseEnter: handleMouseEnter(item), onMouseLeave: handleMouseLeave, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$d.listItem, {
|
|
463
|
-
[styles$d.active]: isActive && isContextMenuVisible,
|
|
464
|
-
}), key: item.id },
|
|
465
|
-
React__default["default"].createElement(DataListItemInternal, { item: data[i] }, layout.props.children(child)),
|
|
466
|
-
React__default["default"].createElement(framerMotion.AnimatePresence, null,
|
|
467
|
-
isActive && React__default["default"].createElement(InternalDataListItemActions, { item: item }),
|
|
468
|
-
React__default["default"].createElement(DataListActionsMenu, { key: item.id, visible: shouldShowContextMenu, position: contextPosition || { x: 0, y: 0 }, onRequestClose: () => setContextPosition(undefined) }, contextMenuActions &&
|
|
469
|
-
React.Children.map(contextMenuActions, action => (React__default["default"].createElement(InternalDataListAction, Object.assign({ key: item.id }, action.props, { item: item }))))))));
|
|
470
|
-
}))) }));
|
|
471
|
-
function handleMouseEnter(item) {
|
|
472
|
-
return () => setActiveID(item.id);
|
|
473
|
-
}
|
|
474
|
-
function handleMouseLeave() {
|
|
475
|
-
!isContextMenuVisible && setActiveID(undefined);
|
|
476
|
-
}
|
|
477
|
-
function handleContextMenu(event) {
|
|
478
|
-
if (!contextMenuActions || isContextMenuVisible)
|
|
479
|
-
return;
|
|
480
|
-
event.preventDefault();
|
|
481
|
-
setContextPosition({
|
|
482
|
-
x: event.clientX,
|
|
483
|
-
y: event.clientY,
|
|
484
|
-
});
|
|
485
|
-
}
|
|
508
|
+
const [hasInLayoutActions, setHasInLayoutActions] = React.useState(false);
|
|
509
|
+
return (React__default["default"].createElement(DataListLayoutContext.Provider, { value: {
|
|
510
|
+
isInLayoutProvider: true,
|
|
511
|
+
hasInLayoutActions,
|
|
512
|
+
setHasInLayoutActions,
|
|
513
|
+
} },
|
|
514
|
+
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 }))))) })));
|
|
486
515
|
}
|
|
487
516
|
|
|
488
517
|
function DataListHeaderCheckbox({ children }) {
|
|
489
518
|
const { data, totalCount, selected = [], onSelectAll, onSelect, } = useDataListContext();
|
|
490
519
|
if (!onSelectAll && !onSelect)
|
|
491
520
|
return children;
|
|
492
|
-
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$
|
|
493
|
-
React__default["default"].createElement("div", { className: classnames__default["default"](styles$
|
|
494
|
-
[styles$
|
|
521
|
+
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.selectable) },
|
|
522
|
+
React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.selectAllCheckbox, {
|
|
523
|
+
[styles$e.visible]: Boolean(onSelectAll),
|
|
495
524
|
}) },
|
|
496
525
|
React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: selected.length > 0 && !isAllSelected(), onChange: onSelectAll })),
|
|
497
|
-
React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: Boolean(selected.length), initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$
|
|
526
|
+
React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: Boolean(selected.length), initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$e.headerBatchSelect },
|
|
498
527
|
React__default["default"].createElement(Text.Text, null,
|
|
499
528
|
React__default["default"].createElement("b", null,
|
|
500
529
|
selected.length,
|
|
@@ -555,7 +584,7 @@ function DataListHeader({ layouts, mediaMatches, headerData, }) {
|
|
|
555
584
|
const showHeader = useShowHeader();
|
|
556
585
|
if (!showHeader || !headerData)
|
|
557
586
|
return null;
|
|
558
|
-
return (React__default["default"].createElement(DataListLayoutInternal, { layouts: layouts, mediaMatches: mediaMatches, renderLayout: layout => (React__default["default"].createElement("div", { className: classnames__default["default"](styles$
|
|
587
|
+
return (React__default["default"].createElement(DataListLayoutInternal, { layouts: layouts, mediaMatches: mediaMatches, renderLayout: layout => (React__default["default"].createElement("div", { className: classnames__default["default"](styles$e.headerTitles) },
|
|
559
588
|
React__default["default"].createElement(DataListHeaderCheckbox, null, layout.props.children(headerData)))) }));
|
|
560
589
|
}
|
|
561
590
|
|
|
@@ -571,13 +600,13 @@ function DataListLoadingState({ headers, layouts, mediaMatches, }) {
|
|
|
571
600
|
if (layout.props.size === "xs") {
|
|
572
601
|
return React__default["default"].createElement(LoadingStateXSBreakpoint, null);
|
|
573
602
|
}
|
|
574
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null, loadingElements.map((child, i) => (React__default["default"].createElement("div", { className: styles$
|
|
603
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, loadingElements.map((child, i) => (React__default["default"].createElement("div", { className: styles$c.loadingItem, key: i, "data-testid": DATALIST_LOADINGSTATE_ROW_TEST_ID }, layout.props.children(child))))));
|
|
575
604
|
} }));
|
|
576
605
|
}
|
|
577
606
|
function LoadingStateXSBreakpoint() {
|
|
578
607
|
const loadingData = new Array(LOADING_STATE_LIMIT_ITEMS).fill(0);
|
|
579
608
|
return (React__default["default"].createElement(React__default["default"].Fragment, null, loadingData.map((_, i) => {
|
|
580
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
609
|
+
return (React__default["default"].createElement("div", { className: styles$c.mobileLoadingState, key: i },
|
|
581
610
|
React__default["default"].createElement(Glimmer.Glimmer.Text, null)));
|
|
582
611
|
})));
|
|
583
612
|
}
|
|
@@ -588,9 +617,9 @@ _) {
|
|
|
588
617
|
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
589
618
|
}
|
|
590
619
|
|
|
591
|
-
var css_248z$
|
|
592
|
-
var styles$
|
|
593
|
-
styleInject_es.styleInject(css_248z$
|
|
620
|
+
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";
|
|
621
|
+
var styles$5 = {"filters":"E-mG3prPSN8-","filterActions":"_0LGNoZxtqSE-","overflowTrigger":"LA3-gtgehrE-","overflowLeft":"fSPvawYWzZ8-","overflowRight":"ChfEJMPPVTk-"};
|
|
622
|
+
styleInject_es.styleInject(css_248z$5);
|
|
594
623
|
|
|
595
624
|
const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
|
|
596
625
|
|
|
@@ -665,20 +694,20 @@ function InternalDataListFilters() {
|
|
|
665
694
|
if (!showSortButton && !component)
|
|
666
695
|
return null;
|
|
667
696
|
const children = component === null || component === void 0 ? void 0 : component.props.children;
|
|
668
|
-
return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$
|
|
669
|
-
[styles$
|
|
670
|
-
[styles$
|
|
697
|
+
return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$5.filters, {
|
|
698
|
+
[styles$5.overflowLeft]: !isLeftVisible,
|
|
699
|
+
[styles$5.overflowRight]: !isRightVisible,
|
|
671
700
|
}) },
|
|
672
|
-
React__default["default"].createElement("div", { className: styles$
|
|
673
|
-
React__default["default"].createElement("span", { ref: leftRef, className: styles$
|
|
701
|
+
React__default["default"].createElement("div", { className: styles$5.filterActions },
|
|
702
|
+
React__default["default"].createElement("span", { ref: leftRef, className: styles$5.overflowTrigger }),
|
|
674
703
|
children && children,
|
|
675
704
|
showSortButton && React__default["default"].createElement(DataListSort, null),
|
|
676
|
-
React__default["default"].createElement("span", { ref: rightRef, className: styles$
|
|
705
|
+
React__default["default"].createElement("span", { ref: rightRef, className: styles$5.overflowTrigger }))));
|
|
677
706
|
}
|
|
678
707
|
|
|
679
|
-
var css_248z$
|
|
680
|
-
var styles$
|
|
681
|
-
styleInject_es.styleInject(css_248z$
|
|
708
|
+
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";
|
|
709
|
+
var styles$4 = {"header":"PGOHzrMh374-","stuck":"PGjWc5ocjpI-"};
|
|
710
|
+
styleInject_es.styleInject(css_248z$4);
|
|
682
711
|
|
|
683
712
|
function DataListStickyHeader({ children }) {
|
|
684
713
|
const [isStuck, setIsStuck] = React.useState(false);
|
|
@@ -693,12 +722,12 @@ function DataListStickyHeader({ children }) {
|
|
|
693
722
|
ref.current && observer.unobserve(ref.current);
|
|
694
723
|
};
|
|
695
724
|
}, [handleObserver, ref.current]);
|
|
696
|
-
return (React__default["default"].createElement("div", { ref: ref, className: classnames__default["default"](styles$
|
|
725
|
+
return (React__default["default"].createElement("div", { ref: ref, className: classnames__default["default"](styles$4.header, { [styles$4.stuck]: isStuck }) }, children));
|
|
697
726
|
}
|
|
698
727
|
|
|
699
|
-
var css_248z$
|
|
700
|
-
var styles$
|
|
701
|
-
styleInject_es.styleInject(css_248z$
|
|
728
|
+
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";
|
|
729
|
+
var styles$3 = {"searchInput":"SaPMOnvw-3c-","searchInputVisible":"_3S1-91v2SYI-","searchButton":"_9GlBktsUALw-","withNoFilters":"_3Pjrt42x454-"};
|
|
730
|
+
styleInject_es.styleInject(css_248z$3);
|
|
702
731
|
|
|
703
732
|
const DATA_LIST_SEARCH_TEST_ID = "ATL-DataList-Search-input-wrapper";
|
|
704
733
|
// This component is meant to capture the props of the DataList.Search
|
|
@@ -718,13 +747,13 @@ function InternalDataListSearch() {
|
|
|
718
747
|
return null;
|
|
719
748
|
const { placeholder } = searchComponent.props;
|
|
720
749
|
return (React__default["default"].createElement("div", { className: classnames__default["default"]({
|
|
721
|
-
[styles$
|
|
750
|
+
[styles$3.withNoFilters]: !filterComponent && !sorting,
|
|
722
751
|
}) },
|
|
723
|
-
React__default["default"].createElement("div", { "data-testid": DATA_LIST_SEARCH_TEST_ID, className: classnames__default["default"](styles$
|
|
724
|
-
[styles$
|
|
752
|
+
React__default["default"].createElement("div", { "data-testid": DATA_LIST_SEARCH_TEST_ID, className: classnames__default["default"](styles$3.searchInput, {
|
|
753
|
+
[styles$3.searchInputVisible]: visible,
|
|
725
754
|
}) },
|
|
726
755
|
React__default["default"].createElement(InputText.InputText, { ref: inputRef, placeholder: getPlaceholder(), onChange: debouncedSearch, prefix: { icon: "search" }, size: "small" })),
|
|
727
|
-
React__default["default"].createElement("div", { className: styles$
|
|
756
|
+
React__default["default"].createElement("div", { className: styles$3.searchButton },
|
|
728
757
|
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 }) }))));
|
|
729
758
|
function getPlaceholder() {
|
|
730
759
|
if (placeholder)
|
|
@@ -742,9 +771,9 @@ function InternalDataListSearch() {
|
|
|
742
771
|
}
|
|
743
772
|
}
|
|
744
773
|
|
|
745
|
-
var css_248z$
|
|
746
|
-
var styles$
|
|
747
|
-
styleInject_es.styleInject(css_248z$
|
|
774
|
+
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";
|
|
775
|
+
var styles$2 = {"emptyStateWrapper":"zg3w9nQga-M-"};
|
|
776
|
+
styleInject_es.styleInject(css_248z$2);
|
|
748
777
|
|
|
749
778
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
750
779
|
function DataListEmptyState(_) {
|
|
@@ -753,7 +782,7 @@ function DataListEmptyState(_) {
|
|
|
753
782
|
function InternalDataListEmptyState() {
|
|
754
783
|
const { emptyStateComponents: components, filtered } = React.useContext(DataListContext);
|
|
755
784
|
const { message, action } = getMessages();
|
|
756
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
785
|
+
return (React__default["default"].createElement("div", { className: styles$2.emptyStateWrapper },
|
|
757
786
|
React__default["default"].createElement(Text.Text, { align: "center" }, message),
|
|
758
787
|
renderButton(action)));
|
|
759
788
|
function getMessages() {
|
|
@@ -787,9 +816,9 @@ function getEmptyStates(components) {
|
|
|
787
816
|
return { defaultEmptyState, filteredEmptyState };
|
|
788
817
|
}
|
|
789
818
|
|
|
790
|
-
var css_248z = ".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";
|
|
791
|
-
var styles = {"trigger":"IC-Y9bTIVFo-","loadingMore":"PbZLGpbI6ZM-","backToTop":"_6zA6B-jmz6o-","fadeIn":"gZ4DUv82g5I-"};
|
|
792
|
-
styleInject_es.styleInject(css_248z);
|
|
819
|
+
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";
|
|
820
|
+
var styles$1 = {"trigger":"IC-Y9bTIVFo-","loadingMore":"PbZLGpbI6ZM-","backToTop":"_6zA6B-jmz6o-","fadeIn":"gZ4DUv82g5I-"};
|
|
821
|
+
styleInject_es.styleInject(css_248z$1);
|
|
793
822
|
|
|
794
823
|
function DataListLoadMoreTrigger() {
|
|
795
824
|
const { onLoadMore } = useDataListContext();
|
|
@@ -797,7 +826,7 @@ function DataListLoadMoreTrigger() {
|
|
|
797
826
|
React.useEffect(() => {
|
|
798
827
|
isInView && (onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore());
|
|
799
828
|
}, [isInView]);
|
|
800
|
-
return (React__default["default"].createElement("div", { ref: inViewRef, className: styles.trigger, "data-testid": DATA_LOAD_MORE_TEST_ID }));
|
|
829
|
+
return (React__default["default"].createElement("div", { ref: inViewRef, className: styles$1.trigger, "data-testid": DATA_LOAD_MORE_TEST_ID }));
|
|
801
830
|
}
|
|
802
831
|
|
|
803
832
|
const MAX_DATA_COUNT = 50;
|
|
@@ -806,12 +835,41 @@ function DataListLoadMore({ onBackToTop }) {
|
|
|
806
835
|
const showBackToTop = data.length > MAX_DATA_COUNT && loadingState !== "loadingMore";
|
|
807
836
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
808
837
|
React__default["default"].createElement(DataListLoadMoreTrigger, { key: data.length }),
|
|
809
|
-
loadingState === "loadingMore" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_LOADING_MORE_SPINNER_TEST_ID, className: styles.loadingMore },
|
|
838
|
+
loadingState === "loadingMore" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_LOADING_MORE_SPINNER_TEST_ID, className: styles$1.loadingMore },
|
|
810
839
|
React__default["default"].createElement(Spinner.Spinner, { size: "small" }))),
|
|
811
|
-
showBackToTop && (React__default["default"].createElement("div", { className: styles.backToTop },
|
|
840
|
+
showBackToTop && (React__default["default"].createElement("div", { className: styles$1.backToTop },
|
|
812
841
|
React__default["default"].createElement(Button.Button, { label: "Back to top", onClick: onBackToTop, size: "small", variation: "subtle" })))));
|
|
813
842
|
}
|
|
814
843
|
|
|
844
|
+
var css_248z = "._0m75bgCVBhk- {\n visibility: hidden;\n}\n";
|
|
845
|
+
var styles = {"hidden":"_0m75bgCVBhk-"};
|
|
846
|
+
styleInject_es.styleInject(css_248z);
|
|
847
|
+
|
|
848
|
+
function DataListLayoutActions() {
|
|
849
|
+
const { itemActionComponent } = useDataListContext();
|
|
850
|
+
const { setHasInLayoutActions } = useDataListLayoutContext();
|
|
851
|
+
const { activeItem } = useDataListLayoutActionsContext();
|
|
852
|
+
const { children: actionsChildren } = (itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props) || {};
|
|
853
|
+
const actions = React.Children.toArray(actionsChildren);
|
|
854
|
+
const hasActions = actions.length > 0;
|
|
855
|
+
React.useEffect(() => {
|
|
856
|
+
setHasInLayoutActions(hasActions);
|
|
857
|
+
return () => {
|
|
858
|
+
setHasInLayoutActions(false);
|
|
859
|
+
};
|
|
860
|
+
}, []);
|
|
861
|
+
if (!hasActions)
|
|
862
|
+
return null;
|
|
863
|
+
return (React__default["default"].createElement(DataListLayoutActionsWrapper, null,
|
|
864
|
+
React__default["default"].createElement(DataListItemActionsOverflow, { actions: actions, item: activeItem })));
|
|
865
|
+
}
|
|
866
|
+
function DataListLayoutActionsWrapper({ children }) {
|
|
867
|
+
const { isInLayoutProvider } = useDataListLayoutContext();
|
|
868
|
+
if (isInLayoutProvider)
|
|
869
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
870
|
+
return React__default["default"].createElement("div", { className: styles.hidden }, children);
|
|
871
|
+
}
|
|
872
|
+
|
|
815
873
|
function useLayoutMediaQueries() {
|
|
816
874
|
const mediaQueries = BREAKPOINTS.reduce((previous, breakpoint) => (Object.assign(Object.assign({}, previous), { [breakpoint]: window.matchMedia(breakpointToMediaQuery(breakpoint)) })), {});
|
|
817
875
|
const initialMatches = BREAKPOINTS.reduce((previous, breakpoint) => (Object.assign(Object.assign({}, previous), { [breakpoint]: mediaQueries[breakpoint].matches })), {});
|
|
@@ -862,21 +920,21 @@ function InternalDataList() {
|
|
|
862
920
|
const initialLoading = loadingState === "initial";
|
|
863
921
|
const showEmptyState = !initialLoading && data.length === 0;
|
|
864
922
|
const shouldRenderLoadMoreTrigger = !initialLoading && !showEmptyState;
|
|
865
|
-
return (React__default["default"].createElement("div", { className: styles$
|
|
866
|
-
React__default["default"].createElement("div", { className: styles$
|
|
923
|
+
return (React__default["default"].createElement("div", { className: styles$e.wrapper },
|
|
924
|
+
React__default["default"].createElement("div", { className: styles$e.titleContainer },
|
|
867
925
|
title && React__default["default"].createElement(Heading.Heading, { level: 3 }, title),
|
|
868
926
|
React__default["default"].createElement(DataListTotalCount, { totalCount: totalCount, loading: initialLoading })),
|
|
869
927
|
React__default["default"].createElement("div", { ref: backToTopRef }),
|
|
870
928
|
React__default["default"].createElement(DataListStickyHeader, null,
|
|
871
|
-
React__default["default"].createElement("div", { className: styles$
|
|
929
|
+
React__default["default"].createElement("div", { className: styles$e.headerFilters },
|
|
872
930
|
React__default["default"].createElement(InternalDataListFilters, null),
|
|
873
931
|
React__default["default"].createElement(InternalDataListSearch, null)),
|
|
874
932
|
headerData && (React__default["default"].createElement(DataListHeader, { layouts: layoutComponents, headerData: headerData, headerVisibility: headerVisibility, mediaMatches: mediaMatches }))),
|
|
875
933
|
initialLoading && (React__default["default"].createElement(DataListLoadingState, { headers: headers, layouts: layoutComponents, mediaMatches: mediaMatches })),
|
|
876
934
|
showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
|
|
877
935
|
!initialLoading && (React__default["default"].createElement(DataListItems, { data: data, layouts: layoutComponents, mediaMatches: mediaMatches })),
|
|
878
|
-
loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$
|
|
879
|
-
React__default["default"].createElement("div", { className: styles$
|
|
936
|
+
loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$e.filtering },
|
|
937
|
+
React__default["default"].createElement("div", { className: styles$e.filteringSpinner },
|
|
880
938
|
React__default["default"].createElement(Spinner.Spinner, { size: "small" })))),
|
|
881
939
|
shouldRenderLoadMoreTrigger && (React__default["default"].createElement(DataListLoadMore, { onBackToTop: handleBackToTop }))));
|
|
882
940
|
function handleBackToTop() {
|
|
@@ -892,11 +950,36 @@ function InternalDataList() {
|
|
|
892
950
|
});
|
|
893
951
|
}
|
|
894
952
|
}
|
|
953
|
+
/**
|
|
954
|
+
* Sets the layout that the DataList item and header will use.
|
|
955
|
+
*/
|
|
895
956
|
DataList.Layout = DataListLayout;
|
|
957
|
+
/**
|
|
958
|
+
* By using this component, we can render the actions anywhere in the layout
|
|
959
|
+
* instead of being added automatically on hover.
|
|
960
|
+
*/
|
|
961
|
+
DataList.LayoutActions = DataListLayoutActions;
|
|
962
|
+
/**
|
|
963
|
+
* When the DataList is either empty and/or filtered, this component will be
|
|
964
|
+
* rendered.
|
|
965
|
+
*/
|
|
896
966
|
DataList.EmptyState = DataListEmptyState;
|
|
967
|
+
/**
|
|
968
|
+
* Adds the filter components of your choosing to the DataList.
|
|
969
|
+
*/
|
|
897
970
|
DataList.Filters = DataListFilters;
|
|
971
|
+
/**
|
|
972
|
+
* Enables the search functionality of the DataList.
|
|
973
|
+
*/
|
|
898
974
|
DataList.Search = DataListSearch;
|
|
975
|
+
/**
|
|
976
|
+
* Defines the group actions you could do on a single DataList item.
|
|
977
|
+
*/
|
|
899
978
|
DataList.ItemActions = DataListItemActions;
|
|
979
|
+
/**
|
|
980
|
+
* Defines the action in a DataList. This should be used inside the
|
|
981
|
+
* DataListItemActions component.
|
|
982
|
+
*/
|
|
900
983
|
DataList.Action = DataListAction;
|
|
901
984
|
|
|
902
985
|
exports.DataList = DataList;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.42.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"> 1%",
|
|
85
85
|
"IE 10"
|
|
86
86
|
],
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "e46abe091488d7bacf653ac8fd7ffb73b575e8aa"
|
|
88
88
|
}
|