@databiosphere/findable-ui 5.0.0 → 6.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/README.md +5 -1
- package/lib/components/ComponentCreator/ComponentCreator.d.ts +4 -2
- package/lib/components/ComponentCreator/ComponentCreator.js +6 -8
- package/lib/components/Detail/components/DetailViewTable/detailViewTable.d.ts +3 -3
- package/lib/components/Detail/components/DetailViewTable/detailViewTable.js +1 -1
- package/lib/components/Detail/components/Table/common/utils.d.ts +2 -2
- package/lib/components/Detail/components/Table/components/TableBody/tableBody.d.ts +3 -3
- package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -3
- package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -4
- package/lib/components/Detail/components/Table/components/TableRows/tableRows.d.ts +2 -2
- package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +2 -1
- package/lib/components/Detail/components/Table/table.d.ts +3 -4
- package/lib/components/Detail/components/Table/table.js +2 -1
- package/lib/components/Filter/components/Filters/filters.d.ts +1 -1
- package/lib/components/Index/components/Cell/cell.d.ts +3 -0
- package/lib/components/Index/components/Cell/cell.js +3 -0
- package/lib/components/Index/components/NTag/components/Tooltip/tooltip.d.ts +3 -0
- package/lib/components/Index/components/NTag/components/Tooltip/tooltip.js +3 -0
- package/lib/components/Index/components/NTag/nTag.d.ts +3 -0
- package/lib/components/Index/components/NTag/nTag.js +3 -0
- package/lib/components/Index/components/NTagCell/nTagCell.d.ts +6 -1
- package/lib/components/Index/components/NTagCell/nTagCell.js +6 -2
- package/lib/components/Layout/components/Outline/common/constants.d.ts +1 -1
- package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.d.ts +1 -1
- package/lib/components/Links/components/Link/link.d.ts +3 -1
- package/lib/components/Links/components/Link/link.js +4 -4
- package/lib/components/Table/common/gridTable.styles.js +8 -2
- package/lib/components/Table/common/utils.d.ts +19 -14
- package/lib/components/Table/common/utils.js +26 -11
- package/lib/components/Table/components/DownloadEntityResults/downloadEntityResults.d.ts +3 -3
- package/lib/components/Table/components/PaginationSummary/paginationSummary.js +9 -8
- package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -3
- package/lib/components/Table/components/TableCell/common/utils.d.ts +3 -3
- package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.d.ts +7 -0
- package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.js +55 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.d.ts +6 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.js +93 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.d.ts +5 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.js +16 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.d.ts +7 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.js +24 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.d.ts +9 -0
- package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.js +53 -0
- package/lib/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.d.ts +2 -2
- package/lib/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.d.ts +2 -2
- package/lib/components/Table/components/TableHead/tableHead.d.ts +3 -3
- package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +16 -0
- package/lib/components/Table/components/TableRow/tableRow.styles.js +22 -0
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -3
- package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +3 -2
- package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
- package/lib/components/Table/components/TableRows/tableRows.js +3 -1
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.d.ts +2 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.js +12 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.d.ts +9 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.js +32 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.d.ts +6 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.js +35 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.d.ts +12 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.js +32 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.d.ts +5 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.js +50 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.d.ts +7 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.js +16 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.d.ts +5 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.js +17 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.d.ts +8 -0
- package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.js +14 -0
- package/lib/components/Table/components/TableToolbar/components/RowSelection/rowSelection.d.ts +3 -3
- package/lib/components/Table/components/TableToolbar/tableToolbar.d.ts +3 -3
- package/lib/components/Table/components/TableToolbar/tableToolbar.js +9 -6
- package/lib/components/Table/features/RowPreview/constants.d.ts +2 -0
- package/lib/components/Table/features/RowPreview/constants.js +45 -0
- package/lib/components/Table/features/RowPreview/entities.d.ts +22 -0
- package/lib/components/Table/features/RowPreview/entities.js +2 -0
- package/lib/components/Table/features/RowPreview/utils.d.ts +33 -0
- package/lib/components/Table/features/RowPreview/utils.js +89 -0
- package/lib/components/Table/features/entities.d.ts +7 -0
- package/lib/components/Table/features/entities.js +2 -0
- package/lib/components/Table/table.d.ts +4 -12
- package/lib/components/Table/table.js +26 -38
- package/lib/components/TableCreator/common/entities.d.ts +1 -1
- package/lib/components/TableCreator/tableCreator.d.ts +2 -9
- package/lib/components/TableCreator/tableCreator.js +4 -4
- package/lib/components/common/Button/button.d.ts +1 -1
- package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.d.ts +7 -0
- package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.js +17 -0
- package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.d.ts +5 -0
- package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.js +17 -0
- package/lib/components/common/Drawer/components/drawer.styles.d.ts +5 -0
- package/lib/components/common/Drawer/components/drawer.styles.js +11 -0
- package/lib/components/common/Drawer/drawer.d.ts +7 -0
- package/lib/components/common/Drawer/drawer.js +24 -0
- package/lib/components/common/Grid/grid.d.ts +1 -1
- package/lib/components/common/Typography/common/entities.d.ts +2 -0
- package/lib/components/common/Typography/common/entities.js +2 -0
- package/lib/config/entities.d.ts +7 -25
- package/lib/providers/exploreState/entities.d.ts +3 -2
- package/lib/providers/exploreState/initializer/constants.js +1 -3
- package/lib/providers/exploreState/initializer/utils.js +1 -0
- package/lib/providers/exploreState/payloads/entities.d.ts +6 -11
- package/lib/providers/exploreState/utils.d.ts +12 -10
- package/lib/providers/exploreState/utils.js +20 -24
- package/lib/providers/exploreState.d.ts +12 -32
- package/lib/providers/exploreState.js +47 -36
- package/lib/styles/common/mixins/colors.d.ts +2 -1
- package/lib/styles/common/mixins/colors.js +3 -1
- package/lib/theme/common/components.js +11 -2
- package/lib/theme/common/palette.d.ts +3 -1
- package/lib/theme/common/palette.js +4 -1
- package/lib/views/ExploreView/exploreView.js +4 -6
- package/package.json +2 -2
- package/src/components/ComponentCreator/ComponentCreator.tsx +6 -1
- package/src/components/Detail/components/DetailViewTable/detailViewTable.tsx +4 -4
- package/src/components/Detail/components/Table/common/utils.ts +2 -2
- package/src/components/Detail/components/Table/components/TableBody/tableBody.tsx +3 -3
- package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +5 -7
- package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +10 -6
- package/src/components/Detail/components/Table/table.tsx +6 -3
- package/src/components/Filter/components/Filters/filters.tsx +1 -1
- package/src/components/Index/components/Cell/cell.tsx +4 -0
- package/src/components/Index/components/NTag/components/Tooltip/tooltip.tsx +4 -0
- package/src/components/Index/components/NTag/nTag.tsx +4 -0
- package/src/components/Index/components/NTagCell/nTagCell.tsx +22 -3
- package/src/components/Layout/components/Outline/common/constants.ts +1 -1
- package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +1 -1
- package/src/components/Links/components/Link/link.tsx +15 -2
- package/src/components/Table/common/gridTable.styles.ts +8 -2
- package/src/components/Table/common/utils.ts +55 -24
- package/src/components/Table/components/DownloadEntityResults/downloadEntityResults.tsx +3 -3
- package/src/components/Table/components/PaginationSummary/paginationSummary.tsx +11 -9
- package/src/components/Table/components/TableBody/tableBody.tsx +3 -3
- package/src/components/Table/components/TableCell/common/utils.ts +3 -3
- package/src/components/Table/components/TableCell/components/BasicCell/basicCell.tsx +52 -0
- package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.ts +11 -0
- package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.tsx +86 -0
- package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.tsx +21 -0
- package/src/components/Table/components/TableCell/components/NTagCell/nTagCell.tsx +70 -0
- package/src/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.tsx +2 -3
- package/src/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.tsx +2 -3
- package/src/components/Table/components/TableHead/tableHead.tsx +3 -3
- package/src/components/Table/components/TableRow/tableRow.styles.ts +22 -0
- package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -6
- package/src/components/Table/components/TableRows/tableRows.tsx +9 -6
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.ts +11 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.ts +31 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.tsx +52 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.ts +48 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.tsx +53 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.ts +12 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.tsx +25 -0
- package/src/components/Table/components/TableToolbar/components/RowPreview/rowPreview.tsx +19 -0
- package/src/components/Table/components/TableToolbar/components/RowSelection/rowSelection.tsx +3 -3
- package/src/components/Table/components/TableToolbar/tableToolbar.tsx +9 -4
- package/src/components/Table/features/RowPreview/constants.ts +65 -0
- package/src/components/Table/features/RowPreview/entities.ts +25 -0
- package/src/components/Table/features/RowPreview/utils.ts +93 -0
- package/src/components/Table/features/entities.ts +13 -0
- package/src/components/Table/table.tsx +40 -50
- package/src/components/TableCreator/common/entities.ts +1 -1
- package/src/components/TableCreator/tableCreator.tsx +15 -22
- package/src/components/common/Button/button.tsx +1 -2
- package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.ts +12 -0
- package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.tsx +27 -0
- package/src/components/common/Drawer/components/drawer.styles.ts +6 -0
- package/src/components/common/Drawer/drawer.tsx +21 -0
- package/src/components/common/Grid/grid.tsx +1 -3
- package/src/components/common/Section/components/CollapsableSection/collapsableSection.tsx +1 -2
- package/src/components/common/Typography/common/entities.ts +5 -0
- package/src/config/entities.ts +7 -37
- package/src/providers/exploreState/entities.ts +7 -2
- package/src/providers/exploreState/initializer/constants.ts +1 -3
- package/src/providers/exploreState/initializer/utils.ts +2 -1
- package/src/providers/exploreState/payloads/entities.ts +7 -18
- package/src/providers/exploreState/utils.ts +25 -36
- package/src/providers/exploreState.tsx +93 -73
- package/src/styles/common/mixins/colors.ts +4 -1
- package/src/theme/common/components.ts +12 -0
- package/src/theme/common/palette.ts +4 -5
- package/src/theme/theme.ts +1 -2
- package/src/views/ExploreView/exploreView.tsx +3 -25
- package/types/data-explorer-ui.d.ts +21 -2
- package/src/hooks/useEntityListRelatedView.ts +0 -78
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Chip as MChip,
|
|
3
|
+
ChipProps as MChipProps,
|
|
4
|
+
Typography,
|
|
5
|
+
} from "@mui/material";
|
|
6
|
+
import React, { forwardRef } from "react";
|
|
7
|
+
import { TEXT_BODY_SMALL_400 } from "../../../../../../theme/common/typography";
|
|
8
|
+
import { TypographyProps } from "../../../../../common/Typography/common/entities";
|
|
9
|
+
import { NTag } from "./components/NTag/nTag";
|
|
10
|
+
|
|
11
|
+
// Template constants
|
|
12
|
+
const MAX_DISPLAYABLE_VALUES = 1;
|
|
13
|
+
|
|
14
|
+
export type MetadataValue = string;
|
|
15
|
+
|
|
16
|
+
export interface NTagCellProps {
|
|
17
|
+
label: string;
|
|
18
|
+
TypographyProps?: TypographyProps;
|
|
19
|
+
values: MetadataValue[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* String-concatenates the specified list of metadata values to a string value, joined by a comma ",".
|
|
24
|
+
* @param metadataValues - List of metadata values.
|
|
25
|
+
* @returns the metadata values in a string, each value joined by a comma.
|
|
26
|
+
*/
|
|
27
|
+
function stringifyMetadataValues(metadataValues: MetadataValue[]): string {
|
|
28
|
+
return metadataValues.join(", ");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Renders tag for NTag component.
|
|
33
|
+
* Tooltip children require forward ref.
|
|
34
|
+
*/
|
|
35
|
+
const Tag = forwardRef<HTMLDivElement, MChipProps>(function Tag(props, ref) {
|
|
36
|
+
return <MChip ref={ref} {...props} />;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export const NTagCell = ({
|
|
40
|
+
label,
|
|
41
|
+
TypographyProps,
|
|
42
|
+
values,
|
|
43
|
+
}: NTagCellProps): JSX.Element => {
|
|
44
|
+
const metadataCount = values.length;
|
|
45
|
+
const showNTag = metadataCount > MAX_DISPLAYABLE_VALUES;
|
|
46
|
+
return (
|
|
47
|
+
<>
|
|
48
|
+
{showNTag ? (
|
|
49
|
+
<NTag
|
|
50
|
+
Tag={<Tag label={`${metadataCount} ${label}`} variant="ntag" />}
|
|
51
|
+
TooltipTitle={
|
|
52
|
+
<Typography display="block" variant={TEXT_BODY_SMALL_400}>
|
|
53
|
+
{stringifyMetadataValues(values)}
|
|
54
|
+
</Typography>
|
|
55
|
+
}
|
|
56
|
+
/>
|
|
57
|
+
) : (
|
|
58
|
+
values.map((value, v) => (
|
|
59
|
+
<Typography
|
|
60
|
+
key={`${value}${v}`}
|
|
61
|
+
variant="inherit"
|
|
62
|
+
{...TypographyProps}
|
|
63
|
+
>
|
|
64
|
+
{value}
|
|
65
|
+
</Typography>
|
|
66
|
+
))
|
|
67
|
+
)}
|
|
68
|
+
</>
|
|
69
|
+
);
|
|
70
|
+
};
|
package/src/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.tsx
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Checkbox as MCheckbox } from "@mui/material";
|
|
2
|
-
import { Row } from "@tanstack/react-table";
|
|
3
|
-
import { RowData } from "@tanstack/table-core";
|
|
2
|
+
import { Row, RowData } from "@tanstack/react-table";
|
|
4
3
|
import React from "react";
|
|
5
4
|
import { CheckedIcon } from "../../../../../common/CustomIcon/components/CheckedIcon/checkedIcon";
|
|
6
5
|
import { UncheckedIcon } from "../../../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
|
|
7
6
|
|
|
8
|
-
export interface RowSelectionCellProps<T> {
|
|
7
|
+
export interface RowSelectionCellProps<T extends RowData> {
|
|
9
8
|
row: Row<T>;
|
|
10
9
|
}
|
|
11
10
|
|
package/src/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.tsx
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Checkbox } from "@mui/material";
|
|
2
|
-
import { Table } from "@tanstack/react-table";
|
|
3
|
-
import { RowData } from "@tanstack/table-core";
|
|
2
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
4
3
|
import React from "react";
|
|
5
4
|
import { CheckedIcon } from "../../../../../common/CustomIcon/components/CheckedIcon/checkedIcon";
|
|
6
5
|
import { IndeterminateIcon } from "../../../../../common/CustomIcon/components/IndeterminateIcon/indeterminateIcon";
|
|
7
6
|
import { UncheckedIcon } from "../../../../../common/CustomIcon/components/UncheckedIcon/uncheckedIcon";
|
|
8
7
|
|
|
9
|
-
export interface HeadSelectionCellProps<T> {
|
|
8
|
+
export interface HeadSelectionCellProps<T extends RowData> {
|
|
10
9
|
tableInstance: Table<T>;
|
|
11
10
|
}
|
|
12
11
|
|
|
@@ -4,18 +4,18 @@ import {
|
|
|
4
4
|
TableRow as MTableRow,
|
|
5
5
|
TableSortLabel,
|
|
6
6
|
} from "@mui/material";
|
|
7
|
-
import { flexRender, Table } from "@tanstack/react-table";
|
|
7
|
+
import { flexRender, RowData, Table } from "@tanstack/react-table";
|
|
8
8
|
import React, { Fragment } from "react";
|
|
9
9
|
import { ROW_DIRECTION } from "../../common/entities";
|
|
10
10
|
import { getTableSortLabelProps } from "../../common/utils";
|
|
11
11
|
import { getTableCellPadding } from "../TableCell/common/utils";
|
|
12
12
|
|
|
13
|
-
export interface TableHeadProps<T> {
|
|
13
|
+
export interface TableHeadProps<T extends RowData> {
|
|
14
14
|
rowDirection: ROW_DIRECTION;
|
|
15
15
|
tableInstance: Table<T>;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export const TableHead = <T extends
|
|
18
|
+
export const TableHead = <T extends RowData>({
|
|
19
19
|
rowDirection,
|
|
20
20
|
tableInstance,
|
|
21
21
|
}: TableHeadProps<T>): JSX.Element => {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { css } from "@emotion/react";
|
|
2
|
+
import styled from "@emotion/styled";
|
|
3
|
+
import { TableRow as MTableRow } from "@mui/material";
|
|
4
|
+
import { primaryLightest } from "../../../../styles/common/mixins/colors";
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
isPreview?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const TableRow = styled(MTableRow, {
|
|
11
|
+
shouldForwardProp: (prop) => prop !== "isPreview",
|
|
12
|
+
})<Props>`
|
|
13
|
+
&& {
|
|
14
|
+
transition: background-color 300ms ease-in;
|
|
15
|
+
|
|
16
|
+
${(props) =>
|
|
17
|
+
props.isPreview &&
|
|
18
|
+
css`
|
|
19
|
+
background-color: ${primaryLightest(props)};
|
|
20
|
+
`}
|
|
21
|
+
}
|
|
22
|
+
`;
|
package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Row, Table } from "@tanstack/react-table";
|
|
1
|
+
import { Row, RowData, Table } from "@tanstack/react-table";
|
|
3
2
|
import { Virtualizer } from "@tanstack/react-virtual";
|
|
4
3
|
import React, { Fragment } from "react";
|
|
5
4
|
import { isCollapsableRowDisabled } from "../../../../common/utils";
|
|
6
5
|
import { CollapsableCell } from "../../../TableCell/components/CollapsableCell/collapsableCell";
|
|
6
|
+
import { TableRow } from "../../../TableRow/tableRow.styles";
|
|
7
7
|
|
|
8
|
-
export interface CollapsableRowsProps<T> {
|
|
8
|
+
export interface CollapsableRowsProps<T extends RowData> {
|
|
9
9
|
tableInstance: Table<T>;
|
|
10
10
|
virtualizer: Virtualizer<Window, Element>;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export const CollapsableRows = <T extends
|
|
13
|
+
export const CollapsableRows = <T extends RowData>({
|
|
14
14
|
tableInstance,
|
|
15
15
|
virtualizer,
|
|
16
16
|
}: CollapsableRowsProps<T>): JSX.Element => {
|
|
@@ -21,17 +21,19 @@ export const CollapsableRows = <T extends object>({
|
|
|
21
21
|
<Fragment>
|
|
22
22
|
{virtualItems.map((virtualRow) => {
|
|
23
23
|
const row = rows[virtualRow.index] as Row<T>;
|
|
24
|
+
const { getIsPreview } = row;
|
|
24
25
|
return (
|
|
25
|
-
<
|
|
26
|
+
<TableRow
|
|
26
27
|
key={row.id}
|
|
27
28
|
data-index={virtualRow.index}
|
|
29
|
+
isPreview={getIsPreview()}
|
|
28
30
|
ref={virtualizer.measureElement}
|
|
29
31
|
>
|
|
30
32
|
<CollapsableCell
|
|
31
33
|
isDisabled={isCollapsableRowDisabled(tableInstance)}
|
|
32
34
|
row={row}
|
|
33
35
|
/>
|
|
34
|
-
</
|
|
36
|
+
</TableRow>
|
|
35
37
|
);
|
|
36
38
|
})}
|
|
37
39
|
</Fragment>
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { TableCell as MTableCell
|
|
2
|
-
import { flexRender, Row, Table } from "@tanstack/react-table";
|
|
1
|
+
import { TableCell as MTableCell } from "@mui/material";
|
|
2
|
+
import { flexRender, Row, RowData, Table } from "@tanstack/react-table";
|
|
3
3
|
import { Virtualizer } from "@tanstack/react-virtual";
|
|
4
4
|
import React, { Fragment } from "react";
|
|
5
5
|
import { getTableCellPadding } from "../TableCell/common/utils";
|
|
6
|
+
import { TableRow } from "../TableRow/tableRow.styles";
|
|
6
7
|
|
|
7
|
-
export interface TableRowsProps<T> {
|
|
8
|
+
export interface TableRowsProps<T extends RowData> {
|
|
8
9
|
tableInstance: Table<T>;
|
|
9
10
|
virtualizer: Virtualizer<Window, Element>;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
export const TableRows = <T extends
|
|
13
|
+
export const TableRows = <T extends RowData>({
|
|
13
14
|
tableInstance,
|
|
14
15
|
virtualizer,
|
|
15
16
|
}: TableRowsProps<T>): JSX.Element => {
|
|
@@ -20,10 +21,12 @@ export const TableRows = <T extends object>({
|
|
|
20
21
|
<Fragment>
|
|
21
22
|
{virtualItems.map((virtualRow) => {
|
|
22
23
|
const row = rows[virtualRow.index] as Row<T>;
|
|
24
|
+
const { getIsPreview } = row;
|
|
23
25
|
return (
|
|
24
|
-
<
|
|
26
|
+
<TableRow
|
|
25
27
|
key={row.id}
|
|
26
28
|
data-index={virtualRow.index}
|
|
29
|
+
isPreview={getIsPreview()}
|
|
27
30
|
ref={virtualizer.measureElement}
|
|
28
31
|
>
|
|
29
32
|
{row.getVisibleCells().map((cell) => (
|
|
@@ -34,7 +37,7 @@ export const TableRows = <T extends object>({
|
|
|
34
37
|
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
35
38
|
</MTableCell>
|
|
36
39
|
))}
|
|
37
|
-
</
|
|
40
|
+
</TableRow>
|
|
38
41
|
);
|
|
39
42
|
})}
|
|
40
43
|
</Fragment>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DrawerProps as MDrawerProps } from "@mui/material";
|
|
2
|
+
|
|
3
|
+
export const DEFAULT_DRAWER_PROPS: Partial<MDrawerProps> = {
|
|
4
|
+
PaperProps: {
|
|
5
|
+
elevation: 2,
|
|
6
|
+
},
|
|
7
|
+
anchor: "right",
|
|
8
|
+
disableEnforceFocus: true,
|
|
9
|
+
disableScrollLock: true,
|
|
10
|
+
hideBackdrop: true,
|
|
11
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import styled from "@emotion/styled";
|
|
2
|
+
import { mediaTabletUp } from "../../../../../../../../styles/common/mixins/breakpoints";
|
|
3
|
+
import { smokeMain } from "../../../../../../../../styles/common/mixins/colors";
|
|
4
|
+
import { DrawerTitle as DXDrawerTitle } from "../../../../../../../common/Drawer/components/DrawerTitle/drawerTitle";
|
|
5
|
+
import { Drawer as DXDrawer } from "../../../../../../../common/Drawer/drawer";
|
|
6
|
+
|
|
7
|
+
export const Drawer = styled(DXDrawer)`
|
|
8
|
+
&.MuiDrawer-modal {
|
|
9
|
+
pointer-events: none;
|
|
10
|
+
|
|
11
|
+
.MuiDrawer-paper {
|
|
12
|
+
border-left: 1px solid ${smokeMain};
|
|
13
|
+
box-shadow: -8px 0 8px -4px #10182808, 0 20px 24px -4px #10182814;
|
|
14
|
+
pointer-events: all;
|
|
15
|
+
max-width: min(506px, 84vw);
|
|
16
|
+
width: 100%;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
${mediaTabletUp} {
|
|
20
|
+
.MuiDrawer-paper {
|
|
21
|
+
max-width: min(506px, 50vw);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
export const DrawerTitle = styled(DXDrawerTitle)`
|
|
28
|
+
.MuiTypography-text-heading-small {
|
|
29
|
+
font-size: 20px;
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Divider,
|
|
3
|
+
DrawerProps as MDrawerProps,
|
|
4
|
+
Typography as MTypography,
|
|
5
|
+
} from "@mui/material";
|
|
6
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
7
|
+
import React, { ReactNode } from "react";
|
|
8
|
+
import { TEXT_HEADING_SMALL } from "../../../../../../../../theme/common/typography";
|
|
9
|
+
import { DrawerContent } from "../../../../../../../common/Drawer/components/drawer.styles";
|
|
10
|
+
import { DEFAULT_DRAWER_PROPS } from "./common/constants";
|
|
11
|
+
import { Drawer, DrawerTitle } from "./rowDrawer.styles";
|
|
12
|
+
|
|
13
|
+
export interface RowDrawerProps<T extends RowData>
|
|
14
|
+
extends Omit<MDrawerProps, "content" | "title"> {
|
|
15
|
+
className?: string;
|
|
16
|
+
tableInstance: Table<T>;
|
|
17
|
+
title: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const RowDrawer = <T extends RowData>({
|
|
21
|
+
children,
|
|
22
|
+
className,
|
|
23
|
+
tableInstance,
|
|
24
|
+
title,
|
|
25
|
+
...props /* Spread props to allow for Mui Drawer specific prop overrides. */
|
|
26
|
+
}: RowDrawerProps<T>): JSX.Element => {
|
|
27
|
+
const { getIsRowPreview, resetRowPreview, toggleRowPreview } = tableInstance;
|
|
28
|
+
return (
|
|
29
|
+
<Drawer
|
|
30
|
+
{...DEFAULT_DRAWER_PROPS}
|
|
31
|
+
className={className}
|
|
32
|
+
onTransitionExited={resetRowPreview}
|
|
33
|
+
open={getIsRowPreview()}
|
|
34
|
+
{...props}
|
|
35
|
+
>
|
|
36
|
+
<DrawerTitle
|
|
37
|
+
onClose={(): void => toggleRowPreview?.()}
|
|
38
|
+
title={
|
|
39
|
+
typeof title === "string" ? (
|
|
40
|
+
<MTypography component="div" noWrap variant={TEXT_HEADING_SMALL}>
|
|
41
|
+
{title}
|
|
42
|
+
</MTypography>
|
|
43
|
+
) : (
|
|
44
|
+
title
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
/>
|
|
48
|
+
<Divider />
|
|
49
|
+
<DrawerContent>{children}</DrawerContent>
|
|
50
|
+
</Drawer>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import styled from "@emotion/styled";
|
|
2
|
+
import {
|
|
3
|
+
mediaDesktopSmallUp,
|
|
4
|
+
mediaTabletUp,
|
|
5
|
+
} from "../../../../../../../../../../styles/common/mixins/breakpoints";
|
|
6
|
+
import { textBody400 } from "../../../../../../../../../../styles/common/mixins/fonts";
|
|
7
|
+
|
|
8
|
+
export const Section = styled.div`
|
|
9
|
+
${textBody400};
|
|
10
|
+
display: grid;
|
|
11
|
+
gap: 16px;
|
|
12
|
+
grid-auto-rows: minmax(40px, auto);
|
|
13
|
+
grid-template-columns: minmax(0, 1fr);
|
|
14
|
+
overflow-wrap: break-word;
|
|
15
|
+
padding: 16px 24px;
|
|
16
|
+
|
|
17
|
+
> .MuiGrid-root {
|
|
18
|
+
display: grid;
|
|
19
|
+
gap: 4px;
|
|
20
|
+
grid-column: 1 / -1;
|
|
21
|
+
grid-template-columns: inherit;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
> .MuiButton-textPrimary {
|
|
25
|
+
grid-column: 1 / -1;
|
|
26
|
+
justify-self: flex-start;
|
|
27
|
+
text-align: left;
|
|
28
|
+
text-transform: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
${mediaTabletUp} {
|
|
32
|
+
gap: 0 8px;
|
|
33
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
34
|
+
padding: 8px 24px;
|
|
35
|
+
|
|
36
|
+
> .MuiGrid-root {
|
|
37
|
+
display: contents;
|
|
38
|
+
|
|
39
|
+
> * {
|
|
40
|
+
margin: 10px 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
${mediaDesktopSmallUp} {
|
|
46
|
+
grid-template-columns: 194px minmax(0, 1fr);
|
|
47
|
+
}
|
|
48
|
+
`;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Grid, Typography } from "@mui/material";
|
|
2
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { ListConfig } from "../../../../../../../../../../config/entities";
|
|
5
|
+
import { TEXT_BODY_400 } from "../../../../../../../../../../theme/common/typography";
|
|
6
|
+
import { ButtonTextPrimary } from "../../../../../../../../../common/Button/components/ButtonTextPrimary/buttonTextPrimary";
|
|
7
|
+
import { ComponentCreator } from "../../../../../../../../../ComponentCreator/ComponentCreator";
|
|
8
|
+
import { Section } from "./rowDetail.styles";
|
|
9
|
+
|
|
10
|
+
const MIN_COLUMNS = 6;
|
|
11
|
+
|
|
12
|
+
interface RowDetailProps<T extends RowData> {
|
|
13
|
+
className?: string;
|
|
14
|
+
columns: ListConfig<T>["columns"];
|
|
15
|
+
expanded?: boolean;
|
|
16
|
+
minColumns?: number;
|
|
17
|
+
tableInstance: Table<T>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const RowDetail = <T extends RowData>({
|
|
21
|
+
className,
|
|
22
|
+
columns,
|
|
23
|
+
expanded = true,
|
|
24
|
+
minColumns = MIN_COLUMNS,
|
|
25
|
+
tableInstance,
|
|
26
|
+
}: RowDetailProps<T>): JSX.Element | null => {
|
|
27
|
+
const [showMore, setShowMore] = React.useState<boolean>(expanded);
|
|
28
|
+
const { getRowPreviewRow } = tableInstance;
|
|
29
|
+
const { original: rowData } = getRowPreviewRow() || {};
|
|
30
|
+
const visibleColumns = showMore ? columns : columns.slice(0, minColumns);
|
|
31
|
+
const buttonText = showMore ? "Show less" : "Show more";
|
|
32
|
+
const onToggleShowMore = (): void => setShowMore(!showMore);
|
|
33
|
+
if (!rowData) return null;
|
|
34
|
+
return (
|
|
35
|
+
<Section className={className}>
|
|
36
|
+
{visibleColumns.map(({ componentConfig, header }, i) => (
|
|
37
|
+
<Grid key={i}>
|
|
38
|
+
<Typography
|
|
39
|
+
color="ink.light"
|
|
40
|
+
variant={TEXT_BODY_400}
|
|
41
|
+
{...componentConfig.props?.TypographyProps}
|
|
42
|
+
>
|
|
43
|
+
{header}
|
|
44
|
+
</Typography>
|
|
45
|
+
<ComponentCreator components={[componentConfig]} response={rowData} />
|
|
46
|
+
</Grid>
|
|
47
|
+
))}
|
|
48
|
+
<ButtonTextPrimary onClick={onToggleShowMore}>
|
|
49
|
+
{buttonText}
|
|
50
|
+
</ButtonTextPrimary>
|
|
51
|
+
</Section>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Typography } from "@mui/material";
|
|
2
|
+
import React, { ReactNode } from "react";
|
|
3
|
+
import { TEXT_HEADING_SMALL } from "../../../../../../../../theme/common/typography";
|
|
4
|
+
import { Section as PreviewSection } from "./section.styles";
|
|
5
|
+
|
|
6
|
+
export interface SectionProps {
|
|
7
|
+
children?: ReactNode | ReactNode[];
|
|
8
|
+
className?: string;
|
|
9
|
+
title?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const Section = ({
|
|
13
|
+
children,
|
|
14
|
+
className,
|
|
15
|
+
title,
|
|
16
|
+
}: SectionProps): JSX.Element => {
|
|
17
|
+
return (
|
|
18
|
+
<PreviewSection className={className}>
|
|
19
|
+
<Typography component="div" variant={TEXT_HEADING_SMALL}>
|
|
20
|
+
{title}
|
|
21
|
+
</Typography>
|
|
22
|
+
{children}
|
|
23
|
+
</PreviewSection>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ComponentsConfig } from "../../../../../../config/entities";
|
|
4
|
+
import { ComponentCreator } from "../../../../../ComponentCreator/ComponentCreator";
|
|
5
|
+
|
|
6
|
+
export interface RowPreviewProps<T extends RowData> {
|
|
7
|
+
rowPreviewView?: ComponentsConfig;
|
|
8
|
+
tableInstance: Table<T>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const RowPreview = <T extends RowData>({
|
|
12
|
+
rowPreviewView,
|
|
13
|
+
tableInstance,
|
|
14
|
+
}: RowPreviewProps<T>): JSX.Element | null => {
|
|
15
|
+
if (!rowPreviewView) return null;
|
|
16
|
+
return (
|
|
17
|
+
<ComponentCreator components={rowPreviewView} response={tableInstance} />
|
|
18
|
+
);
|
|
19
|
+
};
|
package/src/components/Table/components/TableToolbar/components/RowSelection/rowSelection.tsx
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Typography } from "@mui/material";
|
|
2
|
-
import { Row } from "@tanstack/react-table";
|
|
2
|
+
import { Row, RowData } from "@tanstack/react-table";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { ComponentsConfig } from "../../../../../../config/entities";
|
|
5
5
|
import { TEXT_BODY_400 } from "../../../../../../theme/common/typography";
|
|
6
6
|
import { ComponentCreator } from "../../../../../ComponentCreator/ComponentCreator";
|
|
7
7
|
import { RowSelection as RowSelectionActions } from "./rowSelection.styles";
|
|
8
8
|
|
|
9
|
-
export interface RowSelectionProps<T> {
|
|
9
|
+
export interface RowSelectionProps<T extends RowData> {
|
|
10
10
|
className?: string;
|
|
11
11
|
rows: Row<T>[];
|
|
12
12
|
rowSelectionView?: ComponentsConfig;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export const RowSelection = <T extends
|
|
15
|
+
export const RowSelection = <T extends RowData>({
|
|
16
16
|
className,
|
|
17
17
|
rows,
|
|
18
18
|
rowSelectionView,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Table } from "@tanstack/react-table";
|
|
1
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
2
2
|
import React, { Fragment } from "react";
|
|
3
3
|
import { ListViewConfig } from "../../../../config/entities";
|
|
4
4
|
import { useExploreState } from "../../../../hooks/useExploreState";
|
|
@@ -7,16 +7,17 @@ import { getEditColumnOptions, isAnyRowSelected } from "../../common/utils";
|
|
|
7
7
|
import { CheckboxMenu } from "../CheckboxMenu/checkboxMenu";
|
|
8
8
|
import { DownloadEntityResults } from "../DownloadEntityResults/downloadEntityResults";
|
|
9
9
|
import { PaginationSummary } from "../PaginationSummary/paginationSummary";
|
|
10
|
+
import { RowPreview } from "./components/RowPreview/rowPreview";
|
|
10
11
|
import { RowSelection } from "./components/RowSelection/rowSelection";
|
|
11
12
|
import { Toolbar, ToolbarActions } from "./tableToolbar.styles";
|
|
12
13
|
|
|
13
|
-
export interface TableToolbarProps<T> {
|
|
14
|
+
export interface TableToolbarProps<T extends RowData> {
|
|
14
15
|
listView?: ListViewConfig;
|
|
15
16
|
rowDirection: ROW_DIRECTION;
|
|
16
17
|
tableInstance: Table<T>;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
export const TableToolbar = <T extends
|
|
20
|
+
export const TableToolbar = <T extends RowData>({
|
|
20
21
|
listView,
|
|
21
22
|
rowDirection,
|
|
22
23
|
tableInstance,
|
|
@@ -25,7 +26,7 @@ export const TableToolbar = <T extends object>({
|
|
|
25
26
|
const { paginationState } = exploreState;
|
|
26
27
|
const { currentPage, pages, pageSize, rows } = paginationState;
|
|
27
28
|
const { getSelectedRowModel, resetColumnVisibility } = tableInstance;
|
|
28
|
-
const { enableDownload } = listView || {};
|
|
29
|
+
const { enableDownload, rowPreviewView } = listView || {};
|
|
29
30
|
const isLastPage = currentPage === pages;
|
|
30
31
|
const editColumnOptions = getEditColumnOptions(tableInstance);
|
|
31
32
|
const showToolbar =
|
|
@@ -70,6 +71,10 @@ export const TableToolbar = <T extends object>({
|
|
|
70
71
|
</ToolbarActions>
|
|
71
72
|
</Toolbar>
|
|
72
73
|
)}
|
|
74
|
+
<RowPreview
|
|
75
|
+
rowPreviewView={rowPreviewView}
|
|
76
|
+
tableInstance={tableInstance}
|
|
77
|
+
/>
|
|
73
78
|
</Fragment>
|
|
74
79
|
);
|
|
75
80
|
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
functionalUpdate,
|
|
3
|
+
InitialTableState,
|
|
4
|
+
makeStateUpdater,
|
|
5
|
+
Row,
|
|
6
|
+
RowData,
|
|
7
|
+
Table,
|
|
8
|
+
TableFeature,
|
|
9
|
+
TableOptionsResolved,
|
|
10
|
+
TableState,
|
|
11
|
+
Updater,
|
|
12
|
+
} from "@tanstack/react-table";
|
|
13
|
+
import { RowPreviewState } from "./entities";
|
|
14
|
+
import {
|
|
15
|
+
getIsPreview,
|
|
16
|
+
getIsRowPreview,
|
|
17
|
+
getRowPreviewRow,
|
|
18
|
+
togglePreview,
|
|
19
|
+
toggleRowPreview,
|
|
20
|
+
} from "./utils";
|
|
21
|
+
|
|
22
|
+
export const ROW_PREVIEW: TableFeature = {
|
|
23
|
+
createRow: <T extends RowData>(row: Row<T>, table: Table<T>): void => {
|
|
24
|
+
row.getIsPreview = (): boolean => {
|
|
25
|
+
return getIsPreview(row, table);
|
|
26
|
+
};
|
|
27
|
+
row.togglePreview = (): void => {
|
|
28
|
+
togglePreview(row, table);
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
createTable: <T extends RowData>(table: Table<T>): void => {
|
|
32
|
+
table.getIsRowPreview = (): boolean => {
|
|
33
|
+
return getIsRowPreview(table);
|
|
34
|
+
};
|
|
35
|
+
table.getRowPreviewRow = (): Row<T> | undefined => {
|
|
36
|
+
return getRowPreviewRow(table);
|
|
37
|
+
};
|
|
38
|
+
table.resetRowPreview = (): void => {
|
|
39
|
+
table.setRowPreview(undefined);
|
|
40
|
+
};
|
|
41
|
+
table.setRowPreview = (updater: Updater<RowPreviewState>): void => {
|
|
42
|
+
const safeUpdater: Updater<RowPreviewState> = (old: RowPreviewState) => {
|
|
43
|
+
return functionalUpdate(updater, old);
|
|
44
|
+
};
|
|
45
|
+
return table.options.onRowPreviewChange?.(safeUpdater);
|
|
46
|
+
};
|
|
47
|
+
table.toggleRowPreview = (): void => {
|
|
48
|
+
toggleRowPreview(table);
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
getDefaultOptions: <T extends RowData>(
|
|
52
|
+
table: Table<T>
|
|
53
|
+
): Partial<TableOptionsResolved<T>> => {
|
|
54
|
+
return {
|
|
55
|
+
enableRowPreview: true,
|
|
56
|
+
onRowPreviewChange: makeStateUpdater("rowPreview", table),
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
getInitialState: (initialState?: InitialTableState): Partial<TableState> => {
|
|
60
|
+
return {
|
|
61
|
+
...initialState,
|
|
62
|
+
rowPreview: undefined,
|
|
63
|
+
} as Partial<TableState>;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnChangeFn, Row, RowData, Updater } from "@tanstack/react-table";
|
|
2
|
+
|
|
3
|
+
export interface RowPreviewInstance<T extends RowData> {
|
|
4
|
+
getIsRowPreview: () => boolean /* Is row preview open */;
|
|
5
|
+
getRowPreviewRow: () => Row<T> | undefined;
|
|
6
|
+
resetRowPreview: () => void;
|
|
7
|
+
setRowPreview: (updater: Updater<RowPreviewState>) => void;
|
|
8
|
+
toggleRowPreview: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface RowPreviewOptions {
|
|
12
|
+
enableRowPreview?: boolean;
|
|
13
|
+
onRowPreviewChange?: OnChangeFn<RowPreviewState>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface RowPreviewRow {
|
|
17
|
+
getIsPreview: () => boolean /* Is row previewed */;
|
|
18
|
+
togglePreview: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type RowPreviewState = { [id: string]: boolean } | undefined;
|
|
22
|
+
|
|
23
|
+
export interface RowPreviewTableState {
|
|
24
|
+
rowPreview: RowPreviewState;
|
|
25
|
+
}
|