@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,3 +1,4 @@
1
+ import { RowSelectionState } from "@tanstack/react-table";
1
2
  import React, {
2
3
  createContext,
3
4
  Dispatch,
@@ -9,6 +10,7 @@ import React, {
9
10
  } from "react";
10
11
  import { AzulSearchIndex } from "../apis/azul/common/entities";
11
12
  import { SelectCategoryView, SelectedFilter } from "../common/entities";
13
+ import { RowPreviewState } from "../components/Table/features/RowPreview/entities";
12
14
  import { CategoryGroup, SiteConfig } from "../config/entities";
13
15
  import { useAuthentication } from "../hooks/useAuthentication/useAuthentication";
14
16
  import {
@@ -32,42 +34,33 @@ import {
32
34
  PaginateTablePayload,
33
35
  PatchExploreResponsePayload,
34
36
  ProcessExploreResponsePayload,
35
- ProcessRelatedResponsePayload,
36
37
  ResetExploreResponsePayload,
37
- ToggleEntityViewPayload,
38
38
  UpdateColumnVisibilityPayload,
39
39
  UpdateEntityFiltersPayload,
40
40
  UpdateEntityViewAccessPayload,
41
41
  UpdateFilterPayload,
42
+ UpdateRowPreviewPayload,
42
43
  UpdateRowSelectionPayload,
43
44
  UpdateSortingPayload,
44
45
  } from "./exploreState/payloads/entities";
45
46
  import {
46
47
  buildEntityStateSavedFilterState,
47
48
  buildNextSavedFilterState,
49
+ closeRowPreview,
48
50
  getEntityCategoryGroupConfigKey,
49
51
  getEntityState,
50
52
  getEntityStateSavedSorting,
51
53
  getFilterCount,
52
54
  patchEntityListItems,
53
55
  resetPage,
54
- resetRowSelection,
55
56
  updateEntityPageState,
56
- updateEntityPageStateSorting,
57
+ updateEntityPageStateWithCommonCategoryGroupConfigKey,
57
58
  updateEntityStateByCategoryGroupConfigKey,
58
59
  updateSelectColumnVisibility,
59
60
  } from "./exploreState/utils";
60
61
 
61
62
  export type CatalogState = string | undefined;
62
63
 
63
- /**
64
- * Entity view.
65
- */
66
- export enum ENTITY_VIEW {
67
- EXACT = "EXACT",
68
- RELATED = "RELATED",
69
- }
70
-
71
64
  /**
72
65
  * Explore context.
73
66
  */
@@ -88,12 +81,10 @@ export type ExploreState = {
88
81
  featureFlagState: FeatureFlagState;
89
82
  filterCount: number;
90
83
  filterState: SelectedFilter[];
91
- isRelatedView: boolean;
92
84
  listItems: ListItems;
93
- listView: ENTITY_VIEW | undefined;
94
85
  loading: boolean;
95
86
  paginationState: PaginationState;
96
- relatedListItems: RelatedListItems;
87
+ rowPreview: RowPreviewState;
97
88
  tabValue: string;
98
89
  };
99
90
 
@@ -144,12 +135,6 @@ export interface PaginationState {
144
135
  rows: number;
145
136
  }
146
137
 
147
- /**
148
- * Related list items.
149
- */
150
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- TODO revisit when adding react query or similar
151
- export type RelatedListItems = any[] | undefined;
152
-
153
138
  /**
154
139
  * Explore state context for storing and using filter-related and explore state.
155
140
  */
@@ -234,15 +219,14 @@ export enum ExploreActionKind {
234
219
  PaginateTable = "PAGINATE_TABLE",
235
220
  PatchExploreResponse = "PATCH_EXPLORE_RESPONSE",
236
221
  ProcessExploreResponse = "PROCESS_EXPLORE_RESPONSE",
237
- ProcessRelatedResponse = "PROCESS_RELATED_RESPONSE",
238
222
  ResetExploreResponse = "RESET_EXPLORE_RESPONSE",
239
223
  ResetState = "RESET_STATE",
240
224
  SelectEntityType = "SELECT_ENTITY_TYPE",
241
- ToggleEntityView = "TOGGLE_ENTITY_VIEW",
242
225
  UpdateColumnVisibility = "UPDATE_COLUMN_VISIBILITY",
243
226
  UpdateEntityFilters = "UPDATE_ENTITY_FILTERS",
244
227
  UpdateEntityViewAccess = "UPDATE_ENTITY_VIEW_ACCESS",
245
228
  UpdateFilter = "UPDATE_FILTER",
229
+ UpdateRowPreview = "UPDATE_ROW_PREVIEW",
246
230
  UpdateRowSelection = "UPDATE_ROW_SELECTION",
247
231
  UpdateSorting = "UPDATE_SORTING",
248
232
  }
@@ -256,15 +240,14 @@ export type ExploreAction =
256
240
  | PaginateTableAction
257
241
  | PatchExploreResponseAction
258
242
  | ProcessExploreResponseAction
259
- | ProcessRelatedResponseAction
260
243
  | ResetExploreResponseAction
261
244
  | ResetStateAction
262
245
  | SelectEntityTypeAction
263
- | ToggleEntityViewAction
264
246
  | UpdateColumnVisibilityAction
265
247
  | UpdateEntityFiltersAction
266
248
  | UpdateEntityViewAccessAction
267
249
  | UpdateFilterAction
250
+ | UpdateRowPreviewAction
268
251
  | UpdateRowSelectionAction
269
252
  | UpdateSortingAction;
270
253
 
@@ -308,14 +291,6 @@ type ProcessExploreResponseAction = {
308
291
  type: ExploreActionKind.ProcessExploreResponse;
309
292
  };
310
293
 
311
- /**
312
- * Process related response action.
313
- */
314
- type ProcessRelatedResponseAction = {
315
- payload: ProcessRelatedResponsePayload;
316
- type: ExploreActionKind.ProcessRelatedResponse;
317
- };
318
-
319
294
  /**
320
295
  * Reset explore response action.
321
296
  */
@@ -340,14 +315,6 @@ type SelectEntityTypeAction = {
340
315
  type: ExploreActionKind.SelectEntityType;
341
316
  };
342
317
 
343
- /**
344
- * Toggle entity view action.
345
- */
346
- type ToggleEntityViewAction = {
347
- payload: ToggleEntityViewPayload;
348
- type: ExploreActionKind.ToggleEntityView;
349
- };
350
-
351
318
  /**
352
319
  * Update column visibility action.
353
320
  */
@@ -380,6 +347,14 @@ type UpdateFilterAction = {
380
347
  type: ExploreActionKind.UpdateFilter;
381
348
  };
382
349
 
350
+ /**
351
+ * Update row preview action.
352
+ */
353
+ export type UpdateRowPreviewAction = {
354
+ payload: UpdateRowPreviewPayload;
355
+ type: ExploreActionKind.UpdateRowPreview;
356
+ };
357
+
383
358
  /**
384
359
  * Update row selection action.
385
360
  */
@@ -421,6 +396,8 @@ function exploreReducer(
421
396
  payload.selectedValue,
422
397
  payload.selected
423
398
  );
399
+ const rowPreview = closeRowPreview(state.rowPreview);
400
+ const rowSelection: RowSelectionState = {};
424
401
  const savedFilterState = buildEntityStateSavedFilterState(
425
402
  payload.categoryKey,
426
403
  payload.selectedValue,
@@ -431,16 +408,21 @@ function exploreReducer(
431
408
  payload.selectedValue,
432
409
  payload.selected
433
410
  );
411
+ const sorting = savedSorting || []; // Reset sorting to default if saved sorting is not available.
434
412
  updateEntityStateByCategoryGroupConfigKey(state, {
435
413
  filterState,
436
414
  savedFilterState,
437
415
  });
438
416
  return {
439
417
  ...state,
440
- entityPageState: updateEntityPageStateSorting(state, savedSorting),
418
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
419
+ state,
420
+ { rowPreview, rowSelection, sorting }
421
+ ),
441
422
  filterCount: getFilterCount(filterState),
442
423
  filterState,
443
424
  paginationState: resetPage(state.paginationState),
425
+ rowPreview,
444
426
  };
445
427
  }
446
428
  /**
@@ -449,6 +431,8 @@ function exploreReducer(
449
431
  case ExploreActionKind.ClearFilters: {
450
432
  const filterCount = 0;
451
433
  const filterState: SelectedFilter[] = [];
434
+ const rowPreview = closeRowPreview(state.rowPreview);
435
+ const rowSelection: RowSelectionState = {};
452
436
  const savedFilterState: SelectedFilter[] = [];
453
437
  updateEntityStateByCategoryGroupConfigKey(state, {
454
438
  filterState,
@@ -456,9 +440,14 @@ function exploreReducer(
456
440
  });
457
441
  return {
458
442
  ...state,
443
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
444
+ state,
445
+ { rowPreview, rowSelection }
446
+ ),
459
447
  filterCount,
460
448
  filterState,
461
449
  paginationState: resetPage(state.paginationState),
450
+ rowPreview,
462
451
  };
463
452
  }
464
453
  /**
@@ -473,9 +462,16 @@ function exploreReducer(
473
462
  nextPaginationState.currentPage--;
474
463
  nextPaginationState.index = nextPaginationState.previousIndex;
475
464
  }
465
+ const rowPreview = closeRowPreview(state.rowPreview);
476
466
  return {
477
467
  ...state,
468
+ entityPageState: updateEntityPageState(
469
+ state.tabValue,
470
+ state.entityPageState,
471
+ { rowPreview }
472
+ ),
478
473
  paginationState: nextPaginationState,
474
+ rowPreview,
479
475
  };
480
476
  }
481
477
  /**
@@ -500,6 +496,7 @@ function exploreReducer(
500
496
  * Process explore response
501
497
  **/
502
498
  case ExploreActionKind.ProcessExploreResponse: {
499
+ const entityPageState = state.entityPageState[state.tabValue];
503
500
  const entityState = getEntityState(state);
504
501
  const nextCategoryViews = payload.selectCategories
505
502
  ? buildCategoryViews(
@@ -511,6 +508,7 @@ function exploreReducer(
511
508
  [...state.filterState, ...entityState.savedFilterState]
512
509
  )
513
510
  : state.categoryViews;
511
+ const rowPreview = entityPageState.rowPreview;
514
512
  updateEntityStateByCategoryGroupConfigKey(state, {
515
513
  categoryViews: nextCategoryViews,
516
514
  });
@@ -523,15 +521,7 @@ function exploreReducer(
523
521
  ...state.paginationState,
524
522
  ...payload.paginationResponse,
525
523
  },
526
- };
527
- }
528
- /**
529
- * Process related response
530
- */
531
- case ExploreActionKind.ProcessRelatedResponse: {
532
- return {
533
- ...state,
534
- relatedListItems: payload.relatedListItems,
524
+ rowPreview,
535
525
  };
536
526
  }
537
527
  /**
@@ -562,6 +552,7 @@ function exploreReducer(
562
552
  state,
563
553
  getEntityCategoryGroupConfigKey(payload, state.entityPageState)
564
554
  );
555
+ const rowPreview = closeRowPreview(state.rowPreview); // Close row preview, without updating the entity page state row preview.
565
556
  return {
566
557
  ...state,
567
558
  categoryGroups: entityState.categoryGroups,
@@ -570,53 +561,63 @@ function exploreReducer(
570
561
  filterState: entityState.filterState,
571
562
  listItems: [],
572
563
  loading: true,
573
- paginationState: resetPage(state.paginationState),
564
+ paginationState: { ...resetPage(state.paginationState), rows: 0 },
565
+ rowPreview,
574
566
  tabValue: payload,
575
567
  };
576
568
  }
577
- /**
578
- * Toggle entity view
579
- */
580
- case ExploreActionKind.ToggleEntityView: {
581
- return {
582
- ...state,
583
- isRelatedView: payload === ENTITY_VIEW.RELATED,
584
- listView: payload,
585
- };
586
- }
587
569
  /**
588
570
  * Update column visibility
589
571
  **/
590
572
  case ExploreActionKind.UpdateColumnVisibility: {
573
+ const columnsVisibility = payload;
591
574
  return {
592
575
  ...state,
593
576
  entityPageState: updateEntityPageState(
594
577
  state.tabValue,
595
578
  state.entityPageState,
596
- { columnsVisibility: payload }
579
+ { columnsVisibility }
597
580
  ),
598
581
  };
599
582
  }
600
583
  /**
601
584
  * Update entity filters.
585
+ * Updates state for the given entity and entities with the same category group config key, prior to navigation to the entity.
586
+ * Actions for the given entity and entities with the same category group config key:
587
+ * - updates filter state,
588
+ * - clears saved filter state,
589
+ * - resets row selection, and
590
+ * - closes row preview.
591
+ * Actions for the current entity:
592
+ * - closes row preview, without updating the entity page state row preview.
602
593
  */
603
594
  case ExploreActionKind.UpdateEntityFilters: {
604
- const { entityListType, filters: filterState } = payload;
595
+ const { entityListType, filters: filterState, sorting } = payload;
605
596
  const categoryGroupConfigKey = getEntityCategoryGroupConfigKey(
606
597
  entityListType,
607
598
  state.entityPageState
608
599
  );
600
+ const rowPreview = closeRowPreview(
601
+ state.entityPageState[entityListType].rowPreview
602
+ );
603
+ const rowSelection: RowSelectionState = {};
604
+ const savedFilterState: SelectedFilter[] = [];
609
605
  updateEntityStateByCategoryGroupConfigKey(
610
606
  state,
611
607
  {
612
608
  filterState,
613
- savedFilterState: [], // Clear saved filter state.
609
+ savedFilterState,
614
610
  },
615
611
  categoryGroupConfigKey
616
612
  );
617
613
  return {
618
614
  ...state,
619
- entityPageState: resetRowSelection(state, categoryGroupConfigKey),
615
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
616
+ state,
617
+ { rowPreview, rowSelection, sorting },
618
+ categoryGroupConfigKey
619
+ ),
620
+ rowPreview: closeRowPreview(state.rowPreview),
620
621
  };
621
622
  }
