mod-arch-shared 0.1.9 → 1.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 (299) hide show
  1. package/README.md +23 -268
  2. package/dist/__tests__/unit/jest.setup.d.ts +1 -0
  3. package/dist/__tests__/unit/jest.setup.d.ts.map +1 -1
  4. package/dist/__tests__/unit/jest.setup.js +3 -46
  5. package/dist/__tests__/unit/jest.setup.js.map +1 -1
  6. package/dist/components/WhosMyAdministrator.d.ts.map +1 -1
  7. package/dist/components/WhosMyAdministrator.js +5 -1
  8. package/dist/components/WhosMyAdministrator.js.map +1 -1
  9. package/dist/components/index.d.ts +0 -5
  10. package/dist/components/index.d.ts.map +1 -1
  11. package/dist/components/index.js +0 -5
  12. package/dist/components/index.js.map +1 -1
  13. package/dist/config/transform.file.d.ts +2 -1
  14. package/dist/config/transform.file.d.ts.map +1 -1
  15. package/dist/config/transform.file.js +2 -7
  16. package/dist/config/transform.file.js.map +1 -1
  17. package/dist/config/transform.style.js +1 -0
  18. package/dist/config/transform.style.js.map +1 -1
  19. package/dist/images/index.d.ts +2 -2
  20. package/dist/images/index.d.ts.map +1 -1
  21. package/dist/images/index.js +2 -2
  22. package/dist/images/index.js.map +1 -1
  23. package/dist/images/index.ts +2 -2
  24. package/dist/images/logo-odh-dark-theme.svg +18 -0
  25. package/dist/images/logo-odh-light-theme..svg +18 -0
  26. package/dist/images/logo-odh-light-theme.svg +18 -0
  27. package/dist/images/logo-odh-logo-light-theme.svg +18 -0
  28. package/dist/index.d.ts +0 -4
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -15
  31. package/dist/index.js.map +1 -1
  32. package/dist/jest.config.d.ts +1 -0
  33. package/dist/jest.config.js +3 -1
  34. package/dist/jest.config.js.map +1 -1
  35. package/dist/types/common.d.ts +0 -43
  36. package/dist/types/common.d.ts.map +1 -1
  37. package/dist/types/common.js +0 -1
  38. package/dist/types/common.js.map +1 -1
  39. package/dist/utilities/__tests__/markdown.spec.d.ts +2 -0
  40. package/dist/utilities/__tests__/markdown.spec.d.ts.map +1 -0
  41. package/dist/utilities/__tests__/markdown.spec.js +17 -0
  42. package/dist/utilities/__tests__/markdown.spec.js.map +1 -0
  43. package/dist/utilities/__tests__/string.spec.d.ts +2 -0
  44. package/dist/utilities/__tests__/string.spec.d.ts.map +1 -0
  45. package/dist/utilities/__tests__/string.spec.js +51 -0
  46. package/dist/utilities/__tests__/string.spec.js.map +1 -0
  47. package/dist/utilities/__tests__/time.spec.d.ts +2 -0
  48. package/dist/utilities/__tests__/time.spec.d.ts.map +1 -0
  49. package/dist/utilities/__tests__/time.spec.js +61 -0
  50. package/dist/utilities/__tests__/time.spec.js.map +1 -0
  51. package/dist/utilities/index.d.ts +0 -5
  52. package/dist/utilities/index.d.ts.map +1 -1
  53. package/dist/utilities/index.js +0 -5
  54. package/dist/utilities/index.js.map +1 -1
  55. package/dist/utilities/utils.d.ts +0 -23
  56. package/dist/utilities/utils.d.ts.map +1 -1
  57. package/dist/utilities/utils.js +0 -93
  58. package/dist/utilities/utils.js.map +1 -1
  59. package/package.json +25 -36
  60. package/LICENSE +0 -201
  61. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts +0 -8
  62. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts.map +0 -1
  63. package/dist/__tests__/__mocks__/mockGenericResponse.js +0 -6
  64. package/dist/__tests__/__mocks__/mockGenericResponse.js.map +0 -1
  65. package/dist/__tests__/__mocks__/styleMock.d.ts +0 -2
  66. package/dist/__tests__/__mocks__/styleMock.d.ts.map +0 -1
  67. package/dist/__tests__/__mocks__/styleMock.js +0 -3
  68. package/dist/__tests__/__mocks__/styleMock.js.map +0 -1
  69. package/dist/__tests__/unit/testUtils/hooks.d.ts +0 -80
  70. package/dist/__tests__/unit/testUtils/hooks.d.ts.map +0 -1
  71. package/dist/__tests__/unit/testUtils/hooks.js +0 -126
  72. package/dist/__tests__/unit/testUtils/hooks.js.map +0 -1
  73. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts +0 -2
  74. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts.map +0 -1
  75. package/dist/__tests__/unit/testUtils/hooks.spec.js +0 -192
  76. package/dist/__tests__/unit/testUtils/hooks.spec.js.map +0 -1
  77. package/dist/api/__tests__/errorUtils.spec.d.ts +0 -2
  78. package/dist/api/__tests__/errorUtils.spec.d.ts.map +0 -1
  79. package/dist/api/__tests__/errorUtils.spec.js +0 -27
  80. package/dist/api/__tests__/errorUtils.spec.js.map +0 -1
  81. package/dist/api/apiUtils.d.ts +0 -16
  82. package/dist/api/apiUtils.d.ts.map +0 -1
  83. package/dist/api/apiUtils.js +0 -96
  84. package/dist/api/apiUtils.js.map +0 -1
  85. package/dist/api/const.d.ts +0 -3
  86. package/dist/api/const.d.ts.map +0 -1
  87. package/dist/api/const.js +0 -4
  88. package/dist/api/const.js.map +0 -1
  89. package/dist/api/errorUtils.d.ts +0 -2
  90. package/dist/api/errorUtils.d.ts.map +0 -1
  91. package/dist/api/errorUtils.js +0 -22
  92. package/dist/api/errorUtils.js.map +0 -1
  93. package/dist/api/index.d.ts +0 -7
  94. package/dist/api/index.d.ts.map +0 -1
  95. package/dist/api/index.js +0 -8
  96. package/dist/api/index.js.map +0 -1
  97. package/dist/api/k8s.d.ts +0 -10
  98. package/dist/api/k8s.d.ts.map +0 -1
  99. package/dist/api/k8s.js +0 -16
  100. package/dist/api/k8s.js.map +0 -1
  101. package/dist/api/types.d.ts +0 -19
  102. package/dist/api/types.d.ts.map +0 -1
  103. package/dist/api/types.js +0 -2
  104. package/dist/api/types.js.map +0 -1
  105. package/dist/api/useAPIState.d.ts +0 -3
  106. package/dist/api/useAPIState.d.ts.map +0 -1
  107. package/dist/api/useAPIState.js +0 -22
  108. package/dist/api/useAPIState.js.map +0 -1
  109. package/dist/components/NavBar.d.ts +0 -8
  110. package/dist/components/NavBar.d.ts.map +0 -1
  111. package/dist/components/NavBar.js +0 -53
  112. package/dist/components/NavBar.js.map +0 -1
  113. package/dist/components/NavSidebar.d.ts +0 -8
  114. package/dist/components/NavSidebar.d.ts.map +0 -1
  115. package/dist/components/NavSidebar.js +0 -25
  116. package/dist/components/NavSidebar.js.map +0 -1
  117. package/dist/components/ToastNotification.d.ts +0 -8
  118. package/dist/components/ToastNotification.d.ts.map +0 -1
  119. package/dist/components/ToastNotification.js +0 -29
  120. package/dist/components/ToastNotification.js.map +0 -1
  121. package/dist/components/ToastNotifications.d.ts +0 -4
  122. package/dist/components/ToastNotifications.d.ts.map +0 -1
  123. package/dist/components/ToastNotifications.js +0 -10
  124. package/dist/components/ToastNotifications.js.map +0 -1
  125. package/dist/components/__tests__/NavBar.test.d.ts +0 -2
  126. package/dist/components/__tests__/NavBar.test.d.ts.map +0 -1
  127. package/dist/components/__tests__/NavBar.test.js +0 -65
  128. package/dist/components/__tests__/NavBar.test.js.map +0 -1
  129. package/dist/components/browserStorage/BrowserStorageContext.d.ts +0 -25
  130. package/dist/components/browserStorage/BrowserStorageContext.d.ts.map +0 -1
  131. package/dist/components/browserStorage/BrowserStorageContext.js +0 -97
  132. package/dist/components/browserStorage/BrowserStorageContext.js.map +0 -1
  133. package/dist/components/browserStorage/index.d.ts +0 -2
  134. package/dist/components/browserStorage/index.d.ts.map +0 -1
  135. package/dist/components/browserStorage/index.js +0 -2
  136. package/dist/components/browserStorage/index.js.map +0 -1
  137. package/dist/components/table/__tests__/useCheckboxTable.spec.d.ts +0 -2
  138. package/dist/components/table/__tests__/useCheckboxTable.spec.d.ts.map +0 -1
  139. package/dist/components/table/__tests__/useCheckboxTable.spec.js +0 -45
  140. package/dist/components/table/__tests__/useCheckboxTable.spec.js.map +0 -1
  141. package/dist/config/stylePaths.d.ts +0 -2
  142. package/dist/config/stylePaths.d.ts.map +0 -1
  143. package/dist/config/stylePaths.js +0 -17
  144. package/dist/config/stylePaths.js.map +0 -1
  145. package/dist/context/ModularArchContext.d.ts +0 -20
  146. package/dist/context/ModularArchContext.d.ts.map +0 -1
  147. package/dist/context/ModularArchContext.js +0 -68
  148. package/dist/context/ModularArchContext.js.map +0 -1
  149. package/dist/context/NotificationContext.d.ts +0 -15
  150. package/dist/context/NotificationContext.d.ts.map +0 -1
  151. package/dist/context/NotificationContext.js +0 -43
  152. package/dist/context/NotificationContext.js.map +0 -1
  153. package/dist/context/ThemeContext.d.ts +0 -13
  154. package/dist/context/ThemeContext.d.ts.map +0 -1
  155. package/dist/context/ThemeContext.js +0 -23
  156. package/dist/context/ThemeContext.js.map +0 -1
  157. package/dist/context/__tests__/ModularArchContext.test.d.ts +0 -2
  158. package/dist/context/__tests__/ModularArchContext.test.d.ts.map +0 -1
  159. package/dist/context/__tests__/ModularArchContext.test.js +0 -331
  160. package/dist/context/__tests__/ModularArchContext.test.js.map +0 -1
  161. package/dist/context/index.d.ts +0 -4
  162. package/dist/context/index.d.ts.map +0 -1
  163. package/dist/context/index.js +0 -4
  164. package/dist/context/index.js.map +0 -1
  165. package/dist/hooks/__tests__/useModularArchContext.test.d.ts +0 -2
  166. package/dist/hooks/__tests__/useModularArchContext.test.d.ts.map +0 -1
  167. package/dist/hooks/__tests__/useModularArchContext.test.js +0 -39
  168. package/dist/hooks/__tests__/useModularArchContext.test.js.map +0 -1
  169. package/dist/hooks/__tests__/useNamespaces.test.d.ts +0 -2
  170. package/dist/hooks/__tests__/useNamespaces.test.d.ts.map +0 -1
  171. package/dist/hooks/__tests__/useNamespaces.test.js +0 -62
  172. package/dist/hooks/__tests__/useNamespaces.test.js.map +0 -1
  173. package/dist/hooks/index.d.ts +0 -9
  174. package/dist/hooks/index.d.ts.map +0 -1
  175. package/dist/hooks/index.js +0 -9
  176. package/dist/hooks/index.js.map +0 -1
  177. package/dist/hooks/useModularArchContext.d.ts +0 -5
  178. package/dist/hooks/useModularArchContext.d.ts.map +0 -1
  179. package/dist/hooks/useModularArchContext.js +0 -11
  180. package/dist/hooks/useModularArchContext.js.map +0 -1
  181. package/dist/hooks/useNamespaceSelector.d.ts +0 -10
  182. package/dist/hooks/useNamespaceSelector.d.ts.map +0 -1
  183. package/dist/hooks/useNamespaceSelector.js +0 -13
  184. package/dist/hooks/useNamespaceSelector.js.map +0 -1
  185. package/dist/hooks/useNamespaces.d.ts +0 -6
  186. package/dist/hooks/useNamespaces.d.ts.map +0 -1
  187. package/dist/hooks/useNamespaces.js +0 -34
  188. package/dist/hooks/useNamespaces.js.map +0 -1
  189. package/dist/hooks/useNotification.d.ts +0 -18
  190. package/dist/hooks/useNotification.d.ts.map +0 -1
  191. package/dist/hooks/useNotification.js +0 -75
  192. package/dist/hooks/useNotification.js.map +0 -1
  193. package/dist/hooks/useQueryParamNamespaces.d.ts +0 -2
  194. package/dist/hooks/useQueryParamNamespaces.d.ts.map +0 -1
  195. package/dist/hooks/useQueryParamNamespaces.js +0 -9
  196. package/dist/hooks/useQueryParamNamespaces.js.map +0 -1
  197. package/dist/hooks/useSettings.d.ts +0 -9
  198. package/dist/hooks/useSettings.d.ts.map +0 -1
  199. package/dist/hooks/useSettings.js +0 -72
  200. package/dist/hooks/useSettings.js.map +0 -1
  201. package/dist/hooks/useThemeContext.d.ts +0 -6
  202. package/dist/hooks/useThemeContext.d.ts.map +0 -1
  203. package/dist/hooks/useThemeContext.js +0 -10
  204. package/dist/hooks/useThemeContext.js.map +0 -1
  205. package/dist/hooks/useTimeBasedRefresh.d.ts +0 -4
  206. package/dist/hooks/useTimeBasedRefresh.d.ts.map +0 -1
  207. package/dist/hooks/useTimeBasedRefresh.js +0 -32
  208. package/dist/hooks/useTimeBasedRefresh.js.map +0 -1
  209. package/dist/images/logo-dark-theme.svg +0 -43
  210. package/dist/images/logo-light-theme.svg +0 -43
  211. package/dist/style/MUI-theme.scss +0 -995
  212. package/dist/style/index.d.ts +0 -2
  213. package/dist/style/index.d.ts.map +0 -1
  214. package/dist/style/index.js +0 -6
  215. package/dist/style/index.js.map +0 -1
  216. package/dist/style/index.ts +0 -6
  217. package/dist/utilities/appUtils.d.ts +0 -2
  218. package/dist/utilities/appUtils.d.ts.map +0 -1
  219. package/dist/utilities/appUtils.js +0 -4
  220. package/dist/utilities/appUtils.js.map +0 -1
  221. package/dist/utilities/const.d.ts +0 -13
  222. package/dist/utilities/const.d.ts.map +0 -1
  223. package/dist/utilities/const.js +0 -20
  224. package/dist/utilities/const.js.map +0 -1
  225. package/dist/utilities/useFetchState.d.ts +0 -92
  226. package/dist/utilities/useFetchState.d.ts.map +0 -1
  227. package/dist/utilities/useFetchState.js +0 -153
  228. package/dist/utilities/useFetchState.js.map +0 -1
  229. package/dist/utilities/useGenericObjectState.d.ts +0 -9
  230. package/dist/utilities/useGenericObjectState.d.ts.map +0 -1
  231. package/dist/utilities/useGenericObjectState.js +0 -14
  232. package/dist/utilities/useGenericObjectState.js.map +0 -1
  233. package/dist/utilities/useMakeFetchObject.d.ts +0 -4
  234. package/dist/utilities/useMakeFetchObject.d.ts.map +0 -1
  235. package/dist/utilities/useMakeFetchObject.js +0 -6
  236. package/dist/utilities/useMakeFetchObject.js.map +0 -1
  237. package/images/Icon-Layered_A_Black-RGB.svg +0 -66
  238. package/images/Icon-Storage-A-Black-RGB.svg +0 -3
  239. package/images/Icon-Sys_admin-A-Black-RGB.svg +0 -8
  240. package/images/UI_icon-Branch-RGB.svg +0 -1
  241. package/images/UI_icon-Connected-RGB.svg +0 -1
  242. package/images/UI_icon-Cubes-RGB.svg +0 -1
  243. package/images/UI_icon-Double_arrow_right-RGB.svg +0 -1
  244. package/images/UI_icon-Folder-RGB.svg +0 -1
  245. package/images/UI_icon-Notebook-Images-RGB.svg +0 -9
  246. package/images/UI_icon-Server-RGB.svg +0 -1
  247. package/images/UI_icon-Server_upload-RGB.svg +0 -1
  248. package/images/UI_icon-Shared_workspace-RGB.svg +0 -8
  249. package/images/UI_icon-Storage-RGB.svg +0 -1
  250. package/images/UI_icon-User-RGB.svg +0 -1
  251. package/images/UI_icon-Wrench-RGB.svg +0 -1
  252. package/images/empty-state-cluster-storage.svg +0 -472
  253. package/images/empty-state-data-connections.svg +0 -299
  254. package/images/empty-state-model-registries.svg +0 -9
  255. package/images/empty-state-model-serving.svg +0 -249
  256. package/images/empty-state-notebooks.svg +0 -392
  257. package/images/empty-state-pipelines.svg +0 -393
  258. package/images/empty-state-project-overview.svg +0 -482
  259. package/images/empty-state-projects-color.svg +0 -275
  260. package/images/empty-state-storage-classes.svg +0 -56
  261. package/images/icons/AcceleratorProfileIcon.ts +0 -13
  262. package/images/icons/ArtifactIcon.ts +0 -13
  263. package/images/icons/BuildIcon.ts +0 -13
  264. package/images/icons/ClusterSettingsIcon.ts +0 -13
  265. package/images/icons/ConfigurationIcon.ts +0 -13
  266. package/images/icons/CreateAndTrainIcon.ts +0 -13
  267. package/images/icons/DataConnectionIcon.ts +0 -13
  268. package/images/icons/DeployedModelIcon.ts +0 -13
  269. package/images/icons/DistributedWorkloadIcon.ts +0 -13
  270. package/images/icons/EnabledApplicationsIcon.ts +0 -13
  271. package/images/icons/ExperimentIcon.ts +0 -13
  272. package/images/icons/ExploreApplicationsIcon.ts +0 -13
  273. package/images/icons/GroupIcon.ts +0 -13
  274. package/images/icons/ModelIcon.ts +0 -13
  275. package/images/icons/ModelRegistryIcon.ts +0 -13
  276. package/images/icons/ModelServerIcon.ts +0 -13
  277. package/images/icons/MultiModelIcon.ts +0 -13
  278. package/images/icons/NotebookIcon.ts +0 -13
  279. package/images/icons/NotebookImageIcon.ts +0 -13
  280. package/images/icons/PermissionsIcon.ts +0 -13
  281. package/images/icons/PipelineExecutionIcon.ts +0 -13
  282. package/images/icons/PipelineIcon.ts +0 -13
  283. package/images/icons/PipelineRunIcon.ts +0 -13
  284. package/images/icons/ProjectIcon.ts +0 -13
  285. package/images/icons/RegisteredModelIcon.ts +0 -13
  286. package/images/icons/ResourcesIcon.ts +0 -13
  287. package/images/icons/ServingRuntimeIcon.ts +0 -13
  288. package/images/icons/SingleModelIcon.ts +0 -13
  289. package/images/icons/StorageClassIcon.ts +0 -13
  290. package/images/icons/StorageIcon.ts +0 -13
  291. package/images/icons/UserIcon.ts +0 -13
  292. package/images/icons/index.ts +0 -31
  293. package/images/index.ts +0 -62
  294. package/images/logo-dark-theme.svg +0 -43
  295. package/images/logo-light-theme.svg +0 -43
  296. package/images/no-models-model-registry.svg +0 -180
  297. package/images/no-versions-model-registry.svg +0 -149
  298. package/style/MUI-theme.scss +0 -995
  299. package/style/index.ts +0 -6
