@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.
Files changed (183) 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/link.d.ts +3 -1
  26. package/lib/components/Links/components/Link/link.js +4 -4
  27. package/lib/components/Table/common/gridTable.styles.js +8 -2
  28. package/lib/components/Table/common/utils.d.ts +19 -14
  29. package/lib/components/Table/common/utils.js +26 -11
  30. package/lib/components/Table/components/DownloadEntityResults/downloadEntityResults.d.ts +3 -3
  31. package/lib/components/Table/components/PaginationSummary/paginationSummary.js +9 -8
  32. package/lib/components/Table/components/TableBody/tableBody.d.ts +3 -3
  33. package/lib/components/Table/components/TableCell/common/utils.d.ts +3 -3
  34. package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.d.ts +7 -0
  35. package/lib/components/Table/components/TableCell/components/BasicCell/basicCell.js +55 -0
  36. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.d.ts +6 -0
  37. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.js +93 -0
  38. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.d.ts +5 -0
  39. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.js +16 -0
  40. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.d.ts +7 -0
  41. package/lib/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.js +24 -0
  42. package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.d.ts +9 -0
  43. package/lib/components/Table/components/TableCell/components/NTagCell/nTagCell.js +53 -0
  44. package/lib/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.d.ts +2 -2
  45. package/lib/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.d.ts +2 -2
  46. package/lib/components/Table/components/TableHead/tableHead.d.ts +3 -3
  47. package/lib/components/Table/components/TableRow/tableRow.styles.d.ts +16 -0
  48. package/lib/components/Table/components/TableRow/tableRow.styles.js +22 -0
  49. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.d.ts +3 -3
  50. package/lib/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.js +3 -2
  51. package/lib/components/Table/components/TableRows/tableRows.d.ts +3 -3
  52. package/lib/components/Table/components/TableRows/tableRows.js +3 -1
  53. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.d.ts +2 -0
  54. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.js +12 -0
  55. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.d.ts +9 -0
  56. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.js +32 -0
  57. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.d.ts +6 -0
  58. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.js +35 -0
  59. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.d.ts +12 -0
  60. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.js +32 -0
  61. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.d.ts +5 -0
  62. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.js +50 -0
  63. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.d.ts +7 -0
  64. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.js +16 -0
  65. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.d.ts +5 -0
  66. package/lib/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.js +17 -0
  67. package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.d.ts +8 -0
  68. package/lib/components/Table/components/TableToolbar/components/RowPreview/rowPreview.js +14 -0
  69. package/lib/components/Table/components/TableToolbar/components/RowSelection/rowSelection.d.ts +3 -3
  70. package/lib/components/Table/components/TableToolbar/tableToolbar.d.ts +3 -3
  71. package/lib/components/Table/components/TableToolbar/tableToolbar.js +9 -6
  72. package/lib/components/Table/features/RowPreview/constants.d.ts +2 -0
  73. package/lib/components/Table/features/RowPreview/constants.js +45 -0
  74. package/lib/components/Table/features/RowPreview/entities.d.ts +22 -0
  75. package/lib/components/Table/features/RowPreview/entities.js +2 -0
  76. package/lib/components/Table/features/RowPreview/utils.d.ts +33 -0
  77. package/lib/components/Table/features/RowPreview/utils.js +89 -0
  78. package/lib/components/Table/features/entities.d.ts +7 -0
  79. package/lib/components/Table/features/entities.js +2 -0
  80. package/lib/components/Table/table.d.ts +4 -12
  81. package/lib/components/Table/table.js +26 -38
  82. package/lib/components/TableCreator/common/entities.d.ts +1 -1
  83. package/lib/components/TableCreator/tableCreator.d.ts +2 -9
  84. package/lib/components/TableCreator/tableCreator.js +4 -4
  85. package/lib/components/common/Button/button.d.ts +1 -1
  86. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.d.ts +7 -0
  87. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.js +17 -0
  88. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.d.ts +5 -0
  89. package/lib/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.js +17 -0
  90. package/lib/components/common/Drawer/components/drawer.styles.d.ts +5 -0
  91. package/lib/components/common/Drawer/components/drawer.styles.js +11 -0
  92. package/lib/components/common/Drawer/drawer.d.ts +7 -0
  93. package/lib/components/common/Drawer/drawer.js +24 -0
  94. package/lib/components/common/Grid/grid.d.ts +1 -1
  95. package/lib/components/common/Typography/common/entities.d.ts +2 -0
  96. package/lib/components/common/Typography/common/entities.js +2 -0
  97. package/lib/config/entities.d.ts +7 -25
  98. package/lib/providers/exploreState/entities.d.ts +3 -2
  99. package/lib/providers/exploreState/initializer/constants.js +1 -3
  100. package/lib/providers/exploreState/initializer/utils.js +1 -0
  101. package/lib/providers/exploreState/payloads/entities.d.ts +6 -11
  102. package/lib/providers/exploreState/utils.d.ts +12 -10
  103. package/lib/providers/exploreState/utils.js +20 -24
  104. package/lib/providers/exploreState.d.ts +12 -32
  105. package/lib/providers/exploreState.js +47 -36
  106. package/lib/styles/common/mixins/colors.d.ts +2 -1
  107. package/lib/styles/common/mixins/colors.js +3 -1
  108. package/lib/theme/common/components.js +11 -2
  109. package/lib/theme/common/palette.d.ts +3 -1
  110. package/lib/theme/common/palette.js +4 -1
  111. package/lib/views/ExploreView/exploreView.js +4 -6
  112. package/package.json +2 -2
  113. package/src/components/ComponentCreator/ComponentCreator.tsx +6 -1
  114. package/src/components/Detail/components/DetailViewTable/detailViewTable.tsx +4 -4
  115. package/src/components/Detail/components/Table/common/utils.ts +2 -2
  116. package/src/components/Detail/components/Table/components/TableBody/tableBody.tsx +3 -3
  117. package/src/components/Detail/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +5 -7
  118. package/src/components/Detail/components/Table/components/TableRows/tableRows.tsx +10 -6
  119. package/src/components/Detail/components/Table/table.tsx +6 -3
  120. package/src/components/Filter/components/Filters/filters.tsx +1 -1
  121. package/src/components/Index/components/Cell/cell.tsx +4 -0
  122. package/src/components/Index/components/NTag/components/Tooltip/tooltip.tsx +4 -0
  123. package/src/components/Index/components/NTag/nTag.tsx +4 -0
  124. package/src/components/Index/components/NTagCell/nTagCell.tsx +22 -3
  125. package/src/components/Layout/components/Outline/common/constants.ts +1 -1
  126. package/src/components/Links/components/Link/components/ExploreViewLink/exploreViewLink.tsx +1 -1
  127. package/src/components/Links/components/Link/link.tsx +15 -2
  128. package/src/components/Table/common/gridTable.styles.ts +8 -2
  129. package/src/components/Table/common/utils.ts +55 -24
  130. package/src/components/Table/components/DownloadEntityResults/downloadEntityResults.tsx +3 -3
  131. package/src/components/Table/components/PaginationSummary/paginationSummary.tsx +11 -9
  132. package/src/components/Table/components/TableBody/tableBody.tsx +3 -3
  133. package/src/components/Table/components/TableCell/common/utils.ts +3 -3
  134. package/src/components/Table/components/TableCell/components/BasicCell/basicCell.tsx +52 -0
  135. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.styles.ts +11 -0
  136. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/components/Tooltip/tooltip.tsx +86 -0
  137. package/src/components/Table/components/TableCell/components/NTagCell/components/NTag/nTag.tsx +21 -0
  138. package/src/components/Table/components/TableCell/components/NTagCell/nTagCell.tsx +70 -0
  139. package/src/components/Table/components/TableCell/components/RowSelectionCell/rowSelectionCell.tsx +2 -3
  140. package/src/components/Table/components/TableHead/components/HeadSelectionCell/headSelectionCell.tsx +2 -3
  141. package/src/components/Table/components/TableHead/tableHead.tsx +3 -3
  142. package/src/components/Table/components/TableRow/tableRow.styles.ts +22 -0
  143. package/src/components/Table/components/TableRows/components/CollapsableRows/collapsableRows.tsx +8 -6
  144. package/src/components/Table/components/TableRows/tableRows.tsx +9 -6
  145. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/common/constants.ts +11 -0
  146. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.styles.ts +31 -0
  147. package/src/components/Table/components/TableToolbar/components/RowPreview/components/RowDrawer/rowDrawer.tsx +52 -0
  148. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.styles.ts +48 -0
  149. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/components/RowDetail/rowDetail.tsx +53 -0
  150. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.styles.ts +12 -0
  151. package/src/components/Table/components/TableToolbar/components/RowPreview/components/Section/section.tsx +25 -0
  152. package/src/components/Table/components/TableToolbar/components/RowPreview/rowPreview.tsx +19 -0
  153. package/src/components/Table/components/TableToolbar/components/RowSelection/rowSelection.tsx +3 -3
  154. package/src/components/Table/components/TableToolbar/tableToolbar.tsx +9 -4
  155. package/src/components/Table/features/RowPreview/constants.ts +65 -0
  156. package/src/components/Table/features/RowPreview/entities.ts +25 -0
  157. package/src/components/Table/features/RowPreview/utils.ts +93 -0
  158. package/src/components/Table/features/entities.ts +13 -0
  159. package/src/components/Table/table.tsx +40 -50
  160. package/src/components/TableCreator/common/entities.ts +1 -1
  161. package/src/components/TableCreator/tableCreator.tsx +15 -22
  162. package/src/components/common/Button/button.tsx +1 -2
  163. package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.styles.ts +12 -0
  164. package/src/components/common/Drawer/components/DrawerTitle/drawerTitle.tsx +27 -0
  165. package/src/components/common/Drawer/components/drawer.styles.ts +6 -0
  166. package/src/components/common/Drawer/drawer.tsx +21 -0
  167. package/src/components/common/Grid/grid.tsx +1 -3
  168. package/src/components/common/Section/components/CollapsableSection/collapsableSection.tsx +1 -2
  169. package/src/components/common/Typography/common/entities.ts +5 -0
  170. package/src/config/entities.ts +7 -37
  171. package/src/providers/exploreState/entities.ts +7 -2
  172. package/src/providers/exploreState/initializer/constants.ts +1 -3
  173. package/src/providers/exploreState/initializer/utils.ts +2 -1
  174. package/src/providers/exploreState/payloads/entities.ts +7 -18
  175. package/src/providers/exploreState/utils.ts +25 -36
  176. package/src/providers/exploreState.tsx +93 -73
  177. package/src/styles/common/mixins/colors.ts +4 -1
  178. package/src/theme/common/components.ts +12 -0
  179. package/src/theme/common/palette.ts +4 -5
  180. package/src/theme/theme.ts +1 -2
  181. package/src/views/ExploreView/exploreView.tsx +3 -25
  182. package/types/data-explorer-ui.d.ts +21 -2
  183. package/src/hooks/useEntityListRelatedView.ts +0 -78
