@aivenio/aquarium 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_variables.scss +20 -2
- package/dist/_variables_timescale.scss +20 -2
- package/dist/atoms.cjs +4102 -76
- package/dist/atoms.mjs +4094 -74
- package/dist/src/common/Banner/Banner.js +7 -4
- package/dist/src/common/DataList/DataList.d.ts +24 -0
- package/dist/src/common/DataList/DataList.js +54 -0
- package/dist/src/common/DropdownMenu/DropdownMenu.d.ts +3 -1
- package/dist/src/common/DropdownMenu/DropdownMenu.js +5 -3
- package/dist/src/common/Table/Table.d.ts +8 -3
- package/dist/src/common/Table/Table.js +20 -10
- package/dist/src/components/Carousel/Carousel.d.ts +16 -0
- package/dist/src/components/Carousel/Carousel.js +89 -0
- package/dist/src/components/Chip/Chip.d.ts +1 -0
- package/dist/src/components/Chip/Chip.js +2 -2
- package/dist/src/components/DataList/DataList.d.ts +13 -0
- package/dist/src/components/DataList/DataList.js +24 -0
- package/dist/src/components/DataTable/DataTable.d.ts +5 -92
- package/dist/src/components/DataTable/DataTable.js +9 -28
- package/dist/src/components/Dropdown/Dropdown.js +1 -1
- package/dist/src/components/DropdownMenu/DropdownMenu.d.ts +8 -0
- package/dist/src/components/DropdownMenu/DropdownMenu.js +18 -15
- package/dist/src/components/Section/Section.js +2 -2
- package/dist/src/components/Table/Table.js +2 -2
- package/dist/src/components/Template/Template.d.ts +6 -1
- package/dist/src/components/Template/Template.js +7 -2
- package/dist/src/components/index.d.ts +6 -1
- package/dist/src/components/index.js +7 -2
- package/dist/src/utils/Blueprint.d.ts +6 -1
- package/dist/src/utils/Blueprint.js +4 -2
- package/dist/src/utils/table/types.d.ts +129 -0
- package/dist/src/utils/table/types.js +6 -0
- package/dist/src/utils/table/useScrollTarget.d.ts +2 -0
- package/dist/src/utils/table/useScrollTarget.js +16 -0
- package/dist/src/{common/Table/Table.utils.d.ts → utils/table/useTableSelect.d.ts} +0 -3
- package/dist/src/utils/table/useTableSelect.js +27 -0
- package/dist/src/utils/table/useTableSort.d.ts +2 -0
- package/dist/src/utils/table/useTableSort.js +19 -0
- package/dist/styles.css +63 -6
- package/dist/styles_timescaledb.css +63 -6
- package/dist/system.cjs +937 -675
- package/dist/system.mjs +931 -673
- package/dist/tsconfig.module.tsbuildinfo +1 -1
- package/dist/types/ActionType.d.ts +2 -0
- package/dist/types/tailwindGenerated.d.ts +1 -1
- package/dist/types/utils.d.ts +3 -0
- package/package.json +3 -3
- package/dist/src/common/Table/Table.utils.js +0 -41
@@ -13,10 +13,13 @@ import React from 'react';
|
|
13
13
|
import { tw, classNames } from '../../../src/utils/tailwind';
|
14
14
|
import { Typography } from '../../../src/common/Typography/Typography';
|
15
15
|
import { Box } from '../../../src/components/Box/Box';
|
16
|
-
const
|
16
|
+
const spacing = {
|
17
|
+
spacingAroundBanner: 'p-6',
|
18
|
+
omitSpacingAroundBanner: '-6',
|
19
|
+
};
|
17
20
|
export const Banner = (_a) => {
|
18
21
|
var { children, className, layout, variant } = _a, rest = __rest(_a, ["children", "className", "layout", "variant"]);
|
19
|
-
return (React.createElement("div", Object.assign({}, rest, { className: classNames(className, tw(`rounded flex justify-between gap-7 flex-nowrap
|
22
|
+
return (React.createElement("div", Object.assign({}, rest, { className: classNames(className, tw(`rounded flex justify-between gap-7 flex-nowrap ${spacing.spacingAroundBanner}`, {
|
20
23
|
'items-center': layout === 'horizontal',
|
21
24
|
'bg-grey-0': variant === 'default',
|
22
25
|
'bg-white border border-grey-5': variant === 'outlined',
|
@@ -41,7 +44,7 @@ Banner.ContentContainer = (_a) => {
|
|
41
44
|
};
|
42
45
|
Banner.ImageContainer = (_a) => {
|
43
46
|
var { children } = _a, rest = __rest(_a, ["children"]);
|
44
|
-
return (React.createElement(Box, Object.assign({}, rest, { display: "inline-flex", alignItems: "center", margin:
|
47
|
+
return (React.createElement(Box, Object.assign({}, rest, { display: "inline-flex", alignItems: "center", margin: spacing.omitSpacingAroundBanner, marginLeft: "0" }), children));
|
45
48
|
};
|
46
49
|
Banner.Actions = (_a) => {
|
47
50
|
var { children, className, layout } = _a, rest = __rest(_a, ["children", "className", "layout"]);
|
@@ -51,4 +54,4 @@ Banner.DismissContainer = (_a) => {
|
|
51
54
|
var { layout, children, className } = _a, rest = __rest(_a, ["layout", "children", "className"]);
|
52
55
|
return (React.createElement("div", Object.assign({}, rest, { className: classNames(className, tw({ 'self-start': layout === 'vertical', 'self-center': layout === 'horizontal' })) }), children));
|
53
56
|
};
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9CYW5uZXIvQmFubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFZLE1BQU0sd0JBQXdCLENBQUM7QUE2QnZELE1BQU0sT0FBTyxHQUFHO0lBQ2QsbUJBQW1CLEVBQUUsS0FBSztJQUMxQix1QkFBdUIsRUFBRSxJQUFpQztDQUMzRCxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFzRixDQUFDLEVBTXpHLEVBQUUsRUFBRTtRQU5xRyxFQUN4RyxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLE9BRVIsRUFESSxJQUFJLGNBTGlHLDhDQU16RyxDQURRO0lBQ0gsT0FBQSxDQUNKLDZDQUNNLElBQUksSUFDUixTQUFTLEVBQUUsVUFBVSxDQUNuQixTQUFTLEVBQ1QsRUFBRSxDQUFDLGtEQUFrRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUNsRixjQUFjLEVBQUUsTUFBTSxLQUFLLFlBQVk7WUFDdkMsV0FBVyxFQUFFLE9BQU8sS0FBSyxTQUFTO1lBQ2xDLCtCQUErQixFQUFFLE9BQU8sS0FBSyxVQUFVO1NBQ3hELENBQUMsQ0FDSCxLQUVBLFFBQVEsQ0FDTCxDQUNQLENBQUE7Q0FBQSxDQUFDO0FBRUYsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQWtFLEVBQUUsRUFBRTtRQUF0RSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FBRyxTQUFTLE9BQVcsRUFBTixJQUFJLGNBQWhFLG1EQUFrRSxD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
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { SortDirection, TextAlign } from '../../../src/utils/table/types';
|
3
|
+
declare type DivProps = React.HTMLProps<HTMLDivElement>;
|
4
|
+
declare type ComposedDataListProps = React.FC<DivProps> & {
|
5
|
+
Cell: typeof Cell;
|
6
|
+
HeadCell: typeof HeadCell;
|
7
|
+
SortCell: typeof SortCell;
|
8
|
+
Row: typeof Row;
|
9
|
+
};
|
10
|
+
export declare const DataList: ComposedDataListProps;
|
11
|
+
declare const HeadCell: React.FC<DivProps & {
|
12
|
+
sticky?: boolean;
|
13
|
+
align?: TextAlign;
|
14
|
+
}>;
|
15
|
+
declare const Cell: React.FC<DivProps & {
|
16
|
+
align?: TextAlign;
|
17
|
+
}>;
|
18
|
+
declare const Row: React.FC<DivProps>;
|
19
|
+
declare const SortCell: React.FC<DivProps & {
|
20
|
+
onClick?: (event: React.MouseEvent<HTMLElement>) => void;
|
21
|
+
direction: SortDirection;
|
22
|
+
align?: TextAlign;
|
23
|
+
}>;
|
24
|
+
export {};
|
@@ -0,0 +1,54 @@
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
2
|
+
var t = {};
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
4
|
+
t[p] = s[p];
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
8
|
+
t[p[i]] = s[p[i]];
|
9
|
+
}
|
10
|
+
return t;
|
11
|
+
};
|
12
|
+
import React from 'react';
|
13
|
+
import { tw, classNames } from '../../../src/utils/tailwind';
|
14
|
+
import { cellClassNames, getHeadCellClassNames, getBodyCellClassNames, getSortCellButtonClassNames, getSortCellIconClassNames, } from '../../../src/common/Table/Table';
|
15
|
+
import { InlineIcon } from '../../../src/components/Icon/Icon';
|
16
|
+
import chevronUp from '../../../src/icons/chevronUp';
|
17
|
+
import chevronDown from '../../../src/icons/chevronDown';
|
18
|
+
const getAlignClassNames = (align) => tw('flex items-center', {
|
19
|
+
'justify-end': align === 'right',
|
20
|
+
'justify-center': align === 'center',
|
21
|
+
'justify-start': align === 'left' || align === undefined,
|
22
|
+
});
|
23
|
+
export const DataList = (_a) => {
|
24
|
+
var { className } = _a, rest = __rest(_a, ["className"]);
|
25
|
+
return React.createElement("div", Object.assign({}, rest));
|
26
|
+
};
|
27
|
+
const HeadCell = (_a) => {
|
28
|
+
var { className, sticky, align } = _a, rest = __rest(_a, ["className", "sticky", "align"]);
|
29
|
+
return (React.createElement("div", Object.assign({}, rest, { role: "cell", className: classNames(cellClassNames, getHeadCellClassNames(sticky), getAlignClassNames(align), className) })));
|
30
|
+
};
|
31
|
+
const Cell = (_a) => {
|
32
|
+
var { className, align } = _a, rest = __rest(_a, ["className", "align"]);
|
33
|
+
return (React.createElement("div", Object.assign({}, rest, { role: "cell", className: classNames(cellClassNames, getBodyCellClassNames(false), getAlignClassNames(align), tw('border-grey-10 group-hover:bg-grey-0 group-last:border-b-0'), className) })));
|
34
|
+
};
|
35
|
+
const Row = (_a) => {
|
36
|
+
var { className } = _a, rest = __rest(_a, ["className"]);
|
37
|
+
return (React.createElement("div", Object.assign({}, rest, { className: classNames(tw('contents group'), className), role: "row" })));
|
38
|
+
};
|
39
|
+
const SortCell = (_a) => {
|
40
|
+
var { children, direction = 'none', onClick } = _a, rest = __rest(_a, ["children", "direction", "onClick"]);
|
41
|
+
return (React.createElement(HeadCell, Object.assign({}, rest, { "aria-sort": direction, role: "cell" }),
|
42
|
+
React.createElement("span", { className: getSortCellButtonClassNames(rest.align), role: 'button', tabIndex: -1, onClick: onClick },
|
43
|
+
children,
|
44
|
+
React.createElement("div", { "data-sort-icons": true, className: tw('flex flex-col', {
|
45
|
+
'invisible group-hover:visible': direction === 'none',
|
46
|
+
}) },
|
47
|
+
React.createElement(InlineIcon, { icon: chevronUp, className: getSortCellIconClassNames(direction === 'descending') }),
|
48
|
+
React.createElement(InlineIcon, { icon: chevronDown, className: getSortCellIconClassNames(direction === 'ascending') })))));
|
49
|
+
};
|
50
|
+
DataList.HeadCell = HeadCell;
|
51
|
+
DataList.SortCell = SortCell;
|
52
|
+
DataList.Cell = Cell;
|
53
|
+
DataList.Row = Row;
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL0RhdGFMaXN0L0RhdGFMaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQiwyQkFBMkIsRUFDM0IseUJBQXlCLEdBQzFCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBV2hELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FDL0MsRUFBRSxDQUFDLG1CQUFtQixFQUFFO0lBQ3RCLGFBQWEsRUFBRSxLQUFLLEtBQUssT0FBTztJQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLEtBQUssUUFBUTtJQUNwQyxlQUFlLEVBQUUsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssU0FBUztDQUN6RCxDQUFDLENBQUM7QUFFTCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTBCLENBQUMsRUFBc0IsRUFBRSxFQUFFO1FBQTFCLEVBQUUsU0FBUyxPQUFXLEVBQU4sSUFBSSxjQUFwQixhQUFzQixDQUFGO0lBQU8sT0FBQSw2Q0FBUyxJQUFJLEVBQUksQ0FBQTtDQUFBLENBQUM7QUFFN0YsTUFBTSxRQUFRLEdBQWlFLENBQUMsRUFLL0UsRUFBRSxFQUFFO1FBTDJFLEVBQzlFLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxPQUVOLEVBREksSUFBSSxjQUp1RSxnQ0FLL0UsQ0FEUTtJQUNILE9BQUEsQ0FDSiw2Q0FDTSxJQUFJLElBQ1IsSUFBSSxFQUFDLE1BQU0sRUFDWCxTQUFTLEVBQUUsVUFBVSxDQUFDLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsSUFDMUcsQ0FDSCxDQUFBO0NBQUEsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUErQyxDQUFDLEVBQTZCLEVBQUUsRUFBRTtRQUFqQyxFQUFFLFNBQVMsRUFBRSxLQUFLLE9BQVcsRUFBTixJQUFJLGNBQTNCLHNCQUE2QixDQUFGO0lBQU8sT0FBQSxDQUMxRiw2Q0FDTSxJQUFJLElBQ1IsSUFBSSxFQUFDLE1BQU0sRUFDWCxTQUFTLEVBQUUsVUFBVSxDQUNuQixjQUFjLEVBQ2QscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQzVCLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUN6QixFQUFFLENBQUMsNERBQTRELENBQUMsRUFDaEUsU0FBUyxDQUNWLElBQ0QsQ0FDSCxDQUFBO0NBQUEsQ0FBQztBQUVGLE1BQU0sR0FBRyxHQUF1QixDQUFDLEVBQXNCLEVBQUUsRUFBRTtRQUExQixFQUFFLFNBQVMsT0FBVyxFQUFOLElBQUksY0FBcEIsYUFBc0IsQ0FBRjtJQUFPLE9BQUEsQ0FDMUQsNkNBQVMsSUFBSSxJQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFDLEtBQUssSUFBRyxDQUNyRixDQUFBO0NBQUEsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQU1WLENBQUMsRUFBa0QsRUFBRSxFQUFFO1FBQXRELEVBQUUsUUFBUSxFQUFFLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxPQUFXLEVBQU4sSUFBSSxjQUFoRCxvQ0FBa0QsQ0FBRjtJQUFPLE9BQUEsQ0FDMUQsb0JBQUMsUUFBUSxvQkFBSyxJQUFJLGlCQUFhLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTTtRQUNuRCw4QkFBTSxTQUFTLEVBQUUsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPO1lBQ3JHLFFBQVE7WUFDVCxzREFFRSxTQUFTLEVBQUUsRUFBRSxDQUFDLGVBQWUsRUFBRTtvQkFDN0IsK0JBQStCLEVBQUUsU0FBUyxLQUFLLE1BQU07aUJBQ3RELENBQUM7Z0JBRUYsb0JBQUMsVUFBVSxJQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsR0FBSTtnQkFDakcsb0JBQUMsVUFBVSxJQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsR0FBSSxDQUM5RixDQUNELENBQ0UsQ0FDWixDQUFBO0NBQUEsQ0FBQztBQUVGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzdCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzdCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDIn0=
|
@@ -6,6 +6,7 @@ declare type DropdownMenuProps = {
|
|
6
6
|
maxWidth?: string;
|
7
7
|
} & DivAttributes;
|
8
8
|
declare type DropdownMenuComponent = React.ForwardRefExoticComponent<DropdownMenuProps & React.RefAttributes<HTMLDivElement>> & {
|
9
|
+
ContentContainer: typeof ContentContainer;
|
9
10
|
List: typeof List;
|
10
11
|
Group: typeof Group;
|
11
12
|
Item: typeof Item;
|
@@ -14,7 +15,8 @@ declare type DropdownMenuComponent = React.ForwardRefExoticComponent<DropdownMen
|
|
14
15
|
EmptyStateContainer: typeof EmptyStateContainer;
|
15
16
|
};
|
16
17
|
export declare const DropdownMenu: DropdownMenuComponent;
|
17
|
-
|
18
|
+
declare const ContentContainer: React.FC;
|
19
|
+
declare const List: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLUListElement> & React.RefAttributes<HTMLUListElement>>;
|
18
20
|
declare const Group: React.ForwardRefExoticComponent<{
|
19
21
|
title: React.ReactNode;
|
20
22
|
titleProps?: React.DOMAttributes<HTMLElement> | undefined;
|
@@ -16,9 +16,11 @@ import { Typography } from '../../../src/components/Typography/Typography';
|
|
16
16
|
import tick from '../../../src/icons/tick';
|
17
17
|
export const DropdownMenu = React.forwardRef((_a, ref) => {
|
18
18
|
var { maxHeight = '450px', minWidth = '125px', maxWidth, className, children } = _a, props = __rest(_a, ["maxHeight", "minWidth", "maxWidth", "className", "children"]);
|
19
|
-
return (React.createElement("div", Object.assign({ ref: ref, style: { maxHeight, minWidth, maxWidth }, className: classNames(className, '
|
19
|
+
return (React.createElement("div", Object.assign({ ref: ref, style: { maxHeight, minWidth, maxWidth }, className: classNames(className, 'bg-white w-full overflow-y-auto overflow-x-hidden typography-body-small-medium text-grey-70') }, props), children));
|
20
20
|
});
|
21
|
-
|
21
|
+
const ContentContainer = ({ children }) => React.createElement("div", { className: tw('p-3') }, children);
|
22
|
+
DropdownMenu.ContentContainer = ContentContainer;
|
23
|
+
const List = React.forwardRef((_a, ref) => {
|
22
24
|
var { children } = _a, props = __rest(_a, ["children"]);
|
23
25
|
return (React.createElement("ul", Object.assign({ ref: ref }, props), children));
|
24
26
|
});
|
@@ -57,4 +59,4 @@ const EmptyStateContainer = (_a) => {
|
|
57
59
|
return (React.createElement("div", Object.assign({ className: classNames(tw('border border-dashed border-grey-10 p-3'), className) }, props), children));
|
58
60
|
};
|
59
61
|
DropdownMenu.EmptyStateContainer = EmptyStateContainer;
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25NZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9Ecm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xFLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBdUJsQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTBCLEtBQUssQ0FBQyxVQUFVLENBQ2pFLENBQUMsRUFBb0YsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUE3RixFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUUsUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsT0FBWSxFQUFQLEtBQUssY0FBbEYsOERBQW9GLENBQUY7SUFBWSxPQUFBLENBQzdGLDJDQUNFLEdBQUcsRUFBRSxHQUFHLEVBQ1IsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFDeEMsU0FBUyxFQUFFLFVBQVUsQ0FDbkIsU0FBUyxFQUNULDZGQUE2RixDQUM5RixJQUNHLEtBQUssR0FFUixRQUFRLENBQ0wsQ0FDUCxDQUFBO0NBQUEsQ0FDdUIsQ0FBQztBQUUzQixNQUFNLGdCQUFnQixHQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsNkJBQUssU0FBUyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBRyxRQUFRLENBQU8sQ0FBQztBQUVqRyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7QUFFakQs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
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import React, { HTMLProps } from 'react';
|
2
|
-
import { SortDirection } from '../../../src/
|
2
|
+
import { SortDirection, TableItem, TextAlign } from '../../../src/utils/table/types';
|
3
3
|
import { CheckboxProps } from '../../../src/common/Checkbox/Checkbox';
|
4
4
|
import { RadioButtonProps } from '../../../src/common/RadioButton/RadioButton';
|
5
5
|
import { EmptyOrOneOrMore } from '../../../types/utils';
|
@@ -7,7 +7,6 @@ export declare type TableSort = {
|
|
7
7
|
key: string;
|
8
8
|
direction: SortDirection;
|
9
9
|
};
|
10
|
-
declare type TextAlign = 'left' | 'center' | 'right';
|
11
10
|
export declare type TableProps = HTMLProps<HTMLTableElement> & {
|
12
11
|
ariaLabel: string;
|
13
12
|
children: [React.ReactElement<TableHeadProps>, React.ReactElement<TableBodyProps>];
|
@@ -45,5 +44,11 @@ export declare const Table: React.FC<TableProps> & {
|
|
45
44
|
SelectCell: React.FC<TableSelectCellProps>;
|
46
45
|
SortCell: React.FC<TableSortCellProps>;
|
47
46
|
};
|
47
|
+
export declare const rowClassNames: string;
|
48
|
+
export declare const cellClassNames: string;
|
49
|
+
export declare const getBodyCellClassNames: (table?: boolean) => string;
|
50
|
+
export declare const getAlignClassNames: (align?: TextAlign) => string;
|
48
51
|
export declare const getHeadCellClassNames: (sticky?: boolean) => string;
|
49
|
-
export
|
52
|
+
export declare const getSortCellButtonClassNames: (align?: TextAlign) => string;
|
53
|
+
export declare const getSortCellIconClassNames: (active: boolean) => string;
|
54
|
+
export declare const Item: React.FC<TableItem>;
|
@@ -17,6 +17,7 @@ import { Checkbox } from '../../../src/common/Checkbox/Checkbox';
|
|
17
17
|
import { RadioButton } from '../../../src/common/RadioButton/RadioButton';
|
18
18
|
import chevronUp from '../../../src/icons/chevronUp';
|
19
19
|
import chevronDown from '../../../src/icons/chevronDown';
|
20
|
+
import { Typography } from '../../../src/components';
|
20
21
|
const HeadContext = React.createContext(null);
|
21
22
|
const tableClassNames = tw('w-full relative typography-body-default border-spacing-0');
|
22
23
|
export const Table = (_a) => {
|
@@ -33,14 +34,17 @@ const TableBody = (_a) => {
|
|
33
34
|
var { children } = _a, rest = __rest(_a, ["children"]);
|
34
35
|
return React.createElement("tbody", Object.assign({}, rest), children);
|
35
36
|
};
|
36
|
-
const rowClassNames = tw('children:border-grey-10 children:last:border-b-0 hover:bg-grey-0');
|
37
|
+
export const rowClassNames = tw('children:border-grey-10 children:last:border-b-0 hover:bg-grey-0');
|
37
38
|
const TableRow = (_a) => {
|
38
39
|
var { children, className } = _a, rest = __rest(_a, ["children", "className"]);
|
39
40
|
return (React.createElement("tr", Object.assign({}, rest, { className: classNames(rowClassNames, className) }), children));
|
40
41
|
};
|
41
|
-
const cellClassNames = tw('px-4 border-b typography-body-small
|
42
|
-
const
|
43
|
-
|
42
|
+
export const cellClassNames = tw('px-4 border-b typography-body-small leading-[18px]');
|
43
|
+
export const getBodyCellClassNames = (table = true) => tw('text-grey-70 py-3', {
|
44
|
+
'h-[50px]': table,
|
45
|
+
'min-h-[50px]': !table,
|
46
|
+
});
|
47
|
+
export const getAlignClassNames = (align) => tw({ 'text-right': align === 'right', 'text-center': align === 'center' });
|
44
48
|
export const getHeadCellClassNames = (sticky = true) => {
|
45
49
|
const common = tw('py-[14px] text-left bg-white border-grey-40 text-grey-50 font-normal');
|
46
50
|
return sticky ? classNames(common, tw('sticky top-0')) : common;
|
@@ -48,7 +52,7 @@ export const getHeadCellClassNames = (sticky = true) => {
|
|
48
52
|
const TableCell = (_a) => {
|
49
53
|
var { children, className, align = 'left' } = _a, rest = __rest(_a, ["children", "className", "align"]);
|
50
54
|
const headContext = React.useContext(HeadContext);
|
51
|
-
return headContext ? (React.createElement("th", Object.assign({}, rest, { className: classNames(cellClassNames, getHeadCellClassNames(headContext.sticky), getAlignClassNames(align), className) }), children)) : (React.createElement("td", Object.assign({}, rest, { className: classNames(cellClassNames,
|
55
|
+
return headContext ? (React.createElement("th", Object.assign({}, rest, { className: classNames(cellClassNames, getHeadCellClassNames(headContext.sticky), getAlignClassNames(align), className) }), children)) : (React.createElement("td", Object.assign({}, rest, { className: classNames(cellClassNames, getBodyCellClassNames(), getAlignClassNames(align), className) }), children));
|
52
56
|
};
|
53
57
|
/**
|
54
58
|
* @deprecated
|
@@ -57,25 +61,31 @@ const TableSelectCell = (_a) => {
|
|
57
61
|
var { ariaLabel } = _a, props = __rest(_a, ["ariaLabel"]);
|
58
62
|
return (React.createElement(Table.Cell, { className: tw('leading-[0px]') }, props.type === 'radio' ? (React.createElement(RadioButton, Object.assign({ "aria-label": ariaLabel }, props))) : (React.createElement(Checkbox, Object.assign({ "aria-label": ariaLabel }, props)))));
|
59
63
|
};
|
60
|
-
const
|
61
|
-
const getSortCellIconClassNames = (active) => {
|
64
|
+
export const getSortCellButtonClassNames = (align) => tw('group flex items-center gap-x-4 text-grey-50', { 'flex-row-reverse': align === 'right' });
|
65
|
+
export const getSortCellIconClassNames = (active) => {
|
62
66
|
return tw('text-[9px]', active ? 'text-grey-70' : 'text-grey-30');
|
63
67
|
};
|
64
68
|
const TableSortCell = (_a) => {
|
65
69
|
var { children, direction = 'none', onClick } = _a, rest = __rest(_a, ["children", "direction", "onClick"]);
|
66
70
|
return (React.createElement(Table.Cell, Object.assign({}, rest, { "aria-sort": direction }),
|
67
|
-
React.createElement("span", { className:
|
71
|
+
React.createElement("span", { className: getSortCellButtonClassNames(rest.align), role: 'button', tabIndex: -1, onClick: onClick },
|
68
72
|
children,
|
69
|
-
React.createElement("div", { "data-sort-icons": true, className: tw('flex flex-col
|
73
|
+
React.createElement("div", { "data-sort-icons": true, className: tw('flex flex-col', {
|
70
74
|
'invisible group-hover:visible': direction === 'none',
|
71
75
|
}) },
|
72
76
|
React.createElement(InlineIcon, { icon: chevronUp, className: getSortCellIconClassNames(direction === 'descending') }),
|
73
77
|
React.createElement(InlineIcon, { icon: chevronDown, className: getSortCellIconClassNames(direction === 'ascending') })))));
|
74
78
|
};
|
79
|
+
// TODO: make into its own components
|
80
|
+
export const Item = ({ image, imageAlt, imageSize = 35, title, caption }) => (React.createElement("div", { className: tw('flex gap-4 items-center') },
|
81
|
+
image && React.createElement("img", { src: image, alt: imageAlt, style: { width: imageSize, height: imageSize } }),
|
82
|
+
React.createElement("div", null,
|
83
|
+
title,
|
84
|
+
caption && React.createElement(Typography.Caption, null, caption))));
|
75
85
|
Table.Head = React.memo(TableHead);
|
76
86
|
Table.Body = React.memo(TableBody);
|
77
87
|
Table.Row = React.memo(TableRow);
|
78
88
|
Table.Cell = React.memo(TableCell);
|
79
89
|
Table.SortCell = React.memo(TableSortCell);
|
80
90
|
Table.SelectCell = React.memo(TableSelectCell);
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL1RhYmxlL1RhYmxlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7Ozs7Ozs7Ozs7OztBQUVyRSxPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxRQUFRLEVBQWlCLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBb0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRixPQUFPLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF1QzVDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQXdCLElBQUksQ0FBQyxDQUFDO0FBRXJFLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0FBRXZGLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FPZCxDQUFDLEVBQTJDLEVBQUUsRUFBRTtRQUEvQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxPQUFXLEVBQU4sSUFBSSxjQUF6QyxzQ0FBMkMsQ0FBRjtJQUM1QyxPQUFPLENBQ0wsK0NBQVcsSUFBSSxJQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxnQkFBYyxTQUFTLEtBQ3RGLFFBQVEsQ0FDSCxDQUNULENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBNkIsQ0FBQyxFQUE2QixFQUFFLEVBQUU7UUFBakMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFXLEVBQU4s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
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export declare type CarouselProps = {
|
3
|
+
/**
|
4
|
+
* Currently active page number for controlled mode.
|
5
|
+
*/
|
6
|
+
currentPage?: number;
|
7
|
+
/**
|
8
|
+
* Change callback for the currently active page number for controlled mode.
|
9
|
+
*/
|
10
|
+
onPageChange?: (pageNumber: number) => void;
|
11
|
+
/**
|
12
|
+
* Initial active page number for uncontrolled mode.
|
13
|
+
*/
|
14
|
+
defaultPage?: number;
|
15
|
+
};
|
16
|
+
export declare const Carousel: React.FC<CarouselProps>;
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import React, { useRef, useLayoutEffect, useState, useEffect } from 'react';
|
2
|
+
import { tw } from '../../../src/utils/tailwind';
|
3
|
+
import { IconButton } from '../../../src/components/Button/Button';
|
4
|
+
import { Typography } from '../../../src/components/Typography/Typography';
|
5
|
+
import chevronLeft from '../../../src/icons/chevronLeft';
|
6
|
+
import chevronRight from '../../../src/icons/chevronRight';
|
7
|
+
import { Flexbox } from '../../../src/components/Flexbox/Flexbox';
|
8
|
+
export const Carousel = ({ defaultPage = 1, currentPage: currentPageProp, onPageChange, children, }) => {
|
9
|
+
const containerRef = useRef(null);
|
10
|
+
const scrollbarContainerRef = useRef(null);
|
11
|
+
const items = React.Children.toArray(children);
|
12
|
+
const [width, setWidth] = useState(0);
|
13
|
+
const [isUpdating, setIsUpdating] = useState(false); // waiting for activePage update scrollTo to be done first (controlled mode)
|
14
|
+
const [currentPage, setCurrentPage] = useState(currentPageProp !== null && currentPageProp !== void 0 ? currentPageProp : defaultPage);
|
15
|
+
useLayoutEffect(() => {
|
16
|
+
const updateContainerWidth = () => {
|
17
|
+
var _a;
|
18
|
+
const containerWidth = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
|
19
|
+
if (containerWidth !== undefined && width !== containerWidth) {
|
20
|
+
setWidth(containerWidth);
|
21
|
+
}
|
22
|
+
};
|
23
|
+
updateContainerWidth();
|
24
|
+
window.addEventListener('resize', updateContainerWidth); // update width when user resizes window's size
|
25
|
+
return () => {
|
26
|
+
window.removeEventListener('resize', updateContainerWidth);
|
27
|
+
};
|
28
|
+
}, [containerRef.current]);
|
29
|
+
// case: controlled mode
|
30
|
+
if (typeof currentPageProp === 'number' && currentPageProp !== currentPage && onPageChange && width !== 0) {
|
31
|
+
setCurrentPage(currentPageProp);
|
32
|
+
}
|
33
|
+
useEffect(() => {
|
34
|
+
var _a, _b;
|
35
|
+
if (width === 0) {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
const currentPageX = (currentPage - 1) * width;
|
39
|
+
if (((_a = scrollbarContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) !== currentPageX) {
|
40
|
+
setIsUpdating(true); // this will prevent scroll event listener to work when we are updating scrollTo() programatically which are 1) when clicking on next/back button 2) when scroll based on "currentPageProp" changes. Since when we set scrollTo() programatically, it also triggers scroll event listener at the same time.
|
41
|
+
(_b = scrollbarContainerRef.current) === null || _b === void 0 ? void 0 : _b.scrollTo({ left: currentPageX, behavior: 'smooth' });
|
42
|
+
}
|
43
|
+
}, [currentPage, scrollbarContainerRef.current]);
|
44
|
+
const handleNavigationClick = (direction) => {
|
45
|
+
const nextItem = currentPage + (direction === 'left' ? -1 : 1);
|
46
|
+
// case: uncontrolled mode
|
47
|
+
!onPageChange && setCurrentPage(nextItem);
|
48
|
+
// case: controlled mode
|
49
|
+
onPageChange && onPageChange(nextItem);
|
50
|
+
};
|
51
|
+
const handleScroll = () => {
|
52
|
+
var _a, _b;
|
53
|
+
const currentPageX = (currentPage - 1) * width;
|
54
|
+
// when currentPageProp is updated, as controlled mode, we programatically scroll it by scrollTo() which will also trigger the scroll event and this "handleScroll" callback will also be triggered.
|
55
|
+
// Due to the above reason, while the previous scroll isn't done yet, "scrollLeft" here might be different than the targeted x position of the previous scroll action
|
56
|
+
// for example we pass `currentPageProp=4` and then update it to `currentPageProp=2`, it will have to scroll from 4 back to 2 which will also pass 3. So in the UI, it will show like 4->2, then 4->3, and then 3->2 which causes UI glitch.
|
57
|
+
// but this will have no problem if user navigates through `handleNavigationClick` since it is only -1/+1 item at a time.
|
58
|
+
// to fix the above issue, we will not trigger any action in this callback if "isUpdating === true"
|
59
|
+
// this should be inside a scroll event handle since it is checking when scrolling to x destination is done.
|
60
|
+
// once it arrives to "x" as expected when "currentPage" changes. Resume everything back, so defult scroll event works as usual.
|
61
|
+
if (isUpdating && ((_a = scrollbarContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollLeft) === currentPageX) {
|
62
|
+
setIsUpdating(false);
|
63
|
+
}
|
64
|
+
const scrollBarX = (_b = scrollbarContainerRef.current) === null || _b === void 0 ? void 0 : _b.scrollLeft;
|
65
|
+
if (typeof scrollBarX === 'number' && scrollBarX % width === 0 && currentPageX !== scrollBarX && !isUpdating) {
|
66
|
+
const newPage = scrollBarX / width + 1;
|
67
|
+
// case: uncontrolled mode
|
68
|
+
!onPageChange && setCurrentPage(newPage);
|
69
|
+
// case: controlled mode
|
70
|
+
onPageChange && onPageChange(newPage);
|
71
|
+
}
|
72
|
+
};
|
73
|
+
return items.length > 0 ? (React.createElement("div", { className: tw('w-full flex flex-col'), ref: containerRef },
|
74
|
+
containerRef !== null && (React.createElement("ul", { ref: scrollbarContainerRef, tabIndex: 0, onScroll: handleScroll,
|
75
|
+
// use items-strech here, so that every carousel items are the same height in case there are some items that taller than others
|
76
|
+
className: tw('grid items-stretch grid-flow-col overflow-x-scroll scroll-smooth snap-x snap-mandatory scrollbar-hide focus-visible:outline-0 focus-visible:ring-1 focus-visible:ring-info-70') }, width !== 0 &&
|
77
|
+
React.Children.map(children, (child, index) => (React.createElement(CarouselItem, { key: index, width: width, ariaHidden: index + 1 === currentPage ? undefined : true }, child))))),
|
78
|
+
React.createElement(Flexbox, { direction: "row", justifyContent: "flex-end", alignItems: "center" },
|
79
|
+
React.createElement(IconButton, { "aria-label": "Previous", onClick: () => handleNavigationClick('left'), icon: chevronLeft, disabled: currentPage === 1 }),
|
80
|
+
React.createElement(Typography.Caption, null, `${currentPage}/${React.Children.count(children)}`),
|
81
|
+
React.createElement(IconButton, { "aria-label": "Next", onClick: () => handleNavigationClick('right'), icon: chevronRight, disabled: currentPage === items.length })))) : null;
|
82
|
+
};
|
83
|
+
const CarouselItem = ({ width, children, ariaHidden }) => {
|
84
|
+
return (
|
85
|
+
// let height to be auto
|
86
|
+
// if a carousel item doesn't fit the width of the container nicely, it will be aligned center within the container
|
87
|
+
React.createElement("li", { style: { width }, "aria-hidden": ariaHidden, className: tw('flex justify-center snap-start') }, children));
|
88
|
+
};
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Fyb3VzZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9DYXJvdXNlbC9DYXJvdXNlbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEUsT0FBTyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBbUJ6RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTRCLENBQUMsRUFDaEQsV0FBVyxHQUFHLENBQUMsRUFDZixXQUFXLEVBQUUsZUFBZSxFQUM1QixZQUFZLEVBQ1osUUFBUSxHQUNULEVBQUUsRUFBRTtJQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7SUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQW1CLElBQUksQ0FBQyxDQUFDO0lBQzdELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEVBQTRFO0lBQ2pJLE1BQU0sQ0FBQyxXQUFXLEVBQUUs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
|
@@ -46,7 +46,7 @@ export const Chip = (_a) => {
|
|
46
46
|
onClose && (React.createElement(InlineIcon, { role: "button", "aria-hidden": false, icon: crossIcon, className: tw({ 'cursor-pointer': onClose !== undefined }), onClick: () => onClose === null || onClose === void 0 ? void 0 : onClose() })),
|
47
47
|
locked && React.createElement(InlineIcon, { icon: lockIcon })));
|
48
48
|
};
|
49
|
-
const ChipSkeleton = ({ dense = false }) => (React.createElement(Skeleton, { width:
|
49
|
+
const ChipSkeleton = ({ dense = false, width = dense ? 34 : 56 }) => (React.createElement(Skeleton, { width: width, height: dense ? 20 : 28 }));
|
50
50
|
Chip.Skeleton = ChipSkeleton;
|
51
51
|
export const StatusChip = React.forwardRef((_a, ref) => {
|
52
52
|
var { UNSAFE_icon: icon, text, dense = false, status } = _a, rest = __rest(_a, ["UNSAFE_icon", "text", "dense", "status"]);
|
@@ -60,4 +60,4 @@ export const ChipContainer = ({ dense, children }) => (React.createElement("div"
|
|
60
60
|
}) }, React.Children.map(children, (child) => isComponentType(child, Chip) || isComponentType(child, StatusChip)
|
61
61
|
? React.cloneElement(child, { dense })
|
62
62
|
: undefined)));
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NoaXAvQ2hpcC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUQsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQXVDOUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFNBQXFCLFNBQVMsRUFBVSxFQUFFO0lBQ3JFLFFBQVEsTUFBTSxFQUFFO1FBQ2QsS0FBSyxNQUFNO1lBQ1QsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUV2QyxLQUFLLFNBQVM7WUFDWixPQUFPLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRWhELEtBQUssUUFBUTtZQUNYLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFekMsS0FBSyxTQUFTO1lBQ1osT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUU3QyxLQUFLLFNBQVMsQ0FBQztRQUNmO1lBQ0UsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUN2QztBQUNILENBQUMsQ0FBQztBQUVG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
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { DataTableRow, DataListColumn } from '../../../src/utils/table/types';
|
3
|
+
export declare type DataListProps<R extends DataTableRow> = {
|
4
|
+
/**
|
5
|
+
* Array of column definitions that correspond to the data rows.
|
6
|
+
*/
|
7
|
+
columns: Array<DataListColumn<R>>;
|
8
|
+
/**
|
9
|
+
* Array of data rows to be displayed.
|
10
|
+
*/
|
11
|
+
rows: R[];
|
12
|
+
};
|
13
|
+
export declare const DataList: <R extends DataTableRow>({ columns, rows }: DataListProps<R>) => JSX.Element;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { toSortDirection, cellProps } from '../../../src/utils/table/types';
|
3
|
+
import { DataList as DataListBase } from '../../../src/common/DataList/DataList';
|
4
|
+
import { Item } from '../../../src/common/Table/Table';
|
5
|
+
import { StatusChip } from '../../../src/components/Chip/Chip';
|
6
|
+
import { Template } from '../../../src/components/Template/Template';
|
7
|
+
import { SecondaryButton } from '../../../src/components/Button/Button';
|
8
|
+
import { renameProperty } from '../../../src/utils/object';
|
9
|
+
import orderBy from 'lodash/orderBy';
|
10
|
+
import { List } from '../../../src/components';
|
11
|
+
import { useTableSort } from '../../../src/utils/table/useTableSort';
|
12
|
+
export const DataList = ({ columns, rows }) => {
|
13
|
+
const [sort, updateSort] = useTableSort();
|
14
|
+
const sortedRows = orderBy(rows, [sort === null || sort === void 0 ? void 0 : sort.key], [toSortDirection(sort === null || sort === void 0 ? void 0 : sort.direction)]);
|
15
|
+
const templateColumns = columns.map((column) => { var _a; return (_a = column.width) !== null && _a !== void 0 ? _a : 'auto'; });
|
16
|
+
return (React.createElement(Template, { columns: templateColumns },
|
17
|
+
columns.map((column) => (column.type === 'text' || column.type === 'number') && column.sortable ? (React.createElement(DataListBase.SortCell, Object.assign({ direction: sort && sort.key === column.field ? sort.direction : 'none', onClick: () => updateSort(column.field) }, cellProps(column)), column.headerName)) : (React.createElement(DataListBase.HeadCell, Object.assign({}, cellProps(column)), column.headerName))),
|
18
|
+
React.createElement(List, { items: sortedRows, renderItem: (row, index) => (React.createElement(DataListBase.Row, { key: row.id },
|
19
|
+
React.createElement(List, { items: columns, renderItem: (column) => column.type === 'status' ? (React.createElement(DataListBase.Cell, Object.assign({}, cellProps(column)),
|
20
|
+
React.createElement(StatusChip, Object.assign({ dense: true }, column.status(row, index, sortedRows))))) : column.type === 'action' ? (React.createElement(DataListBase.Cell, Object.assign({}, cellProps(column)),
|
21
|
+
React.createElement(SecondaryButton, Object.assign({ dense: true }, renameProperty('text', 'children', column.action(row, index, sortedRows)))))) : column.type === 'custom' ? (React.createElement(DataListBase.Cell, Object.assign({}, cellProps(column)), column.UNSAFE_render(row, index, sortedRows))) : column.type === 'item' ? (React.createElement(DataListBase.Cell, null,
|
22
|
+
React.createElement(Item, Object.assign({}, column.item(row, index, sortedRows))))) : (React.createElement(DataListBase.Cell, Object.assign({}, cellProps(column)), column.formatter ? column.formatter(row[column.field], row, index, sortedRows) : row[column.field])) }))) })));
|
23
|
+
};
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YUxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9EYXRhTGlzdC9EYXRhTGlzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBZ0MsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxRQUFRLElBQUksWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBYzVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUF5QixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQW9CLEVBQWUsRUFBRTtJQUNuRyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLFlBQVksRUFBSyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQVEsQ0FBQztJ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
|