622
623
  /**
@@ -638,6 +639,8 @@ function exploreReducer(
638
639
  payload.selectedValue,
639
640
  payload.selected
640
641
  );
642
+ const rowPreview = closeRowPreview(state.rowPreview);
643
+ const rowSelection: RowSelectionState = {};
641
644
  const savedFilterState: SelectedFilter[] = []; // Clear saved filter state.
642
645
  updateEntityStateByCategoryGroupConfigKey(state, {
643
646
  filterState,
@@ -645,22 +648,42 @@ function exploreReducer(
645
648
  });
646
649
  return {
647
650
  ...state,
648
- entityPageState: resetRowSelection(state),
651
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
652
+ state,
653
+ { rowPreview, rowSelection }
654
+ ),
649
655
  filterCount: getFilterCount(filterState),
650
656
  filterState,
651
657
  paginationState: resetPage(state.paginationState),
658
+ rowPreview,
659
+ };
660
+ }
661
+ /**
662
+ * Update row preview
663
+ */
664
+ case ExploreActionKind.UpdateRowPreview: {
665
+ const rowPreview = payload;
666
+ return {
667
+ ...state,
668
+ entityPageState: updateEntityPageState(
669
+ state.tabValue,
670
+ state.entityPageState,
671
+ { rowPreview }
672
+ ),
673
+ rowPreview,
652
674
  };
653
675
  }