@@ -1,4 +1,4 @@
1
- import { VisibilityState } from "@tanstack/table-core/src/features/Visibility";
1
+ import { VisibilityState } from "@tanstack/react-table";
2
2
  import { SelectCategory, SelectedFilter } from "../../../common/entities";
3
3
  import { getInitialTableColumnVisibility } from "../../../components/Table/common/utils";
4
4
  import { ACCESSOR_KEYS } from "../../../components/TableCreator/common/constants";
@@ -165,6 +165,7 @@ function initEntityPageState(config: SiteConfig): EntityPageStateMapper {
165
165
  categoryGroupConfigKey: initCategoryGroupConfigKey(config, entity),
166
166
  columnsVisibility: initColumnVisibility(entity),
167
167
  enableRowSelection: Boolean(entity.listView?.enableRowSelection),
168
+ rowPreview: undefined,
168
169
  rowSelection: {},
169
170
  sorting: getDefaultSorting(entity),
170
171
  },
@@ -10,12 +10,8 @@ import {
10
10
  SelectCategory,
11
11
  SelectedFilter,
12
12
  } from "../../../common/entities";
13
- import {
14
- ENTITY_VIEW,
15
- ListItems,
16
- PaginationResponse,
17
- RelatedListItems,
18
- } from "../../exploreState";
13
+ import { RowPreviewState } from "../../../components/Table/features/RowPreview/entities";
14
+ import { ListItems, PaginationResponse } from "../../exploreState";
19
15
  import { ListItem } from "../entities";
