@databiosphere/findable-ui 17.0.0 → 19.0.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/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +22 -0
- package/lib/apis/azul/common/filterTransformer.js +1 -1
- package/lib/apis/azul/common/utils.d.ts +1 -1
- package/lib/apis/azul/common/utils.js +5 -1
- package/lib/common/entities.d.ts +3 -3
- package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -0
- package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +1 -15
- package/lib/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.js +9 -10
- package/lib/components/Filter/common/utils.js +1 -1
- package/lib/components/Filter/components/VariableSizeList/VariableSizeList.d.ts +1 -1
- package/lib/components/Filter/components/VariableSizeListItem/variableSizeListItem.d.ts +1 -1
- package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.js +23 -12
- package/lib/components/Table/common/columnDef.js +1 -0
- package/lib/components/Table/common/gridTable.styles.js +5 -11
- package/lib/components/Table/common/utils.d.ts +3 -29
- package/lib/components/Table/common/utils.js +26 -61
- package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.d.ts +3 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/constants.js +3 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.d.ts +8 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/hook.js +18 -0
- package/lib/components/Table/components/TableBody/hooks/virtualizer/types.d.ts +4 -0
- package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -2
- package/lib/components/Table/components/TableBody/tableBody.js +7 -28
- package/lib/components/Table/components/TableBody/utils.d.ts +12 -0
- package/lib/components/Table/components/TableBody/utils.js +17 -0
- package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.d.ts +3 -1
- package/lib/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.js +6 -14
- package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.d.ts +28 -0
- package/lib/components/Table/components/TableFeatures/ColumnGrouping/utils.js +52 -0
- package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.d.ts +21 -0
- package/lib/components/Table/components/TableFeatures/ColumnVisibility/utils.js +37 -0
- package/lib/components/Table/components/TableFeatures/RowSorting/utils.d.ts +29 -0
- package/lib/components/Table/components/TableFeatures/RowSorting/utils.js +68 -0
- package/lib/components/Table/components/TableHead/tableHead.d.ts +2 -6
- package/lib/components/Table/components/TableHead/tableHead.js +6 -4
- package/lib/components/Table/components/TableHead/types.d.ts +6 -0
- package/lib/components/Table/components/TableHead/types.js +1 -0
- package/lib/components/Table/components/TableHead/utils.d.ts +19 -0
- package/lib/components/Table/components/TableHead/utils.js +34 -0
- package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +1 -0
- package/lib/components/Table/components/TableRow/tableRow.styles.js +14 -2
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -2
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +8 -4
- package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.d.ts +9 -0
- package/lib/components/Table/components/TableRows/components/CollapsableRows/hook.js +17 -0
- package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
- package/lib/components/Table/components/TableRows/tableRows.js +9 -5
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.d.ts +3 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.js +26 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.d.ts +2 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.js +16 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.d.ts +3 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.js +12 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.d.ts +7 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.js +1 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.d.ts +4 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/constants.js +13 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.d.ts +4 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/types.js +1 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.d.ts +17 -0
- package/lib/components/Table/components/TableToolbar/components/ColumnGrouping/utils.js +36 -0
- package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.d.ts +2 -3
- package/lib/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.js +3 -11
- package/lib/components/Table/components/TableToolbar/tableToolbar.js +4 -2
- package/lib/components/Table/features/RowPosition/constants.js +2 -2
- package/lib/components/Table/features/RowPosition/utils.d.ts +2 -2
- package/lib/components/Table/features/RowPosition/utils.js +12 -5
- package/lib/components/Table/options/updater.d.ts +10 -0
- package/lib/components/Table/options/updater.js +24 -0
- package/lib/components/Table/table.js +22 -17
- package/lib/components/TableCreator/common/constants.d.ts +2 -2
- package/lib/components/TableCreator/common/constants.js +2 -1
- package/lib/components/TableCreator/common/utils.d.ts +5 -2
- package/lib/components/TableCreator/common/utils.js +11 -4
- package/lib/components/TableCreator/options/expanded/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/expanded/constants.js +6 -0
- package/lib/components/TableCreator/options/expanded/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/expanded/hook.js +4 -0
- package/lib/components/TableCreator/options/grouping/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/grouping/constants.js +5 -0
- package/lib/components/TableCreator/options/grouping/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/grouping/hook.js +9 -0
- package/lib/components/TableCreator/options/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/hook.js +25 -0
- package/lib/components/TableCreator/options/rowSelection/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/rowSelection/constants.js +5 -0
- package/lib/components/TableCreator/options/rowSelection/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/rowSelection/hook.js +4 -0
- package/lib/components/TableCreator/options/sorting/constants.d.ts +2 -0
- package/lib/components/TableCreator/options/sorting/constants.js +5 -0
- package/lib/components/TableCreator/options/sorting/hook.d.ts +2 -0
- package/lib/components/TableCreator/options/sorting/hook.js +4 -0
- package/lib/components/TableCreator/tableCreator.d.ts +3 -5
- package/lib/components/TableCreator/tableCreator.js +4 -2
- package/lib/components/common/DropdownMenu/dropdownMenu.d.ts +2 -3
- package/lib/components/common/DropdownMenu/dropdownMenu.js +7 -7
- package/lib/components/common/DropdownMenu/dropdownMenu.styles.d.ts +1 -1
- package/lib/components/common/DropdownMenu/dropdownMenu.styles.js +1 -1
- package/lib/components/common/Menu/hooks/useMenu.d.ts +5 -6
- package/lib/config/entities.d.ts +7 -7
- package/lib/config/utils.d.ts +0 -7
- package/lib/config/utils.js +0 -12
- package/lib/hooks/useCategoryFilter.js +5 -1
- package/lib/providers/exploreState/actions/updateGrouping/action.d.ts +10 -0
- package/lib/providers/exploreState/actions/updateGrouping/action.js +16 -0
- package/lib/providers/exploreState/actions/updateGrouping/dispatch.d.ts +7 -0
- package/lib/providers/exploreState/actions/updateGrouping/dispatch.js +12 -0
- package/lib/providers/exploreState/actions/updateGrouping/types.d.ts +9 -0
- package/lib/providers/exploreState/actions/updateGrouping/types.js +1 -0
- package/lib/providers/exploreState/actions/updateGrouping/utils.d.ts +10 -0
- package/lib/providers/exploreState/actions/updateGrouping/utils.js +26 -0
- package/lib/providers/exploreState/entities.d.ts +3 -4
- package/lib/providers/exploreState/initializer/utils.js +41 -8
- package/lib/providers/exploreState/payloads/entities.d.ts +2 -1
- package/lib/providers/exploreState/utils.d.ts +6 -4
- package/lib/providers/exploreState/utils.js +7 -4
- package/lib/providers/exploreState.d.ts +3 -1
- package/lib/providers/exploreState.js +15 -5
- package/lib/providers/fileManifestState.js +2 -4
- package/lib/viewModelBuilders/common/utils.d.ts +6 -6
- package/lib/viewModelBuilders/common/utils.js +10 -10
- package/lib/views/ExploreView/exploreView.js +3 -3
- package/package.json +1 -1
- package/src/apis/azul/common/filterTransformer.ts +1 -1
- package/src/apis/azul/common/utils.ts +4 -2
- package/src/common/entities.ts +3 -3
- package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +2 -0
- package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +3 -18
- package/src/components/Export/components/ExportForm/components/ExportFileSummaryForm/exportFileSummaryForm.tsx +28 -32
- package/src/components/Filter/common/utils.ts +1 -1
- package/src/components/Filter/components/VariableSizeList/VariableSizeList.tsx +1 -1
- package/src/components/Filter/components/VariableSizeListItem/variableSizeListItem.tsx +1 -1
- package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +27 -13
- package/src/components/Table/common/columnDef.ts +1 -0
- package/src/components/Table/common/gridTable.styles.ts +5 -11
- package/src/components/Table/common/utils.ts +45 -108
- package/src/components/Table/components/TableBody/hooks/virtualizer/constants.ts +3 -0
- package/src/components/Table/components/TableBody/hooks/virtualizer/hook.ts +23 -0
- package/src/components/Table/components/TableBody/hooks/virtualizer/types.ts +5 -0
- package/src/components/Table/components/TableBody/tableBody.tsx +14 -30
- package/src/components/Table/components/TableBody/utils.ts +21 -0
- package/src/components/Table/components/TableCell/components/CollapsableCell/collapsableCell.tsx +14 -15
- package/src/components/Table/components/TableFeatures/ColumnGrouping/utils.ts +70 -0
- package/src/components/Table/components/TableFeatures/ColumnVisibility/utils.ts +52 -0
- package/src/components/Table/components/TableFeatures/RowSorting/utils.ts +87 -0
- package/src/components/Table/components/TableHead/tableHead.tsx +21 -29
- package/src/components/Table/components/TableHead/types.ts +7 -0
- package/src/components/Table/components/TableHead/utils.ts +42 -0
- package/src/components/Table/components/TableRow/tableRow.styles.ts +19 -2
- package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -2
- package/src/components/Table/components/TableRows/components/CollapsableRows/hook.ts +20 -0
- package/src/components/Table/components/TableRows/tableRows.tsx +18 -15
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.styles.ts +17 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/columnGrouping.tsx +54 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/menuItems.tsx +28 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/components/MenuItems/types.ts +8 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/constants.ts +17 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/types.ts +5 -0
- package/src/components/Table/components/TableToolbar/components/ColumnGrouping/utils.ts +45 -0
- package/src/components/Table/components/TableToolbar/components/RowSelection/components/DropdownMenu/dropdownMenu.tsx +7 -20
- package/src/components/Table/components/TableToolbar/tableToolbar.tsx +8 -2
- package/src/components/Table/features/RowPosition/constants.ts +2 -2
- package/src/components/Table/features/RowPosition/utils.ts +10 -5
- package/src/components/Table/options/updater.ts +29 -0
- package/src/components/Table/table.tsx +43 -25
- package/src/components/TableCreator/common/constants.ts +4 -6
- package/src/components/TableCreator/common/utils.ts +14 -7
- package/src/components/TableCreator/options/expanded/constants.ts +14 -0
- package/src/components/TableCreator/options/expanded/hook.ts +6 -0
- package/src/components/TableCreator/options/grouping/constants.ts +6 -0
- package/src/components/TableCreator/options/grouping/hook.ts +17 -0
- package/src/components/TableCreator/options/hook.ts +31 -0
- package/src/components/TableCreator/options/rowSelection/constants.ts +10 -0
- package/src/components/TableCreator/options/rowSelection/hook.ts +8 -0
- package/src/components/TableCreator/options/sorting/constants.ts +10 -0
- package/src/components/TableCreator/options/sorting/hook.ts +6 -0
- package/src/components/TableCreator/tableCreator.tsx +4 -11
- package/src/components/common/DropdownMenu/dropdownMenu.styles.ts +1 -1
- package/src/components/common/DropdownMenu/dropdownMenu.tsx +19 -17
- package/src/components/common/Menu/hooks/useMenu.ts +8 -9
- package/src/config/entities.ts +11 -10
- package/src/config/utils.ts +0 -14
- package/src/hooks/useCategoryFilter.ts +5 -1
- package/src/hooks/useFileManifest/common/utils.ts +2 -2
- package/src/providers/exploreState/actions/updateGrouping/action.ts +26 -0
- package/src/providers/exploreState/actions/updateGrouping/dispatch.ts +16 -0
- package/src/providers/exploreState/actions/updateGrouping/types.ts +11 -0
- package/src/providers/exploreState/actions/updateGrouping/utils.ts +33 -0
- package/src/providers/exploreState/entities.ts +3 -3
- package/src/providers/exploreState/initializer/utils.ts +58 -10
- package/src/providers/exploreState/payloads/entities.ts +2 -0
- package/src/providers/exploreState/utils.ts +10 -7
- package/src/providers/exploreState.tsx +29 -6
- package/src/providers/fileManifestState.tsx +2 -4
- package/src/viewModelBuilders/common/utils.ts +10 -10
- package/src/views/ExploreView/exploreView.tsx +2 -4
- package/types/data-explorer-ui.d.ts +8 -1
- package/lib/components/TableCreator/common/entities.d.ts +0 -5
- package/src/components/TableCreator/common/entities.ts +0 -6
- /package/lib/components/{TableCreator/common/entities.js → Table/components/TableBody/hooks/virtualizer/types.js} +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ListItemText, MenuItem } from "@mui/material";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { handleToggleGrouping } from "../../../../../TableFeatures/ColumnGrouping/utils";
|
|
4
|
+
import { MENU_ITEM_PROPS } from "../../constants";
|
|
5
|
+
export const MenuItems = ({ closeMenu, groupingByColumnId, tableInstance, }) => {
|
|
6
|
+
const columnByMenuItem = [...groupingByColumnId.values()];
|
|
7
|
+
return columnByMenuItem.map(([menuItem, column]) => (React.createElement(MenuItem, { ...MENU_ITEM_PROPS, key: column.id, disabled: !column.getCanGroup(), onClick: () => {
|
|
8
|
+
handleToggleGrouping(tableInstance, column);
|
|
9
|
+
closeMenu();
|
|
10
|
+
}, selected: column.getIsGrouped() },
|
|
11
|
+
React.createElement(ListItemText, { disableTypography: true }, menuItem))));
|
|
12
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Column, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
import { UseMenu } from "../../../../../../../common/Menu/hooks/useMenu";
|
|
3
|
+
export interface MenuItemsProps<T extends RowData> {
|
|
4
|
+
closeMenu: UseMenu<HTMLButtonElement>["onClose"];
|
|
5
|
+
groupingByColumnId: Map<string, [string, Column<T>]>;
|
|
6
|
+
tableInstance: Table<T>;
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const LIST_ITEM_TEXT_PROPS = {
|
|
2
|
+
primaryTypographyProps: {
|
|
3
|
+
color: "primary",
|
|
4
|
+
component: "span",
|
|
5
|
+
variant: "inherit",
|
|
6
|
+
},
|
|
7
|
+
};
|
|
8
|
+
export const MENU_PROPS = {
|
|
9
|
+
variant: "menu",
|
|
10
|
+
};
|
|
11
|
+
export const MENU_ITEM_PROPS = {
|
|
12
|
+
component: "li",
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Column, GroupingState, RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
/**
|
|
3
|
+
* Retrieves the button label for the column grouping dropdown.
|
|
4
|
+
* Currently, the grouping state supports grouping by a single column only.
|
|
5
|
+
* @param groupingByColumnId - Map of column groupings by column ID.
|
|
6
|
+
* @param groupingState - Grouping state.
|
|
7
|
+
* @returns button label.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getButtonLabel<T extends RowData>(groupingByColumnId: Map<string, [string, Column<T>]>, groupingState: GroupingState): string;
|
|
10
|
+
/**
|
|
11
|
+
* Retrieves a map of column groupings by column ID from the given table instance.
|
|
12
|
+
* Columns that are visible, group-able with a `string` header are included and are keyed by
|
|
13
|
+
* their column ID. The value is a tuple containing the column header and the column instance.
|
|
14
|
+
* @param table - Table.
|
|
15
|
+
* @returns map of column grouping by column id.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getColumnGrouping<T extends RowData>(table: Table<T>): Map<string, [string, Column<T>]>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieves the button label for the column grouping dropdown.
|
|
3
|
+
* Currently, the grouping state supports grouping by a single column only.
|
|
4
|
+
* @param groupingByColumnId - Map of column groupings by column ID.
|
|
5
|
+
* @param groupingState - Grouping state.
|
|
6
|
+
* @returns button label.
|
|
7
|
+
*/
|
|
8
|
+
export function getButtonLabel(groupingByColumnId, groupingState) {
|
|
9
|
+
const grouping = groupingByColumnId.get(groupingState[0]);
|
|
10
|
+
if (!grouping)
|
|
11
|
+
return "Group by";
|
|
12
|
+
return `Group by: ${grouping[0]}`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves a map of column groupings by column ID from the given table instance.
|
|
16
|
+
* Columns that are visible, group-able with a `string` header are included and are keyed by
|
|
17
|
+
* their column ID. The value is a tuple containing the column header and the column instance.
|
|
18
|
+
* @param table - Table.
|
|
19
|
+
* @returns map of column grouping by column id.
|
|
20
|
+
*/
|
|
21
|
+
export function getColumnGrouping(table) {
|
|
22
|
+
const groupingByColumnId = new Map();
|
|
23
|
+
for (const column of table.getAllColumns()) {
|
|
24
|
+
const { columnDef: { header }, getCanGroup, getIsVisible, id, } = column;
|
|
25
|
+
if (!getCanGroup())
|
|
26
|
+
continue;
|
|
27
|
+
if (!getIsVisible())
|
|
28
|
+
continue;
|
|
29
|
+
// Currently, headers are configured as strings.
|
|
30
|
+
// Only include columns that have a string header (for now).
|
|
31
|
+
if (typeof header !== "string")
|
|
32
|
+
continue;
|
|
33
|
+
groupingByColumnId.set(id, [header, column]);
|
|
34
|
+
}
|
|
35
|
+
return groupingByColumnId;
|
|
36
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { DropdownMenuItemProps } from "../../../../../../../common/DropdownMenu/common/entities";
|
|
2
2
|
import { DropdownMenuProps as DXDropdownMenuProps } from "../../../../../../../common/DropdownMenu/dropdownMenu";
|
|
3
3
|
export interface DropdownMenuProps {
|
|
4
|
-
|
|
5
|
-
buttonLabel?: string;
|
|
4
|
+
button?: DXDropdownMenuProps["button"];
|
|
6
5
|
children: ({ closeMenu }: DropdownMenuItemProps) => JSX.Element[];
|
|
7
6
|
className?: string;
|
|
8
7
|
}
|
|
9
|
-
export declare const DropdownMenu: ({
|
|
8
|
+
export declare const DropdownMenu: ({ button, children, className, ...props }: DropdownMenuProps) => JSX.Element;
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { DropdownButton
|
|
2
|
+
import { DropdownButton } from "../../../../../../../common/Button/components/DropdownButton/dropdownButton";
|
|
3
3
|
import { DropdownMenu as RowSelectionDropdownMenu } from "./dropdownMenu.styles";
|
|
4
4
|
const DEFAULT_MENU_PROPS = {
|
|
5
5
|
anchorOrigin: { horizontal: "left", vertical: "bottom" },
|
|
6
6
|
transformOrigin: { horizontal: "left", vertical: "top" },
|
|
7
7
|
};
|
|
8
|
-
export const DropdownMenu = ({
|
|
9
|
-
return (React.createElement(RowSelectionDropdownMenu, { ...DEFAULT_MENU_PROPS, className: className,
|
|
8
|
+
export const DropdownMenu = ({ button = (props) => (React.createElement(DropdownButton, { ...props }, "Edit")), children, className, ...props /* Spread props to allow for Mui Menu specific prop overrides e.g. "anchorOrigin". */ }) => {
|
|
9
|
+
return (React.createElement(RowSelectionDropdownMenu, { ...DEFAULT_MENU_PROPS, className: className, button: button, ...props }, ({ closeMenu }) => children({ closeMenu })));
|
|
10
10
|
};
|
|
11
|
-
/**
|
|
12
|
-
* Return the dropdown button.
|
|
13
|
-
* @param props - Button props e.g. "onClick".
|
|
14
|
-
* @returns button element.
|
|
15
|
-
*/
|
|
16
|
-
function renderButton(props) {
|
|
17
|
-
return React.createElement(DXDropdownButton, { ...props });
|
|
18
|
-
}
|
|
@@ -5,6 +5,7 @@ import { getEditColumnOptions, isAnyRowSelected } from "../../common/utils";
|
|
|
5
5
|
import { CheckboxMenu } from "../CheckboxMenu/checkboxMenu";
|
|
6
6
|
import { DownloadEntityResults } from "../DownloadEntityResults/downloadEntityResults";
|
|
7
7
|
import { PaginationSummary } from "../PaginationSummary/paginationSummary";
|
|
8
|
+
import { ColumnGrouping } from "./components/ColumnGrouping/columnGrouping";
|
|
8
9
|
import { RowPreview } from "./components/RowPreview/rowPreview";
|
|
9
10
|
import { RowSelection } from "./components/RowSelection/rowSelection";
|
|
10
11
|
import { Toolbar, ToolbarActions } from "./tableToolbar.styles";
|
|
@@ -12,12 +13,12 @@ export const TableToolbar = ({ listView, rowDirection, tableInstance, }) => {
|
|
|
12
13
|
const { exploreState } = useExploreState();
|
|
13
14
|
const { paginationState } = exploreState;
|
|
14
15
|
const { currentPage, pages, pageSize, rows } = paginationState;
|
|
15
|
-
const { getSelectedRowModel, resetColumnVisibility } = tableInstance;
|
|
16
|
+
const { getSelectedRowModel, options: { enableGrouping }, resetColumnVisibility, } = tableInstance;
|
|
16
17
|
const { enableDownload, rowPreviewView } = listView || {};
|
|
17
18
|
const isLastPage = currentPage === pages;
|
|
18
19
|
const editColumnOptions = getEditColumnOptions(tableInstance);
|
|
19
20
|
const showToolbar = rowDirection === ROW_DIRECTION.DEFAULT &&
|
|
20
|
-
(editColumnOptions || enableDownload);
|
|
21
|
+
(editColumnOptions || enableDownload || enableGrouping);
|
|
21
22
|
/**
|
|
22
23
|
* Resets column visibility to default state.
|
|
23
24
|
*/
|
|
@@ -29,6 +30,7 @@ export const TableToolbar = ({ listView, rowDirection, tableInstance, }) => {
|
|
|
29
30
|
isAnyRowSelected(tableInstance) ? (React.createElement(RowSelection, { rows: getSelectedRowModel().rows, rowSelectionView: listView?.rowSelectionView })) : (React.createElement(PaginationSummary, { firstResult: (currentPage - 1) * pageSize + 1, lastResult: isLastPage ? rows : pageSize * currentPage, totalResult: rows })),
|
|
30
31
|
React.createElement(ToolbarActions, null,
|
|
31
32
|
enableDownload && (React.createElement(DownloadEntityResults, { entityName: exploreState.tabValue, rows: tableInstance.getFilteredRowModel().rows })),
|
|
33
|
+
React.createElement(ColumnGrouping, { tableInstance: tableInstance }),
|
|
32
34
|
React.createElement(CheckboxMenu, { label: "Edit Columns", onReset: onResetColumnVisibility, options: editColumnOptions })))),
|
|
33
35
|
React.createElement(RowPreview, { rowPreviewView: rowPreviewView, tableInstance: tableInstance })));
|
|
34
36
|
};
|
|
@@ -6,9 +6,9 @@ export const ROW_POSITION = {
|
|
|
6
6
|
};
|
|
7
7
|
},
|
|
8
8
|
createTable: (table) => {
|
|
9
|
-
const originalGetRowModel = table.getRowModel.bind(table);
|
|
10
9
|
table.getRowModel = () => {
|
|
11
|
-
|
|
10
|
+
const rowModel = table.getPaginationRowModel();
|
|
11
|
+
return getRowModel(table, rowModel);
|
|
12
12
|
};
|
|
13
13
|
},
|
|
14
14
|
getInitialState: (initialState) => {
|
|
@@ -2,10 +2,10 @@ import { InitialTableState, RowData, RowModel, Table, TableState } from "@tansta
|
|
|
2
2
|
/**
|
|
3
3
|
* Returns row model, with getter for row position.
|
|
4
4
|
* @param table - Table.
|
|
5
|
-
* @param
|
|
5
|
+
* @param rowModel - Row model.
|
|
6
6
|
* @returns row model.
|
|
7
7
|
*/
|
|
8
|
-
export declare function getRowModel<T extends RowData>(table: Table<T>,
|
|
8
|
+
export declare function getRowModel<T extends RowData>(table: Table<T>, rowModel: RowModel<T>): RowModel<T>;
|
|
9
9
|
/**
|
|
10
10
|
* Returns the position of the row in the table.
|
|
11
11
|
* @param rowId - Row ID.
|
|
@@ -3,13 +3,18 @@ import { DEFAULT_PAGINATION } from "../constants";
|
|
|
3
3
|
/**
|
|
4
4
|
* Returns row model, with getter for row position.
|
|
5
5
|
* @param table - Table.
|
|
6
|
-
* @param
|
|
6
|
+
* @param rowModel - Row model.
|
|
7
7
|
* @returns row model.
|
|
8
8
|
*/
|
|
9
|
-
export function getRowModel(table,
|
|
10
|
-
|
|
11
|
-
rowModel.
|
|
12
|
-
|
|
9
|
+
export function getRowModel(table, rowModel) {
|
|
10
|
+
let i = 0;
|
|
11
|
+
rowModel.flatRows.forEach(({ getIsGrouped, id }) => {
|
|
12
|
+
const isGroupedRow = getIsGrouped();
|
|
13
|
+
const index = isGroupedRow ? -1 : i; // Capture the current value of i for this iteration.
|
|
14
|
+
rowModel.rowsById[id].getRowPosition = () => calculateRowPosition(table, index);
|
|
15
|
+
if (isGroupedRow)
|
|
16
|
+
return; // Iterate only for non-grouped rows.
|
|
17
|
+
i++;
|
|
13
18
|
});
|
|
14
19
|
return rowModel;
|
|
15
20
|
}
|
|
@@ -31,6 +36,8 @@ export function getRowPosition(rowId, table) {
|
|
|
31
36
|
* @returns row position.
|
|
32
37
|
*/
|
|
33
38
|
function calculateRowPosition(table, index) {
|
|
39
|
+
if (index < 0)
|
|
40
|
+
return index; // Grouped rows have a position of -1.
|
|
34
41
|
const { getState } = table;
|
|
35
42
|
const { pagination: { pageIndex, pageSize }, } = getState();
|
|
36
43
|
return pageIndex * pageSize + (index + 1);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Updater } from "@tanstack/react-table";
|
|
2
|
+
/**
|
|
3
|
+
* Utility function to resolve TanStack updater into a new value.
|
|
4
|
+
* If the updater is a function, it is called with the `old` value to compute the new value.
|
|
5
|
+
* If the updater is not a function, it is returned as-is.
|
|
6
|
+
* @param updaterOrValue - The updater, either a function or a direct value.
|
|
7
|
+
* @param old - The (old) value.
|
|
8
|
+
* @returns Resolved value.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveUpdater<T>(updaterOrValue: Updater<T>, old: T): T;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guard to check if the given value is TanStack's updater function.
|
|
3
|
+
* TanStack updater can either be a function that computes the new value based on the old value,
|
|
4
|
+
* or a direct value. This type guard identifies whether the provided updater is a function.
|
|
5
|
+
* @param updaterOrValue - The value to check.
|
|
6
|
+
* @returns True if the value is a function, false otherwise.
|
|
7
|
+
*/
|
|
8
|
+
function isUpdaterFunction(updaterOrValue) {
|
|
9
|
+
return typeof updaterOrValue === "function";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Utility function to resolve TanStack updater into a new value.
|
|
13
|
+
* If the updater is a function, it is called with the `old` value to compute the new value.
|
|
14
|
+
* If the updater is not a function, it is returned as-is.
|
|
15
|
+
* @param updaterOrValue - The updater, either a function or a direct value.
|
|
16
|
+
* @param old - The (old) value.
|
|
17
|
+
* @returns Resolved value.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveUpdater(updaterOrValue, old) {
|
|
20
|
+
if (isUpdaterFunction(updaterOrValue)) {
|
|
21
|
+
return updaterOrValue(old);
|
|
22
|
+
}
|
|
23
|
+
return updaterOrValue;
|
|
24
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TableContainer } from "@mui/material";
|
|
2
2
|
import { getCoreRowModel, getFacetedRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from "@tanstack/react-table";
|
|
3
|
-
import React, { useEffect, useMemo } from "react";
|
|
3
|
+
import React, { useCallback, useEffect, useMemo } from "react";
|
|
4
4
|
import { track } from "../../common/analytics/analytics";
|
|
5
5
|
import { EVENT_NAME, EVENT_PARAM, PAGINATION_DIRECTION, SORT_DIRECTION, } from "../../common/analytics/entities";
|
|
6
6
|
import { BREAKPOINT_FN_NAME, useBreakpointHelper, } from "../../hooks/useBreakpointHelper";
|
|
@@ -39,7 +39,7 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
39
39
|
const exploreMode = useExploreMode();
|
|
40
40
|
const { exploreDispatch, exploreState } = useExploreState();
|
|
41
41
|
const { entityPageState, filterState, listItems, loading, paginationState, rowPreview, tabValue, } = exploreState;
|
|
42
|
-
const { columnsVisibility, enableRowSelection, rowSelection, sorting } = entityPageState[tabValue];
|
|
42
|
+
const { columnsVisibility, enableRowSelection, grouping, rowSelection, sorting, } = entityPageState[tabValue];
|
|
43
43
|
const { currentPage, pages, pageSize, rows: pageCount } = paginationState;
|
|
44
44
|
const { disablePagination = false, enableRowPreview = false } = listView || {};
|
|
45
45
|
const clientFiltering = isClientFilteringEnabled(exploreMode);
|
|
@@ -48,39 +48,46 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
48
48
|
: ROW_DIRECTION.DEFAULT;
|
|
49
49
|
const pagination = useMemo(() => getTableStatePagination(currentPage - 1, pageSize), [currentPage, pageSize]);
|
|
50
50
|
const onSortingChange = (updater) => {
|
|
51
|
+
// TODO(cc) memoize `onSortingChange` with `useCallback`.
|
|
52
|
+
// TODO(cc) copy `onSortingChange` to ../options/sorting/hook.ts see src/components/Table/options/grouping/hook.ts for example.
|
|
51
53
|
exploreDispatch({
|
|
52
54
|
payload: typeof updater === "function" ? updater(sorting) : updater,
|
|
53
55
|
type: ExploreActionKind.UpdateSorting,
|
|
54
56
|
});
|
|
55
57
|
// Execute GTM tracking.
|
|
58
|
+
// TODO(cc) update tracking to handle sorting of multiple columns.
|
|
59
|
+
// TODO(cc) GTM tracking when `onSortingChange` is triggered only tracks the first column sorted, and takes the value from explore state which is not updated yet.
|
|
56
60
|
track(EVENT_NAME.ENTITY_TABLE_SORTED, {
|
|
57
61
|
[EVENT_PARAM.ENTITY_NAME]: exploreState.tabValue,
|
|
58
|
-
[EVENT_PARAM.COLUMN_NAME]: sorting[0]
|
|
59
|
-
[EVENT_PARAM.SORT_DIRECTION]: sorting[0]
|
|
62
|
+
[EVENT_PARAM.COLUMN_NAME]: sorting?.[0]?.id, // TODO(cc) sorting should always be at least `[]` and never `undefined`.
|
|
63
|
+
[EVENT_PARAM.SORT_DIRECTION]: sorting?.[0]?.desc // TODO(cc) sorting should always be at least `[]` and never `undefined`.
|
|
60
64
|
? SORT_DIRECTION.DESC
|
|
61
65
|
: SORT_DIRECTION.ASC,
|
|
62
66
|
});
|
|
63
67
|
};
|
|
64
68
|
const onColumnVisibilityChange = (updater) => {
|
|
69
|
+
// TODO(cc) memoize `onColumnVisibilityChange` with `useCallback`.
|
|
65
70
|
exploreDispatch({
|
|
66
71
|
payload: typeof updater === "function" ? updater(columnsVisibility) : updater,
|
|
67
72
|
type: ExploreActionKind.UpdateColumnVisibility,
|
|
68
73
|
});
|
|
69
74
|
};
|
|
70
|
-
const onRowPreviewChange = (updater) => {
|
|
75
|
+
const onRowPreviewChange = useCallback((updater) => {
|
|
71
76
|
exploreDispatch({
|
|
72
77
|
payload: typeof updater === "function" ? updater(rowPreview) : updater,
|
|
73
78
|
type: ExploreActionKind.UpdateRowPreview,
|
|
74
79
|
});
|
|
75
|
-
};
|
|
76
|
-
const onRowSelectionChange = (updater) => {
|
|
80
|
+
}, [exploreDispatch, rowPreview]);
|
|
81
|
+
const onRowSelectionChange = useCallback((updater) => {
|
|
82
|
+
// TODO(cc) refactor `onRowSelectionChange` to /options/rowSelection/hook.ts see onGroupingChange.
|
|
77
83
|
exploreDispatch({
|
|
78
84
|
payload: typeof updater === "function" ? updater(rowSelection) : updater,
|
|
79
85
|
type: ExploreActionKind.UpdateRowSelection,
|
|
80
86
|
});
|
|
81
|
-
};
|
|
87
|
+
}, [exploreDispatch, rowSelection]);
|
|
82
88
|
const state = {
|
|
83
89
|
columnVisibility: columnsVisibility,
|
|
90
|
+
grouping,
|
|
84
91
|
pagination,
|
|
85
92
|
rowPreview,
|
|
86
93
|
rowSelection,
|
|
@@ -107,11 +114,9 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
107
114
|
data: items,
|
|
108
115
|
enableColumnFilters: true, // client-side filtering.
|
|
109
116
|
enableFilters: true, // client-side filtering.
|
|
110
|
-
enableMultiSort: clientFiltering,
|
|
117
|
+
enableMultiSort: clientFiltering, // TODO(cc) move to sorting options; default to false and let the table options in config flag this value.
|
|
111
118
|
enableRowPreview,
|
|
112
119
|
enableRowSelection,
|
|
113
|
-
enableSorting: true, // client-side filtering.
|
|
114
|
-
enableSortingRemoval: false, // client-side filtering.
|
|
115
120
|
getCoreRowModel: getCoreRowModel(),
|
|
116
121
|
getFacetedRowModel: clientFiltering ? getFacetedRowModel() : undefined,
|
|
117
122
|
getFacetedUniqueValues: clientFiltering
|
|
@@ -135,8 +140,8 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
135
140
|
const { getAllColumns, getRowModel, getState, getVisibleFlatColumns, nextPage: tableNextPage, previousPage: tablePreviousPage, } = tableInstance;
|
|
136
141
|
const allColumns = getAllColumns();
|
|
137
142
|
const { columnFilters } = getState();
|
|
138
|
-
const { rows
|
|
139
|
-
const noResults = !loading && (!
|
|
143
|
+
const { rows } = getRowModel();
|
|
144
|
+
const noResults = !loading && (!rows || rows.length === 0);
|
|
140
145
|
const scrollTop = useScroll();
|
|
141
146
|
const visibleColumns = getVisibleFlatColumns();
|
|
142
147
|
const gridTemplateColumns = getGridTemplateColumns(visibleColumns);
|
|
@@ -195,8 +200,8 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
195
200
|
loading: false,
|
|
196
201
|
paginationResponse: {
|
|
197
202
|
...DEFAULT_PAGINATION_STATE,
|
|
198
|
-
pageSize:
|
|
199
|
-
rows:
|
|
203
|
+
pageSize: rows.filter(({ getIsGrouped }) => !getIsGrouped()).length,
|
|
204
|
+
rows: rows.filter(({ getIsGrouped }) => !getIsGrouped()).length,
|
|
200
205
|
},
|
|
201
206
|
selectCategories: buildCategoryViews(allColumns, columnFilters),
|
|
202
207
|
},
|
|
@@ -209,7 +214,7 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
209
214
|
columnFilters,
|
|
210
215
|
exploreDispatch,
|
|
211
216
|
listItems,
|
|
212
|
-
|
|
217
|
+
rows,
|
|
213
218
|
]);
|
|
214
219
|
function canNextPage() {
|
|
215
220
|
return currentPage < pages;
|
|
@@ -223,7 +228,7 @@ export const TableComponent = ({ columns, getRowId, initialState, items, listVie
|
|
|
223
228
|
React.createElement(TableContainer, null,
|
|
224
229
|
React.createElement(GridTable, { collapsable: true, gridTemplateColumns: gridTemplateColumns },
|
|
225
230
|
React.createElement(TableHead, { rowDirection: rowDirection, tableInstance: tableInstance }),
|
|
226
|
-
React.createElement(TableBody, { rowDirection: rowDirection, tableInstance: tableInstance }))),
|
|
231
|
+
React.createElement(TableBody, { rows: rows, rowDirection: rowDirection, tableInstance: tableInstance }))),
|
|
227
232
|
!disablePagination && (React.createElement(DXPagination, { canNextPage: canNextPage(), canPreviousPage: canPreviousPage(), currentPage: currentPage, onNextPage: handleTableNextPage, onPreviousPage: handleTablePreviousPage, totalPage: pages ?? 0 })))));
|
|
228
233
|
};
|
|
229
234
|
// TODO(Dave) review whether memo is necessary - flash between tabs / loading state.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RowData } from "@tanstack/react-table";
|
|
2
|
-
import {
|
|
2
|
+
import { ColumnConfig } from "../../../config/entities";
|
|
3
3
|
export declare const ACCESSOR_KEYS: {
|
|
4
4
|
ROW_POSITION: string;
|
|
5
5
|
SELECT: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const COLUMN_CONFIGS: Record<string,
|
|
7
|
+
export declare const COLUMN_CONFIGS: Record<string, ColumnConfig<RowData>>;
|
|
@@ -9,7 +9,8 @@ export const COLUMN_CONFIGS = {
|
|
|
9
9
|
columnVisible: false,
|
|
10
10
|
componentConfig: { component: RowSelectionCell },
|
|
11
11
|
disableHiding: true,
|
|
12
|
-
|
|
12
|
+
enableGrouping: false,
|
|
13
|
+
enableSorting: false,
|
|
13
14
|
header: ACCESSOR_KEYS.SELECT,
|
|
14
15
|
id: ACCESSOR_KEYS.SELECT,
|
|
15
16
|
meta: {
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ColumnDef } from "@tanstack/react-table";
|
|
2
|
-
import {
|
|
2
|
+
import { ColumnConfig } from "../../../config/entities";
|
|
3
3
|
/**
|
|
4
4
|
* Builds a base column definition.
|
|
5
|
+
* The following properties are set by default:
|
|
6
|
+
* - Grouping is not enabled `enableGrouping: false`.
|
|
7
|
+
* - Sorting is enabled - `enableSorting: true`.
|
|
5
8
|
* @param baseColumnConfig - Base column configuration.
|
|
6
9
|
* @returns column definition.
|
|
7
10
|
*/
|
|
8
|
-
export declare function buildBaseColumnDef<T
|
|
11
|
+
export declare function buildBaseColumnDef<T>(baseColumnConfig: ColumnConfig<T>): ColumnDef<T>;
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Builds a base column definition.
|
|
3
|
+
* The following properties are set by default:
|
|
4
|
+
* - Grouping is not enabled `enableGrouping: false`.
|
|
5
|
+
* - Sorting is enabled - `enableSorting: true`.
|
|
3
6
|
* @param baseColumnConfig - Base column configuration.
|
|
4
7
|
* @returns column definition.
|
|
5
8
|
*/
|
|
6
9
|
export function buildBaseColumnDef(baseColumnConfig) {
|
|
7
|
-
const { columnPinned,
|
|
10
|
+
const { columnPinned,
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Destructure to avoid passing it to the columnDef.
|
|
12
|
+
columnVisible,
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Destructure to avoid passing it to the columnDef.
|
|
14
|
+
componentConfig, disableHiding, header, id, meta, width, ...columnDef } = baseColumnConfig;
|
|
8
15
|
return {
|
|
16
|
+
...columnDef,
|
|
9
17
|
accessorKey: id,
|
|
10
18
|
enableHiding: !disableHiding,
|
|
11
|
-
enableSorting: !disableSorting,
|
|
12
19
|
header,
|
|
13
20
|
id,
|
|
14
21
|
meta: {
|
|
15
|
-
...meta,
|
|
16
22
|
columnPinned,
|
|
17
|
-
header:
|
|
23
|
+
header: typeof header === "string" ? header : undefined,
|
|
18
24
|
width,
|
|
25
|
+
...meta,
|
|
19
26
|
},
|
|
20
27
|
};
|
|
21
28
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useExploreState } from "../../../../hooks/useExploreState";
|
|
3
|
+
import { updateGrouping } from "../../../../providers/exploreState/actions/updateGrouping/dispatch";
|
|
4
|
+
import { GROUPING_OPTIONS } from "./constants";
|
|
5
|
+
export function useGroupingOptions() {
|
|
6
|
+
const { exploreDispatch } = useExploreState();
|
|
7
|
+
const onGroupingChange = useCallback((updaterOrValue) => exploreDispatch(updateGrouping({ updaterOrValue })), [exploreDispatch]);
|
|
8
|
+
return { ...GROUPING_OPTIONS, onGroupingChange };
|
|
9
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useConfig } from "../../../hooks/useConfig";
|
|
2
|
+
import { useExpandedOptions } from "./expanded/hook";
|
|
3
|
+
import { useGroupingOptions } from "./grouping/hook";
|
|
4
|
+
import { useRowSelectionOptions } from "./rowSelection/hook";
|
|
5
|
+
import { useSortingOptions } from "./sorting/hook";
|
|
6
|
+
export function useTableOptions() {
|
|
7
|
+
const { entityConfig: { list: { defaultSort, tableOptions }, }, } = useConfig();
|
|
8
|
+
const expandedOptions = useExpandedOptions();
|
|
9
|
+
const groupingOptions = useGroupingOptions();
|
|
10
|
+
const rowSelectionOptions = useRowSelectionOptions();
|
|
11
|
+
const sortingOptions = useSortingOptions();
|
|
12
|
+
return {
|
|
13
|
+
...expandedOptions,
|
|
14
|
+
...groupingOptions,
|
|
15
|
+
...rowSelectionOptions,
|
|
16
|
+
...sortingOptions, // TODO(cc) merge of all sorting options.
|
|
17
|
+
...tableOptions,
|
|
18
|
+
initialState: {
|
|
19
|
+
...tableOptions?.initialState,
|
|
20
|
+
sorting: defaultSort
|
|
21
|
+
? [defaultSort] // TODO(cc) deprecate `defaultSort` in favor of `initialState.sorting`.
|
|
22
|
+
: tableOptions?.initialState?.sorting,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ColumnConfig,
|
|
1
|
+
import { CoreOptions, RowData } from "@tanstack/react-table";
|
|
2
|
+
import { ColumnConfig, ListViewConfig } from "../../config/entities";
|
|
3
3
|
export interface TableCreatorProps<T> {
|
|
4
4
|
columns: ColumnConfig<T>[];
|
|
5
|
-
defaultSort: ColumnSort | undefined;
|
|
6
5
|
getRowId?: CoreOptions<T>["getRowId"];
|
|
7
6
|
items: T[];
|
|
8
7
|
listView?: ListViewConfig;
|
|
9
8
|
loading?: boolean;
|
|
10
|
-
tableOptions?: ListConfig<T>["tableOptions"];
|
|
11
9
|
}
|
|
12
|
-
export declare const TableCreator: <T extends RowData>({ columns,
|
|
10
|
+
export declare const TableCreator: <T extends RowData>({ columns, getRowId, items, listView, loading, }: TableCreatorProps<T>) => JSX.Element;
|