@aivenio/aquarium 2.2.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/atoms.cjs +21 -6
  2. package/dist/atoms.mjs +21 -6
  3. package/dist/src/atoms/DataList/DataList.d.ts +6 -2
  4. package/dist/src/atoms/DataList/DataList.js +15 -4
  5. package/dist/src/molecules/DataList/DataList.d.ts +2 -2
  6. package/dist/src/molecules/DataList/DataList.js +3 -3
  7. package/dist/src/molecules/DataList/DataListComponents.d.ts +3 -3
  8. package/dist/src/molecules/DataList/DataListComponents.js +15 -2
  9. package/dist/src/molecules/DataList/DataListGroup.js +10 -6
  10. package/dist/src/molecules/DataList/DataListSkeleton.js +2 -2
  11. package/dist/src/molecules/DataTable/DataTable.js +3 -3
  12. package/dist/src/molecules/ItemList/ItemList.d.ts +39 -0
  13. package/dist/src/molecules/ItemList/ItemList.js +72 -0
  14. package/dist/src/molecules/ItemList/ItemList.spec.d.ts +24 -0
  15. package/dist/src/molecules/ItemList/ItemList.spec.js +100 -0
  16. package/dist/src/molecules/ItemList/types.d.ts +114 -0
  17. package/dist/src/molecules/ItemList/types.js +2 -0
  18. package/dist/src/molecules/PageHeader/PageHeader.d.ts +3 -3
  19. package/dist/src/molecules/PageHeader/PageHeader.js +5 -1
  20. package/dist/src/molecules/index.d.ts +3 -0
  21. package/dist/src/molecules/index.js +4 -1
  22. package/dist/src/utils/table/sortByColumn.d.ts +3 -0
  23. package/dist/src/utils/table/sortByColumn.js +23 -0
  24. package/dist/src/utils/table/types.d.ts +23 -3
  25. package/dist/src/utils/table/types.js +3 -1
  26. package/dist/src/utils/table/useSortState.d.ts +15 -0
  27. package/dist/src/utils/table/useSortState.js +3 -0
  28. package/dist/src/utils/table/useTableSort.d.ts +3 -3
  29. package/dist/src/utils/table/useTableSort.js +2 -2
  30. package/dist/src/utils/table/utils.d.ts +2 -2
  31. package/dist/src/utils/table/utils.js +3 -3
  32. package/dist/styles.css +18 -0
  33. package/dist/system.cjs +182 -23
  34. package/dist/system.mjs +178 -23
  35. package/dist/tsconfig.module.tsbuildinfo +1 -1
  36. package/dist/types/tailwindGenerated.d.ts +1 -1
  37. package/package.json +2 -2
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { type InfiniteListProps } from '../../../src/molecules/List/List';
3
+ import { type DataTableRowId, type ItemListColumn, type MenuColumnType } from '../../../src/utils/table/types';
4
+ import { type SortState } from '../../../src/utils/table/useSortState';
5
+ export type Item = Record<string, unknown> & {
6
+ /**
7
+ * Assigned ID for each data row.
8
+ * Used as a key. Use something unqiue derived from the data, not index.
9
+ */
10
+ id: DataTableRowId;
11
+ /**
12
+ * Reserved key for each item, will be used to render sub-items
13
+ */
14
+ items?: Item[];
15
+ };
16
+ type NotMenuColumn<I extends Item> = Exclude<ItemListColumn<I>, MenuColumnType<I>>;
17
+ export type Columns<I extends Item> = Array<NotMenuColumn<I>> | [...Array<NotMenuColumn<I>>, MenuColumnType<I>];
18
+ type ItemListProps<I extends Item> = InfiniteListProps & {
19
+ /**
20
+ * Array of column definitions that correspond to the data.
21
+ */
22
+ columns: Columns<I>;
23
+ /**
24
+ * Array of data to be displayed.
25
+ */
26
+ items: I[];
27
+ /**
28
+ * Optional callback function that is called when user clicks column header to change table sorting.
29
+ * If provided, no sortig will be done by the component.
30
+ */
31
+ onSortChanged?: (sortState: SortState) => void;
32
+ /**
33
+ * Determines if table header should stick to top when scrolling.
34
+ * @default true
35
+ */
36
+ sticky?: boolean;
37
+ };
38
+ export declare const ItemList: <I extends Item>({ columns, items, onSortChanged, sticky, ...infiniteProps }: ItemListProps<I>) => React.JSX.Element;
39
+ export {};
@@ -0,0 +1,72 @@
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 { List } from '../../../src/molecules/List/List';
14
+ import { Template } from '../../../src/molecules/Template/Template';
15
+ import { DataList } from '../../../src/atoms/DataList/DataList';
16
+ import { sortByColumn } from '../../../src/utils/table/sortByColumn';
17
+ import { cellProps, columnHasSort, } from '../../../src/utils/table/types';
18
+ import { useSortState } from '../../../src/utils/table/useSortState';
19
+ import { DataListCell } from '../DataList/DataListComponents';
20
+ export const ItemList = (_a) => {
21
+ var { columns, items, onSortChanged, sticky } = _a, infiniteProps = __rest(_a, ["columns", "items", "onSortChanged", "sticky"]);
22
+ const templateColumns = columns.map((column) => { var _a; return (_a = column.width) !== null && _a !== void 0 ? _a : 'auto'; });
23
+ const [sortState, setSortState] = useSortState();
24
+ const sortedItems = onSortChanged ? items : sortByColumn(items, columns, sortState); // If onSortChanged is provided its assumed that the parent is managing the sorting
25
+ return (React.createElement(Template, { className: "Aquarium-ItemList", columns: templateColumns, role: "table" },
26
+ React.createElement(DataList.Row, { header: true }, columns.map((column) => {
27
+ if (columnHasSort(column)) {
28
+ return (React.createElement(DataList.SortCell, Object.assign({ sticky: sticky, direction: (sortState === null || sortState === void 0 ? void 0 : sortState.headerName) === column.headerName ? sortState.direction : 'none', onClick: () => {
29
+ const newState =
30
+ // In case column is already sorted, either ascending or descending
31
+ sortState && sortState.headerName === column.headerName
32
+ ? sortState.direction === 'ascending'
33
+ ? // In case column is sorted ascending, sort it descending
34
+ { headerName: column.headerName, direction: 'descending' }
35
+ : // In case column is sorted ascending, sort it descending
36
+ undefined
37
+ : // Nothing is set, sort it ascending
38
+ { headerName: column.headerName, direction: 'ascending' };
39
+ setSortState(newState);
40
+ onSortChanged === null || onSortChanged === void 0 ? void 0 : onSortChanged(newState);
41
+ } }, cellProps(column)), column.headerName));
42
+ }
43
+ return (React.createElement(DataList.HeadCell, Object.assign({}, cellProps(column), { sticky: sticky }), column.headerName));
44
+ })),
45
+ React.createElement(Rows, Object.assign({ columns: columns, items: sortedItems, level: 0 }, infiniteProps))));
46
+ };
47
+ const Rows = (_a) => {
48
+ var { columns, items, level, isLastGroup } = _a, infiniteProps = __rest(_a, ["columns", "items", "level", "isLastGroup"]);
49
+ return (React.createElement(List, Object.assign({}, (level === 0 ? infiniteProps : {}), { items: items, renderItem: (item, itemIndex) => {
50
+ const hasSubItems = item.items && item.items.length > 0;
51
+ const isLastItem = itemIndex === items.length - 1;
52
+ /**
53
+ * No divider if
54
+ * 1. It's the last item in the main level. Between main level items there should be divider except for the last one.
55
+ * 2. Level is greater than 0 and we are either in last group or not last item. Inside groups there should never be dividers except if its the last item.
56
+ * 3. It has sub-items. If there are sub-items it means that this item is a group and should not have divider.
57
+ */
58
+ const noDivider = (level === 0 && isLastItem) || (level > 0 && (isLastGroup || !isLastItem)) || hasSubItems;
59
+ return (React.createElement(React.Fragment, { key: item.id },
60
+ React.createElement(DataList.Row, { noDivider: noDivider },
61
+ React.createElement(List, { items: columns, renderItem: (column, columnIndex) => (React.createElement(DataList.Cell, Object.assign({}, cellProps(column), { style: level > 1 && columnIndex === 0 ? { paddingLeft: (level - 1) * 60 } : undefined }),
62
+ level > 0 && columnIndex === 0 && React.createElement(DataList.TreeLine, { isLast: itemIndex === items.length - 1 }),
63
+ React.createElement(DataListCell, { column: column, row: item, index: columnIndex, rows: items }))) })),
64
+ item.items && (React.createElement(WithGroup, { level: level },
65
+ React.createElement(Rows, { columns: columns, items: item.items, level: level + 1,
66
+ // We are in last group if we are last item on main level or isLastGroup has been passed from above, meaning we are in a nested group of last item
67
+ isLastGroup: (level === 0 && itemIndex === items.length - 1) || isLastGroup })))));
68
+ } })));
69
+ };
70
+ // rowgroups are not allowed to contain other rowgroups so we will only use this role for first level groups
71
+ const WithGroup = ({ level, children }) => level === 0 ? React.createElement(DataList.Row, { isGroup: true }, children) : children;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbUxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9sZWN1bGVzL0l0ZW1MaXN0L0l0ZW1MaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQTBCLElBQUksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFDTCxTQUFTLEVBQ1QsYUFBYSxHQUlkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFrQixZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUF3QzlELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFpQixFQU10QixFQUFFLEVBQUU7UUFOa0IsRUFDdkMsT0FBTyxFQUNQLEtBQUssRUFDTCxhQUFhLEVBQ2IsTUFBTSxPQUVXLEVBRGQsYUFBYSxjQUx1QiwrQ0FNeEMsQ0FEaUI7SUFFaEIsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQUMsT0FBQSxNQUFBLE1BQU0sQ0FBQyxLQUFLLG1DQUFJLE1BQU0sQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDO0lBQ2pELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLENB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
@@ -0,0 +1,24 @@
1
+ export declare const createService: (type?: string) => () => {
2
+ id: string;
3
+ name: string;
4
+ type: string | undefined;
5
+ };
6
+ export declare const serviceItems: {
7
+ items: ({
8
+ id: string;
9
+ name: string;
10
+ type: string | undefined;
11
+ } | {
12
+ items: {
13
+ id: string;
14
+ name: string;
15
+ type: string | undefined;
16
+ }[];
17
+ id: string;
18
+ name: string;
19
+ type: string | undefined;
20
+ })[];
21
+ id: string;
22
+ name: string;
23
+ type: string | undefined;
24
+ }[];
@@ -0,0 +1,100 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import React from 'react';
11
+ import { faker } from '@faker-js/faker';
12
+ import { render, screen, within } from '@testing-library/react';
13
+ import userEvent from '@testing-library/user-event';
14
+ import { ItemList } from './ItemList';
15
+ export const createService = (type) => () => ({
16
+ id: faker.string.uuid(),
17
+ name: faker.word.adjective() + ' ' + faker.word.noun(),
18
+ type,
19
+ });
20
+ function recursiveFlat(items) {
21
+ const flattenedItems = [];
22
+ items.forEach((item) => {
23
+ flattenedItems.push(item);
24
+ if (Array.isArray(item.items)) {
25
+ flattenedItems.push(...recursiveFlat(item.items));
26
+ }
27
+ });
28
+ return flattenedItems;
29
+ }
30
+ export const serviceItems = [
31
+ Object.assign(Object.assign({}, createService('pg')()), { items: faker.helpers.multiple(createService('pg'), { count: 3 }) }),
32
+ Object.assign(Object.assign({}, createService('kafka')()), { items: faker.helpers.multiple(createService('kafka'), { count: 5 }) }),
33
+ Object.assign(Object.assign({}, createService('mysql')()), { items: [
34
+ ...faker.helpers.multiple(createService('mysql'), { count: 2 }),
35
+ Object.assign(Object.assign({}, createService('mysql')()), { items: faker.helpers.multiple(createService('mysql'), { count: 4 }) }),
36
+ ] }),
37
+ ];
38
+ const getRowContents = () => {
39
+ const [_header, ...rows] = screen.getAllByRole('row');
40
+ return rows.map((row) => row.textContent);
41
+ };
42
+ describe('<ItemList />', () => {
43
+ describe('given recursive list', () => {
44
+ beforeEach(() => {
45
+ render(React.createElement(ItemList, { items: serviceItems, columns: [
46
+ {
47
+ headerName: 'Service',
48
+ type: 'text',
49
+ field: 'name',
50
+ },
51
+ ] }));
52
+ });
53
+ it('should render all items recursively', () => {
54
+ expect(getRowContents()).toEqual(recursiveFlat(serviceItems).map((item) => item.name));
55
+ });
56
+ it('should contain 3 row groups', () => {
57
+ const rowgroups = screen.getAllByRole('rowgroup');
58
+ expect(rowgroups).toHaveLength(3);
59
+ });
60
+ it('rowgroups should contain their respective rows', () => {
61
+ const [pg, kafka, mysql] = screen.getAllByRole('rowgroup');
62
+ expect(within(pg)
63
+ .getAllByRole('row')
64
+ .map((node) => node.textContent)).toEqual(serviceItems[0].items.map((item) => item.name));
65
+ expect(within(kafka)
66
+ .getAllByRole('row')
67
+ .map((node) => node.textContent)).toEqual(serviceItems[1].items.map((item) => item.name));
68
+ expect(within(mysql)
69
+ .getAllByRole('row')
70
+ .map((node) => node.textContent)).toEqual(recursiveFlat(serviceItems[2].items).map((item) => item.name));
71
+ });
72
+ });
73
+ describe('given a flat list', () => {
74
+ const services = faker.helpers.multiple(createService('pg'), { count: 10 });
75
+ beforeEach(() => {
76
+ render(React.createElement(ItemList, { items: services, columns: [
77
+ {
78
+ headerName: 'Service',
79
+ type: 'text',
80
+ field: 'name',
81
+ sort: (a, b) => a.name.localeCompare(b.name),
82
+ },
83
+ ] }));
84
+ });
85
+ it('should allow sorting', () => __awaiter(void 0, void 0, void 0, function* () {
86
+ const user = userEvent.setup();
87
+ const header = screen.getByRole('button', { name: 'Service' });
88
+ // Initial state
89
+ const expected = services.map((item) => item.name);
90
+ expect(getRowContents()).toEqual(expected);
91
+ // Sort ascending
92
+ yield user.click(header);
93
+ expect(getRowContents()).toEqual([...expected].sort((a, b) => a.localeCompare(b)));
94
+ // Sort descending
95
+ yield user.click(header);
96
+ expect(getRowContents()).toEqual([...expected].sort((a, b) => b.localeCompare(a)));
97
+ }));
98
+ });
99
+ });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbUxpc3Quc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2xlY3VsZXMvSXRlbUxpc3QvSXRlbUxpc3Quc3BlYy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUVwRCxPQUFPLEVBQWEsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyRCxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7SUFDdkIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ3RELElBQUk7Q0FDTCxDQUFDLENBQUM7QUFFSCxTQUFTLGFBQWEsQ0FBQyxLQUFhO0lBQ2xDLE1BQU0sY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDckIsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxD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
@@ -0,0 +1,114 @@
1
+ import type { Key } from 'react';
2
+ import type { DropdownMenuItemsComponent } from '../../../src/molecules/DropdownMenu/DropdownMenu';
3
+ import type { ChipStatus, TableItem, Weight } from '../../../src/system';
4
+ import type { ActionType } from '../../../types/ActionType';
5
+ export type Item = Record<string, unknown> & {
6
+ /**
7
+ * Assigned ID for each data row.
8
+ * Used as a key. Use something unqiue derived from the data, not index.
9
+ */
10
+ id: React.Key;
11
+ /**
12
+ * Reserved key for each item, will be used to render sub-items
13
+ */
14
+ items?: Item[];
15
+ };
16
+ export type Column = {
17
+ /**
18
+ * Type of the column.
19
+ */
20
+ type: 'action' | 'custom' | 'item' | 'menu' | 'number' | 'status' | 'text';
21
+ /**
22
+ * Display name for the column. Also works as a title for the column. Should be unique.
23
+ */
24
+ headerName: string;
25
+ /**
26
+ * Determines if the header name should be visible.
27
+ * Because headerName is used as a key use this to toggle visibility instead of empty string as headerName.
28
+ */
29
+ headerInvisible?: boolean;
30
+ };
31
+ type Sortable<R> = {
32
+ /**
33
+ * Optional compare function for sorting.
34
+ */
35
+ sort?: (a: R, b: R) => number;
36
+ };
37
+ export type TextColumn<R> = Sortable<R> & {
38
+ /**
39
+ * Type of the column.
40
+ */
41
+ type: 'text';
42
+ };
43
+ export type NumberColumn<R> = Sortable<R> & {
44
+ /**
45
+ * Type of the column.
46
+ */
47
+ type: 'number';
48
+ };
49
+ export type ActionColumn<R> = Sortable<R> & {
50
+ /**
51
+ * Type of the column.
52
+ */
53
+ type: 'action';
54
+ /**
55
+ * Callback function that resolves to Button props.
56
+ */
57
+ action: (row: R, index: number, rows: R[] | undefined) => ActionType;
58
+ };
59
+ export type MenuColumn<R> = {
60
+ /**
61
+ * Type of the column.
62
+ */
63
+ type: 'menu';
64
+ /**
65
+ * Menu items definition. Can be same or unique for each row. No menu will be rendered if undefined is returned.
66
+ */
67
+ menu: (row: R, index: number) => DropdownMenuItemsComponent | undefined;
68
+ /**
69
+ * Called when an item from the menu is selected.
70
+ */
71
+ onAction: (action: Key, row: R, index: number) => void;
72
+ };
73
+ type ItemColumn<R> = Sortable<R> & {
74
+ /**
75
+ * Type of the column.
76
+ */
77
+ type: 'item';
78
+ /**
79
+ * Callback function that resolves to TableItem props
80
+ */
81
+ item: (row: R, index: number, rows: R[] | undefined) => TableItem | undefined;
82
+ };
83
+ export type TableStatus = {
84
+ status: ChipStatus;
85
+ text: number | string;
86
+ };
87
+ type StatusColumn<R> = Sortable<R> & {
88
+ /**
89
+ * Type of the column.
90
+ */
91
+ type: 'status';
92
+ /**
93
+ * Callback function that resolves to StatusChip props
94
+ */
95
+ status: (row: R, index: number, rows: R[] | undefined) => TableStatus | undefined;
96
+ };
97
+ export type CustomColumn<R> = Sortable<R> & {
98
+ /**
99
+ * Type of the column.
100
+ */
101
+ type: 'custom';
102
+ /**
103
+ * Custom render function if no other column type suits your needs.
104
+ */
105
+ render: (row: R, index: number, rows: R[] | undefined) => React.ReactNode;
106
+ };
107
+ export type WeightColumn = {
108
+ /**
109
+ * Width of the column. Number for pixels and string for percentages
110
+ */
111
+ width?: Weight | number;
112
+ };
113
+ export type ListColumn<I extends Item> = Column & WeightColumn & (ActionColumn<I> | CustomColumn<I> | ItemColumn<I> | MenuColumn<I> | NumberColumn<I> | StatusColumn<I> | TextColumn<I>);
114
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9sZWN1bGVzL0l0ZW1MaXN0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -32,11 +32,11 @@ export type PageHeaderProps = CommonPageHeaderProps & {
32
32
  imageAlt?: string;
33
33
  /**
34
34
  * Optional secondary actions. There can be one or more secondary actions in the header.
35
- * The number of secondary actions is not restricted.
35
+ * The max number of secondary actions is 2.
36
36
  * This can either be a callback function or a link.
37
- * @deprecated Use "secondaryAction" and/or "menu" props instead if there are more than 1 secondary actions.
37
+ * Use "menu" props instead if there are more than 2 secondary actions.
38
38
  */
39
- secondaryActions?: Array<AsyncActionType | LinkActionType> | AsyncActionType | LinkActionType;
39
+ secondaryActions?: AsyncActionType | LinkActionType | [AsyncActionType | LinkActionType, AsyncActionType | LinkActionType] | [AsyncActionType | LinkActionType];
40
40
  /**
41
41
  * Optional list of chips, which will be rendered as chips underneath the page title.
42
42
  */
@@ -13,6 +13,10 @@ import { defaultContextualMenuPlacement } from '../../../types/ContextualMenu';
13
13
  import more from '../../../src/icons/more';
14
14
  const CommonPageHeader = ({ title, subtitle, image, imageAlt, primaryAction, secondaryAction, secondaryActions = secondaryAction ? [secondaryAction] : undefined, chips = [], breadcrumbs, menu, menuLabel, menuAriaLabel = menuLabel !== null && menuLabel !== void 0 ? menuLabel : 'Context menu', onAction, onMenuOpenChange, isSubHeader = false, }) => {
15
15
  var _a, _b;
16
+ const actions = [primaryAction, ...castArray(secondaryActions)].filter(Boolean);
17
+ if (actions.length > 2) {
18
+ throw new Error('Limit the combined `primaryAction` and `secondaryActions` to 2 actions. Use the `menu` prop for additional actions.');
19
+ }
16
20
  return (React.createElement(BasePageHeader, { className: "Aquarium-PageHeader" },
17
21
  React.createElement(BasePageHeader.Container, null,
18
22
  breadcrumbs && (React.createElement(Box, { marginBottom: "3" },
@@ -40,4 +44,4 @@ PageHeader.displayName = 'PageHeader';
40
44
  const SubHeader = (props) => React.createElement(CommonPageHeader, Object.assign({}, props, { isSubHeader: true }));
41
45
  PageHeader.SubHeader = SubHeader;
42
46
  PageHeader.SubHeader.displayName = 'PageHeader.SubHeader';
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnZUhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2xlY3VsZXMvUGFnZUhlYWRlci9QYWdlSGVhZGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFFekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQXlCLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhELE9BQU8sRUFBRSxVQUFVLElBQUksY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQWtDLDhCQUE4QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEcsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUE4RGxDLE1BQU0sZ0JBQWdCLEdBQTBELENBQUMsRUFDL0UsS0FBSyxFQUNMLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLGFBQWEsRUFDYixlQUFlLEVBQ2YsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ2xFLEtBQUssR0FBRyxFQUFFLEVBQ1YsV0FBVyxFQUNYLElBQUksRUFDSixTQUFTLEVBQ1Qs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
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnZUhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2xlY3VsZXMvUGFnZUhlYWRlci9QYWdlSGVhZGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFFekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQXlCLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhELE9BQU8sRUFBRSxVQUFVLElBQUksY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQWtDLDhCQUE4QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEcsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFrRWxDLE1BQU0sZ0JBQWdCLEdBQTBELENBQUMsRUFDL0UsS0FBSyxFQUNMLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLGFBQWEsRUFDYixlQUFlLEVBQ2YsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ2xFLEtBQUssR0FBRyxFQUFFLEVBQ1YsV0FBVyxFQUNYLElBQUksRUFDSixTQUFTLEVBQ1Qs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
@@ -71,10 +71,13 @@ export * from './TimePicker/TimePicker';
71
71
  export * from './Toast/Toast';
72
72
  export * from './Tooltip/Tooltip';
73
73
  export * from './Typography/Typography';
74
+ export * from '../utils/table/sortByColumn';
74
75
  export * from '../utils/table/types';
75
76
  export * from '../utils/table/useScrollTarget';
77
+ export * from '../utils/table/useSortState';
76
78
  export * from '../utils/table/useTableSelect';
77
79
  export * from '../utils/table/useTableSort';
80
+ export * from './ItemList/ItemList';
78
81
  export * from './Pagination/usePagination';
79
82
  export declare const SelectItem: import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLLIElement> & {
80
83
  key: string;
@@ -74,10 +74,13 @@ export * from './Toast/Toast';
74
74
  export * from './Tooltip/Tooltip';
75
75
  export * from './Typography/Typography';
76
76
  // Exported atoms and utility functions
77
+ export * from '../utils/table/sortByColumn';
77
78
  export * from '../utils/table/types';
78
79
  export * from '../utils/table/useScrollTarget';
80
+ export * from '../utils/table/useSortState';
79
81
  export * from '../utils/table/useTableSelect';
80
82
  export * from '../utils/table/useTableSort';
83
+ export * from './ItemList/ItemList';
81
84
  export * from './Pagination/usePagination';
82
85
  export const SelectItem = Select.Item;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9sZWN1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxzREFBc0Q7QUFDdEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLHVDQUF1QztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMifQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9sZWN1bGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRCxzREFBc0Q7QUFDdEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLHVDQUF1QztBQUN2QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { type Columns, type Item } from '../../../src/molecules';
2
+ import type { SortState } from './useSortState';
3
+ export declare const sortByColumn: <I extends Item>(items: I[], column: Columns<I>, sortState: SortState) => I[];
@@ -0,0 +1,23 @@
1
+ import { columnHasSort } from '../../../src/molecules';
2
+ export const sortByColumn = (items, column, sortState) => {
3
+ const sortedColumn = column.find((column) => column.headerName === (sortState === null || sortState === void 0 ? void 0 : sortState.headerName));
4
+ if (sortState && sortedColumn && columnHasSort(sortedColumn)) {
5
+ const sortFunction = sortedColumn.sort;
6
+ if (sortFunction) {
7
+ const ascending = [...items].sort((a, b) => sortFunction(a, b, sortState.direction));
8
+ if (sortState.direction === 'descending') {
9
+ return ascending.reverse();
10
+ }
11
+ else {
12
+ return ascending;
13
+ }
14
+ }
15
+ // Sort function not in column definition, this should never be reached
16
+ return items;
17
+ }
18
+ else {
19
+ // sortState is undefined or we did not find a sortable column
20
+ return items;
21
+ }
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydEJ5Q29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RhYmxlL3NvcnRCeUNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUl2RSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBaUIsS0FBVSxFQUFFLE1BQWtCLEVBQUUsU0FBb0IsRUFBRSxFQUFFO0lBQ25HLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLE1BQUssU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLFVBQVUsQ0FBQSxDQUFDLENBQUM7SUFDMUYsSUFBSSxTQUFTLElBQUksWUFBWSxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzdELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDdkMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDckYsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUN6QyxPQUFPLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFDRCx1RUFBdUU7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO1NBQU0sQ0FBQztRQUNOLDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDLENBQUMifQ==
@@ -14,7 +14,7 @@ export type Column = {
14
14
  /**
15
15
  * Type of the column.
16
16
  */
17
- type: 'action' | 'custom' | 'item' | 'number' | 'status' | 'text';
17
+ type: 'action' | 'custom' | 'item' | 'menu' | 'number' | 'status' | 'text';
18
18
  /**
19
19
  * Display name for the column.
20
20
  */
@@ -88,6 +88,20 @@ export type ActionColumn<R> = CustomSortable<R> & {
88
88
  */
89
89
  action: (row: R, index: number, rows: R[] | undefined) => ActionType;
90
90
  };
91
+ export type MenuColumn<R> = {
92
+ /**
93
+ * Type of the column.
94
+ */
95
+ type: 'menu';
96
+ /**
97
+ * Menu items definition. Can be same or unique for each row. No menu will be rendered if undefined is returned.
98
+ */
99
+ menu: (row: R, index: number) => DropdownMenuItemsComponent | undefined;
100
+ /**
101
+ * Called when an item from the menu is selected.
102
+ */
103
+ onAction: (action: Key, row: R, index: number) => void;
104
+ };
91
105
  export type CustomColumn<R> = CustomSortable<R> & {
92
106
  /**
93
107
  * Type of the column.
@@ -130,7 +144,7 @@ type StatusColumn<R> = Column & CustomSortable<R> & {
130
144
  */
131
145
  status: (row: R, index: number, rows: R[] | undefined) => TableStatus | undefined;
132
146
  };
133
- type ListColumn = Column & {
147
+ export type WeightColumn = Column & {
134
148
  /**
135
149
  * Width of the column. Number for pixels and string for percentages
136
150
  */
@@ -142,7 +156,11 @@ type TableColumn = Column & {
142
156
  */
143
157
  width?: number | `${number}%`;
144
158
  };
145
- export type DataListColumn<R extends DataTableRow> = DataColumn<R, ListColumn>;
159
+ export type MenuColumnType<R extends DataTableRow> = Column & ColumnBase<R> & MenuColumn<R> & {
160
+ width?: 'auto';
161
+ };
162
+ export type ItemListColumn<R extends DataTableRow> = DataColumn<R, WeightColumn> | MenuColumnType<R>;
163
+ export type DataListColumn<R extends DataTableRow> = DataColumn<R, WeightColumn>;
146
164
  export type DataTableColumn<R extends DataTableRow> = DataColumn<R, TableColumn>;
147
165
  type DataColumn<R extends DataTableRow, C extends Column> = C & ColumnBase<R> & (ActionColumn<R> | CustomColumn<R> | ItemColumn<R> | NumberColumn<R> | StatusColumn<R> | TextColumn<R>);
148
166
  export type DataTableRowId = number | string;
@@ -169,6 +187,8 @@ type CellProps = {
169
187
  stickyColumn?: StickyColumn;
170
188
  };
171
189
  export declare const cellProps: <C extends Column>(column: C) => CellProps;
190
+ type SortableColumn<R extends DataTableRow> = ActionColumn<R> | CustomColumn<R> | FieldColumn<R> | ItemColumn<R> | NumberColumn<R> | StatusColumn<R> | TextColumn<R>;
191
+ export declare const columnHasSort: <R extends DataTableRow>(column: DataColumn<R, any>) => column is SortableColumn<R>;
172
192
  export declare const columnIsFieldColumn: <R extends DataTableRow>(column?: DataColumn<R, any>) => column is FieldColumn<R>;
173
193
  export type DataTableMenuProps<R extends DataTableRow> = AllOrNone<Omit<CommonContextualMenuProps, 'menu' | 'onAction'> & {
174
194
  /**
@@ -8,6 +8,7 @@ export const cellProps = (column) => {
8
8
  var _a;
9
9
  let align;
10
10
  switch (column.type) {
11
+ case 'menu':
11
12
  case 'action':
12
13
  case 'number': {
13
14
  align = 'right';
@@ -27,8 +28,9 @@ export const cellProps = (column) => {
27
28
  stickyColumn: column.sticky,
28
29
  };
29
30
  };
31
+ export const columnHasSort = (column) => (columnIsFieldColumn(column) && column.sortable) || Boolean(column.sort);
30
32
  export const columnIsFieldColumn = (column) => Boolean(column && column.field);
31
33
  export function isOnSortChangedDirection(value) {
32
34
  return value === undefined || ['ascending', 'descending'].includes(value);
33
35
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdGFibGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBd01yQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsSUFBa0MsRUFDRixFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBb0MsRUFBMEIsRUFBRSxDQUM5RixTQUFTLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBVWxGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFtQixNQUFTLEVBQWEsRUFBRTs7SUFDbEUsSUFBSSxLQUE0QixDQUFDO0lBRWpDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLEtBQUssUUFBUSxDQUFDO1FBQ2QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNoQixNQUFNO1FBQ1IsQ0FBQztRQUVELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNkLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDbEIsTUFBTTtRQUNSLENBQUM7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1IsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxHQUFHLEVBQUUsTUFBQSxNQUFNLENBQUMsR0FBRyxtQ0FBSSxNQUFNLENBQUMsVUFBVTtRQUNwQyxLQUFLO1FBQ0wsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNO0tBQzVCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUF5QixNQUEyQixFQUE0QixFQUFFLENBQ25ILE9BQU8sQ0FBQyxNQUFNLElBQUssTUFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQTJCdEQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQXlCO0lBQ2hFLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUUsQ0FBQyJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvdGFibGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBRXpDLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBNE5yQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsSUFBa0MsRUFDRixFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBb0MsRUFBMEIsRUFBRSxDQUM5RixTQUFTLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBVWxGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFtQixNQUFTLEVBQWEsRUFBRTs7SUFDbEUsSUFBSSxLQUE0QixDQUFDO0lBRWpDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDZCxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBQ2hCLE1BQU07UUFDUixDQUFDO1FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUNsQixNQUFNO1FBQ1IsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxNQUFBLE1BQU0sQ0FBQyxHQUFHLG1DQUFJLE1BQU0sQ0FBQyxVQUFVO1FBQ3BDLEtBQUs7UUFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU07S0FDNUIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUF5QixNQUEwQixFQUErQixFQUFFLENBQy9HLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBRSxNQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQXlCLE1BQTJCLEVBQTRCLEVBQUUsQ0FDbkgsT0FBTyxDQUFDLE1BQU0sSUFBSyxNQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBMkJ0RCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBeUI7SUFDaEUsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RSxDQUFDIn0=
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { SortDirection } from '../../../src/utils/table/types';
3
+ type Direction = Extract<SortDirection, 'ascending' | 'descending'>;
4
+ export type SortState = {
5
+ headerName: string;
6
+ direction: Direction;
7
+ } | undefined;
8
+ export declare const useSortState: (initialSortState?: SortState) => [{
9
+ headerName: string;
10
+ direction: Direction;
11
+ } | undefined, React.Dispatch<React.SetStateAction<{
12
+ headerName: string;
13
+ direction: Direction;
14
+ } | undefined>>];
15
+ export {};
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export const useSortState = (initialSortState) => React.useState(initialSortState);
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlU29ydFN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3RhYmxlL3VzZVNvcnRTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFPMUIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsZ0JBQTRCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyJ9
@@ -1,11 +1,11 @@
1
- import { type DataListColumn, type DataTableColumn, type DataTableRow, type OnSortChangedDirection, type Sort } from '../../../src/utils/table/types';
1
+ import { type DataListColumn, type DataTableColumn, type DataTableRow, type ItemListColumn, type OnSortChangedDirection, type Sort } from '../../../src/utils/table/types';
2
2
  import type { AllOrNone } from '../../../types/utils';
3
3
  type OnSortChangedCallback = (args: {
4
4
  key: string | undefined;
5
5
  direction: OnSortChangedDirection;
6
6
  } | null) => void;
7
- type UseTableSortOptions<C extends DataListColumn<R> | DataTableColumn<R>, R extends DataTableRow> = AllOrNone<Sort<C>> & {
7
+ type UseTableSortOptions<C extends DataListColumn<R> | DataTableColumn<R> | ItemListColumn<R>, R extends DataTableRow> = AllOrNone<Sort<C>> & {
8
8
  onSortChanged?: OnSortChangedCallback;
9
9
  };
10
- export declare const useTableSort: <C extends DataListColumn<R> | DataTableColumn<R>, R extends DataTableRow>({ column, direction, onSortChanged, }?: UseTableSortOptions<C, R>) => [Sort<C> | undefined, (column: C) => void];
10
+ export declare const useTableSort: <C extends DataListColumn<R> | DataTableColumn<R> | ItemListColumn<R>, R extends DataTableRow>({ column, direction, onSortChanged }?: UseTableSortOptions<C, R>) => [Sort<C> | undefined, (column: C) => void];
11
11
  export {};