20
16
 
21
17
  /**
@@ -50,23 +46,11 @@ export interface ProcessExploreResponsePayload {
50
46
  selectCategories?: SelectCategory[];
51
47
  }
52
48
 
53
- /**
54
- * Process related response payload
55
- */
56
- export interface ProcessRelatedResponsePayload {
57
- relatedListItems: RelatedListItems;
58
- }
59
-
60
49
  /**
61
50
  * Reset explore response payload.
62
51
  */
63
52
  export type ResetExploreResponsePayload = undefined;
64
53
 
65
- /**
66
- * Toggle entity view payload.
67
- */
68
- export type ToggleEntityViewPayload = ENTITY_VIEW;
69
-
70
54
  /**
71
55
  * Update column visibility payload.
72
56
  */
@@ -96,6 +80,11 @@ export interface UpdateFilterPayload {
96
80
  selectedValue: CategoryValueKey;
97
81
  }
98
82
 
83
+ /**
84
+ * Update row preview payload.
85
+ */
86
+ export type UpdateRowPreviewPayload = RowPreviewState;
87
+
99
88
  /**
100
89
  * Update row selection payload.
101
90
  */
@@ -4,6 +4,7 @@ import {
4
4
  CategoryValueKey,
5
5
  SelectedFilter,
6
6
  } from "../../common/entities";