654
676
  /**
655
677
  * Update row selection
656
678
  */
657
679
  case ExploreActionKind.UpdateRowSelection: {
680
+ const rowSelection = payload;
658
681
  return {
659
682
  ...state,
660
683
  entityPageState: updateEntityPageState(
661
684
  state.tabValue,
662
685
  state.entityPageState,
663
- { rowSelection: payload }
686
+ { rowSelection }
664
687
  ),
665
688
  };
666
689
  }
@@ -668,14 +691,17 @@ function exploreReducer(
668
691
  * Update sorting
669
692
  **/
670
693
  case ExploreActionKind.UpdateSorting: {
694
+ const rowPreview = closeRowPreview(state.rowPreview);
695
+ const sorting = payload;
671
696
  return {
672
697
  ...state,
673
698
  entityPageState: updateEntityPageState(
674
699
  state.tabValue,
675
700
  state.entityPageState,
676
- { sorting: payload }
701
+ { rowPreview, sorting }
677
702
  ),
678
703
  paginationState: resetPage(state.paginationState),
704
+ rowPreview,
679
705
  };
680
706
  }
681
707
 
@@ -1,4 +1,4 @@
1
- import { CommonColors, PaletteColor } from "@mui/material/styles/createPalette";
1
+ import { CommonColors, PaletteColor } from "@mui/material/styles";
2
2
  import { ThemeProps } from "../../../theme/theme";
3
3
 
4
4
  // Alert
@@ -31,6 +31,9 @@ export const inkMain = ({ theme }: ThemeProps): PaletteColor["main"] =>
31
31
  // Primary
32
32
  export const primaryDark = ({ theme }: ThemeProps): PaletteColor["dark"] =>
33
33
  theme.palette.primary.dark;
34
+ export const primaryLightest = ({
35
+ theme,
36
+ }: ThemeProps): PaletteColor["lightest"] => theme.palette.primary.lightest;
34
37
  export const primaryMain = ({ theme }: ThemeProps): PaletteColor["main"] =>
35
38
  theme.palette.primary.main;
36
39
 
@@ -600,6 +600,8 @@ export const MuiChip = (theme: Theme): Components["MuiChip"] => {
600
600
  backgroundColor: theme.palette.smoke.main,
601
601
  boxShadow: `0 0 0 2px ${white}`,
602
602
  height: 24,
603
+ justifySelf: FLEX_START,
604
+ minWidth: 0,
603
605
  },
604
606
  },
