dashboard-shell-shell 3.0.2-test.20250913 → 3.0.5-logTest.2

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 (761) hide show
  1. package/assets/brand/csp/favicon.png +0 -0
  2. package/assets/data/aws-regions.json +3 -0
  3. package/assets/icons/demo.css:Zone.Identifier +0 -0
  4. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  5. package/assets/icons/iconfont.css +4 -1
  6. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  10. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  11. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  12. package/assets/iconsNew/demo.css +539 -0
  13. package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
  14. package/assets/iconsNew/demo_index.html +303 -0
  15. package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
  16. package/assets/iconsNew/iconfont.css +43 -0
  17. package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
  18. package/assets/iconsNew/iconfont.js +1 -0
  19. package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
  20. package/assets/iconsNew/iconfont.json +44 -0
  21. package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
  22. package/assets/iconsNew/iconfont.ttf +0 -0
  23. package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
  24. package/assets/iconsNew/iconfont.woff +0 -0
  25. package/assets/iconsNew/iconfont.woff2 +0 -0
  26. package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
  27. package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
  28. package/assets/images/icons/document.svg +3 -0
  29. package/assets/images/key.svg +17 -0
  30. package/assets/images/pl/dark/logo.png +0 -0
  31. package/assets/images/providers/sks.svg +1 -0
  32. package/assets/images/vendor/cognito.svg +1 -0
  33. package/assets/styles/all.scss +23 -3
  34. package/assets/styles/app.scss +4 -0
  35. package/assets/styles/base/_basic.scss +10 -0
  36. package/assets/styles/base/_helpers.scss +1 -1
  37. package/assets/styles/base/_spacing.scss +29 -0
  38. package/assets/styles/base/_variables.scss +21 -15
  39. package/assets/styles/fonts/_icons.scss +3 -2
  40. package/assets/styles/global/_button.scss +8 -8
  41. package/assets/styles/global/_form.scss +1 -0
  42. package/assets/styles/global/_labeled-input.scss +1 -1
  43. package/assets/styles/global/_layout.scss +1 -1
  44. package/assets/styles/global/_select.scss +1 -1
  45. package/assets/styles/global/_tooltip.scss +9 -5
  46. package/assets/styles/themes/_dark.scss +30 -0
  47. package/assets/styles/themes/_light.scss +85 -5
  48. package/assets/styles/vendor/vue-select.scss +2 -1
  49. package/assets/translations/en-us.yaml +886 -105
  50. package/assets/translations/zh-hans.yaml +298 -25
  51. package/chart/__tests__/S3.test.ts +2 -1
  52. package/chart/monitoring/index.vue +1 -1
  53. package/cloud-credential/gcp.vue +9 -1
  54. package/components/ActionDropdown.vue +1 -1
  55. package/components/ActionMenuShell.vue +3 -7
  56. package/components/AppModal.vue +9 -28
  57. package/components/AsyncButton.vue +2 -0
  58. package/components/BrandImage.vue +0 -21
  59. package/components/ButtonDropdown.vue +3 -1
  60. package/components/Certificates.vue +5 -0
  61. package/components/ClusterIconMenu.vue +1 -1
  62. package/components/CodeMirror.vue +9 -7
  63. package/components/CommunityLinks.vue +3 -58
  64. package/components/ConfigMapSettings/Settings.vue +377 -0
  65. package/components/ConfigMapSettings/index.vue +354 -0
  66. package/components/ConsumptionGauge.vue +1 -1
  67. package/components/ContainerResourceLimit.vue +2 -2
  68. package/components/CopyToClipboard.vue +15 -0
  69. package/components/CruResource.vue +106 -18
  70. package/components/DetailText.vue +61 -11
  71. package/components/Drawer/Chrome.vue +115 -0
  72. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +64 -0
  73. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  74. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  75. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  76. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  77. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  78. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  79. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  80. package/components/Drawer/ResourceDetailDrawer/index.vue +124 -0
  81. package/components/ExplorerMembers.vue +28 -4
  82. package/components/ExplorerProjectsNamespaces.vue +46 -29
  83. package/components/FilterPanel.vue +156 -0
  84. package/components/FixedBanner.vue +19 -5
  85. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  86. package/components/GlobalRoleBindings.vue +69 -114
  87. package/components/GrowlManager.vue +16 -15
  88. package/components/IconOrSvg.vue +19 -35
  89. package/components/KeyValueView.vue +1 -1
  90. package/components/LandingPagePreference.vue +2 -0
  91. package/components/Loading.vue +1 -1
  92. package/components/LocaleSelector.vue +10 -2
  93. package/components/PaginatedResourceTable.vue +53 -1
  94. package/components/PodSecurityAdmission.vue +2 -2
  95. package/components/ProgressBarMulti.vue +1 -0
  96. package/components/PromptModal.vue +38 -7
  97. package/components/PromptRemove.vue +28 -2
  98. package/components/PromptRestore.vue +22 -44
  99. package/components/RelatedResources.vue +7 -12
  100. package/components/Resource/Detail/Additional.vue +46 -0
  101. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  102. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  103. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  104. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  105. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  106. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  107. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  108. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  109. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  110. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  111. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  112. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  113. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  114. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  115. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  116. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  117. package/components/Resource/Detail/Card/index.vue +56 -0
  118. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  119. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  120. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  121. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  122. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  123. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  124. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  125. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +138 -0
  126. package/components/Resource/Detail/Metadata/KeyValue.vue +144 -0
  127. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  128. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  129. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  130. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  131. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  132. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  133. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  134. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  135. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  136. package/components/Resource/Detail/Metadata/index.vue +90 -0
  137. package/components/Resource/Detail/Page.vue +37 -0
  138. package/components/Resource/Detail/PercentageBar.vue +40 -0
  139. package/components/Resource/Detail/ResourceRow.vue +138 -0
  140. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  141. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  142. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  143. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  144. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  145. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  146. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  147. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  148. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  149. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  150. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  151. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  152. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  153. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  154. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  155. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  156. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  157. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  158. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  159. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  160. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  161. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  162. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  163. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  164. package/components/Resource/Detail/SpacedRow.vue +14 -0
  165. package/components/Resource/Detail/StatusBar.vue +59 -0
  166. package/components/Resource/Detail/StatusRow.vue +61 -0
  167. package/components/Resource/Detail/TitleBar/Title.vue +15 -0
  168. package/components/Resource/Detail/TitleBar/Top.vue +16 -0
  169. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  170. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  171. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  172. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  173. package/components/Resource/Detail/TitleBar/composables.ts +61 -0
  174. package/components/Resource/Detail/TitleBar/index.vue +302 -0
  175. package/components/Resource/Detail/Top/index.vue +34 -0
  176. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  177. package/components/Resource/Detail/composables.ts +45 -0
  178. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  179. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  180. package/components/ResourceDetail/Masthead/index.vue +65 -0
  181. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  182. package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +240 -169
  183. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  184. package/components/ResourceDetail/index.vue +75 -575
  185. package/components/ResourceDetail/legacy.vue +580 -0
  186. package/components/ResourceList/Masthead.vue +74 -29
  187. package/components/ResourceList/index.vue +3 -2
  188. package/components/ResourceTable.vue +75 -85
  189. package/components/ResourceYaml.vue +15 -2
  190. package/components/RichTranslation.vue +106 -0
  191. package/components/SideNav.vue +21 -21
  192. package/components/SingleClusterInfo.vue +2 -1
  193. package/components/SlideInPanelManager.vue +116 -14
  194. package/components/SortableTable/THead.vue +46 -1
  195. package/components/SortableTable/index.vue +66 -22
  196. package/components/SortableTable/paging.js +15 -16
  197. package/components/SortableTable/selection.js +22 -10
  198. package/components/StateDot/index.vue +28 -0
  199. package/components/StatusBadge.vue +6 -4
  200. package/components/SubtleLink.vue +25 -0
  201. package/components/Tabbed/index.vue +43 -22
  202. package/components/Wizard.vue +16 -3
  203. package/components/YamlEditor.vue +1 -2
  204. package/components/__tests__/AsyncButton.test.ts +39 -0
  205. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  206. package/components/__tests__/CruResource.test.ts +63 -0
  207. package/components/__tests__/FilterPanel.test.ts +81 -0
  208. package/components/__tests__/GrowlManager.test.ts +0 -25
  209. package/components/__tests__/PromptModal.test.ts +146 -0
  210. package/components/__tests__/PromptRestore.test.ts +1 -65
  211. package/components/__tests__/RichTranslation.test.ts +115 -0
  212. package/components/auth/AuthBanner.vue +15 -14
  213. package/components/auth/Principal.vue +50 -19
  214. package/components/auth/RoleDetailEdit.vue +55 -11
  215. package/components/auth/login/ldap.vue +2 -2
  216. package/components/auth/login/oidc.vue +6 -1
  217. package/components/breadcrumb/index.vue +119 -0
  218. package/components/fleet/FleetApplications.vue +174 -0
  219. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  220. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  221. package/components/fleet/FleetClusters.vue +25 -6
  222. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  223. package/components/fleet/FleetHelmOps.vue +123 -0
  224. package/components/fleet/FleetIntro.vue +58 -28
  225. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  226. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  227. package/components/fleet/FleetRepos.vue +37 -80
  228. package/components/fleet/FleetResources.vue +69 -27
  229. package/components/fleet/FleetSummary.vue +26 -51
  230. package/components/fleet/FleetValuesFrom.vue +295 -0
  231. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  232. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  233. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  234. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  235. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  236. package/components/fleet/dashboard/Empty.vue +73 -0
  237. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  238. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  239. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  240. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  241. package/components/form/ArrayList.vue +187 -142
  242. package/components/form/ArrayListGrouped.vue +5 -3
  243. package/components/form/BannerSettings.vue +117 -50
  244. package/components/form/ChangePassword.vue +4 -2
  245. package/components/form/ClusterAppearance.vue +4 -3
  246. package/components/form/ColorInput.vue +35 -6
  247. package/components/form/Command.vue +4 -5
  248. package/components/form/Conditions.vue +15 -1
  249. package/components/form/FileImageSelector.vue +1 -1
  250. package/components/form/Footer.vue +11 -4
  251. package/components/form/HealthCheck.vue +0 -2
  252. package/components/form/HookOption.vue +87 -58
  253. package/components/form/InputWithSelect.vue +8 -7
  254. package/components/form/KeyValue.vue +112 -53
  255. package/components/form/LabeledSelect.vue +76 -55
  256. package/components/form/Labels.vue +92 -22
  257. package/components/form/MatchExpressions.vue +59 -12
  258. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  259. package/components/form/Members/ClusterPermissionsEditor.vue +60 -41
  260. package/components/form/Members/MembershipEditor.vue +4 -4
  261. package/components/form/Members/ProjectMembershipEditor.vue +1 -1
  262. package/components/form/NameNsDescription.vue +15 -10
  263. package/components/form/Networking.vue +30 -28
  264. package/components/form/NodeAffinity.vue +29 -28
  265. package/components/form/NotificationSettings.vue +15 -1
  266. package/components/form/PodAffinity.vue +23 -23
  267. package/components/form/Probe.vue +15 -11
  268. package/components/form/ProjectMemberEditor.vue +66 -48
  269. package/components/form/ResourceLabeledSelect.vue +22 -8
  270. package/components/form/ResourceQuota/Namespace.vue +4 -4
  271. package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
  272. package/components/form/ResourceQuota/Project.vue +4 -4
  273. package/components/form/ResourceQuota/ProjectRow.vue +36 -30
  274. package/components/form/ResourceSelector.vue +28 -24
  275. package/components/form/ResourceTabs/index.vue +7 -1
  276. package/components/form/SSHKnownHosts/index.vue +14 -11
  277. package/components/form/SecretSelector.vue +40 -23
  278. package/components/form/Security.vue +1 -3
  279. package/components/form/Select.vue +64 -27
  280. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  281. package/components/form/ServiceNameSelect.vue +2 -5
  282. package/components/form/ServicePorts.vue +149 -75
  283. package/components/form/SimpleSecretSelector.vue +17 -4
  284. package/components/form/Taints.vue +23 -3
  285. package/components/form/Tolerations.vue +13 -9
  286. package/components/form/UnitInput.vue +21 -0
  287. package/components/form/ValueFromResource.vue +136 -110
  288. package/components/form/WorkloadPorts.vue +143 -123
  289. package/components/form/__tests__/ArrayList.test.ts +32 -0
  290. package/components/form/__tests__/ColorInput.test.ts +35 -0
  291. package/components/form/__tests__/KeyValue.test.ts +36 -0
  292. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  293. package/components/form/__tests__/Labels.test.ts +360 -0
  294. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  295. package/components/form/__tests__/Networking.test.ts +116 -0
  296. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  297. package/components/form/__tests__/Select.test.ts +37 -1
  298. package/components/form/__tests__/UnitInput.test.ts +23 -1
  299. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  300. package/components/formatter/ClusterLink.vue +5 -8
  301. package/components/formatter/Description.vue +30 -0
  302. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  303. package/components/formatter/FleetApplicationSource.vue +79 -0
  304. package/components/formatter/FleetSummaryGraph.vue +7 -0
  305. package/components/formatter/PodImages.vue +1 -1
  306. package/components/formatter/WorkloadHealthScale.vue +5 -4
  307. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  308. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  309. package/components/google/AccountAccess.vue +209 -0
  310. package/components/google/types/gcp.d.ts +136 -0
  311. package/components/google/types/index.d.ts +101 -0
  312. package/components/google/util/__mocks__/gcp.ts +465 -0
  313. package/components/google/util/formatter.ts +82 -0
  314. package/components/google/util/gcp.ts +134 -0
  315. package/components/google/util/index.d.ts +11 -0
  316. package/components/nav/Favorite.vue +1 -1
  317. package/components/nav/Group.vue +13 -1
  318. package/components/nav/Header.vue +44 -179
  319. package/components/nav/NamespaceFilter.vue +126 -75
  320. package/components/nav/NotificationCenter/Notification.vue +484 -0
  321. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  322. package/components/nav/NotificationCenter/index.vue +148 -0
  323. package/components/nav/TopLevelMenu.helper.ts +55 -34
  324. package/components/nav/TopLevelMenu.vue +110 -125
  325. package/components/nav/Type.vue +15 -4
  326. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  327. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  328. package/components/nav/WindowManager/index.vue +3 -2
  329. package/components/templates/default.vue +0 -3
  330. package/components/templates/plain.vue +0 -3
  331. package/composables/drawer.ts +26 -0
  332. package/composables/focusTrap.ts +3 -3
  333. package/composables/resources.test.ts +63 -0
  334. package/composables/resources.ts +38 -0
  335. package/composables/useI18n.ts +12 -11
  336. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  337. package/config/labels-annotations.js +22 -11
  338. package/config/menuRouteMap.js +10 -0
  339. package/config/pagination-table-headers.js +8 -1
  340. package/config/private-label.js +0 -1
  341. package/config/product/auth.js +20 -3
  342. package/config/product/{cis.js → compliance.js} +23 -26
  343. package/config/product/explorer.js +80 -26
  344. package/config/product/fleet.js +77 -17
  345. package/config/product/manager.js +29 -46
  346. package/config/product/settings.js +23 -11
  347. package/config/product/uiplugins.js +13 -10
  348. package/config/query-params.js +16 -1
  349. package/config/roles.ts +2 -1
  350. package/config/router/navigation-guards/authentication.js +51 -2
  351. package/config/router/navigation-guards/index.js +16 -20
  352. package/config/router/routes.js +65 -31
  353. package/config/secret.ts +15 -0
  354. package/config/settings.ts +33 -16
  355. package/config/store.js +2 -0
  356. package/config/system-namespaces.js +1 -1
  357. package/config/table-headers.js +91 -30
  358. package/config/types.js +18 -7
  359. package/config/version.js +1 -1
  360. package/core/plugin-helpers.ts +3 -2
  361. package/core/plugin.ts +32 -7
  362. package/core/types.ts +25 -7
  363. package/detail/catalog.cattle.io.app.vue +5 -1
  364. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  365. package/detail/fleet.cattle.io.bundle.vue +70 -6
  366. package/detail/fleet.cattle.io.cluster.vue +28 -15
  367. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  368. package/detail/fleet.cattle.io.helmop.vue +157 -0
  369. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  370. package/detail/management.cattle.io.oidcclient.vue +369 -0
  371. package/detail/namespace.vue +0 -3
  372. package/detail/node.vue +48 -39
  373. package/detail/pod.vue +2 -2
  374. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  375. package/detail/service.vue +10 -2
  376. package/detail/workload/index.vue +48 -39
  377. package/dialog/AddCustomBadgeDialog.vue +17 -10
  378. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  379. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  380. package/dialog/AssignToDialog.vue +176 -0
  381. package/dialog/ChangePasswordDialog.vue +106 -0
  382. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  383. package/dialog/DisableAuthProviderDialog.vue +101 -0
  384. package/dialog/DrainNode.vue +1 -1
  385. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  386. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  387. package/dialog/FeatureFlagListDialog.vue +288 -0
  388. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  389. package/dialog/GenericPrompt.vue +1 -1
  390. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  391. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  392. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  393. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  394. package/dialog/MoveNamespaceDialog.vue +157 -0
  395. package/dialog/OidcClientSecretDialog.vue +117 -0
  396. package/dialog/RedeployWorkloadDialog.vue +164 -0
  397. package/dialog/RollbackWorkloadDialog.vue +1 -1
  398. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  399. package/dialog/ScalePoolDownDialog.vue +1 -1
  400. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  401. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  402. package/dialog/WechatDialog.vue +57 -0
  403. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  404. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  405. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  406. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  407. package/edit/__tests__/service.test.ts +2 -1
  408. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  409. package/edit/auth/ldap/config.vue +24 -0
  410. package/edit/auth/oidc.vue +159 -93
  411. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  412. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  413. package/edit/autoscaling.horizontalpodautoscaler/index.vue +7 -2
  414. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  415. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  416. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  417. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  418. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  419. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  420. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  421. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  422. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  423. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  424. package/edit/configmap.vue +12 -2
  425. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  426. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  427. package/edit/fleet.cattle.io.helmop.vue +786 -0
  428. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  429. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  430. package/edit/logging-flow/index.vue +2 -2
  431. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  432. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +8 -9
  433. package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
  434. package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
  435. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
  436. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
  437. package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
  438. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
  439. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
  440. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
  441. package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
  442. package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
  443. package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
  444. package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
  445. package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
  446. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
  447. package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
  448. package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
  449. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
  450. package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
  451. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
  452. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  453. package/edit/management.cattle.io.oidcclient.vue +162 -0
  454. package/edit/management.cattle.io.project.vue +4 -1
  455. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  456. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  457. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  458. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  459. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  460. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  461. package/edit/monitoring.coreos.com.route.vue +1 -0
  462. package/edit/namespace.vue +2 -4
  463. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  464. package/edit/networking.k8s.io.ingress/Certificate.vue +25 -8
  465. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  466. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  467. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  468. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  469. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  470. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +6 -17
  471. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  472. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +69 -73
  473. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  474. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  475. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  476. package/edit/networking.k8s.io.networkpolicy/index.vue +24 -32
  477. package/edit/node.vue +1 -0
  478. package/edit/persistentvolume/index.vue +7 -2
  479. package/edit/persistentvolumeclaim.vue +2 -0
  480. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  481. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  482. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  483. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  484. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  485. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +49 -40
  486. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  487. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  488. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  489. package/edit/resources.cattle.io.restore.vue +1 -1
  490. package/edit/secret/basic.vue +1 -0
  491. package/edit/secret/index.vue +129 -17
  492. package/edit/service.vue +21 -30
  493. package/edit/serviceaccount.vue +4 -1
  494. package/edit/storage.k8s.io.storageclass/index.vue +14 -9
  495. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  496. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  497. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  498. package/edit/workload/Job.vue +31 -34
  499. package/edit/workload/Upgrading.vue +5 -5
  500. package/edit/workload/index.vue +32 -32
  501. package/edit/workload/mixins/workload.js +0 -2
  502. package/edit/workload/storage/Mount.vue +1 -0
  503. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  504. package/edit/workload/storage/azureDisk.vue +14 -10
  505. package/edit/workload/storage/azureFile.vue +9 -7
  506. package/edit/workload/storage/csi/index.vue +6 -9
  507. package/edit/workload/storage/emptyDir.vue +7 -5
  508. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  509. package/edit/workload/storage/hostPath.vue +7 -5
  510. package/edit/workload/storage/nfs.vue +8 -6
  511. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  512. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  513. package/edit/workload/storage/secret.vue +9 -6
  514. package/edit/workload/storage/vsphereVolume.vue +11 -7
  515. package/initialize/app-extended.js +7 -1
  516. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  517. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  518. package/list/fleet.cattle.io.helmop.vue +108 -0
  519. package/list/harvesterhci.io.management.cluster.vue +0 -17
  520. package/list/management.cattle.io.feature.vue +4 -288
  521. package/list/management.cattle.io.oidcclient.vue +108 -0
  522. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
  523. package/list/management.cattle.io.user.vue +13 -20
  524. package/list/namespace.vue +6 -2
  525. package/list/node.vue +2 -0
  526. package/list/projectsecret.vue +345 -0
  527. package/list/secret.vue +109 -0
  528. package/list/workload.vue +6 -2
  529. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  530. package/machine-config/amazonec2.vue +3 -24
  531. package/machine-config/components/GCEImage.vue +374 -0
  532. package/machine-config/google.vue +617 -0
  533. package/machine-config/vmwarevsphere.vue +7 -17
  534. package/mixins/__tests__/brand.spec.ts +170 -0
  535. package/mixins/auth-config.js +8 -1
  536. package/mixins/brand.js +16 -17
  537. package/mixins/create-edit-view/impl.js +20 -1
  538. package/mixins/create-edit-view/index.js +5 -0
  539. package/mixins/preset.js +100 -0
  540. package/mixins/resource-fetch-api-pagination.js +73 -44
  541. package/mixins/resource-fetch.js +18 -8
  542. package/mixins/resource-table-watch.js +45 -0
  543. package/mixins/vue-select-overrides.js +1 -4
  544. package/models/__tests__/chart.test.ts +296 -0
  545. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  546. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  547. package/models/__tests__/node.test.ts +7 -63
  548. package/models/__tests__/workload.test.ts +1 -0
  549. package/models/chart.js +157 -2
  550. package/models/cluster/node.js +2 -1
  551. package/models/cluster.js +32 -2
  552. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  553. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  554. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  555. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  556. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  557. package/models/fleet-application.js +297 -0
  558. package/models/fleet.cattle.io.bundle.js +9 -8
  559. package/models/fleet.cattle.io.cluster.js +21 -4
  560. package/models/fleet.cattle.io.gitrepo.js +46 -382
  561. package/models/fleet.cattle.io.helmop.js +202 -0
  562. package/models/management.cattle.io.authconfig.js +1 -0
  563. package/models/management.cattle.io.cluster.js +0 -20
  564. package/models/management.cattle.io.feature.js +7 -1
  565. package/models/management.cattle.io.fleetworkspace.js +14 -1
  566. package/models/management.cattle.io.node.js +7 -22
  567. package/models/management.cattle.io.nodepool.js +12 -0
  568. package/models/management.cattle.io.oidcclient.js +18 -0
  569. package/models/management.cattle.io.registration.js +3 -0
  570. package/models/management.cattle.io.setting.js +0 -1
  571. package/models/namespace.js +12 -1
  572. package/models/provisioning.cattle.io.cluster.js +79 -115
  573. package/models/secret.js +157 -2
  574. package/models/service.js +28 -9
  575. package/models/storage.k8s.io.storageclass.js +2 -2
  576. package/models/workload.js +93 -53
  577. package/package.json +6 -5
  578. package/pages/about.vue +17 -61
  579. package/pages/account/index.vue +105 -116
  580. package/pages/auth/login.vue +2 -3
  581. package/pages/auth/setup.vue +36 -17
  582. package/pages/auth/verify.vue +13 -1
  583. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  584. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  585. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  586. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  587. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  588. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  589. package/pages/c/_cluster/auth/roles/index.vue +72 -44
  590. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  591. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  592. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  593. package/pages/c/_cluster/explorer/index.vue +16 -4
  594. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  595. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  596. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  597. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  598. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  599. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  600. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  601. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  602. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  603. package/pages/c/_cluster/fleet/index.vue +866 -328
  604. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  605. package/pages/c/_cluster/longhorn/index.vue +5 -2
  606. package/pages/c/_cluster/settings/banners.vue +56 -2
  607. package/pages/c/_cluster/settings/brand.vue +2 -1
  608. package/pages/c/_cluster/settings/performance.vue +7 -26
  609. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  610. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  611. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  612. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  613. package/pages/explorer/resource/detail/configmap.vue +42 -0
  614. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  615. package/pages/explorer/resource/detail/secret.vue +63 -0
  616. package/pages/home.vue +63 -117
  617. package/pages/prefs.vue +0 -1
  618. package/pages/support/index.vue +4 -6
  619. package/pkg/tsconfig.json +9 -9
  620. package/pkg/vue.config.js +1 -1
  621. package/plugins/clean-html.js +2 -0
  622. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  623. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  624. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  625. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  626. package/plugins/dashboard-store/actions.js +213 -56
  627. package/plugins/dashboard-store/getters.js +112 -24
  628. package/plugins/dashboard-store/mutations.js +61 -12
  629. package/plugins/dashboard-store/normalize.js +29 -19
  630. package/plugins/dashboard-store/resource-class.js +105 -21
  631. package/plugins/steve/__tests__/getters.test.ts +19 -12
  632. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  633. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  634. package/plugins/steve/actions.js +37 -24
  635. package/plugins/steve/getters.js +47 -12
  636. package/plugins/steve/resourceWatcher.js +10 -3
  637. package/plugins/steve/steve-class.js +5 -0
  638. package/plugins/steve/steve-pagination-utils.ts +225 -43
  639. package/plugins/steve/subscribe.js +418 -53
  640. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  641. package/public/favicon.png +0 -0
  642. package/public/index.html +1 -1
  643. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  644. package/rancher-components/Banner/Banner.test.ts +51 -3
  645. package/rancher-components/Banner/Banner.vue +53 -10
  646. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  647. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  648. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  649. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  650. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  651. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  652. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  653. package/rancher-components/Form/Radio/RadioGroup.vue +90 -39
  654. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  655. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  656. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +32 -2
  657. package/rancher-components/RcButton/RcButton.vue +1 -1
  658. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  659. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  660. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  661. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  662. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  663. package/rancher-components/RcDropdown/index.ts +2 -0
  664. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  665. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  666. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  667. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  668. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  669. package/rancher-components/RcItemCard/index.ts +2 -0
  670. package/rancher-components/StringList/StringList.vue +1 -1
  671. package/scripts/build-pkg.sh +18 -23
  672. package/scripts/extension/publish +1 -1
  673. package/scripts/publish-shell.sh +1 -1
  674. package/static/loading-indicator.html +1 -1
  675. package/store/action-menu.js +26 -56
  676. package/store/auth.js +3 -0
  677. package/store/catalog.js +85 -25
  678. package/store/features.js +0 -1
  679. package/store/growl.js +97 -8
  680. package/store/i18n.js +5 -1
  681. package/store/index.js +48 -18
  682. package/store/notifications.ts +426 -0
  683. package/store/prefs.js +2 -8
  684. package/store/slideInPanel.ts +6 -0
  685. package/store/type-map.js +35 -20
  686. package/store/type-map.utils.ts +49 -6
  687. package/store/uiplugins.ts +15 -1
  688. package/types/fleet.d.ts +60 -1
  689. package/types/kube/kube-api.ts +34 -0
  690. package/types/notifications/index.ts +74 -0
  691. package/types/resources/fleet.d.ts +43 -0
  692. package/types/resources/pod-security-admission.ts +36 -0
  693. package/types/resources/settings.d.ts +107 -0
  694. package/types/resources/userPreferences.d.ts +13 -0
  695. package/types/shell/index.d.ts +949 -741
  696. package/types/store/dashboard-store.types.ts +57 -4
  697. package/types/store/pagination.types.ts +41 -9
  698. package/types/store/subscribe.types.ts +50 -0
  699. package/utils/__mocks__/tabbable.js +13 -0
  700. package/utils/__tests__/back-off.test.ts +354 -0
  701. package/utils/__tests__/create-yaml.test.ts +235 -0
  702. package/utils/__tests__/fleet.test.ts +148 -0
  703. package/utils/__tests__/kontainer.test.ts +19 -0
  704. package/utils/__tests__/object.test.ts +54 -1
  705. package/utils/__tests__/string.test.ts +273 -1
  706. package/utils/__tests__/time.test.ts +31 -0
  707. package/utils/auth.js +41 -6
  708. package/utils/back-off.ts +176 -0
  709. package/utils/cluster.js +24 -20
  710. package/utils/create-yaml.js +103 -9
  711. package/utils/crypto/encryption.ts +103 -0
  712. package/utils/cspAdaptor.ts +51 -0
  713. package/utils/error.js +26 -9
  714. package/utils/errorTranslate.json +410 -6
  715. package/utils/errorTranslateNew.json +39 -0
  716. package/utils/fleet-types.ts +0 -0
  717. package/utils/fleet.ts +204 -74
  718. package/utils/grafana.js +1 -0
  719. package/utils/kontainer.ts +3 -5
  720. package/utils/object.js +36 -12
  721. package/utils/pagination-utils.ts +50 -3
  722. package/utils/pagination-wrapper.ts +132 -50
  723. package/utils/perf-setting.utils.ts +28 -0
  724. package/utils/release-notes.ts +48 -0
  725. package/utils/roleFiltering.js +33 -0
  726. package/utils/selector-typed.ts +210 -0
  727. package/utils/selector.js +29 -6
  728. package/utils/settings.ts +4 -1
  729. package/utils/string.js +24 -0
  730. package/utils/style.ts +39 -0
  731. package/utils/{time.js → time.ts} +25 -6
  732. package/utils/uiplugins.ts +41 -8
  733. package/utils/v-sphere.ts +5 -1
  734. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  735. package/utils/validators/formRules/index.ts +99 -4
  736. package/utils/window.js +11 -7
  737. package/vue.config.js +1 -1
  738. package/.DS_Store +0 -0
  739. package/components/AssignTo.vue +0 -199
  740. package/components/DisableAuthProviderModal.vue +0 -115
  741. package/components/MoveModal.vue +0 -167
  742. package/components/PromptChangePassword.vue +0 -123
  743. package/components/ResourceList/Masthead-btn.vue +0 -225
  744. package/components/__tests__/ApplicationCard.test.ts +0 -27
  745. package/components/cards/ApplicationCard.vue +0 -145
  746. package/components/fleet/FleetBundleResources.vue +0 -86
  747. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  748. package/components/formatter/RKETemplateName.vue +0 -37
  749. package/config/product/legacy.js +0 -62
  750. package/config/secret.js +0 -14
  751. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  752. package/models/etcdbackup.js +0 -45
  753. package/pages/auth copy/login.vue +0 -595
  754. package/pages/auth copy/logout.vue +0 -47
  755. package/pages/auth copy/setup.vue +0 -523
  756. package/pages/auth copy/verify.vue +0 -203
  757. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  758. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  759. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  760. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  761. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
