@databiosphere/findable-ui 4.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.
Files changed (184) hide show
  1. package/README.md +5 -1
  2. package/lib/components/ComponentCreator/ComponentCreator.d.ts +4 -2
  3. package/lib/components/ComponentCreator/ComponentCreator.js +6 -8
  4. package/lib/components/Detail/components/DetailViewTable/detailViewTable.d.ts +3 -3
  5. package/lib/components/Detail/components/DetailViewTable/detailViewTable.js +1 -1
  6. package/lib/components/Detail/components/Table/common/utils.d.ts +2 -2
  7. package/lib/components/Detail/components/Table/components/TableBody/tableBody.d.ts +3 -3
  8. package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -3
  9. package/lib/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +2 -4
  10. package/lib/components/Detail/components/Table/components/TableRows/tableRows.d.ts +2 -2
  11. package/lib/components/Detail/components/Table/components/TableRows/tableRows.js +2 -1
  12. package/lib/components/Detail/components/Table/table.d.ts +3 -4
  13. package/lib/components/Detail/components/Table/table.js +2 -1
  14. package/lib/components/Filter/components/Filters/filters.d.ts +1 -1
  15. package/lib/components/Index/components/Cell/cell.d.ts +3 -0
  16. package/lib/components/Index/components/Cell/cell.js +3 -0
  17. package/lib/components/Index/components/NTag/components/Tooltip/tooltip.d.ts +3 -0
  18. package/lib/components/Index/components/NTag/components/Tooltip/tooltip.js +3 -0
  19. package/lib/components/Index/components/NTag/nTag.d.ts +3 -0
  20. package/lib/components/Index/components/NTag/nTag.js +3 -0
  21. package/lib/components/Index/components/NTagCell/nTagCell.d.ts +6 -1
  22. package/lib/components/Index/components/NTagCell/nTagCell.js +6 -2
  23. package/lib/components/Layout/components/Outline/common/constants.d.ts +1 -1
  24. package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.d.ts +1 -1
  25. package/lib/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.js +13 -1
  26. package/lib/components/Links/components/Link/link.d.ts +3 -1
  27. package/lib/components/Links/components/Link/link.js +4 -4
  28. package/lib/components/Table/common/gridTable.styles.js +8 -2
  29. package/lib/components/Table/common/utils.d.ts +19 -14
  30. package/lib/components/Table/common/utils.js +26 -11
  31. package/lib/components/Table/components/DownloadEntityResults/downloadEntityResults.d.ts +3 -3
  32. package/lib/components/Table/components/PaginationSummary/paginationSummary.js +9 -8
  33. package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -3
  34. package/lib/components/Table/components/TableCell/common/utils.d.ts +3 -3
  35. package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.d.ts +7 -0
  36. package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.js +55 -0
  37. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.d.ts +6 -0
  38. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.js +93 -0
  39. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.d.ts +5 -0
  40. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.js +16 -0
  41. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.d.ts +7 -0
  42. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.js +24 -0
  43. package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.d.ts +9 -0
  44. package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.js +53 -0
  45. package/lib/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.d.ts +2 -2
  46. package/lib/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.d.ts +2 -2
  47. package/lib/components/Table/components/TableHead/tableHead.d.ts +3 -3
  48. package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +16 -0
  49. package/lib/components/Table/components/TableRow/tableRow.styles.js +22 -0
  50. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -3
  51. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +3 -2
  52. package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
  53. package/lib/components/Table/components/TableRows/tableRows.js +3 -1
  54. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.d.ts +2 -0
  55. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.js +12 -0
  56. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.d.ts +9 -0
  57. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.js +32 -0
  58. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.d.ts +6 -0
  59. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.js +35 -0
  60. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.d.ts +12 -0
  61. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.js +32 -0
  62. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.d.ts +5 -0
  63. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.js +50 -0
  64. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.d.ts +7 -0
  65. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.js +16 -0
  66. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.d.ts +5 -0
  67. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.js +17 -0
  68. package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.d.ts +8 -0
  69. package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.js +14 -0
  70. package/lib/components/Table/components/TableToolbar/components/RowSelection/rowSelection.d.ts +3 -3
  71. package/lib/components/Table/components/TableToolbar/tableToolbar.d.ts +3 -3
  72. package/lib/components/Table/components/TableToolbar/tableToolbar.js +9 -6
  73. package/lib/components/Table/features/RowPreview/constants.d.ts +2 -0
  74. package/lib/components/Table/features/RowPreview/constants.js +45 -0
  75. package/lib/components/Table/features/RowPreview/entities.d.ts +22 -0
  76. package/lib/components/Table/features/RowPreview/entities.js +2 -0
  77. package/lib/components/Table/features/RowPreview/utils.d.ts +33 -0
  78. package/lib/components/Table/features/RowPreview/utils.js +89 -0
  79. package/lib/components/Table/features/entities.d.ts +7 -0
  80. package/lib/components/Table/features/entities.js +2 -0
  81. package/lib/components/Table/table.d.ts +4 -12
  82. package/lib/components/Table/table.js +27 -39
  83. package/lib/components/TableCreator/common/entities.d.ts +1 -1
  84. package/lib/components/TableCreator/tableCreator.d.ts +2 -9
  85. package/lib/components/TableCreator/tableCreator.js +4 -4
  86. package/lib/components/common/Button/button.d.ts +1 -1
  87. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.d.ts +7 -0
  88. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.js +17 -0
  89. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.d.ts +5 -0
  90. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.js +17 -0
  91. package/lib/components/common/Drawer/components/drawer.styles.d.ts +5 -0
  92. package/lib/components/common/Drawer/components/drawer.styles.js +11 -0
  93. package/lib/components/common/Drawer/drawer.d.ts +7 -0
  94. package/lib/components/common/Drawer/drawer.js +24 -0
  95. package/lib/components/common/Grid/grid.d.ts +1 -1
  96. package/lib/components/common/Typography/common/entities.d.ts +2 -0
  97. package/lib/components/common/Typography/common/entities.js +2 -0
  98. package/lib/config/entities.d.ts +8 -26
  99. package/lib/providers/exploreState/entities.d.ts +3 -2
  100. package/lib/providers/exploreState/initializer/constants.js +1 -3
  101. package/lib/providers/exploreState/initializer/utils.js +2 -2
  102. package/lib/providers/exploreState/payloads/entities.d.ts +7 -11
  103. package/lib/providers/exploreState/utils.d.ts +12 -10
  104. package/lib/providers/exploreState/utils.js +20 -24
  105. package/lib/providers/exploreState.d.ts +12 -32
  106. package/lib/providers/exploreState.js +48 -36
  107. package/lib/styles/common/mixins/colors.d.ts +2 -1
  108. package/lib/styles/common/mixins/colors.js +3 -1
  109. package/lib/theme/common/components.js +11 -2
  110. package/lib/theme/common/palette.d.ts +3 -1
  111. package/lib/theme/common/palette.js +4 -1
  112. package/lib/views/ExploreView/exploreView.js +4 -6
  113. package/package.json +2 -2
  114. package/src/components/ComponentCreator/ComponentCreator.tsx +6 -1
  115. package/src/components/Detail/components/DetailViewTable/detailViewTable.tsx +4 -4
  116. package/src/components/Detail/components/Table/common/utils.ts +2 -2
  117. package/src/components/Detail/components/Table/components/TableBody/tableBody.tsx +3 -3
  118. package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +5 -7
  119. package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +10 -6
  120. package/src/components/Detail/components/Table/table.tsx +6 -3
  121. package/src/components/Filter/components/Filters/filters.tsx +1 -1
  122. package/src/components/Index/components/Cell/cell.tsx +4 -0
  123. package/src/components/Index/components/NTag/components/Tooltip/tooltip.tsx +4 -0
  124. package/src/components/Index/components/NTag/nTag.tsx +4 -0
  125. package/src/components/Index/components/NTagCell/nTagCell.tsx +22 -3
  126. package/src/components/Layout/components/Outline/common/constants.ts +1 -1
  127. package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +18 -2
  128. package/src/components/Links/components/Link/link.tsx +15 -2
  129. package/src/components/Table/common/gridTable.styles.ts +8 -2
  130. package/src/components/Table/common/utils.ts +55 -24
  131. package/src/components/Table/components/DownloadEntityResults/downloadEntityResults.tsx +3 -3
  132. package/src/components/Table/components/PaginationSummary/paginationSummary.tsx +11 -9
  133. package/src/components/Table/components/TableBody/tableBody.tsx +3 -3
  134. package/src/components/Table/components/TableCell/common/utils.ts +3 -3
  135. package/src/components/Table/components/TableCell/components/BasicCell/basicCell.tsx +52 -0
  136. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.ts +11 -0
  137. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.tsx +86 -0
  138. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.tsx +21 -0
  139. package/src/components/Table/components/TableCell/components/NTagCell/nTagCell.tsx +70 -0
  140. package/src/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.tsx +2 -3
  141. package/src/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.tsx +2 -3
  142. package/src/components/Table/components/TableHead/tableHead.tsx +3 -3
  143. package/src/components/Table/components/TableRow/tableRow.styles.ts +22 -0
  144. package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -6
  145. package/src/components/Table/components/TableRows/tableRows.tsx +9 -6
  146. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.ts +11 -0
  147. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.ts +31 -0
  148. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.tsx +52 -0
  149. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.ts +48 -0
  150. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.tsx +53 -0
  151. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.ts +12 -0
  152. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.tsx +25 -0
  153. package/src/components/Table/components/TableToolbar/components/RowPreview/rowPreview.tsx +19 -0
  154. package/src/components/Table/components/TableToolbar/components/RowSelection/rowSelection.tsx +3 -3
  155. package/src/components/Table/components/TableToolbar/tableToolbar.tsx +9 -4
  156. package/src/components/Table/features/RowPreview/constants.ts +65 -0
  157. package/src/components/Table/features/RowPreview/entities.ts +25 -0
  158. package/src/components/Table/features/RowPreview/utils.ts +93 -0
  159. package/src/components/Table/features/entities.ts +13 -0
  160. package/src/components/Table/table.tsx +41 -51
  161. package/src/components/TableCreator/common/entities.ts +1 -1
  162. package/src/components/TableCreator/tableCreator.tsx +15 -22
  163. package/src/components/common/Button/button.tsx +1 -2
  164. package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.ts +12 -0
  165. package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.tsx +27 -0
  166. package/src/components/common/Drawer/components/drawer.styles.ts +6 -0
  167. package/src/components/common/Drawer/drawer.tsx +21 -0
  168. package/src/components/common/Grid/grid.tsx +1 -3
  169. package/src/components/common/Section/components/CollapsableSection/collapsableSection.tsx +1 -2
  170. package/src/components/common/Typography/common/entities.ts +5 -0
  171. package/src/config/entities.ts +8 -38
  172. package/src/providers/exploreState/entities.ts +7 -2
  173. package/src/providers/exploreState/initializer/constants.ts +1 -3
  174. package/src/providers/exploreState/initializer/utils.ts +3 -3
  175. package/src/providers/exploreState/payloads/entities.ts +8 -18
  176. package/src/providers/exploreState/utils.ts +25 -36
  177. package/src/providers/exploreState.tsx +95 -69
  178. package/src/styles/common/mixins/colors.ts +4 -1
  179. package/src/theme/common/components.ts +12 -0
  180. package/src/theme/common/palette.ts +4 -5
  181. package/src/theme/theme.ts +1 -2
  182. package/src/views/ExploreView/exploreView.tsx +3 -25
  183. package/types/data-explorer-ui.d.ts +21 -2
  184. package/src/hooks/useEntityListRelatedView.ts +0 -78