7
+ import { RowPreviewState } from "../../components/Table/features/RowPreview/entities";
7
8
  import { ACCESSOR_KEYS } from "../../components/TableCreator/common/constants";
8
9
  import { ExploreState, ListItems, PaginationState } from "../exploreState";
9
10
  import {
@@ -49,6 +50,18 @@ export function buildNextSavedFilterState(
49
50
  return savedFilter?.filters || [];
50
51
  }
51
52
 
53
+ /**
54
+ * Closes row preview, if row preview is enabled.
55
+ * If row preview is enabled, the row preview state value is set to false.
56
+ * @param rowPreview - Row preview state.
57
+ * @returns row preview state with row preview value set to false.
58
+ */
59
+ export function closeRowPreview(rowPreview: RowPreviewState): RowPreviewState {
60
+ if (!rowPreview) return rowPreview;
61
+ const [[key]] = Object.entries(rowPreview);
62
+ return { [key]: false };
63
+ }
64
+
52
65
  /**
53
66
  * Returns the category group config key for the current entity.
54
67
  * @param entityPath - Entity path.
@@ -155,33 +168,6 @@ export function resetPage(paginationState: PaginationState): PaginationState {
155
168
  return nextPaginationState;
156
169
  }
157
170
 
158
- /**
159
- * Resets row selection for the current entity and entities that share the same category group config key.
160
- * @param state - Explore state.
161
- * @param categoryGroupConfigKey - Category group config key.
162
- * @returns entity page state mapper with row selection reset.
163
- */
164
- export function resetRowSelection(
165
- state: ExploreState,
166
- categoryGroupConfigKey = getEntityCategoryGroupConfigKey(
167
- state.tabValue,
168
- state.entityPageState
169
- )
170
- ): EntityPageStateMapper {
171
- return Object.entries(state.entityPageState).reduce(
172
- (acc, [entityPath, entityPageState]) => {
173
- if (entityPageState.categoryGroupConfigKey === categoryGroupConfigKey) {
174
- return {
175
- ...acc,
176
- [entityPath]: { ...entityPageState, rowSelection: {} },
177
- };
178
- }
179
- return { ...acc, [entityPath]: entityPageState };
180
- },
181
- {} as EntityPageStateMapper
182
- );
183
- }
184
-
185
171
  /**
186
172
  * Sets entity state for the given category group config key.
187
173
  * @param categoryGroupConfigKey - Category group config key.
@@ -221,24 +207,27 @@ export function updateEntityPageState(
221
207
  }
222
208
 
223
209
  /**
224
- * Updates entity page state sorting for all entities with the same category group config key.
210
+ * Updates entity page state for the current entity and entities that share the same category group config key.
225
211
  * @param state - Explore state.
226
- * @param sorting - Sorting.
212
+ * @param nextEntityPageState - Partial next entity page state.
213
+ * @param categoryGroupConfigKey - Category group config key.
227
214
  * @returns entity page state.
228
215
  */
229
- export function updateEntityPageStateSorting(
216
+ export function updateEntityPageStateWithCommonCategoryGroupConfigKey(
230
217
  state: ExploreState,
231
- sorting?: EntityPageState["sorting"]
232
- ): EntityPageStateMapper {
233
- if (!sorting) return state.entityPageState;
234
- const categoryGroupConfigKey = getEntityCategoryGroupConfigKey(
218
+ nextEntityPageState: Partial<EntityPageState>,
219
+ categoryGroupConfigKey = getEntityCategoryGroupConfigKey(
235
220
  state.tabValue,
236
221
  state.entityPageState
237
- );
222
+ )
223
+ ): EntityPageStateMapper {
238
224
  return Object.entries(state.entityPageState).reduce(
239
225
  (acc, [entityPath, entityPageState]) => {
240
226
  if (entityPageState.categoryGroupConfigKey === categoryGroupConfigKey) {
241
- return { ...acc, [entityPath]: { ...entityPageState, sorting } };
227
+ return {
228
+ ...acc,
229
+ [entityPath]: { ...entityPageState, ...nextEntityPageState },
230
+ };
242
231
  }
243
232
  return { ...acc, [entityPath]: entityPageState };
244
233
  },
@@ -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,35 +561,35 @@ 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
595
  const { entityListType, filters: filterState, sorting } = payload;
@@ -606,23 +597,27 @@ function exploreReducer(
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: updateEntityPageState(
620
- entityListType,
621
- {
622
- ...resetRowSelection(state, categoryGroupConfigKey), // Reset row selection for all entities with the same category group config key.
623
- },
624
- { sorting } // Update sorting for the entity.
615
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
616
+ state,
617
+ { rowPreview, rowSelection, sorting },
618
+ categoryGroupConfigKey
625
619
  ),
620
+ rowPreview: closeRowPreview(state.rowPreview),
626
621
  };
627
622
  }
628
623
  /**
@@ -644,6 +639,8 @@ function exploreReducer(
644
639
  payload.selectedValue,
645
640
  payload.selected
646
641
  );
642
+ const rowPreview = closeRowPreview(state.rowPreview);
643
+ const rowSelection: RowSelectionState = {};
647
644
  const savedFilterState: SelectedFilter[] = []; // Clear saved filter state.
648
645
  updateEntityStateByCategoryGroupConfigKey(state, {
649
646
  filterState,
@@ -651,22 +648,42 @@ function exploreReducer(
651
648
  });
652
649
  return {
653
650
  ...state,
654
- entityPageState: resetRowSelection(state),
651
+ entityPageState: updateEntityPageStateWithCommonCategoryGroupConfigKey(
652
+ state,
653
+ { rowPreview, rowSelection }
654
+ ),
655
655
  filterCount: getFilterCount(filterState),
656
656
  filterState,
657
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,
658
674
  };
659
675
  }
660
676
  /**
661
677
  * Update row selection
662
678
  */
663
679
  case ExploreActionKind.UpdateRowSelection: {
680
+ const rowSelection = payload;
664
681
  return {
665
682
  ...state,
666
683
  entityPageState: updateEntityPageState(
667
684
  state.tabValue,
668
685
  state.entityPageState,
669
- { rowSelection: payload }
686
+ { rowSelection }
670
687
  ),
671
688
  };
672
689
  }
@@ -674,14 +691,17 @@ function exploreReducer(
674
691
  * Update sorting
675
692
  **/
676
693
  case ExploreActionKind.UpdateSorting: {
694
+ const rowPreview = closeRowPreview(state.rowPreview);
695
+ const sorting = payload;
677
696
  return {
678
697
  ...state,
679
698
  entityPageState: updateEntityPageState(
680
699
  state.tabValue,
681
700
  state.entityPageState,
682
- { sorting: payload }
701
+ { rowPreview, sorting }
683
702
  ),
684
703
  paginationState: resetPage(state.paginationState),
704
+ rowPreview,
685
705
  };
686
706
  }
687
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";