@@ -15,9 +15,13 @@ import {
15
15
  HPA,
16
16
  SECRET
17
17
  } from '@shell/config/types';
18
- import { CAPI as CAPI_LAB_AND_ANO, CATTLE_PUBLIC_ENDPOINTS } from '@shell/config/labels-annotations';
18
+ import {
19
+ CAPI as CAPI_LAB_AND_ANO, CATTLE_PUBLIC_ENDPOINTS, STORAGE, UI_PROJECT_SECRET, UI_PROJECT_SECRET_COPY
20
+ } from '@shell/config/labels-annotations';
19
21
  import { Schema } from '@shell/plugins/steve/schema';
20
22
  import { PaginationSettingsStore } from '@shell/types/resources/settings';
23
+ import paginationUtils from '@shell/utils/pagination-utils';
24
+ import { KubeLabelSelector, KubeLabelSelectorExpression } from '@shell/types/kube/kube-api';
21
25
 
22
26
  /**
23
27
  * This is a workaround for a ts build issue found in check-plugins-build.
@@ -25,19 +29,30 @@ import { PaginationSettingsStore } from '@shell/types/resources/settings';
25
29
  * The build would error on <ns>.name, it somehow doesn't know about the steve model's properties (they are included in typegen)
26
30
  */
27
31
  interface Namespace extends ModelNamespace {
32
+ id: string;
28
33
  name: string;
34
+ metadata: {
35
+ name: string
36
+ }
29
37
  }