@@ -1,4 +1,4 @@
1
- import { ColumnDef } from "@tanstack/react-table";
1
+ import { ColumnDef, RowData } from "@tanstack/react-table";
2
2
  import React, { ReactNode } from "react";
3
3
  import {
4
4
  FlatPaper,
@@ -10,7 +10,7 @@ import { NoResults } from "../../../NoResults/noResults";
10
10
  import { Toolbar } from "../../../Table/components/TableToolbar/tableToolbar.styles";
11
11
  import { Table, TableProps } from "../Table/table";
12
12
 
13
- interface DetailViewTableProps<T extends object> extends TableProps<T> {
13
+ interface DetailViewTableProps<T extends RowData> extends TableProps<T> {
14
14
  className?: string;
15
15
  columns: ColumnDef<T>[];
16
16
  gridTemplateColumns: string;
@@ -20,7 +20,7 @@ interface DetailViewTableProps<T extends object> extends TableProps<T> {
20
20
  tools?: ReactNode;
21
21
  }
22
22
 
23
- export const DetailViewTable = <T extends object>({
23
+ export const DetailViewTable = <T extends RowData>({
24
24
  className,
25
25
  columns,
26
26
  gridTemplateColumns,
@@ -31,7 +31,7 @@ export const DetailViewTable = <T extends object>({
31
31
  ...tableProps
32
32
  }: DetailViewTableProps<T>): JSX.Element => {
33
33
  return items.length > 0 ? (
34
- <Paper className={className}>
34
+ <Paper className={className} variant="table">
35
35
  <GridPaper>
36
36
  {tools && <Toolbar variant="table">{tools}</Toolbar>}
37
37
  <Table
@@ -1,11 +1,11 @@
1
- import { ColumnDef } from "@tanstack/react-table";
1
+ import { ColumnDef, RowData } from "@tanstack/react-table";
2
2
 
3
3
  /**
4
4
  * Generates columns from column definitions with meta associated with the column.
5
5
  * @param columns - Column configuration.
6
6
  * @returns generated column definitions.
7
7
  */
8
- export function generateColumnDefinitions<T>(
8
+ export function generateColumnDefinitions<T extends RowData>(
9
9
  columns: ColumnDef<T>[]
10
10
  ): ColumnDef<T>[] {
11
11
  return columns.map((column) => {
@@ -1,18 +1,18 @@
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 React from "react";
4
4
  import { ROW_DIRECTION } from "../../../../../Table/common/entities";
5
5
  import { TableView } from "../../table";
6
6
  import { CollapsableRows } from "../TableRows/components/CollapsableRows/collapsableRows";
7
7
  import { TableRows } from "../TableRows/tableRows";
8
8
 
9
- export interface TableBodyProps<T> {
9
+ export interface TableBodyProps<T extends RowData> {
10
10
  rowDirection: ROW_DIRECTION;
11
11
  tableInstance: Table<T>;
12
12
  tableView?: TableView;
13
13
  }
14
14
 
15
- export const TableBody = <T extends object>({
15
+ export const TableBody = <T extends RowData>({
16
16
  rowDirection,
17
17
  tableInstance,
18
18
  tableView,
@@ -1,26 +1,24 @@
1
- import { TableRow } from "@mui/material";
2
- import { Table } from "@tanstack/react-table";
1
+ import { RowData, Table } from "@tanstack/react-table";
3
2
  import React, { Fragment } from "react";
4
- import { v4 as uuid4 } from "uuid";
5
3
  import { isCollapsableRowDisabled } from "../../../../../../../Table/common/utils";
6
4
  import { CollapsableCell } from "../../../../../../../Table/components/TableCell/components/CollapsableCell/collapsableCell";
5
+ import { TableRow } from "../../../../../../../Table/components/TableRow/tableRow.styles";
7
6
 
8
- export interface CollapsableRowsProps<T> {
7
+ export interface CollapsableRowsProps<T extends RowData> {
9
8
  tableInstance: Table<T>;
10
9
  }
11
10
 
12
- export const CollapsableRows = <T extends object>({
11
+ export const CollapsableRows = <T extends RowData>({
13
12
  tableInstance,
14
13
  }: CollapsableRowsProps<T>): JSX.Element => {
15
14
  const { getRowModel } = tableInstance;
16
15
  const { rows } = getRowModel();
17
- const uuid = uuid4(); // Generate a unique ID for the collapsable rows.
18
16
  return (
19
17
  <Fragment>
20
18
  {rows.map((row) => {
21
19
  if (row.depth > 0) return null; // Hide sub rows.
22
20
  return (
23
- <TableRow key={`${uuid}${row.id}`}>
21
+ <TableRow key={row.id} isPreview={row.getIsPreview()}>
24
22
  <CollapsableCell
25
23
  isDisabled={isCollapsableRowDisabled(tableInstance)}
26
24
  row={row}
@@ -1,11 +1,11 @@
1
- import { TableCell as MTableCell, TableRow as MTableRow } from "@mui/material";
2
- import { flexRender, Row, Table } from "@tanstack/react-table";
3
- import { RowData } from "@tanstack/table-core";
1
+ import { TableCell as MTableCell } from "@mui/material";
2
+ import { flexRender, Row, RowData, Table } from "@tanstack/react-table";
4
3
  import React, { Fragment } from "react";
5
4
  import { getTableCellPadding } from "../../../../../Table/components/TableCell/common/utils";
5
+ import { TableRow } from "../../../../../Table/components/TableRow/tableRow.styles";
6
6
  import { TableView } from "../../table";
7
7
 
8
- export interface TableRowsProps<T> {
8
+ export interface TableRowsProps<T extends RowData> {
9
9
  tableInstance: Table<T>;
10
10
  tableView?: TableView;
11
11
  }
@@ -22,7 +22,11 @@ export const TableRows = <T extends RowData>({
22
22
  <Fragment>
23
23
  {rows.map((row) => {
24
24
  return (
25
- <MTableRow id={getRowId(row)} key={row.id}>
25
+ <TableRow
26
+ id={getRowId(row)}
27
+ isPreview={row.getIsPreview()}
28
+ key={row.id}
29
+ >
26
30
  {row.getVisibleCells().map((cell) => {
27
31
  if (cell.getIsAggregated()) return null; // Display of aggregated cells is currently not supported.
28
32
  if (cell.getIsPlaceholder()) return null; // Display of placeholder cells is currently not supported.
@@ -36,7 +40,7 @@ export const TableRows = <T extends RowData>({
36
40
  </MTableCell>
37
41
  );
38
42
  })}
39
- </MTableRow>
43
+ </TableRow>
40
44
  );
41
45
  })}
42
46
  </Fragment>
@@ -7,9 +7,10 @@ import {
7
7
  import {
8
8
  ColumnDef,
9
9
  getCoreRowModel,
10
+ RowData,
11
+ TableOptions,
10
12
  useReactTable,
11
13
  } from "@tanstack/react-table";
12
- import { TableOptions } from "@tanstack/table-core";
13
14
  import React from "react";
14
15
  import {
15
16
  BREAKPOINT_FN_NAME,
@@ -18,6 +19,7 @@ import {
18
19
  import { TABLET } from "../../../../theme/common/breakpoints";
19
20
  import { ROW_DIRECTION } from "../../../Table/common/entities";
20
21
  import { TableHead } from "../../../Table/components/TableHead/tableHead";
22
+ import { ROW_PREVIEW } from "../../../Table/features/RowPreview/constants";
21
23
  import { GridTable } from "../../../Table/table.styles";
22
24
  import { generateColumnDefinitions } from "./common/utils";
23
25
  import { TableBody } from "./components/TableBody/tableBody";
@@ -28,7 +30,7 @@ export interface TableView {
28
30
  tableContainer?: Partial<MTableContainerProps>;
29
31
  }
30
32
 
31
- export interface TableProps<T extends object> {
33
+ export interface TableProps<T extends RowData> {
32
34
  className?: string;
33
35
  collapsable?: boolean;
34
36
  columns: ColumnDef<T>[];
@@ -38,7 +40,7 @@ export interface TableProps<T extends object> {
38
40
  tableView?: TableView;
39
41
  }
40
42
 
41
- export const Table = <T extends object>({
43
+ export const Table = <T extends RowData>({
42
44
  className,
43
45
  collapsable = true,
44
46
  columns,
@@ -54,6 +56,7 @@ export const Table = <T extends object>({
54
56
  const { stickyHeader = false } = table || {};
55
57
  const { sx: tableContainerSx } = tableContainer || {};
56
58
  const tableInstance = useReactTable({
59
+ _features: [ROW_PREVIEW],
57
60
  columns: generateColumnDefinitions(columns),
58
61
  data: items,
59
62
  enableSorting: false,
@@ -21,7 +21,7 @@ export interface CategoryFilter {
21
21
  export interface FiltersProps {
22
22
  categoryFilters: CategoryFilter[];
23
23
  closeAncestor?: () => void;
24
- disabled: boolean; // Global disabling of filters; typically in "related" entity view.
24
+ disabled?: boolean; // Global disabling of filters.
25
25
  onFilter: OnFilterFn;
26
26
  trackFilterOpened?: TrackFilterOpenedFunction;
27
27
  }
@@ -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
- export const NTagCell = ({ label, values }: NTagCellProps): JSX.Element => {
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="text-body-small-400">
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) => <div key={`${value}${v}`}>{value}</div>)
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
  );
@@ -1,3 +1,3 @@
1
- import { TabProps as MTabProps } from "@mui/material/Tab/Tab";
1
+ import { TabProps as MTabProps } from "@mui/material";
2
2
 
3
3
  export const DEFAULT_TAB_VALUE: MTabProps["value"] = "";
@@ -1,3 +1,4 @@
1
+ import { ColumnSort } from "@tanstack/react-table";
1
2
  import Link from "next/link";
2
3
  import React, { useCallback } from "react";
3
4
  import { UrlObject } from "url";
@@ -14,9 +15,10 @@ import {
14
15
  import { LinkProps } from "../../link";
15
16
 
16
17
  const PARAM_FILTER = "filter";
18
+ const PARAM_SORTING = "sorting";
17
19
 
18
20
  export interface ExploreViewLinkProps
19
- extends Omit<LinkProps, "copyable" | "noWrap" | "url"> {
21
+ extends Omit<LinkProps, "copyable" | "noWrap" | "TypographyProps" | "url"> {
20
22
  url: UrlObjectWithHrefAndQuery;
21
23
  }
22
24
 
@@ -36,8 +38,9 @@ export const ExploreViewLink = ({
36
38
  const onNavigate = useCallback(() => {
37
39
  const entityListType = getEntityListType(url.href);
38
40
  const filters = getSelectedFilters(url.query);
41
+ const sorting = getSorting(url.query);
39
42
  exploreDispatch({
40
- payload: { entityListType, filters },
43
+ payload: { entityListType, filters, sorting },
41
44
  type: ExploreActionKind.UpdateEntityFilters,
42
45
  });
43
46
  onClick?.();
@@ -78,6 +81,19 @@ function getSelectedFilters(
78
81
  return parsedQuery[PARAM_FILTER];
79
82
  }
80
83
 
84
+ /**
85
+ * Returns the sorting from the given query.
86
+ * @param query - Query.
87
+ * @returns sorting.
88
+ */
89
+ function getSorting(
90
+ query: UrlObjectWithHrefAndQuery["query"]
91
+ ): ColumnSort[] | undefined {
92
+ const decodedQuery = decodeURIComponent(query);
93
+ const parsedQuery = JSON.parse(decodedQuery);
94
+ return parsedQuery[PARAM_SORTING];
95
+ }
96
+
81
97
  /**
82
98
  * Returns true if the given value is a SelectedFilter.
83
99
  * @param value - Value.
@@ -1,8 +1,13 @@
1
- import { Link as MLink, LinkProps as MLinkProps } from "@mui/material";
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 <>{label}</>;
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: ${white};
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: ${smokeLightest};
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/TableSortLabel/TableSortLabel";
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>(rows: Row<T>[]): Blob | undefined {
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).getFacetedRowModel()],
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
- for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
208
- const value = facetedRowModel.flatRows[i]?.getValue(columnId);
209
- if (Array.isArray(value)) {
210
- value.map((val) => {
211
- updateCountByTerms(facetedUniqueValues, val);
212
- });
213
- } else {
214
- updateCountByTerms(facetedUniqueValues, value);
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>(columns: Column<T>[]): string {
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>(row: Row<T>): PinnedCell<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>(rows: Row<T>[]): TableData[] {
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>(rows: Row<T>[]): TableData[][] {
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>(tableInstance: Table<T>): boolean {
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 object>({
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
- <div>
17
- <Typography variant="text-body-400">Results </Typography>
18
- <Typography variant="text-body-small-500">
19
- {firstResult} - {lastResult}
20
- </Typography>
21
- <Typography variant="text-body-400"> of </Typography>
22
- <Typography variant="text-body-small-500">{totalResult}</Typography>
23
- </div>
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
  };