@@ -1,53 +0,0 @@
1
- import React from 'react';
2
- import { Brand, Dropdown, DropdownItem, DropdownList, Masthead, MastheadBrand, MastheadContent, MastheadLogo, MastheadMain, MastheadToggle, MenuToggle, PageToggleButton, Toolbar, ToolbarContent, ToolbarGroup, ToolbarItem, } from '@patternfly/react-core';
3
- import { SimpleSelect } from '@patternfly/react-templates';
4
- import { BarsIcon } from '@patternfly/react-icons';
5
- import { useNamespaceSelector } from '../hooks/useNamespaceSelector';
6
- import { useModularArchContext } from '../hooks/useModularArchContext';
7
- import logoDarkTheme from '../images/logo-dark-theme.svg';
8
- import { useThemeContext } from '../hooks/useThemeContext';
9
- const NavBar = ({ username, onLogout }) => {
10
- const { namespaces, preferredNamespace, updatePreferredNamespace } = useNamespaceSelector();
11
- const { config } = useModularArchContext();
12
- const { isMUITheme } = useThemeContext();
13
- const [userMenuOpen, setUserMenuOpen] = React.useState(false);
14
- // Check if mandatory namespace is configured
15
- const isMandatoryNamespace = Boolean(config.mandatoryNamespace);
16
- const options = namespaces.map((namespace) => ({
17
- content: namespace.name,
18
- value: namespace.name,
19
- selected: namespace.name === preferredNamespace?.name,
20
- }));
21
- const handleLogout = () => {
22
- setUserMenuOpen(false);
23
- onLogout();
24
- };
25
- const userMenuItems = [
26
- React.createElement(DropdownItem, { key: "logout", onClick: handleLogout }, "Log out"),
27
- ];
28
- return (React.createElement(Masthead, null,
29
- React.createElement(MastheadMain, null,
30
- React.createElement(MastheadToggle, null,
31
- React.createElement(PageToggleButton, { id: "page-nav-toggle", variant: "plain", "aria-label": "Dashboard navigation" },
32
- React.createElement(BarsIcon, null))),
33
- !isMUITheme ? (React.createElement(MastheadBrand, null,
34
- React.createElement(MastheadLogo, { component: "a" },
35
- React.createElement(Brand, { src: logoDarkTheme, alt: "Kubeflow", heights: { default: '36px' } })))) : null),
36
- React.createElement(MastheadContent, null,
37
- React.createElement(Toolbar, null,
38
- React.createElement(ToolbarContent, null,
39
- React.createElement(ToolbarGroup, { variant: "action-group-plain", align: { default: 'alignStart' } },
40
- React.createElement(ToolbarItem, { className: "kubeflow-u-namespace-select" },
41
- React.createElement(SimpleSelect, { initialOptions: options, isDisabled: isMandatoryNamespace, onSelect: (_ev, selection) => {
42
- // Only allow selection if not mandatory namespace
43
- if (!isMandatoryNamespace) {
44
- updatePreferredNamespace({ name: String(selection) });
45
- }
46
- } }))),
47
- username && (React.createElement(ToolbarGroup, { variant: "action-group-plain", align: { default: 'alignEnd' } },
48
- React.createElement(ToolbarItem, null,
49
- React.createElement(Dropdown, { popperProps: { position: 'right' }, onOpenChange: (isOpen) => setUserMenuOpen(isOpen), toggle: (toggleRef) => (React.createElement(MenuToggle, { "aria-label": "User menu", id: "user-menu-toggle", "data-testid": "user-menu-toggle-button", ref: toggleRef, onClick: () => setUserMenuOpen(!userMenuOpen), isExpanded: userMenuOpen }, username)), isOpen: userMenuOpen },
50
- React.createElement(DropdownList, null, userMenuItems))))))))));
51
- };
52
- export default NavBar;
53
- //# sourceMappingURL=NavBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavBar.js","sourceRoot":"","sources":["../../components/NavBar.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import * as React from 'react';
2
- import { NavDataItem } from '../types/common';
3
- export type NavSidebarProps = {
4
- navData: NavDataItem[];
5
- };
6
- declare const NavSidebar: React.FC<NavSidebarProps>;
7
- export default NavSidebar;
8
- //# sourceMappingURL=NavSidebar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavSidebar.d.ts","sourceRoot":"","sources":["../../components/NavSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EAA6C,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA+BxF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwBzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,25 +0,0 @@
1
- import * as React from 'react';
2
- import { NavLink } from 'react-router-dom';
3
- import { Brand, Nav, NavExpandable, NavItem, NavList, PageSidebar, PageSidebarBody, } from '@patternfly/react-core';
4
- import logoLightTheme from '../images/logo-light-theme.svg';
5
- import { isNavDataGroup } from '../types/common';
6
- import { useThemeContext } from '../hooks/useThemeContext';
7
- const NavHref = ({ item }) => (React.createElement(NavItem, { key: item.label, "data-id": item.label, itemId: item.label },
8
- React.createElement(NavLink, { to: item.path }, item.label)));
9
- const NavGroup = ({ item }) => {
10
- const { children } = item;
11
- const [expanded, setExpanded] = React.useState(false);
12
- return (React.createElement(NavExpandable, { "data-id": item.label, key: item.label, id: item.label, title: item.label, groupId: item.label, isExpanded: expanded, onExpand: (e, val) => setExpanded(val), "aria-label": item.label }, children.map((childItem) => (React.createElement(NavHref, { key: childItem.label, "data-id": childItem.label, item: childItem })))));
13
- };
14
- const NavSidebar = ({ navData }) => {
15
- const { isMUITheme } = useThemeContext();
16
- return (React.createElement(PageSidebar, null,
17
- React.createElement(PageSidebarBody, null,
18
- React.createElement(Nav, { id: "nav-primary-simple" },
19
- React.createElement(NavList, { id: "nav-list-simple" },
20
- isMUITheme ? (React.createElement(NavItem, null,
21
- React.createElement(Brand, { className: "kubeflow_brand", src: logoLightTheme, alt: "Kubeflow Logo" }))) : null,
22
- navData.map((item) => isNavDataGroup(item) ? (React.createElement(NavGroup, { key: item.label, item: item })) : (React.createElement(NavHref, { key: item.label, item: item }))))))));
23
- };
24
- export default NavSidebar;
25
- //# sourceMappingURL=NavSidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavSidebar.js","sourceRoot":"","sources":["../../components/NavSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,EACL,GAAG,EACH,aAAa,EACb,OAAO,EACP,OAAO,EACP,WAAW,EACX,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAA0C,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,GAAoC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC7D,oBAAC,OAAO,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,aAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK;IAC/D,oBAAC,OAAO,IAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAG,IAAI,CAAC,KAAK,CAAW,CACtC,CACX,CAAC;AAEF,MAAM,QAAQ,GAAqC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC9D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtD,OAAO,CACL,oBAAC,aAAa,eACH,IAAI,CAAC,KAAK,EACnB,GAAG,EAAE,IAAI,CAAC,KAAK,EACf,EAAE,EAAE,IAAI,CAAC,KAAK,EACd,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,IAAI,CAAC,KAAK,EACnB,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,gBAC1B,IAAI,CAAC,KAAK,IAErB,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAC3B,oBAAC,OAAO,IAAC,GAAG,EAAE,SAAS,CAAC,KAAK,aAAW,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAI,CAC7E,CAAC,CACY,CACjB,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,UAAU,GAA8B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC5D,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,OAAO,CACL,oBAAC,WAAW;QACV,oBAAC,eAAe;YACd,oBAAC,GAAG,IAAC,EAAE,EAAC,oBAAoB;gBAC1B,oBAAC,OAAO,IAAC,EAAE,EAAC,iBAAiB;oBAC1B,UAAU,CAAC,CAAC,CAAC,CACZ,oBAAC,OAAO;wBACN,oBAAC,KAAK,IAAC,SAAS,EAAC,gBAAgB,EAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAC,eAAe,GAAG,CACrE,CACX,CAAC,CAAC,CAAC,IAAI;oBACP,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACrB,oBAAC,QAAQ,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAI,CAC1C,CAAC,CAAC,CAAC,CACF,oBAAC,OAAO,IAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAI,CACzC,CACF,CACO,CACN,CACU,CACN,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { Notification } from '../types';
3
- interface ToastNotificationProps {
4
- notification: Notification;
5
- }
6
- declare const ToastNotification: React.FC<ToastNotificationProps>;
7
- export default ToastNotification;
8
- //# sourceMappingURL=ToastNotification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastNotification.d.ts","sourceRoot":"","sources":["../../components/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,UAAU,sBAAsB;IAC9B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmCvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,29 +0,0 @@
1
- import React from 'react';
2
- import { Alert, AlertActionCloseButton, AlertVariant } from '@patternfly/react-core';
3
- import { asEnumMember } from '../utilities/utils';
4
- import { useNotification } from '../hooks/useNotification';
5
- const TOAST_NOTIFICATION_TIMEOUT = 8 * 1000;
6
- const ToastNotification = ({ notification }) => {
7
- const notifications = useNotification();
8
- const [timedOut, setTimedOut] = React.useState(false);
9
- const [mouseOver, setMouseOver] = React.useState(false);
10
- React.useEffect(() => {
11
- const handle = setTimeout(() => {
12
- setTimedOut(true);
13
- }, TOAST_NOTIFICATION_TIMEOUT);
14
- return () => {
15
- clearTimeout(handle);
16
- };
17
- }, [setTimedOut]);
18
- React.useEffect(() => {
19
- if (!notification.hidden && timedOut && !mouseOver) {
20
- notifications.remove(notification.id);
21
- }
22
- }, [mouseOver, notification, timedOut, notifications]);
23
- if (notification.hidden) {
24
- return null;
25
- }
26
- return (React.createElement(Alert, { variant: asEnumMember(notification.status, AlertVariant) ?? undefined, title: notification.title, actionClose: React.createElement(AlertActionCloseButton, { onClose: () => notifications.remove(notification.id) }), onMouseEnter: () => setMouseOver(true), onMouseLeave: () => setMouseOver(false) }, notification.message));
27
- };
28
- export default ToastNotification;
29
- //# sourceMappingURL=ToastNotification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastNotification.js","sourceRoot":"","sources":["../../components/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC;AAM5C,MAAM,iBAAiB,GAAqC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IAC/E,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;IACxC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC,EAAE,0BAA0B,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACnD,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAEvD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oBAAC,KAAK,IACJ,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,SAAS,EACrE,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,WAAW,EAAE,oBAAC,sBAAsB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,GAAI,EAC7F,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACtC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAEtC,YAAY,CAAC,OAAO,CACf,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- declare const ToastNotifications: React.FC;
3
- export default ToastNotifications;
4
- //# sourceMappingURL=ToastNotifications.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastNotifications.d.ts","sourceRoot":"","sources":["../../components/ToastNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAK1C,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAU/B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,10 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { AlertGroup } from '@patternfly/react-core';
3
- import { NotificationContext } from '../context/NotificationContext';
4
- import ToastNotification from './ToastNotification';
5
- const ToastNotifications = () => {
6
- const { notifications } = useContext(NotificationContext);
7
- return (React.createElement(AlertGroup, { isToast: true, isLiveRegion: true }, notifications.map((notification) => (React.createElement(ToastNotification, { notification: notification, key: notification.id })))));
8
- };
9
- export default ToastNotifications;
10
- //# sourceMappingURL=ToastNotifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastNotifications.js","sourceRoot":"","sources":["../../components/ToastNotifications.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,kBAAkB,GAAa,GAAG,EAAE;IACxC,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAE1D,OAAO,CACL,oBAAC,UAAU,IAAC,OAAO,QAAC,YAAY,UAC7B,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CACnC,oBAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAI,CACxE,CAAC,CACS,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=NavBar.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavBar.test.d.ts","sourceRoot":"","sources":["../../../components/__tests__/NavBar.test.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
@@ -1,65 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- import React from 'react';
3
- import { render, screen } from '@testing-library/react';
4
- import * as useFetchStateModule from '../../utilities/useFetchState';
5
- import { ModularArchContextProvider } from '../../context/ModularArchContext';
6
- import { DeploymentMode } from '../../utilities';
7
- import NavBar from '../NavBar';
8
- // Mock the utilities
9
- jest.mock('~/utilities/useFetchState');
10
- jest.mock('~/api/k8s', () => ({
11
- getNamespaces: jest.fn(() => jest.fn(() => Promise.resolve([]))),
12
- }));
13
- const mockUseFetchState = useFetchStateModule.useFetchState;
14
- const createMockConfig = (mandatoryNamespace, deploymentMode = DeploymentMode.Standalone) => ({
15
- deploymentMode,
16
- URL_PREFIX: 'test',
17
- BFF_API_VERSION: 'v1',
18
- ...(mandatoryNamespace && { mandatoryNamespace }),
19
- });
20
- const createWrapper = (config) => {
21
- const Wrapper = ({ children }) => (React.createElement(ModularArchContextProvider, { config: config }, children));
22
- Wrapper.displayName = 'TestWrapper';
23
- return Wrapper;
24
- };
25
- describe('NavBar mandatory namespace functionality', () => {
26
- beforeEach(() => {
27
- jest.clearAllMocks();
28
- // Mock fetch for script loading
29
- global.fetch = jest.fn().mockResolvedValue({ ok: false });
30
- });
31
- afterEach(() => {
32
- jest.restoreAllMocks();
33
- // Clean up fetch stub explicitly
34
- // @ts-expect-error – fetch might be undefined in node
35
- delete global.fetch;
36
- });
37
- it('should disable namespace selection when mandatory namespace is set', async () => {
38
- const mandatoryNamespace = 'mandatory-namespace';
39
- const config = createMockConfig(mandatoryNamespace);
40
- const Wrapper = createWrapper(config);
41
- // Mock useFetchState to return only the mandatory namespace
42
- mockUseFetchState.mockReturnValue([[{ name: mandatoryNamespace }], true, undefined, jest.fn()]);
43
- render(React.createElement(NavBar, { onLogout: jest.fn() }), { wrapper: Wrapper });
44
- const namespaceButton = await screen.findByText(mandatoryNamespace);
45
- expect(namespaceButton).toBeInTheDocument();
46
- // The MenuToggle button should be disabled due to mandatory namespace
47
- const menuToggle = namespaceButton.closest('button');
48
- expect(menuToggle).toBeDisabled();
49
- });
50
- it('should allow namespace selection when no mandatory namespace is set', async () => {
51
- const config = createMockConfig();
52
- const Wrapper = createWrapper(config);
53
- const mockNamespaces = [{ name: 'namespace-1' }, { name: 'namespace-2' }];
54
- // Mock useFetchState to return multiple namespaces
55
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
56
- render(React.createElement(NavBar, { onLogout: jest.fn() }), { wrapper: Wrapper });
57
- // Check that the namespace selector is present and enabled
58
- const namespaceButton = screen.getByText('namespace-1');
59
- expect(namespaceButton).toBeInTheDocument();
60
- // The MenuToggle button should be enabled (not disabled)
61
- const menuToggle = namespaceButton.closest('button');
62
- expect(menuToggle).not.toBeDisabled();
63
- });
64
- });
65
- //# sourceMappingURL=NavBar.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavBar.test.js","sourceRoot":"","sources":["../../../components/__tests__/NavBar.test.tsx"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import * as React from 'react';
2
- export type BrowserStorageContextType = {
3
- /** Based on parseJSON it can be any jsonify-able item */
4
- getValue: (storageKey: string, parseJSON: boolean, isSessionStorage?: boolean) => unknown;
5
- /** Returns a boolean if it was able to json-ify it. */
6
- setJSONValue: (storageKey: string, value: unknown, isSessionStorage?: boolean) => boolean;
7
- setStringValue: (storageKey: string, value: string, isSessionStorage?: boolean) => void;
8
- };
9
- /**
10
- * @returns {boolean} if it was successful, false if it was not
11
- */
12
- export type SetBrowserStorageHook<T> = (value: T) => boolean;
13
- /**
14
- * useBrowserStorage will handle all the effort behind managing localStorage or sessionStorage.
15
- */
16
- export declare const useBrowserStorage: <T>(storageKey: string, defaultValue: T, jsonify?: boolean, isSessionStorage?: boolean) => [T, SetBrowserStorageHook<T>];
17
- type BrowserStorageContextProviderProps = {
18
- children: React.ReactNode;
19
- };
20
- /**
21
- * @see useBrowserStorage
22
- */
23
- export declare const BrowserStorageContextProvider: React.FC<BrowserStorageContextProviderProps>;
24
- export {};
25
- //# sourceMappingURL=BrowserStorageContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrowserStorageContext.d.ts","sourceRoot":"","sources":["../../../components/browserStorage/BrowserStorageContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,yBAAyB,GAAG;IACtC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1F,uDAAuD;IACvD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1F,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzF,CAAC;AAQF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,YAAY,MAAM,EAClB,cAAc,CAAC,EACf,iBAAc,EACd,0BAAwB,KACvB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAwB9B,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAUF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA+EtF,CAAC"}
@@ -1,97 +0,0 @@
1
- import * as React from 'react';
2
- import { useDeepCompareMemoize } from '../../utilities/useDeepCompareMemoize';
3
- import { useEventListener } from '../../utilities/useEventListener';
4
- const BrowserStorageContext = React.createContext({
5
- getValue: () => null,
6
- setJSONValue: () => false,
7
- setStringValue: () => undefined,
8
- });
9
- /**
10
- * useBrowserStorage will handle all the effort behind managing localStorage or sessionStorage.
11
- */
12
- export const useBrowserStorage = (storageKey, defaultValue, jsonify = true, isSessionStorage = false) => {
13
- const { getValue, setJSONValue, setStringValue } = React.useContext(BrowserStorageContext);
14
- const setValue = React.useCallback((value) => {
15
- if (jsonify) {
16
- return setJSONValue(storageKey, value, isSessionStorage);
17
- }
18
- if (typeof value === 'string') {
19
- setStringValue(storageKey, value, isSessionStorage);
20
- return true;
21
- }
22
- /* eslint-disable-next-line no-console */
23
- console.error('Was not a string value provided, cannot stringify');
24
- return false;
25
- }, [isSessionStorage, jsonify, setJSONValue, setStringValue, storageKey]);
26
- const value = useDeepCompareMemoize(
27
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
28
- getValue(storageKey, jsonify, isSessionStorage) ?? defaultValue);
29
- return [value, setValue];
30
- };
31
- const getStorage = (isSessionStorage) => {
32
- if (isSessionStorage) {
33
- return sessionStorage;
34
- }
35
- return localStorage;
36
- };
37
- /**
38
- * @see useBrowserStorage
39
- */
40
- export const BrowserStorageContextProvider = ({ children, }) => {
41
- const [values, setValues] = React.useState({});
42
- /**
43
- * Only listen to other storage changes (windows/tabs) -- which are localStorage.
44
- * Session storage does not have cross instance storages.
45
- * See MDN for more: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
46
- */
47
- useEventListener(window, 'storage', () => {
48
- // Another browser tab has updated storage, sync up the data
49
- const keys = Object.keys(values);
50
- setValues(keys.reduce((acc, key) => {
51
- const value = localStorage.getItem(key);
52
- return { ...acc, [key]: value };
53
- }, {}));
54
- });
55
- const getValue = React.useCallback((key, parseJSON, isSessionStorage = false) => {
56
- const value = getStorage(isSessionStorage).getItem(key);
57
- if (value === null) {
58
- return value;
59
- }
60
- if (parseJSON) {
61
- try {
62
- return JSON.parse(value);
63
- }
64
- catch {
65
- /* eslint-disable-next-line no-console */
66
- console.warn(`Failed to parse storage value "${key}"`);
67
- return null;
68
- }
69
- }
70
- else {
71
- return value;
72
- }
73
- }, []);
74
- const setJSONValue = React.useCallback((storageKey, value, isSessionStorage = false) => {
75
- try {
76
- const storageValue = JSON.stringify(value);
77
- getStorage(isSessionStorage).setItem(storageKey, storageValue);
78
- setValues((oldValues) => ({ ...oldValues, [storageKey]: storageValue }));
79
- return true;
80
- }
81
- catch {
82
- /* eslint-disable-next-line no-console */
83
- console.warn('Could not store a value because it was requested to be stringified but was an invalid value for stringification.');
84
- return false;
85
- }
86
- }, []);
87
- const setStringValue = React.useCallback((storageKey, value, isSessionStorage = false) => {
88
- getStorage(isSessionStorage).setItem(storageKey, value);
89
- setValues((oldValues) => ({ ...oldValues, [storageKey]: value }));
90
- }, []);
91
- const contextValue = React.useMemo(() => ({ getValue, setJSONValue, setStringValue }),
92
- // Also trigger a context update if `values` changes.
93
- // eslint-disable-next-line react-hooks/exhaustive-deps
94
- [getValue, setJSONValue, setStringValue, values]);
95
- return (React.createElement(BrowserStorageContext.Provider, { value: contextValue }, children));
96
- };
97
- //# sourceMappingURL=BrowserStorageContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrowserStorageContext.js","sourceRoot":"","sources":["../../../components/browserStorage/BrowserStorageContext.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { useBrowserStorage, BrowserStorageContextProvider } from './BrowserStorageContext';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/browserStorage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { useBrowserStorage, BrowserStorageContextProvider } from './BrowserStorageContext';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/browserStorage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=useCheckboxTable.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCheckboxTable.spec.d.ts","sourceRoot":"","sources":["../../../../components/table/__tests__/useCheckboxTable.spec.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { act } from 'react';
2
- import { testHook } from '../../../__tests__/unit/testUtils/hooks';
3
- import { useCheckboxTable } from '../../../components/table';
4
- describe('useCheckboxTable', () => {
5
- it('should select/unselect all', () => {
6
- const renderResult = testHook(useCheckboxTable)(['a', 'b', 'c']);
7
- act(() => {
8
- renderResult.result.current.tableProps.selectAll.onSelect(true);
9
- });
10
- expect(renderResult.result.current.selections).toStrictEqual(['a', 'b', 'c']);
11
- expect(renderResult.result.current.tableProps.selectAll.selected).toBe(true);
12
- act(() => {
13
- renderResult.result.current.tableProps.selectAll.onSelect(false);
14
- });
15
- expect(renderResult.result.current.selections).toStrictEqual([]);
16
- expect(renderResult.result.current.tableProps.selectAll.selected).toBe(false);
17
- });
18
- it('should select/unselect ids', () => {
19
- const renderResult = testHook(useCheckboxTable)(['a', 'b', 'c']);
20
- act(() => {
21
- renderResult.result.current.toggleSelection('a');
22
- renderResult.result.current.toggleSelection('b');
23
- });
24
- expect(renderResult.result.current.selections).toStrictEqual(['a', 'b']);
25
- expect(renderResult.result.current.isSelected('a')).toBe(true);
26
- expect(renderResult.result.current.isSelected('b')).toBe(true);
27
- expect(renderResult.result.current.isSelected('c')).toBe(false);
28
- act(() => {
29
- renderResult.result.current.toggleSelection('a');
30
- });
31
- expect(renderResult.result.current.selections).toStrictEqual(['b']);
32
- expect(renderResult.result.current.isSelected('a')).toBe(false);
33
- expect(renderResult.result.current.isSelected('b')).toBe(true);
34
- expect(renderResult.result.current.isSelected('c')).toBe(false);
35
- });
36
- it('should remove selected ids that no longer exist', () => {
37
- const renderResult = testHook(useCheckboxTable)(['a', 'b', 'c']);
38
- act(() => {
39
- renderResult.result.current.tableProps.selectAll.onSelect(true);
40
- });
41
- renderResult.rerender(['c']);
42
- expect(renderResult.result.current.selections).toStrictEqual(['c']);
43
- });
44
- });
45
- //# sourceMappingURL=useCheckboxTable.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCheckboxTable.spec.js","sourceRoot":"","sources":["../../../../components/table/__tests__/useCheckboxTable.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export let stylePaths: string[];
2
- //# sourceMappingURL=stylePaths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylePaths.d.ts","sourceRoot":"","sources":["../../config/stylePaths.js"],"names":[],"mappings":""}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- const path = require('path');
3
- const relativeDir = path.resolve(__dirname, '..');
4
- module.exports = {
5
- stylePaths: [
6
- path.resolve(relativeDir, 'src'),
7
- path.resolve(relativeDir, 'node_modules/patternfly'),
8
- path.resolve(relativeDir, 'node_modules/@patternfly/patternfly'),
9
- path.resolve(relativeDir, 'node_modules/@patternfly/react-styles/css'),
10
- path.resolve(relativeDir, 'node_modules/@patternfly/react-core/dist/styles/base.css'),
11
- path.resolve(relativeDir, 'node_modules/@patternfly/react-core/dist/esm/@patternfly/patternfly'),
12
- path.resolve(relativeDir, 'node_modules/@patternfly/react-core/node_modules/@patternfly/react-styles/css'),
13
- path.resolve(relativeDir, 'node_modules/@patternfly/react-table/node_modules/@patternfly/react-styles/css'),
14
- path.resolve(relativeDir, 'node_modules/@patternfly/react-inline-edit-extension/node_modules/@patternfly/react-styles/css')
15
- ]
16
- };
17
- //# sourceMappingURL=stylePaths.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylePaths.js","sourceRoot":"","sources":["../../config/stylePaths.js"],"names":[],"mappings":";AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClD,MAAM,CAAC,OAAO,GAAG;IACf,UAAU,EAAE;QACV,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,yBAAyB,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qCAAqC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,2CAA2C,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,0DAA0D,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qEAAqE,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+EAA+E,CAAC;QAC1G,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gFAAgF,CAAC;QAC3G,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gGAAgG,CAAC;KAC5H;CACF,CAAC"}
@@ -1,20 +0,0 @@
1
- import React from 'react';
2
- import { ModularArchConfig, Namespace } from '../types';
3
- export type ModularArchContextType = {
4
- config: ModularArchConfig;
5
- namespacesLoaded: boolean;
6
- namespacesLoadError?: Error;
7
- namespaces: Namespace[];
8
- preferredNamespace: Namespace | undefined;
9
- updatePreferredNamespace: (namespace: Namespace | undefined) => void;
10
- initializationError?: Error;
11
- scriptLoaded: boolean;
12
- };
13
- type ModularArchContextProviderProps = {
14
- children: React.ReactNode;
15
- config: ModularArchConfig;
16
- };
17
- export declare const ModularArchContext: React.Context<ModularArchContextType | undefined>;
18
- export declare const ModularArchContextProvider: React.FC<ModularArchContextProviderProps>;
19
- export {};
20
- //# sourceMappingURL=ModularArchContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModularArchContext.d.ts","sourceRoot":"","sources":["../../context/ModularArchContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAE1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C,wBAAwB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACrE,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAE5B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mDAA+D,CAAC;AAE/F,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA6FhF,CAAC"}
@@ -1,68 +0,0 @@
1
- import React, { createContext, useEffect, useState } from 'react';
2
- import { Bullseye, Spinner } from '@patternfly/react-core';
3
- import { kubeflowScriptLoader, kubeflowNamespaceLoader } from '../utilities';
4
- import { useNamespacesWithConfig } from '../hooks/useNamespaces';
5
- export const ModularArchContext = createContext(undefined);
6
- export const ModularArchContextProvider = ({ children, config, }) => {
7
- const { deploymentMode, mandatoryNamespace } = config;
8
- const [scriptLoaded, setScriptLoaded] = useState(false);
9
- const [preferredNamespace, setPreferredNamespace] = useState(undefined);
10
- const [initializationError, setInitializationError] = useState();
11
- // Namespace-related state
12
- const [unsortedNamespaces, isLoaded, error] = useNamespacesWithConfig(config);
13
- const namespaces = React.useMemo(() => unsortedNamespaces.toSorted((a, b) => a.name.localeCompare(b.name)), [unsortedNamespaces]);
14
- const firstNamespace = namespaces.length > 0 ? namespaces[0] : null;
15
- // Set preferred namespace based on mandatory namespace or first available namespace
16
- const defaultPreferredNamespace = React.useMemo(() => {
17
- if (mandatoryNamespace) {
18
- return { name: mandatoryNamespace };
19
- }
20
- return firstNamespace;
21
- }, [mandatoryNamespace, firstNamespace]);
22
- // Script loader for kubeflow integration
23
- useEffect(() => {
24
- kubeflowScriptLoader(deploymentMode, () => setScriptLoaded(true), (scriptError) => {
25
- // eslint-disable-next-line no-console
26
- console.error('Error loading kubeflow script:', scriptError);
27
- setScriptLoaded(true); // Still set to true to not block the UI
28
- });
29
- }, [deploymentMode]);
30
- // Namespace selector for kubeflow integration
31
- useEffect(() => {
32
- // If mandatory namespace is set, don't use kubeflow namespace loader
33
- if (mandatoryNamespace) {
34
- return;
35
- }
36
- kubeflowNamespaceLoader(deploymentMode, scriptLoaded, (newNamespace) => {
37
- setPreferredNamespace({ name: newNamespace });
38
- }, (err) => {
39
- setInitializationError(err);
40
- }, mandatoryNamespace);
41
- }, [deploymentMode, scriptLoaded, mandatoryNamespace]);
42
- const contextValue = React.useMemo(() => ({
43
- config,
44
- namespacesLoaded: isLoaded,
45
- namespacesLoadError: error,
46
- namespaces,
47
- preferredNamespace: preferredNamespace ?? defaultPreferredNamespace ?? undefined,
48
- updatePreferredNamespace: setPreferredNamespace,
49
- initializationError,
50
- scriptLoaded,
51
- }), [
52
- config,
53
- isLoaded,
54
- error,
55
- namespaces,
56
- preferredNamespace,
57
- defaultPreferredNamespace,
58
- initializationError,
59
- scriptLoaded,
60
- ]);
61
- // Show loading spinner if script is not loaded yet
62
- if (!scriptLoaded) {
63
- return (React.createElement(Bullseye, null,
64
- React.createElement(Spinner, null)));
65
- }
66
- return React.createElement(ModularArchContext.Provider, { value: contextValue }, children);
67
- };
68
- //# sourceMappingURL=ModularArchContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModularArchContext.js","sourceRoot":"","sources":["../../context/ModularArchContext.tsx"],"names":[],"mappings":"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"}