30
38
 
31
39
  class NamespaceProjectFilters {
32
40
  /**
33
41
  * User needs all resources.... except if there's some settings which should remove resources in specific circumstances
34
42
  */
35
- protected handlePrefAndSettingFilter(allNamespaces: Namespace[], showDynamicRancherNamespaces: boolean, productHidesSystemNamespaces: boolean): PaginationParamFilter[] {
43
+ protected handlePrefAndSettingFilter(args: {
44
+ allNamespaces: Namespace[],
45
+ showReservedRancherNamespaces: boolean,
46
+ productHidesSystemNamespaces: boolean,
47
+ }): PaginationParamFilter[] {
48
+ const { allNamespaces, showReservedRancherNamespaces, productHidesSystemNamespaces } = args;
49
+
36
50
  // These are AND'd together
37
51
  // Not ns 1 AND ns 2
38
52
  return allNamespaces.reduce((res, ns) => {
39
53
  // Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)
40
- const hideObscure = showDynamicRancherNamespaces ? false : ns.isObscure;
54
+ const hideObscure = showReservedRancherNamespaces ? false : ns.isObscure;
55
+
41
56
  // Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc
42
57
  const hideSystem = productHidesSystemNamespaces ? ns.isSystem : false;
43
58
 
@@ -58,7 +73,12 @@ class NamespaceProjectFilters {
58
73
  *
59
74
  * Users resources are those not in system namespaces
60
75
  */
61
- protected handleSystemOrUserFilter(allNamespaces: Namespace[], isAllSystem: boolean, isAllUser: boolean) {
76
+ protected handleSystemOrUserFilter(args: {
77
+ allNamespaces: Namespace[],
78
+ isAllSystem: boolean,
79
+ isAllUser: boolean,
80
+ }) {
81
+ const { allNamespaces, isAllSystem } = args;
62
82
  const allSystem = allNamespaces.filter((ns) => ns.isSystem);
63
83
 
64
84
  // > Neither of these use projectsOrNamespaces to avoid scenarios where the local cluster provides a namespace which has
@@ -118,6 +138,14 @@ class NamespaceProjectFilters {
118
138
  * Helper functions for steve pagination
119
139
  */
120
140
  class StevePaginationUtils extends NamespaceProjectFilters {
141
+ /**
142
+ * Match
143
+ * - a-z (case insensitive)
144
+ * - 0-9
145
+ * - `-`, `_`, `.`
146
+ */
147
+ static VALID_FIELD_VALUE_REGEX = /^[\w\-.]+$/;
148
+
121
149
  /**
122
150
  * Filtering with the vai cache supports specific fields
123
151
  * 1) Those listed here
@@ -158,6 +186,10 @@ class StevePaginationUtils extends NamespaceProjectFilters {
158
186
  [CONFIG_MAP]: [
159
187
  { field: 'metadata.labels[harvesterhci.io/cloud-init-template]' }
160
188
  ],
189
+ [SECRET]: [
190
+ { field: `metadata.labels[${ UI_PROJECT_SECRET }]` },
191
+ { field: `metadata.annotations[${ UI_PROJECT_SECRET_COPY }]` },
192
+ ],
161
193
  [NAMESPACE]: [
162
194
  { field: 'metadata.labels[field.cattle.io/projectId]' }
163
195
  ],
@@ -168,7 +200,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
168
200
  { field: '_type' },
169
201
  { field: 'reason' },
170
202
  { field: 'involvedObject.kind' },
171
- // { field: 'involvedObject.uid' }, // Pending API Support - https://github.com/rancher/rancher/issues/48603
203
+ { field: 'involvedObject.uid' },
172
204
  { field: 'message' },
173
205
  ],
174
206
  [CATALOG.CLUSTER_REPO]: [
@@ -189,17 +221,17 @@ class StevePaginationUtils extends NamespaceProjectFilters {
189
221
  ],
190
222
  [SERVICE]: [
191
223
  { field: 'spec.type' },
192
- // { field: 'spec.clusterIP' }, // Pending API support (blocked https://github.com/rancher/rancher/issues/48473 (index fields)
224
+ { field: 'spec.clusterIP' },
193
225
  ],
194
226
  [INGRESS]: [
195
- // { field: 'spec.rules.host' }, // Pending API support (blocked https://github.com/rancher/rancher/issues/48473 (index fields)
196
- // { field: 'spec.ingressClassName' }, // Pending API support (blocked https://github.com/rancher/rancher/issues/48473 (index fields)
227
+ { field: 'spec.rules.host' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
228
+ { field: 'spec.ingressClassName' },
197
229
  ],
198
230
  [HPA]: [
199
- // { field: 'spec.scaleTargetRef.name' }, // Pending API support https://github.com/rancher/rancher/issues/48473 (hpa filtering fix)
200
- // { field: 'spec.minReplicas' }, // Pending API support https://github.com/rancher/rancher/issues/48473 (hpa filtering fix)
201
- // { field: 'spec.maxReplicas' }, // Pending API support https://github.com/rancher/rancher/issues/48473 (hpa filtering fix)
202
- // { field: 'spec.currentReplicas' }, // Pending API support https://github.com/rancher/rancher/issues/48473 (hpa filtering fix)
231
+ { field: 'spec.scaleTargetRef.name' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
232
+ { field: 'spec.minReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
233
+ { field: 'spec.maxReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
234
+ { field: 'spec.currentReplicas' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50527
203
235
  ],
204
236
  [PVC]: [
205
237
  { field: 'spec.volumeName' },
@@ -210,27 +242,37 @@ class StevePaginationUtils extends NamespaceProjectFilters {
210
242
  ],
211
243
  [STORAGE_CLASS]: [
212
244
  { field: 'provisioner' },
213
- // { field: `metadata.annotations[STORAGE.DEFAULT_STORAGE_CLASS]` }, // Pending API Support - https://github.com/rancher/rancher/issues/48453
245
+ { field: `metadata.annotations[${ STORAGE.DEFAULT_STORAGE_CLASS }]` },
214
246
  ],
215
247
  [CATALOG.APP]: [
216
248
  { field: 'spec.chart.metadata.name' }
217
249
  ],
218
250
  [WORKLOAD_TYPES.CRON_JOB]: [
219
- { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
251
+ { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
252
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
220
253
  ],
221
254
  [WORKLOAD_TYPES.DAEMON_SET]: [
222
- { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
255
+ { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
256
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
223
257
  ],
224
258
  [WORKLOAD_TYPES.DEPLOYMENT]: [
225
- { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
259
+ { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
260
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
226
261
  ],
227
262
  [WORKLOAD_TYPES.JOB]: [
228
- { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
263
+ { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
264
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
229
265
  ],
230
266
  [WORKLOAD_TYPES.STATEFUL_SET]: [
231
- { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` }
232
- ]
233
-
267
+ { field: `metadata.annotations[${ CATTLE_PUBLIC_ENDPOINTS }]` },
268
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
269
+ ],
270
+ [WORKLOAD_TYPES.REPLICA_SET]: [
271
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
272
+ ],
273
+ [WORKLOAD_TYPES.REPLICATION_CONTROLLER]: [
274
+ { field: 'spec.template.spec.containers.image' }, // Pending API Support - BUG - https://github.com/rancher/rancher/issues/50526
275
+ ],
234
276
  }
235
277
 
236
278
  private convertArrayPath(path: string): string {
@@ -253,7 +295,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
253
295
  selection,
254
296
  isAllNamespaces,
255
297
  isLocalCluster,
256
- showDynamicRancherNamespaces,
298
+ showReservedRancherNamespaces,
257
299
  productHidesSystemNamespaces,
258
300
  }: {
259
301
  allNamespaces: Namespace[],
@@ -263,14 +305,18 @@ class StevePaginationUtils extends NamespaceProjectFilters {
263
305
  */
264
306
  isAllNamespaces: boolean,
265
307
  /**
266
- * Weird things be happening if the target cluster is local / upstream. Uses this to check what cluster we're in
308
+ * Weird things be happening if the target cluster is local / upstream. Use this to check what cluster we're in
267
309
  */
268
310
  isLocalCluster: boolean,
269
311
  /**
312
+ * User preference states we should show reserved rancher namespaces. Preference description "Show dynamic Namespaces managed by Rancher (not intended for editing or deletion)"
313
+ *
270
314
  * Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)
271
315
  */
272
- showDynamicRancherNamespaces: boolean,
316
+ showReservedRancherNamespaces: boolean,
273
317
  /**
318
+ * Product config states that system namespaces should be hidden
319
+ *
274
320
  * Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc
275
321
  */
276
322
  productHidesSystemNamespaces: boolean,
@@ -288,7 +334,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
288
334
  // - Only System Namespaces - Gimme resources in the system namespaces (which shouldn't be many namespaces)
289
335
  // - Only User Namespaces - Gimme resources NOT in system namespaces
290
336
  // - User selection - Gimme resources in specific Projects or Namespaces
291
- if (isAllNamespaces && (showDynamicRancherNamespaces && !productHidesSystemNamespaces)) {
337
+ if (isAllNamespaces && (showReservedRancherNamespaces && !productHidesSystemNamespaces)) {
292
338
  // No-op. Everything is returned
293
339
  return {
294
340
  projectsOrNamespaces: [],
@@ -303,9 +349,11 @@ class StevePaginationUtils extends NamespaceProjectFilters {
303
349
  // &filter=metadata.namespace=abc
304
350
  let filters: PaginationParamFilter[] = [];
305
351
 
306
- if (!showDynamicRancherNamespaces || productHidesSystemNamespaces) {
307
- // We need to hide dynamic namespaces ('c-', 'p-', etc) OR system namespaces
308
- filters = this.handlePrefAndSettingFilter(allNamespaces, showDynamicRancherNamespaces, productHidesSystemNamespaces);
352
+ if (!showReservedRancherNamespaces || productHidesSystemNamespaces) {
353
+ // We need to hide reserved namespaces ('c-', 'user-', etc) OR system namespaces
354
+ filters = this.handlePrefAndSettingFilter({
355
+ allNamespaces, showReservedRancherNamespaces, productHidesSystemNamespaces
356
+ });
309
357
  }
310
358
 
311
359
  const isAllSystem = selection[0] === NAMESPACE_FILTER_ALL_SYSTEM;
@@ -313,7 +361,9 @@ class StevePaginationUtils extends NamespaceProjectFilters {
313
361
 
314
362
  if (selection.length === 1 && (isAllSystem || isAllUser)) {
315
363
  // Filter by resources either in or not in system namespaces
316
- filters.push(...this.handleSystemOrUserFilter(allNamespaces, isAllSystem, isAllUser ));
364
+ filters.push(...this.handleSystemOrUserFilter({
365
+ allNamespaces, isAllSystem, isAllUser
366
+ }));
317
367
  } else {
318
368
  // User has one or more projects or namespaces
319
369
  const res = this.handleSelectionFilter(selection, isLocalCluster);
@@ -328,13 +378,13 @@ class StevePaginationUtils extends NamespaceProjectFilters {
328
378
  };
329
379
  }
330
380
 
331
- public createParamsForPagination(schema: Schema, opt: ActionFindPageArgs): string | undefined {
381
+ public createParamsForPagination({ schema, opt }: {schema?: Schema, opt: ActionFindPageArgs}): string | undefined {
332
382
  if (!opt.pagination) {
333
383
  return;
334
384
  }
335
385
 
336
386
  const params: string[] = [];
337
- const namespaceParam = this.convertPaginationParams(schema, opt.pagination.projectsOrNamespaces);
387
+ const namespaceParam = this.convertPaginationParams({ schema, filters: opt.pagination.projectsOrNamespaces });
338
388
 
339
389
  if (namespaceParam) {
340
390
  params.push(namespaceParam);
@@ -344,8 +394,11 @@ class StevePaginationUtils extends NamespaceProjectFilters {
344
394
  params.push(`page=${ opt.pagination.page }`);
345
395
  }
346
396
 
347
- if (opt.pagination.pageSize) {
397
+ if (!!opt.pagination.pageSize || opt.pagination.pageSize === 0) {
348
398
  params.push(`pagesize=${ opt.pagination.pageSize }`);
399
+ } else {
400
+ // Prevent unlimited resources in response
401
+ params.push(`pagesize=${ paginationUtils.defaultPageSize }`);
349
402
  }
350
403
 
351
404
  if (opt.pagination.sort?.length) {
@@ -365,12 +418,20 @@ class StevePaginationUtils extends NamespaceProjectFilters {
365
418
  params.push(`sort=${ joined }`);
366
419
 
367
420
  if (validateFields.invalid.length) {
368
- console.warn(`Pagination API does not support sorting '${ schema.id }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
421
+ console.warn(`Pagination API does not support sorting '${ schema?.id || opt.url }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
369
422
  }
370
423
  }
371
424
 
372
425
  if (opt.pagination.filters?.length) {
373
- const filters = this.convertPaginationParams(schema, opt.pagination.filters);
426
+ const filters = this.convertPaginationParams({ schema, filters: opt.pagination.filters });
427
+
428
+ if (filters) {
429
+ params.push(filters);
430
+ }
431
+ }
432
+
433
+ if (opt.pagination.labelSelector) {
434
+ const filters = this.convertLabelSelectorPaginationParams({ labelSelector: opt.pagination.labelSelector });
374
435
 
375
436
  if (filters) {
376
437
  params.push(filters);
@@ -386,7 +447,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
386
447
  /**
387
448
  * Check if the API supports filtering by this field
388
449
  */
389
- private validateField(state: { checked: string[], invalid: string[]}, schema: Schema, field?: string) {
450
+ private validateField(state: { checked: string[], invalid: string[]}, schema?: Schema, field?: string) {
390
451
  if (!field) {
391
452
  return; // no field, so not invalid
392
453
  }
@@ -399,7 +460,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
399
460
 
400
461
  // First check in our hardcoded list of supported filters
401
462
  if (
402
- process.env.NODE_ENV === 'dev' &&
463
+ !!schema &&
403
464
  [
404
465
  StevePaginationUtils.VALID_FIELDS[''], // Global
405
466
  StevePaginationUtils.VALID_FIELDS[schema.id], // Type specific
@@ -430,7 +491,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
430
491
  /**
431
492
  * Convert our {@link PaginationParam} definition of params to a set of url params
432
493
  */
433
- private convertPaginationParams(schema: Schema, filters: PaginationParam[] = []): string {
494
+ private convertPaginationParams({ schema, filters = [] }: {schema?: Schema, filters: PaginationParam[]}): string {
434
495
  const validateFields = {
435
496
  checked: new Array<string>(),
436
497
  invalid: new Array<string>(),
@@ -444,15 +505,29 @@ class StevePaginationUtils extends NamespaceProjectFilters {
444
505
  // Check if the API supports filtering by this field
445
506
  this.validateField(validateFields, schema, field.field);
446
507
 
447
- const value = encodeURIComponent(field.value);
508
+ // we're just checking that the field exists, so there's no value
509
+ if (field.exists) {
510
+ return field.field;
511
+ }
512
+ const encodedValue = encodeURIComponent(field.value || '');
448
513
 
449
514
  // = exact match (equals + exact)
450
515
  // ~ partial match (equals + !exact)
451
516
  // != not exact match (!equals + exact)
452
517
  // !~ not partial match (!equals + !exact)
453
518
  const operator = `${ field.equals ? '' : '!' }${ field.exact ? '=' : '~' }`;
454
-
455
- return `${ this.convertArrayPath(field.field) }${ operator }${ value }`;
519
+ let safeValue;
520
+
521
+ if (StevePaginationUtils.VALID_FIELD_VALUE_REGEX.test(field.value || '')) {
522
+ // Does not contain any protected characters, send as is
523
+ safeValue = encodedValue;
524
+ } else {
525
+ // Contains protected characters, wrap in quotes to ensure backend doesn't fail
526
+ // - replace reserver `"`/`%22` with empty string - see https://github.com/rancher/dashboard/issues/14549 for improvement
527
+ safeValue = `"${ encodedValue.replaceAll('%22', '') }"`;
528
+ }
529
+
530
+ return `${ this.convertArrayPath(field.field) }${ operator }${ safeValue }`;
456
531
  }
457
532
 
458
533
  return field.value;
@@ -470,11 +545,116 @@ class StevePaginationUtils extends NamespaceProjectFilters {
470
545
  const res = Object.keys(unique).join('&'); // This means AND
471
546
 
472
547
  if (validateFields.invalid.length) {
473
- console.warn(`Pagination API does not support filtering '${ schema.id }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
548
+ console.warn(`Pagination API does not support filtering '${ schema?.id || 'unknown' }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console
474
549
  }
475
550
 
476
551
  return res;
477
552
  }
553
+
554
+ /**
555
+ * Convert kube labelSelector object into steve filter params
556
+ *
557
+ * A lot of the requirements and details are taken directly from
558
+ * https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
559
+ */
560
+ private convertLabelSelectorPaginationParams({ labelSelector }: { labelSelector: KubeLabelSelector}): string {
561
+ // Get a list of matchExpressions
562
+ const expressions: KubeLabelSelectorExpression[] = labelSelector.matchExpressions ? [...labelSelector.matchExpressions] : [];
563
+
564
+ // matchLabels are just simpler versions of matchExpressions, for ease convert them
565
+ if (labelSelector.matchLabels) {
566
+ Object.entries(labelSelector.matchLabels).forEach(([key, value]) => {
567
+ const expression: KubeLabelSelectorExpression = {
568
+ key,
569
+ values: [value],
570
+ operator: 'In'
571
+ };
572
+
573
+ expressions.push(expression);
574
+ });
575
+ }
576
+
577
+ // concert all matchExpressions into string params
578
+ const filters: string[] = expressions.reduce((res, exp) => {
579
+ const labelKey = `metadata.labels[${ exp.key }]`;
580
+
581
+ switch (exp.operator) {
582
+ case 'In':
583
+ if (!exp.values?.length) {
584
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(IN) as no value was supplied`); // eslint-disable-line no-console
585
+
586
+ return res;
587
+ }
588
+
589
+ // foo IN [bar] => ?filter=foo+IN+(bar)
590
+ // foo IN [bar, baz2] => ?filter=foo+IN+(bar,baz2)
591
+ res.push(`filter=${ labelKey } IN (${ exp.values.join(',') })`);
592
+ break;
593
+ case 'NotIn':
594
+
595
+ if (!exp.values?.length) {
596
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(NOTIN) as no value was supplied`); // eslint-disable-line no-console
597
+
598
+ return res;
599
+ }
600
+
601
+ // aaa NotIn [bar, baz2]=> ?filter=foo+NOTIN+(bar,baz2)
602
+ res.push(`filter=${ labelKey } NOTIN (${ exp.values.join(',') })`);
603
+ break;
604
+ case 'Exists':
605
+
606
+ if (exp.values?.length) {
607
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Exists) as no value was supplied`); // eslint-disable-line no-console
608
+
609
+ return res;
610
+ }
611
+
612
+ // bbb Exists=> ?filter=bbb
613
+ res.push(`filter=${ labelKey }`);
614
+ break;
615
+ case 'DoesNotExist':
616
+ if (exp.values?.length) {
617
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(DoesNotExist) as no value was supplied`); // eslint-disable-line no-console
618
+
619
+ return res;
620
+ }
621
+
622
+ // ccc DoesNotExist ?filter=!bbb. # or %21bbb
623
+ res.push(`filter=!${ labelKey }`);
624
+ break;
625
+ case 'Gt':
626
+ // Currently broken - see https://github.com/rancher/rancher/issues/50057
627
+ // Only applicable to node affinity (atm) - https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
628
+
629
+ if (typeof exp.values !== 'string') {
630
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Gt) as no value was supplied`); // eslint-disable-line no-console
631
+
632
+ return res;
633
+ }
634
+
635
+ // ddd Gt 1=> ?filter=ddd+>+1
636
+ res.push(`filter=${ labelKey } > (${ exp.values })`);
637
+ break;
638
+ case 'Lt':
639
+ // Currently broken - see https://github.com/rancher/rancher/issues/50057
640
+ // Only applicable to node affinity (atm) - https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
641
+ if (typeof exp.values !== 'string') {
642
+ console.error(`Skipping labelSelector to API filter param conversion for ${ exp.key }(Lt) as no value was supplied`); // eslint-disable-line no-console
643
+
644
+ return res;
645
+ }
646
+
647
+ // eee Lt 2=> ?filter=eee+<+2
648
+ res.push(`filter=${ labelKey } < (${ exp.values })`);
649
+ break;
650
+ }
651
+
652
+ return res;
653
+ }, [] as string[]);
654
+
655
+ // "All of the requirements, from both matchLabels and matchExpressions are ANDed together -- they must all be satisfied in order to match"
656
+ return filters.join('&');
657
+ }
478
658
  }
479
659
 
480
660
  export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
@@ -487,7 +667,7 @@ export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
487
667
  enabled: [
488
668
  NODE, EVENT,
489
669
  WORKLOAD_TYPES.CRON_JOB, WORKLOAD_TYPES.DAEMON_SET, WORKLOAD_TYPES.DEPLOYMENT, WORKLOAD_TYPES.JOB, WORKLOAD_TYPES.STATEFUL_SET, POD,
490
- CATALOG.APP, CATALOG.CLUSTER_REPO, CATALOG.OPERATION,
670
+ CATALOG.APP, CATALOG.OPERATION,
491
671
  HPA, INGRESS, SERVICE,
492
672
  PV, CONFIG_MAP, STORAGE_CLASS, PVC, SECRET,
493
673
  WORKLOAD_TYPES.REPLICA_SET, WORKLOAD_TYPES.REPLICATION_CONTROLLER
@@ -501,8 +681,10 @@ export const PAGINATION_SETTINGS_STORE_DEFAULTS: PaginationSettingsStore = {
501
681
  enableAll: false,
502
682
  enableSome: {
503
683
  enabled: [
504
- { resource: CAPI.RANCHER_CLUSTER, context: ['home', 'side-bar'] },
505
- { resource: MANAGEMENT.CLUSTER, context: ['side-bar'] },
684
+ // { resource: CAPI.RANCHER_CLUSTER, context: ['home', 'side-bar'] }, // Disabled due to https://github.com/rancher/dashboard/issues/14493
685
+ // { resource: MANAGEMENT.CLUSTER, context: ['side-bar'] }, // Disabled due to https://github.com/rancher/dashboard/issues/14493
686
+ { resource: CATALOG.APP, context: ['branding'] },
687
+ SECRET
506
688
  ],
507
689
  generic: false,
508
690
  }