@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
|
@@ -4,6 +4,10 @@ export interface CellProps {
|
|
|
4
4
|
value?: number | string | string[];
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated - use BasicCell from "@databiosphere/findable-ui/lib/components/Table/components/TableCell/components/BasicCell/basicCell"
|
|
9
|
+
*/
|
|
10
|
+
|
|
7
11
|
export const Cell = ({ value = "Unspecified" }: CellProps): JSX.Element => {
|
|
8
12
|
if (typeof value === "string" || typeof value === "number") {
|
|
9
13
|
return <div>{value}</div>;
|
|
@@ -28,6 +28,10 @@ export interface TooltipProps extends MTooltipProps {
|
|
|
28
28
|
className?: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated - use Tooltip from "@databiosphere/findable-ui/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip"
|
|
33
|
+
*/
|
|
34
|
+
|
|
31
35
|
export const Tooltip = ({
|
|
32
36
|
children,
|
|
33
37
|
className,
|
|
@@ -7,6 +7,10 @@ export interface NTagProps {
|
|
|
7
7
|
TooltipTitle: ReactElement;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated - use NTag from "@databiosphere/findable-ui/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag"
|
|
12
|
+
*/
|
|
13
|
+
|
|
10
14
|
export const NTag = ({
|
|
11
15
|
className,
|
|
12
16
|
Tag,
|
|
@@ -4,6 +4,8 @@ import {
|
|
|
4
4
|
Typography,
|
|
5
5
|
} from "@mui/material";
|
|
6
6
|
import React, { forwardRef } from "react";
|
|
7
|
+
import { TEXT_BODY_SMALL_400 } from "../../../../theme/common/typography";
|
|
8
|
+
import { TypographyProps } from "../../../common/Typography/common/entities";
|
|
7
9
|
import { NTag } from "../NTag/nTag";
|
|
8
10
|
|
|
9
11
|
// Template constants
|
|
@@ -13,6 +15,7 @@ export type MetadataValue = string;
|
|
|
13
15
|
|
|
14
16
|
export interface NTagCellProps {
|
|
15
17
|
label: string;
|
|
18
|
+
TypographyProps?: TypographyProps;
|
|
16
19
|
values: MetadataValue[];
|
|
17
20
|
}
|
|
18
21
|
|
|
@@ -33,7 +36,15 @@ const Tag = forwardRef<HTMLDivElement, MChipProps>(function Tag(props, ref) {
|
|
|
33
36
|
return <MChip ref={ref} {...props} />;
|
|
34
37
|
});
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
/**
|
|
40
|
+
* @deprecated - use NTagCell from "@databiosphere/findable-ui/lib/components/Table/components/TableCell/components/NTagCell/nTagCell"
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
export const NTagCell = ({
|
|
44
|
+
label,
|
|
45
|
+
TypographyProps,
|
|
46
|
+
values,
|
|
47
|
+
}: NTagCellProps): JSX.Element => {
|
|
37
48
|
const metadataCount = values.length;
|
|
38
49
|
const showNTag = metadataCount > MAX_DISPLAYABLE_VALUES;
|
|
39
50
|
return (
|
|
@@ -42,13 +53,21 @@ export const NTagCell = ({ label, values }: NTagCellProps): JSX.Element => {
|
|
|
42
53
|
<NTag
|
|
43
54
|
Tag={<Tag label={`${metadataCount} ${label}`} variant="ntag" />}
|
|
44
55
|
TooltipTitle={
|
|
45
|
-
<Typography display="block" variant=
|
|
56
|
+
<Typography display="block" variant={TEXT_BODY_SMALL_400}>
|
|
46
57
|
{stringifyMetadataValues(values)}
|
|
47
58
|
</Typography>
|
|
48
59
|
}
|
|
49
60
|
/>
|
|
50
61
|
) : (
|
|
51
|
-
values.map((value, v) =>
|
|
62
|
+
values.map((value, v) => (
|
|
63
|
+
<Typography
|
|
64
|
+
key={`${value}${v}`}
|
|
65
|
+
variant="inherit"
|
|
66
|
+
{...TypographyProps}
|
|
67
|
+
>
|
|
68
|
+
{value}
|
|
69
|
+
</Typography>
|
|
70
|
+
))
|
|
52
71
|
)}
|
|
53
72
|
</>
|
|
54
73
|
);
|
|
@@ -18,7 +18,7 @@ const PARAM_FILTER = "filter";
|
|
|
18
18
|
const PARAM_SORTING = "sorting";
|
|
19
19
|
|
|
20
20
|
export interface ExploreViewLinkProps
|
|
21
|
-
extends Omit<LinkProps, "copyable" | "noWrap" | "url"> {
|
|
21
|
+
extends Omit<LinkProps, "copyable" | "noWrap" | "TypographyProps" | "url"> {
|
|
22
22
|
url: UrlObjectWithHrefAndQuery;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Link as MLink,
|
|
3
|
+
LinkProps as MLinkProps,
|
|
4
|
+
Typography as MTypography,
|
|
5
|
+
} from "@mui/material";
|
|
2
6
|
import NLink from "next/link";
|
|
3
7
|
import React, { ReactNode } from "react";
|
|
4
8
|
import { isValidUrl } from "../../../../common/utils";
|
|
5
9
|
import { CopyToClipboard } from "../../../common/CopyToClipboard/copyToClipboard";
|
|
10
|
+
import { TypographyProps } from "../../../common/Typography/common/entities";
|
|
6
11
|
import { ANCHOR_TARGET, Url } from "../../common/entities";
|
|
7
12
|
import {
|
|
8
13
|
isClientSideNavigation,
|
|
@@ -18,6 +23,7 @@ export interface LinkProps {
|
|
|
18
23
|
noWrap?: MLinkProps["noWrap"];
|
|
19
24
|
onClick?: () => void;
|
|
20
25
|
target?: ANCHOR_TARGET;
|
|
26
|
+
TypographyProps?: TypographyProps;
|
|
21
27
|
url: Url /* url specified as UrlObject with href and query defined, and is currently only used for internal links */;
|
|
22
28
|
}
|
|
23
29
|
|
|
@@ -28,6 +34,7 @@ export const Link = ({
|
|
|
28
34
|
noWrap = false,
|
|
29
35
|
onClick,
|
|
30
36
|
target,
|
|
37
|
+
TypographyProps,
|
|
31
38
|
url,
|
|
32
39
|
}: LinkProps): JSX.Element => {
|
|
33
40
|
if (isURLObjectWithHrefAndQuery(url)) {
|
|
@@ -54,6 +61,7 @@ export const Link = ({
|
|
|
54
61
|
noWrap={noWrap}
|
|
55
62
|
target={target || ANCHOR_TARGET.SELF}
|
|
56
63
|
onClick={onClick}
|
|
64
|
+
{...TypographyProps}
|
|
57
65
|
>
|
|
58
66
|
{label}
|
|
59
67
|
</MLink>
|
|
@@ -73,6 +81,7 @@ export const Link = ({
|
|
|
73
81
|
onClick={onClick}
|
|
74
82
|
rel="noopener noreferrer"
|
|
75
83
|
target={target || ANCHOR_TARGET.BLANK}
|
|
84
|
+
{...TypographyProps}
|
|
76
85
|
>
|
|
77
86
|
{label}
|
|
78
87
|
</MLink>
|
|
@@ -82,5 +91,9 @@ export const Link = ({
|
|
|
82
91
|
}
|
|
83
92
|
}
|
|
84
93
|
/* Invalid URL */
|
|
85
|
-
return
|
|
94
|
+
return (
|
|
95
|
+
<MTypography component="span" variant="inherit" {...TypographyProps}>
|
|
96
|
+
{label}
|
|
97
|
+
</MTypography>
|
|
98
|
+
);
|
|
86
99
|
};
|
|
@@ -20,9 +20,13 @@ export const GridTable = styled(MTable, {
|
|
|
20
20
|
display: contents; /* required; allows grandchildren of grid template to appear as though direct child */
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
tr {
|
|
24
|
+
background-color: ${white};
|
|
25
|
+
}
|
|
26
|
+
|
|
23
27
|
td,
|
|
24
28
|
th {
|
|
25
|
-
background-color:
|
|
29
|
+
background-color: inherit;
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
td,
|
|
@@ -38,8 +42,10 @@ export const GridTable = styled(MTable, {
|
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
[id^="grouped-row"] {
|
|
45
|
+
background-color: ${smokeLightest};
|
|
46
|
+
|
|
41
47
|
td {
|
|
42
|
-
background-color:
|
|
48
|
+
background-color: inherit;
|
|
43
49
|
grid-column: 1 / -1;
|
|
44
50
|
}
|
|
45
51
|
}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import SouthRoundedIcon from "@mui/icons-material/SouthRounded";
|
|
2
|
-
import { TableSortLabelProps } from "@mui/material
|
|
2
|
+
import { TableSortLabelProps } from "@mui/material";
|
|
3
3
|
import {
|
|
4
4
|
Cell,
|
|
5
|
+
Column,
|
|
5
6
|
ColumnFiltersState,
|
|
6
7
|
ColumnSort,
|
|
7
8
|
InitialTableState,
|
|
8
9
|
memo,
|
|
10
|
+
PaginationState,
|
|
9
11
|
Row,
|
|
10
12
|
RowData,
|
|
11
13
|
SortDirection,
|
|
12
14
|
sortingFns,
|
|
13
15
|
Table,
|
|
16
|
+
VisibilityState,
|
|
14
17
|
} from "@tanstack/react-table";
|
|
15
|
-
import { Column } from "@tanstack/table-core";
|
|
16
|
-
import { VisibilityState } from "@tanstack/table-core/src/features/Visibility";
|
|
17
18
|
import { SelectCategory } from "../../../common/entities";
|
|
18
19
|
import {
|
|
19
20
|
ColumnConfig,
|
|
@@ -32,7 +33,7 @@ type CountByTerms = Map<any, number>;
|
|
|
32
33
|
/**
|
|
33
34
|
* Pinned cell and pinned cell index tuple.
|
|
34
35
|
*/
|
|
35
|
-
type PinnedCell<T> = [Cell<T, unknown>, number];
|
|
36
|
+
type PinnedCell<T extends RowData> = [Cell<T, unknown>, number];
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* Model of possible table data values.
|
|
@@ -50,7 +51,7 @@ type TableData = number | string | string[];
|
|
|
50
51
|
* @param filterValue - Filter value or values.
|
|
51
52
|
* @returns True if the row should be included in the filtered rows.
|
|
52
53
|
*/
|
|
53
|
-
export function arrIncludesSome<T>(
|
|
54
|
+
export function arrIncludesSome<T extends RowData>(
|
|
54
55
|
row: Row<T>,
|
|
55
56
|
columnId: string,
|
|
56
57
|
filterValue: unknown[]
|
|
@@ -71,7 +72,7 @@ export function arrIncludesSome<T>(
|
|
|
71
72
|
* @param columnFilters - Column filters state.
|
|
72
73
|
* @returns Array of category views objects.
|
|
73
74
|
*/
|
|
74
|
-
export function buildCategoryViews<T>(
|
|
75
|
+
export function buildCategoryViews<T extends RowData>(
|
|
75
76
|
columns: Column<T>[],
|
|
76
77
|
columnFilters: ColumnFiltersState
|
|
77
78
|
): SelectCategory[] {
|
|
@@ -139,7 +140,9 @@ export function getColumnSortDirection(
|
|
|
139
140
|
* @param rows - Table rows.
|
|
140
141
|
* @returns filtered entity results as a blob.
|
|
141
142
|
*/
|
|
142
|
-
export function generateDownloadBlob<T>(
|
|
143
|
+
export function generateDownloadBlob<T extends RowData>(
|
|
144
|
+
rows: Row<T>[]
|
|
145
|
+
): Blob | undefined {
|
|
143
146
|
if (rows.length === 0) {
|
|
144
147
|
return;
|
|
145
148
|
}
|
|
@@ -154,7 +157,7 @@ export function generateDownloadBlob<T>(rows: Row<T>[]): Blob | undefined {
|
|
|
154
157
|
* @param table - Table.
|
|
155
158
|
* @returns a list of edit column options.
|
|
156
159
|
*/
|
|
157
|
-
export function getEditColumnOptions<T>(
|
|
160
|
+
export function getEditColumnOptions<T extends RowData>(
|
|
158
161
|
table: Table<T>
|
|
159
162
|
): CheckboxMenuListItem[] {
|
|
160
163
|
const { getAllColumns, initialState } = table;
|
|
@@ -200,18 +203,20 @@ export function getFacetedUniqueValuesWithArrayValues<T extends RowData>(): (
|
|
|
200
203
|
) => () => CountByTerms {
|
|
201
204
|
return (table, columnId) =>
|
|
202
205
|
memo(
|
|
203
|
-
() => [table.getColumn(columnId)
|
|
206
|
+
() => [table.getColumn(columnId)?.getFacetedRowModel()],
|
|
204
207
|
(facetedRowModel) => {
|
|
205
208
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This type matches react table getFacetedUniqueValues return type.
|
|
206
209
|
const facetedUniqueValues = new Map<any, number>();
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
if (facetedRowModel) {
|
|
211
|
+
for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
|
|
212
|
+
const value = facetedRowModel?.flatRows[i]?.getValue(columnId);
|
|
213
|
+
if (Array.isArray(value)) {
|
|
214
|
+
value.map((val) => {
|
|
215
|
+
updateCountByTerms(facetedUniqueValues, val);
|
|
216
|
+
});
|
|
217
|
+
} else {
|
|
218
|
+
updateCountByTerms(facetedUniqueValues, value);
|
|
219
|
+
}
|
|
215
220
|
}
|
|
216
221
|
}
|
|
217
222
|
return facetedUniqueValues;
|
|
@@ -233,7 +238,9 @@ export function getFacetedUniqueValuesWithArrayValues<T extends RowData>(): (
|
|
|
233
238
|
* @param columns - Table columns.
|
|
234
239
|
* @returns string value for the css property grid-template-columns.
|
|
235
240
|
*/
|
|
236
|
-
export function getGridTemplateColumns<T>(
|
|
241
|
+
export function getGridTemplateColumns<T extends RowData>(
|
|
242
|
+
columns: Column<T>[]
|
|
243
|
+
): string {
|
|
237
244
|
return columns
|
|
238
245
|
.map(({ columnDef: { meta } }) => {
|
|
239
246
|
const width = meta?.width;
|
|
@@ -282,7 +289,9 @@ export function getInitialTableStateSorting(
|
|
|
282
289
|
* @param row - Row.
|
|
283
290
|
* @returns pinned cell and index tuple.
|
|
284
291
|
*/
|
|
285
|
-
export function getPinnedCellIndex<T
|
|
292
|
+
export function getPinnedCellIndex<T extends RowData>(
|
|
293
|
+
row: Row<T>
|
|
294
|
+
): PinnedCell<T> {
|
|
286
295
|
const visibleCells = row.getVisibleCells();
|
|
287
296
|
let pinnedIndex = 0;
|
|
288
297
|
for (let i = 0; i < visibleCells.length; i++) {
|
|
@@ -299,7 +308,7 @@ export function getPinnedCellIndex<T>(row: Row<T>): PinnedCell<T> {
|
|
|
299
308
|
* @param column - Table column.
|
|
300
309
|
* @returns table sort label props.
|
|
301
310
|
*/
|
|
302
|
-
export function getTableSortLabelProps<T>(
|
|
311
|
+
export function getTableSortLabelProps<T extends RowData>(
|
|
303
312
|
column: Column<T>
|
|
304
313
|
): TableSortLabelProps {
|
|
305
314
|
const { getCanSort, getIsSorted, getToggleSortingHandler } = column;
|
|
@@ -312,12 +321,30 @@ export function getTableSortLabelProps<T>(
|
|
|
312
321
|
};
|
|
313
322
|
}
|
|
314
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Returns table state pagination.
|
|
326
|
+
* @param pageIndex - Explore state page index.
|
|
327
|
+
* @param pageSize - Explore state page size.
|
|
328
|
+
* @returns table state pagination.
|
|
329
|
+
*/
|
|
330
|
+
export function getTableStatePagination(
|
|
331
|
+
pageIndex = 0,
|
|
332
|
+
pageSize: number
|
|
333
|
+
): PaginationState {
|
|
334
|
+
return {
|
|
335
|
+
pageIndex,
|
|
336
|
+
pageSize,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
|
|
315
340
|
/**
|
|
316
341
|
* Returns the list of visible table headers.
|
|
317
342
|
* @param rows - Table rows.
|
|
318
343
|
* @returns list of visible headers.
|
|
319
344
|
*/
|
|
320
|
-
function getVisibleHeadersTableData<T>(
|
|
345
|
+
function getVisibleHeadersTableData<T extends RowData>(
|
|
346
|
+
rows: Row<T>[]
|
|
347
|
+
): TableData[] {
|
|
321
348
|
return rows[0]
|
|
322
349
|
.getVisibleCells()
|
|
323
350
|
.map((cell) => cell.column.columnDef.header as TableData);
|
|
@@ -328,7 +355,9 @@ function getVisibleHeadersTableData<T>(rows: Row<T>[]): TableData[] {
|
|
|
328
355
|
* @param rows - Table rows.
|
|
329
356
|
* @returns list of visible data.
|
|
330
357
|
*/
|
|
331
|
-
function getVisibleRowsTableData<T>(
|
|
358
|
+
function getVisibleRowsTableData<T extends RowData>(
|
|
359
|
+
rows: Row<T>[]
|
|
360
|
+
): TableData[][] {
|
|
332
361
|
return rows.map((row) =>
|
|
333
362
|
row.getVisibleCells().map((cell) => cell.getValue() as TableData)
|
|
334
363
|
);
|
|
@@ -339,7 +368,7 @@ function getVisibleRowsTableData<T>(rows: Row<T>[]): TableData[][] {
|
|
|
339
368
|
* @param table - Table.
|
|
340
369
|
* @returns true if a row is selected.
|
|
341
370
|
*/
|
|
342
|
-
export function isAnyRowSelected<T>(table: Table<T>): boolean {
|
|
371
|
+
export function isAnyRowSelected<T extends RowData>(table: Table<T>): boolean {
|
|
343
372
|
const {
|
|
344
373
|
getIsAllPageRowsSelected,
|
|
345
374
|
getIsSomePageRowsSelected,
|
|
@@ -368,7 +397,9 @@ export function isClientFilteringEnabled(exploreMode: ExploreMode): boolean {
|
|
|
368
397
|
* @param tableInstance - Table instance.
|
|
369
398
|
* @returns true if the collapsable row is disabled.
|
|
370
399
|
*/
|
|
371
|
-
export function isCollapsableRowDisabled<T>(
|
|
400
|
+
export function isCollapsableRowDisabled<T extends RowData>(
|
|
401
|
+
tableInstance: Table<T>
|
|
402
|
+
): boolean {
|
|
372
403
|
return tableInstance.getVisibleLeafColumns().length === 1;
|
|
373
404
|
}
|
|
374
405
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Row } from "@tanstack/react-table";
|
|
1
|
+
import { Row, RowData } from "@tanstack/react-table";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { ButtonSecondary } from "../../../common/Button/components/ButtonSecondary/buttonSecondary";
|
|
4
4
|
import { FileDownloadButton } from "../../../common/Button/components/FileDownloadButton/fileDownloadButton";
|
|
5
5
|
import { DownloadIcon } from "../../../common/CustomIcon/components/DownloadIcon/downloadIcon";
|
|
6
6
|
import { generateDownloadBlob } from "../../common/utils";
|
|
7
7
|
|
|
8
|
-
export interface DownloadEntityResultsProps<T> {
|
|
8
|
+
export interface DownloadEntityResultsProps<T extends RowData> {
|
|
9
9
|
entityName: string;
|
|
10
10
|
rows: Row<T>[];
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export const DownloadEntityResults = <T extends
|
|
13
|
+
export const DownloadEntityResults = <T extends RowData>({
|
|
14
14
|
entityName,
|
|
15
15
|
rows,
|
|
16
16
|
}: DownloadEntityResultsProps<T>): JSX.Element => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Typography } from "@mui/material";
|
|
1
|
+
import { Fade, Typography } from "@mui/material";
|
|
2
2
|
import React from "react";
|
|
3
3
|
|
|
4
4
|
export interface PaginationSummaryProps {
|
|
@@ -13,13 +13,15 @@ export const PaginationSummary = ({
|
|
|
13
13
|
totalResult,
|
|
14
14
|
}: PaginationSummaryProps): JSX.Element => {
|
|
15
15
|
return (
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
<Fade in={totalResult > 0}>
|
|
17
|
+
<div>
|
|
18
|
+
<Typography variant="text-body-400">Results </Typography>
|
|
19
|
+
<Typography variant="text-body-small-500">
|
|
20
|
+
{firstResult} - {lastResult}
|
|
21
|
+
</Typography>
|
|
22
|
+
<Typography variant="text-body-400"> of </Typography>
|
|
23
|
+
<Typography variant="text-body-small-500">{totalResult}</Typography>
|
|
24
|
+
</div>
|
|
25
|
+
</Fade>
|
|
24
26
|
);
|
|
25
27
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TableBody as MTableBody } from "@mui/material";
|
|
2
|
-
import { Table } from "@tanstack/react-table";
|
|
2
|
+
import { RowData, Table } from "@tanstack/react-table";
|
|
3
3
|
import { useWindowVirtualizer } from "@tanstack/react-virtual";
|
|
4
4
|
import React, { useCallback } from "react";
|
|
5
5
|
import { ROW_DIRECTION } from "../../common/entities";
|
|
@@ -9,12 +9,12 @@ import { TableRows } from "../TableRows/tableRows";
|
|
|
9
9
|
|
|
10
10
|
const OVERSCAN = 20;
|
|
11
11
|
|
|
12
|
-
export interface TableBodyProps<T> {
|
|
12
|
+
export interface TableBodyProps<T extends RowData> {
|
|
13
13
|
rowDirection: ROW_DIRECTION;
|
|
14
14
|
tableInstance: Table<T>;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export const TableBody = <T extends
|
|
17
|
+
export const TableBody = <T extends RowData>({
|
|
18
18
|
rowDirection,
|
|
19
19
|
tableInstance,
|
|
20
20
|
}: TableBodyProps<T>): JSX.Element => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TableCellProps as MTableCellProps } from "@mui/material
|
|
2
|
-
import { CoreCell, CoreHeader } from "@tanstack/table
|
|
1
|
+
import { TableCellProps as MTableCellProps } from "@mui/material";
|
|
2
|
+
import { CoreCell, CoreHeader, RowData } from "@tanstack/react-table";
|
|
3
3
|
import { ACCESSOR_KEYS } from "../../../../TableCreator/common/constants";
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -7,7 +7,7 @@ import { ACCESSOR_KEYS } from "../../../../TableCreator/common/constants";
|
|
|
7
7
|
* @param id - Cell ID.
|
|
8
8
|
* @returns table cell padding.
|
|
9
9
|
*/
|
|
10
|
-
export function getTableCellPadding<T extends
|
|
10
|
+
export function getTableCellPadding<T extends RowData, TValue>(
|
|
11
11
|
id: CoreHeader<T, TValue>["id"] | CoreCell<T, TValue>["id"]
|
|
12
12
|
): MTableCellProps["padding"] {
|
|
13
13
|
if (id === ACCESSOR_KEYS.SELECT) {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Typography } from "@mui/material";
|
|
2
|
+
import React, { Fragment, ReactNode } from "react";
|
|
3
|
+
import { LABEL } from "../../../../../../apis/azul/common/entities";
|
|
4
|
+
import { TypographyProps } from "../../../../../common/Typography/common/entities";
|
|
5
|
+
|
|
6
|
+
export interface BasicCellProps {
|
|
7
|
+
TypographyProps?: TypographyProps;
|
|
8
|
+
value?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const BasicCell = ({
|
|
12
|
+
TypographyProps,
|
|
13
|
+
value = LABEL.UNSPECIFIED,
|
|
14
|
+
}: BasicCellProps): JSX.Element | null => {
|
|
15
|
+
if (isValueNumberOrString(value)) {
|
|
16
|
+
return (
|
|
17
|
+
<Typography variant="inherit" {...TypographyProps}>
|
|
18
|
+
{value}
|
|
19
|
+
</Typography>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
if (isValueArray(value)) {
|
|
23
|
+
return (
|
|
24
|
+
<Fragment>
|
|
25
|
+
{value.map((v: number | string) => (
|
|
26
|
+
<Typography key={v} variant="inherit" {...TypographyProps}>
|
|
27
|
+
{v}
|
|
28
|
+
</Typography>
|
|
29
|
+
))}
|
|
30
|
+
</Fragment>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if value is an array of strings.
|
|
38
|
+
* @param value - Value.
|
|
39
|
+
* @returns value is an array of strings.
|
|
40
|
+
*/
|
|
41
|
+
function isValueArray(value: ReactNode): value is (number | string)[] {
|
|
42
|
+
return Array.isArray(value) && value.every(isValueNumberOrString);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Returns true if value is a number or a string.
|
|
47
|
+
* @param value - Value.
|
|
48
|
+
* @returns true if value is a number or a string.
|
|
49
|
+
*/
|
|
50
|
+
function isValueNumberOrString(value: ReactNode): value is number | string {
|
|
51
|
+
return typeof value === "number" || typeof value === "string";
|
|
52
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PopperProps,
|
|
3
|
+
Tooltip as MTooltip,
|
|
4
|
+
TooltipProps as MTooltipProps,
|
|
5
|
+
} from "@mui/material";
|
|
6
|
+
import { detectOverflow } from "@popperjs/core";
|
|
7
|
+
import { State } from "@popperjs/core/lib/types";
|
|
8
|
+
import React, { useMemo, useState } from "react";
|
|
9
|
+
import { TooltipContent } from "./tooltip.styles";
|
|
10
|
+
|
|
11
|
+
const DEFAULT_FLIP_MODIFIER = {
|
|
12
|
+
enabled: true,
|
|
13
|
+
name: "flip",
|
|
14
|
+
options: {
|
|
15
|
+
fallbackPlacements: ["bottom", "right", "left"],
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const DEFAULT_PREVENT_OVERFLOW_MODIFIER = {
|
|
20
|
+
enabled: true,
|
|
21
|
+
name: "preventOverflow",
|
|
22
|
+
options: {
|
|
23
|
+
padding: 16,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export interface TooltipProps extends MTooltipProps {
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const Tooltip = ({
|
|
32
|
+
children,
|
|
33
|
+
className,
|
|
34
|
+
title,
|
|
35
|
+
...props /* Spread props to allow for Mui Tooltip specific prop overrides. */
|
|
36
|
+
}: TooltipProps): JSX.Element => {
|
|
37
|
+
const [maxHeight, setMaxHeight] = useState<number>();
|
|
38
|
+
const modifiers: PopperProps["modifiers"] = useMemo(
|
|
39
|
+
() => [
|
|
40
|
+
{
|
|
41
|
+
enabled: true,
|
|
42
|
+
fn: ({ state }): void => setMaxHeight(calculateMaxHeight(state)),
|
|
43
|
+
name: "maxHeight",
|
|
44
|
+
phase: "main",
|
|
45
|
+
requiresIfExists: ["offset"],
|
|
46
|
+
},
|
|
47
|
+
DEFAULT_FLIP_MODIFIER,
|
|
48
|
+
DEFAULT_PREVENT_OVERFLOW_MODIFIER,
|
|
49
|
+
],
|
|
50
|
+
[]
|
|
51
|
+
);
|
|
52
|
+
return (
|
|
53
|
+
<MTooltip
|
|
54
|
+
arrow
|
|
55
|
+
className={className}
|
|
56
|
+
onClose={(): void => setMaxHeight(undefined)}
|
|
57
|
+
slotProps={{
|
|
58
|
+
popper: { modifiers },
|
|
59
|
+
tooltip: { style: { display: "flex", maxHeight, padding: 0 } },
|
|
60
|
+
}}
|
|
61
|
+
title={<TooltipContent>{title}</TooltipContent>}
|
|
62
|
+
{...props}
|
|
63
|
+
>
|
|
64
|
+
{children}
|
|
65
|
+
</MTooltip>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Calculate the max height of the tooltip based on the current popper modifier state.
|
|
71
|
+
* @param state - Popper modifier state.
|
|
72
|
+
* @returns tooltip maximum height.
|
|
73
|
+
*/
|
|
74
|
+
function calculateMaxHeight(state: State): number | undefined {
|
|
75
|
+
const overflow = detectOverflow(state);
|
|
76
|
+
const { placement } = state;
|
|
77
|
+
if (placement === "left" || placement === "right") {
|
|
78
|
+
return window.innerHeight - 32;
|
|
79
|
+
}
|
|
80
|
+
if (placement === "top") {
|
|
81
|
+
return state.rects.popper.height - overflow.top - 24;
|
|
82
|
+
}
|
|
83
|
+
if (placement === "bottom") {
|
|
84
|
+
return state.rects.popper.height - overflow.bottom - 24;
|
|
85
|
+
}
|
|
86
|
+
}
|
package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.tsx
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
|
+
import { Tooltip } from "./components/Tooltip/tooltip";
|
|
3
|
+
|
|
4
|
+
export interface NTagProps {
|
|
5
|
+
className?: string;
|
|
6
|
+
Tag: ReactElement;
|
|
7
|
+
TooltipTitle: ReactElement;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const NTag = ({
|
|
11
|
+
className,
|
|
12
|
+
Tag,
|
|
13
|
+
TooltipTitle,
|
|
14
|
+
...props /* Spread props to allow for Mui Tooltip specific prop overrides. */
|
|
15
|
+
}: NTagProps): JSX.Element => {
|
|
16
|
+
return (
|
|
17
|
+
<Tooltip className={className} title={TooltipTitle} {...props}>
|
|
18
|
+
{Tag}
|
|
19
|
+
</Tooltip>
|
|
20
|
+
);
|
|
21
|
+
};
|