605
607
  {
@@ -609,6 +611,7 @@ export const MuiChip = (theme: Theme): Components["MuiChip"] => {
609
611
  boxShadow: `0 0 0 2px ${white}`,
610
612
  height: 20,
611
613
  maxWidth: "fit-content",
614
+ minWidth: 0,
612
615
  },
613
616
  },
614
617
  ],
@@ -1176,6 +1179,15 @@ export const MuiPaper = (theme: Theme): Components["MuiPaper"] => {
1176
1179
  },
1177
1180
  },
1178
1181
  },
1182
+ {
1183
+ props: { variant: "table" }, // Copy of "panel" variant.
1184
+ style: {
1185
+ borderColor: theme.palette.smoke.main,
1186
+ borderStyle: "solid",
1187
+ borderWidth: 1,
1188
+ boxShadow: theme.shadows[1], // elevation01
1189
+ },
1190
+ },
1179
1191
  ],
1180
1192
  };
1181
1193
  };
@@ -1,9 +1,5 @@
1
1
  import { PaletteColorOptions } from "@mui/material";
2
- import {
3
- CommonColors,
4
- TypeBackground,
5
- TypeText,
6
- } from "@mui/material/styles/createPalette";
2
+ import { CommonColors, TypeBackground, TypeText } from "@mui/material/styles";
7
3
 
8
4
  /**
9
5
  * Palette "Alert"
@@ -44,6 +40,7 @@ enum INK {
44
40
  */
45
41
  enum PRIMARY {
46
42
  DARK = "#005EA9",
43
+ LIGHTEST = "#E6EFF6",
47
44
  MAIN = "#1C7CC7",
48
45
  }
49
46
 
@@ -123,6 +120,7 @@ export const infoMain = INFO.MAIN;
123
120
  export const inkLight = INK.LIGHT;
124
121
  export const inkMain = INK.MAIN;
125
122
  export const primaryDark = PRIMARY.DARK;
123
+ export const primaryLightest = PRIMARY.LIGHTEST;
126
124
  export const primaryMain = PRIMARY.MAIN;
127
125
  export const smokeDark = SMOKE.DARK;
128
126
  export const smokeLight = SMOKE.LIGHT;
@@ -202,6 +200,7 @@ export const ink: PaletteColorOptions = {
202
200
  */
203
201
  export const primary: PaletteColorOptions = {
204
202
  dark: primaryDark,
203
+ lightest: primaryLightest,
205
204
  main: primaryMain,
206
205
  };
207
206
 
@@ -1,5 +1,4 @@
1
- import { createTheme, Theme, ThemeOptions } from "@mui/material";
2
- import { Shadows } from "@mui/material/styles/shadows";
1
+ import { createTheme, Shadows, Theme, ThemeOptions } from "@mui/material";
3
2
  import * as B from "./common/breakpoints";
4
3
  import * as C from "./common/components";
5
4
  import * as P from "./common/palette";
@@ -37,7 +37,6 @@ import {
37
37
  } from "../../hooks/useBreakpointHelper";
38
38
  import { useConfig } from "../../hooks/useConfig";
39
39
  import { useEntityList } from "../../hooks/useEntityList";
40
- import { useEntityListRelatedView } from "../../hooks/useEntityListRelatedView";
41
40
  import { useExploreState } from "../../hooks/useExploreState";
42
41
  import { useSummary } from "../../hooks/useSummary";
43
42
  import { ExploreActionKind, ExploreState } from "../../providers/exploreState";
@@ -72,18 +71,11 @@ export const ExploreView = (props: ExploreViewProps): JSX.Element => {
72
71
  const { entities, explorerTitle, summaryConfig, trackingConfig } = config;
73
72
  const { listView } = entityConfig;
74
73
  const { listHero, subTitleHero } = listView || {};
75
- const {
76
- categoryGroups,
77
- categoryViews,
78
- filterCount,
79
- isRelatedView,
80
- tabValue,
81
- } = exploreState;
74
+ const { categoryGroups, categoryViews, filterCount, tabValue } = exploreState;
82
75
  const { push } = useRouter();
83
76
  const tabs = getTabs(entities);
84
77
  const { response: summaryResponse } = useSummary(); // Fetch summary.
85
78
  useEntityList(props); // Fetch entities.
86
- useEntityListRelatedView(); // Fetch related entities.
87
79
  const { entityListType } = props;
88
80
  const categoryFilters = useMemo(
89
81
  () => buildCategoryFilters(categoryViews, categoryGroups),
@@ -194,7 +186,6 @@ export const ExploreView = (props: ExploreViewProps): JSX.Element => {
194
186
  <Filters
195
187
  categoryFilters={categoryFilters}
196
188
  closeAncestor={onCloseDrawer}
197
- disabled={isRelatedView}
198
189
  onFilter={onFilterChange.bind(null, false)}
199
190
  trackFilterOpened={trackingConfig?.trackFilterOpened}
200
191
  />
@@ -284,14 +275,7 @@ function renderList(
284
275
  entityConfig: EntityConfig,
285
276
  entityListType: string
286
277
  ): JSX.Element {
287
- const {
288
- isRelatedView,
289
- listItems,
290
- loading,
291
- paginationState,
292
- relatedListItems,
293
- tabValue,
294
- } = exploreState;
278
+ const { listItems, loading, tabValue } = exploreState;
295
279
  const { getId: getRowId, list, listView } = entityConfig;
296
280
  const { columns: columnsConfig, defaultSort } = list;
297
281
 
@@ -310,15 +294,9 @@ function renderList(
310
294
  columns={columnsConfig}
311
295
  defaultSort={defaultSort}
312
296
  getRowId={getRowId}
313
- items={
314
- isRelatedView && relatedListItems ? relatedListItems : listItems ?? []
315
- }
297
+ items={listItems ?? []}
316
298
  listView={listView}
317
299
  loading={loading}
318
- pages={paginationState.pages}
319
- pageSize={paginationState.pageSize}
320
- pagination={undefined}
321
- total={paginationState.rows}
322
300
  />
323
301
  );
324
302
  }
@@ -14,9 +14,16 @@ import type {} from "@mui/material/SvgIcon";
14
14
  import type {} from "@mui/material/Tabs";
15
15
  import type {} from "@mui/material/Toolbar";
16
16
  import type {} from "@mui/material/Typography";
17
+ import type {} from "@tanstack/react-table";
17
18
  import { RowData } from "@tanstack/react-table";
18
- import type {} from "@tanstack/table-core";
19
19
  import { DataLayer } from "../src/common/analytics/entities";
20
+ import {
21
+ CustomFeatureInitialTableState,
22
+ CustomFeatureInstance,
23
+ CustomFeatureOptions,
24
+ CustomFeatureRow,
25
+ CustomFeatureTableState,
26
+ } from "../src/components/Table/features/entities";
20
27
  import { GridTrackSize } from "../src/config/entities";
21
28
 
22
29
  /**
@@ -141,6 +148,7 @@ declare module "@mui/material/Paper" {
141
148
  menu: true;
142
149
  panel: true;
143
150
  searchbar: true;
151
+ table: true;
144
152
  }
145
153
  }
146
154
 
@@ -252,7 +260,7 @@ declare module "@emotion/react" {
252
260
  }
253
261
  }
254
262
 
255
- declare module "@tanstack/table-core" {
263
+ declare module "@tanstack/react-table" {
256
264
  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TData and TValue are unused variables.
257
265
  interface ColumnMeta<TData extends RowData, TValue> {
258
266
  columnPinned?: boolean;
@@ -260,6 +268,17 @@ declare module "@tanstack/table-core" {
260
268
  header?: string;
261
269
  width?: GridTrackSize;
262
270
  }
271
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface -- empty interface is needed for extending.
272
+ interface InitialTableState extends CustomFeatureInitialTableState {}
273
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars -- empty interface is needed for extending, TData is an unused variable.
274
+ interface Row<TData extends RowData> extends CustomFeatureRow {}
275
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface -- empty interface is needed for extending.
276
+ interface Table<TData extends RowData> extends CustomFeatureInstance<TData> {}
277
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface, @typescript-eslint/no-unused-vars -- empty interface is needed for extending, TData is an unused variable.
278
+ interface TableOptionsResolved<TData extends RowData>
279
+ extends CustomFeatureOptions {}
280
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface -- empty interface is needed for extending.
281
+ interface TableState extends CustomFeatureTableState {}
263
282
  }
264
283
 
265
284
  /**