dashboard-shell-shell 1.0.10000011122 → 3.0.5-test.1

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 (695) hide show
  1. package/assets/data/aws-regions.json +3 -0
  2. package/assets/icons/demo.css:Zone.Identifier +0 -0
  3. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  4. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  5. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  6. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  7. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  9. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  10. package/assets/images/action.svg +6 -0
  11. package/assets/images/icons/document.svg +3 -0
  12. package/assets/images/key.svg +17 -0
  13. package/assets/images/pl/logo.png +0 -0
  14. package/assets/images/providers/sks.svg +1 -0
  15. package/assets/images/vendor/cognito.svg +1 -0
  16. package/assets/styles/app.scss +3 -0
  17. package/assets/styles/base/_basic.scss +10 -0
  18. package/assets/styles/base/_functions.scss +0 -0
  19. package/assets/styles/base/_mixins.scss +1 -1
  20. package/assets/styles/base/_spacing.scss +29 -0
  21. package/assets/styles/base/_variables.scss +16 -10
  22. package/assets/styles/global/_button.scss +17 -10
  23. package/assets/styles/global/_form.scss +2 -2
  24. package/assets/styles/global/_labeled-input.scss +7 -3
  25. package/assets/styles/global/_layout.scss +1 -1
  26. package/assets/styles/global/_select.scss +6 -7
  27. package/assets/styles/global/_table.scss +3 -2
  28. package/assets/styles/global/_tooltip.scss +8 -1
  29. package/assets/styles/themes/_dark.scss +32 -0
  30. package/assets/styles/themes/_light.scss +85 -4
  31. package/assets/styles/vendor/vue-select.scss +2 -1
  32. package/assets/translations/en-us.yaml +822 -107
  33. package/assets/translations/zh-hans.yaml +64 -31
  34. package/chart/__tests__/S3.test.ts +2 -1
  35. package/chart/monitoring/index.vue +1 -1
  36. package/cloud-credential/gcp.vue +9 -1
  37. package/components/ActionDropdown.vue +1 -0
  38. package/components/ActionMenuShell.vue +2 -3
  39. package/components/AppModal.vue +9 -28
  40. package/components/AsyncButton.vue +2 -0
  41. package/components/BrandImage.vue +1 -0
  42. package/components/Certificates.vue +5 -0
  43. package/components/ClusterIconMenu.vue +1 -1
  44. package/components/CodeMirror.vue +4 -3
  45. package/components/CommunityLinks.vue +3 -58
  46. package/components/ConfigMapSettings/Settings.vue +377 -0
  47. package/components/ConfigMapSettings/index.vue +354 -0
  48. package/components/CruResource.vue +104 -17
  49. package/components/CruResourceFooter.vue +1 -1
  50. package/components/DetailText.vue +61 -11
  51. package/components/Drawer/Chrome.vue +115 -0
  52. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  53. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  54. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  55. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  56. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
  57. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  58. package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
  59. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  60. package/components/Drawer/ResourceDetailDrawer/index.vue +123 -0
  61. package/components/ExplorerProjectsNamespaces.vue +30 -33
  62. package/components/FilterPanel.vue +156 -0
  63. package/components/FixedBanner.vue +19 -5
  64. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  65. package/components/GlobalRoleBindings.vue +112 -48
  66. package/components/GrowlManager.vue +16 -15
  67. package/components/IconOrSvg.vue +19 -35
  68. package/components/IndentedPanel.vue +4 -10
  69. package/components/KeyValueView.vue +1 -1
  70. package/components/LandingPagePreference.vue +2 -0
  71. package/components/Loading.vue +1 -1
  72. package/components/LocaleSelector.vue +10 -2
  73. package/components/PaginatedResourceTable.vue +53 -1
  74. package/components/ProgressBarMulti.vue +1 -0
  75. package/components/PromptModal.vue +38 -7
  76. package/components/PromptRemove.vue +8 -4
  77. package/components/PromptRestore.vue +22 -44
  78. package/components/RelatedResources.vue +4 -12
  79. package/components/Resource/Detail/Additional.vue +46 -0
  80. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  81. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  82. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  83. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  84. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  85. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  86. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  87. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  88. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  89. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  90. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  91. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  92. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  93. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  94. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  95. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  96. package/components/Resource/Detail/Card/index.vue +56 -0
  97. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  98. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  99. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  100. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  101. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  102. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
  103. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
  104. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +140 -0
  105. package/components/Resource/Detail/Metadata/KeyValue.vue +140 -0
  106. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  107. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  108. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  109. package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
  110. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  111. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  112. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  113. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  114. package/components/Resource/Detail/Metadata/composables.ts +81 -0
  115. package/components/Resource/Detail/Metadata/index.vue +88 -0
  116. package/components/Resource/Detail/Page.vue +37 -0
  117. package/components/Resource/Detail/PercentageBar.vue +40 -0
  118. package/components/Resource/Detail/ResourceRow.vue +138 -0
  119. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  120. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  121. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  122. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  123. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  124. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  125. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  126. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  127. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  128. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  129. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  130. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  131. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  132. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  133. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  134. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  135. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  136. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  137. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  138. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  139. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  140. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  141. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  142. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  143. package/components/Resource/Detail/SpacedRow.vue +14 -0
  144. package/components/Resource/Detail/StatusBar.vue +59 -0
  145. package/components/Resource/Detail/StatusRow.vue +61 -0
  146. package/components/Resource/Detail/TitleBar/Title.vue +14 -0
  147. package/components/Resource/Detail/TitleBar/Top.vue +14 -0
  148. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  149. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  150. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  151. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  152. package/components/Resource/Detail/TitleBar/composables.ts +46 -0
  153. package/components/Resource/Detail/TitleBar/index.vue +204 -0
  154. package/components/Resource/Detail/Top/index.vue +34 -0
  155. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  156. package/components/Resource/Detail/composables.ts +45 -0
  157. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  158. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  159. package/components/ResourceDetail/Masthead/index.vue +65 -0
  160. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  161. package/components/{rancherResourceDetail/Masthead.vue → ResourceDetail/Masthead/legacy.vue} +36 -16
  162. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  163. package/components/ResourceDetail/index.vue +75 -560
  164. package/components/{rancherResourceDetail/index.vue → ResourceDetail/legacy.vue} +28 -55
  165. package/components/ResourceList/Masthead.vue +188 -85
  166. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  167. package/components/ResourceList/index.vue +3 -2
  168. package/components/ResourceTable.vue +65 -16
  169. package/components/ResourceYaml.vue +15 -2
  170. package/components/RichTranslation.vue +106 -0
  171. package/components/SideNav.vue +66 -29
  172. package/components/SlideInPanelManager.vue +116 -14
  173. package/components/SortableTable/THead.vue +6 -0
  174. package/components/SortableTable/index.vue +490 -389
  175. package/components/SortableTable/paging.js +15 -16
  176. package/components/SortableTable/selection.js +22 -10
  177. package/components/StateDot/index.vue +28 -0
  178. package/components/StatusBadge.vue +6 -4
  179. package/components/SubtleLink.vue +25 -0
  180. package/components/Tabbed/Tab.vue +1 -1
  181. package/components/Tabbed/index.vue +65 -69
  182. package/components/Wizard.vue +16 -3
  183. package/components/YamlEditor.vue +1 -2
  184. package/components/__tests__/AsyncButton.test.ts +39 -0
  185. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  186. package/components/__tests__/CruResource.test.ts +63 -0
  187. package/components/__tests__/FilterPanel.test.ts +81 -0
  188. package/components/__tests__/GrowlManager.test.ts +0 -25
  189. package/components/__tests__/PromptModal.test.ts +146 -0
  190. package/components/__tests__/PromptRestore.test.ts +1 -65
  191. package/components/__tests__/RichTranslation.test.ts +115 -0
  192. package/components/auth/AuthBanner.vue +15 -14
  193. package/components/auth/Principal.vue +2 -2
  194. package/components/auth/RoleDetailEdit.vue +101 -8
  195. package/components/auth/SelectPrincipal.vue +1 -0
  196. package/components/auth/login/ldap.vue +2 -2
  197. package/components/auth/login/oidc.vue +6 -1
  198. package/components/fleet/FleetApplications.vue +174 -0
  199. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  200. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  201. package/components/fleet/FleetClusters.vue +25 -6
  202. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  203. package/components/fleet/FleetHelmOps.vue +123 -0
  204. package/components/fleet/FleetIntro.vue +58 -28
  205. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  206. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  207. package/components/fleet/FleetRepos.vue +37 -80
  208. package/components/fleet/FleetResources.vue +69 -27
  209. package/components/fleet/FleetSummary.vue +26 -51
  210. package/components/fleet/FleetValuesFrom.vue +295 -0
  211. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  212. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  213. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  214. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  215. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  216. package/components/fleet/dashboard/Empty.vue +73 -0
  217. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  218. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  219. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  220. package/components/fleet/dashboard/ResourcePanel.vue +384 -0
  221. package/components/form/ArrayList.vue +144 -116
  222. package/components/form/BannerSettings.vue +130 -61
  223. package/components/form/ChangePassword.vue +7 -5
  224. package/components/form/ColorInput.vue +67 -14
  225. package/components/form/FileImageSelector.vue +1 -1
  226. package/components/form/Footer.vue +11 -5
  227. package/components/form/InputWithSelect.vue +2 -0
  228. package/components/form/KeyValue.vue +118 -53
  229. package/components/form/LabeledSelect.vue +219 -201
  230. package/components/form/Labels.vue +91 -21
  231. package/components/form/MatchExpressions.vue +56 -9
  232. package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
  233. package/components/form/Members/MembershipEditor.vue +1 -1
  234. package/components/form/NameNsDescription.vue +31 -14
  235. package/components/form/Networking.vue +24 -19
  236. package/components/form/NotificationSettings.vue +15 -1
  237. package/components/form/Password.vue +6 -2
  238. package/components/form/ResourceLabeledSelect.vue +22 -8
  239. package/components/form/ResourceQuota/Namespace.vue +1 -1
  240. package/components/form/ResourceQuota/NamespaceRow.vue +13 -10
  241. package/components/form/ResourceQuota/ProjectRow.vue +0 -1
  242. package/components/form/ResourceSelector.vue +27 -23
  243. package/components/form/ResourceTabs/index.vue +7 -1
  244. package/components/form/SSHKnownHosts/index.vue +14 -11
  245. package/components/form/SecretSelector.vue +18 -2
  246. package/components/form/Select.vue +59 -28
  247. package/components/form/SelectOrCreateAuthSecret.vue +6 -3
  248. package/components/form/SimpleSecretSelector.vue +17 -4
  249. package/components/form/Taints.vue +21 -2
  250. package/components/form/UnitInput.vue +21 -0
  251. package/components/form/ValueFromResource.vue +31 -19
  252. package/components/form/__tests__/ArrayList.test.ts +32 -0
  253. package/components/form/__tests__/ColorInput.test.ts +35 -0
  254. package/components/form/__tests__/KeyValue.test.ts +36 -0
  255. package/components/form/__tests__/LabeledSelect.test.ts +79 -2
  256. package/components/form/__tests__/Labels.test.ts +360 -0
  257. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  258. package/components/form/__tests__/Networking.test.ts +116 -0
  259. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
  260. package/components/form/__tests__/Select.test.ts +37 -1
  261. package/components/form/__tests__/UnitInput.test.ts +23 -1
  262. package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
  263. package/components/formatter/ClusterLink.vue +5 -8
  264. package/components/formatter/Description.vue +30 -0
  265. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  266. package/components/formatter/FleetApplicationSource.vue +79 -0
  267. package/components/formatter/FleetSummaryGraph.vue +7 -0
  268. package/components/formatter/PodImages.vue +1 -1
  269. package/components/formatter/WorkloadHealthScale.vue +1 -1
  270. package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
  271. package/components/formatter/__tests__/LiveDate.test.ts +10 -2
  272. package/components/google/AccountAccess.vue +209 -0
  273. package/components/google/types/gcp.d.ts +136 -0
  274. package/components/google/types/index.d.ts +101 -0
  275. package/components/google/util/__mocks__/gcp.ts +465 -0
  276. package/components/google/util/formatter.ts +82 -0
  277. package/components/google/util/gcp.ts +134 -0
  278. package/components/google/util/index.d.ts +11 -0
  279. package/components/nav/Favorite.vue +6 -2
  280. package/components/nav/Group.vue +74 -23
  281. package/components/nav/Header.vue +103 -52
  282. package/components/nav/HeaderPageActionMenu.vue +1 -0
  283. package/components/nav/NamespaceFilter.vue +141 -87
  284. package/components/nav/NotificationCenter/Notification.vue +484 -0
  285. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  286. package/components/nav/NotificationCenter/index.vue +148 -0
  287. package/components/nav/TopLevelMenu.helper.ts +55 -34
  288. package/components/nav/TopLevelMenu.vue +193 -119
  289. package/components/nav/Type.vue +52 -12
  290. package/components/nav/WindowManager/ContainerLogs.vue +87 -61
  291. package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
  292. package/components/nav/WindowManager/index.vue +3 -2
  293. package/components/templates/default.vue +0 -3
  294. package/components/templates/plain.vue +0 -3
  295. package/composables/drawer.ts +26 -0
  296. package/composables/focusTrap.ts +3 -3
  297. package/composables/resources.test.ts +63 -0
  298. package/composables/resources.ts +38 -0
  299. package/composables/useClickOutside.ts +1 -1
  300. package/composables/useI18n.ts +12 -11
  301. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  302. package/config/labels-annotations.js +22 -11
  303. package/config/pagination-table-headers.js +8 -1
  304. package/config/private-label.js +0 -1
  305. package/config/product/auth.js +33 -7
  306. package/config/product/{cis.js → compliance.js} +23 -26
  307. package/config/product/explorer.js +48 -16
  308. package/config/product/fleet.js +77 -17
  309. package/config/product/manager.js +1 -29
  310. package/config/product/settings.js +39 -18
  311. package/config/query-params.js +16 -1
  312. package/config/roles.ts +2 -1
  313. package/config/router/navigation-guards/authentication.js +51 -2
  314. package/config/router/navigation-guards/index.js +5 -67
  315. package/config/router/routes.js +65 -31
  316. package/config/secret.ts +15 -0
  317. package/config/settings.ts +61 -16
  318. package/config/store.js +2 -0
  319. package/config/system-namespaces.js +1 -1
  320. package/config/table-headers.js +91 -30
  321. package/config/types.js +18 -7
  322. package/config/version.js +1 -1
  323. package/core/plugin-helpers.ts +3 -2
  324. package/core/plugin.ts +32 -7
  325. package/core/types.ts +25 -7
  326. package/detail/catalog.cattle.io.app.vue +5 -1
  327. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  328. package/detail/fleet.cattle.io.bundle.vue +70 -6
  329. package/detail/fleet.cattle.io.cluster.vue +28 -15
  330. package/detail/fleet.cattle.io.gitrepo.vue +11 -2
  331. package/detail/fleet.cattle.io.helmop.vue +157 -0
  332. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  333. package/detail/management.cattle.io.oidcclient.vue +369 -0
  334. package/detail/namespace.vue +0 -3
  335. package/detail/node.vue +20 -16
  336. package/detail/pod.vue +2 -2
  337. package/detail/provisioning.cattle.io.cluster.vue +16 -50
  338. package/detail/service.vue +10 -2
  339. package/detail/workload/index.vue +48 -39
  340. package/dialog/AddCustomBadgeDialog.vue +0 -1
  341. package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
  342. package/dialog/AddonConfigConfirmationDialog.vue +1 -1
  343. package/dialog/AssignToDialog.vue +176 -0
  344. package/dialog/ChangePasswordDialog.vue +106 -0
  345. package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
  346. package/dialog/DisableAuthProviderDialog.vue +101 -0
  347. package/dialog/DrainNode.vue +1 -1
  348. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
  349. package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
  350. package/dialog/FeatureFlagListDialog.vue +288 -0
  351. package/dialog/ForceMachineRemoveDialog.vue +1 -1
  352. package/dialog/GenericPrompt.vue +1 -1
  353. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  354. package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
  355. package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
  356. package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
  357. package/dialog/MoveNamespaceDialog.vue +157 -0
  358. package/dialog/OidcClientSecretDialog.vue +117 -0
  359. package/dialog/RedeployWorkloadDialog.vue +164 -0
  360. package/dialog/RotateEncryptionKeyDialog.vue +10 -30
  361. package/dialog/ScalePoolDownDialog.vue +1 -1
  362. package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
  363. package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
  364. package/dialog/WechatDialog.vue +57 -0
  365. package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
  366. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  367. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  368. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  369. package/edit/__tests__/service.test.ts +2 -1
  370. package/edit/auth/ldap/__tests__/config.test.ts +14 -0
  371. package/edit/auth/ldap/config.vue +24 -0
  372. package/edit/auth/oidc.vue +159 -93
  373. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  374. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  375. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  376. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  377. package/edit/configmap.vue +8 -2
  378. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  379. package/edit/fleet.cattle.io.gitrepo.vue +70 -256
  380. package/edit/fleet.cattle.io.helmop.vue +786 -0
  381. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  382. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  383. package/edit/logging-flow/index.vue +1 -0
  384. package/edit/logging.banzaicloud.io.output/index.vue +2 -1
  385. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +5 -6
  386. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  387. package/edit/management.cattle.io.oidcclient.vue +162 -0
  388. package/edit/management.cattle.io.project.vue +4 -1
  389. package/edit/management.cattle.io.user.vue +17 -4
  390. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  391. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  392. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  393. package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
  394. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  395. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  396. package/edit/monitoring.coreos.com.route.vue +1 -0
  397. package/edit/namespace.vue +2 -4
  398. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  399. package/edit/networking.k8s.io.ingress/Certificate.vue +11 -3
  400. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  401. package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
  402. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  403. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
  404. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
  405. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
  406. package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
  407. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
  408. package/edit/networking.k8s.io.networkpolicy/index.vue +23 -31
  409. package/edit/node.vue +1 -0
  410. package/edit/persistentvolume/index.vue +4 -1
  411. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
  412. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
  413. package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
  414. package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
  415. package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
  416. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +48 -39
  417. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
  418. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  419. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
  420. package/edit/resources.cattle.io.restore.vue +1 -1
  421. package/edit/secret/basic.vue +1 -0
  422. package/edit/secret/index.vue +127 -15
  423. package/edit/service.vue +17 -29
  424. package/edit/serviceaccount.vue +4 -1
  425. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  426. package/edit/token.vue +1 -1
  427. package/edit/workload/index.vue +11 -15
  428. package/edit/workload/mixins/workload.js +0 -2
  429. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  430. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  431. package/list/fleet.cattle.io.helmop.vue +108 -0
  432. package/list/management.cattle.io.feature.vue +4 -288
  433. package/list/management.cattle.io.oidcclient.vue +108 -0
  434. package/list/management.cattle.io.setting.vue +22 -13
  435. package/list/management.cattle.io.user.vue +7 -3
  436. package/list/namespace.vue +6 -2
  437. package/list/node.vue +2 -0
  438. package/list/projectsecret.vue +345 -0
  439. package/list/provisioning.cattle.io.cluster.vue +6 -7
  440. package/list/secret.vue +109 -0
  441. package/list/workload.vue +6 -2
  442. package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
  443. package/machine-config/amazonec2.vue +3 -24
  444. package/machine-config/components/GCEImage.vue +374 -0
  445. package/machine-config/google.vue +617 -0
  446. package/machine-config/vmwarevsphere.vue +7 -17
  447. package/mixins/__tests__/brand.spec.ts +170 -0
  448. package/mixins/auth-config.js +8 -1
  449. package/mixins/brand.js +33 -17
  450. package/mixins/create-edit-view/impl.js +10 -1
  451. package/mixins/create-edit-view/index.js +5 -0
  452. package/mixins/preset.js +100 -0
  453. package/mixins/resource-fetch-api-pagination.js +73 -44
  454. package/mixins/resource-fetch.js +18 -8
  455. package/mixins/resource-table-watch.js +45 -0
  456. package/mixins/vue-select-overrides.js +1 -4
  457. package/models/__tests__/chart.test.ts +296 -0
  458. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  459. package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
  460. package/models/__tests__/node.test.ts +7 -63
  461. package/models/__tests__/workload.test.ts +1 -0
  462. package/models/chart.js +157 -2
  463. package/models/cluster/node.js +2 -1
  464. package/models/cluster.js +32 -2
  465. package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
  466. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  467. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  468. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  469. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  470. package/models/fleet-application.js +297 -0
  471. package/models/fleet.cattle.io.bundle.js +9 -8
  472. package/models/fleet.cattle.io.cluster.js +21 -4
  473. package/models/fleet.cattle.io.gitrepo.js +46 -382
  474. package/models/fleet.cattle.io.helmop.js +202 -0
  475. package/models/management.cattle.io.authconfig.js +1 -0
  476. package/models/management.cattle.io.cluster.js +0 -20
  477. package/models/management.cattle.io.feature.js +7 -1
  478. package/models/management.cattle.io.fleetworkspace.js +14 -1
  479. package/models/management.cattle.io.node.js +7 -22
  480. package/models/management.cattle.io.nodepool.js +12 -0
  481. package/models/management.cattle.io.oidcclient.js +18 -0
  482. package/models/management.cattle.io.registration.js +3 -0
  483. package/models/management.cattle.io.setting.js +0 -1
  484. package/models/namespace.js +12 -1
  485. package/models/provisioning.cattle.io.cluster.js +60 -97
  486. package/models/secret.js +157 -2
  487. package/models/service.js +28 -9
  488. package/models/storage.k8s.io.storageclass.js +2 -2
  489. package/models/workload.js +91 -51
  490. package/package.json +6 -5
  491. package/pages/about.vue +17 -61
  492. package/pages/account/index.vue +9 -1
  493. package/pages/auth/login.vue +50 -30
  494. package/pages/auth/verify.vue +13 -1
  495. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  496. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  497. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
  498. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  499. package/pages/c/_cluster/apps/charts/index.vue +501 -468
  500. package/pages/c/_cluster/apps/charts/install.vue +0 -1
  501. package/pages/c/_cluster/auth/roles/index.vue +19 -1
  502. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  503. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  504. package/pages/c/_cluster/explorer/index.vue +14 -3
  505. package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
  506. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  507. package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
  508. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  509. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  510. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  511. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  512. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  513. package/pages/c/_cluster/fleet/index.vue +866 -328
  514. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  515. package/pages/c/_cluster/longhorn/index.vue +5 -2
  516. package/pages/c/_cluster/settings/banners.vue +230 -103
  517. package/pages/c/_cluster/settings/brand.vue +349 -301
  518. package/pages/c/_cluster/settings/performance.vue +68 -64
  519. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  520. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  521. package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
  522. package/pages/c/_cluster/uiplugins/index.vue +98 -55
  523. package/pages/explorer/resource/detail/configmap.vue +42 -0
  524. package/pages/explorer/resource/detail/projectsecret.vue +9 -0
  525. package/pages/explorer/resource/detail/secret.vue +63 -0
  526. package/pages/home.vue +61 -108
  527. package/pages/prefs.vue +25 -24
  528. package/pages/support/index.vue +4 -6
  529. package/pkg/tsconfig.json +9 -9
  530. package/pkg/vue.config.js +1 -1
  531. package/plugins/clean-html.js +2 -0
  532. package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
  533. package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
  534. package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
  535. package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
  536. package/plugins/dashboard-store/actions.js +212 -55
  537. package/plugins/dashboard-store/getters.js +112 -24
  538. package/plugins/dashboard-store/mutations.js +61 -12
  539. package/plugins/dashboard-store/normalize.js +29 -19
  540. package/plugins/dashboard-store/resource-class.js +132 -49
  541. package/plugins/steve/__tests__/getters.test.ts +19 -12
  542. package/plugins/steve/__tests__/steve-class.test.ts +1 -0
  543. package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
  544. package/plugins/steve/actions.js +37 -24
  545. package/plugins/steve/getters.js +47 -12
  546. package/plugins/steve/resourceWatcher.js +10 -3
  547. package/plugins/steve/steve-class.js +5 -0
  548. package/plugins/steve/steve-pagination-utils.ts +225 -43
  549. package/plugins/steve/subscribe.js +418 -53
  550. package/plugins/steve/worker/web-worker.advanced.js +5 -1
  551. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  552. package/rancher-components/Banner/Banner.test.ts +51 -3
  553. package/rancher-components/Banner/Banner.vue +37 -6
  554. package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
  555. package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
  556. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
  557. package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
  558. package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
  559. package/rancher-components/Form/Radio/RadioButton.vue +21 -5
  560. package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
  561. package/rancher-components/Form/Radio/RadioGroup.vue +81 -38
  562. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
  563. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
  564. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  565. package/rancher-components/RcButton/RcButton.vue +1 -1
  566. package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
  567. package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
  568. package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
  569. package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
  570. package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
  571. package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -8
  572. package/rancher-components/RcDropdown/index.ts +2 -0
  573. package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
  574. package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
  575. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  576. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  577. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  578. package/rancher-components/RcItemCard/index.ts +2 -0
  579. package/rancher-components/StringList/StringList.vue +1 -1
  580. package/scripts/clean +0 -0
  581. package/scripts/extension/bundle +0 -0
  582. package/scripts/extension/helm/scripts/package +0 -0
  583. package/scripts/extension/helm/scripts/patch +0 -0
  584. package/scripts/extension/helm/scripts/version +0 -0
  585. package/scripts/extension/helmpatch +0 -0
  586. package/scripts/extension/parse-tag-name +0 -0
  587. package/scripts/extension/publish +1 -1
  588. package/scripts/publish-shell.sh +86 -60
  589. package/scripts/serve-pkgs +0 -0
  590. package/scripts/sync-shell-deps +0 -0
  591. package/scripts/typegen.sh +44 -28
  592. package/static/loading-indicator.html +1 -1
  593. package/store/action-menu.js +26 -56
  594. package/store/auth.js +3 -0
  595. package/store/catalog.js +85 -25
  596. package/store/features.js +0 -1
  597. package/store/growl.js +97 -8
  598. package/store/i18n.js +5 -5
  599. package/store/index.js +44 -14
  600. package/store/notifications.ts +426 -0
  601. package/store/prefs.js +11 -5
  602. package/store/slideInPanel.ts +6 -0
  603. package/store/type-map.js +34 -17
  604. package/store/type-map.utils.ts +49 -6
  605. package/store/uiplugins.ts +15 -1
  606. package/types/fleet.d.ts +60 -1
  607. package/types/kube/kube-api.ts +34 -0
  608. package/types/notifications/index.ts +74 -0
  609. package/types/resources/fleet.d.ts +43 -0
  610. package/types/resources/pod-security-admission.ts +36 -0
  611. package/types/resources/settings.d.ts +107 -0
  612. package/types/resources/userPreferences.d.ts +13 -0
  613. package/types/shell/index.d.ts +971 -745
  614. package/types/store/dashboard-store.types.ts +57 -4
  615. package/types/store/pagination.types.ts +41 -9
  616. package/types/store/subscribe.types.ts +50 -0
  617. package/utils/__mocks__/tabbable.js +13 -0
  618. package/utils/__tests__/back-off.test.ts +354 -0
  619. package/utils/__tests__/create-yaml.test.ts +235 -0
  620. package/utils/__tests__/fleet.test.ts +148 -0
  621. package/utils/__tests__/kontainer.test.ts +19 -0
  622. package/utils/__tests__/object.test.ts +54 -1
  623. package/utils/__tests__/string.test.ts +273 -1
  624. package/utils/__tests__/time.test.ts +31 -0
  625. package/utils/auth.js +41 -6
  626. package/utils/back-off.ts +176 -0
  627. package/utils/cluster.js +24 -20
  628. package/utils/create-yaml.js +103 -9
  629. package/utils/crypto/encryption.ts +103 -0
  630. package/utils/cspAdaptor.ts +51 -0
  631. package/utils/error.js +4 -5
  632. package/utils/fleet-types.ts +0 -0
  633. package/utils/fleet.ts +204 -74
  634. package/utils/grafana.js +1 -0
  635. package/utils/kontainer.ts +3 -5
  636. package/utils/object.js +36 -12
  637. package/utils/pagination-utils.ts +50 -3
  638. package/utils/pagination-wrapper.ts +132 -50
  639. package/utils/perf-setting.utils.ts +28 -0
  640. package/utils/release-notes.ts +48 -0
  641. package/utils/selector-typed.ts +210 -0
  642. package/utils/selector.js +29 -6
  643. package/utils/settings.ts +4 -1
  644. package/utils/string.js +24 -0
  645. package/utils/style.ts +39 -0
  646. package/utils/{time.js → time.ts} +25 -6
  647. package/utils/uiplugins.ts +41 -8
  648. package/utils/v-sphere.ts +5 -1
  649. package/utils/validators/formRules/__tests__/index.test.ts +76 -6
  650. package/utils/validators/formRules/index.ts +99 -4
  651. package/utils/window.js +11 -7
  652. package/vue.config.js +1 -6
  653. package/.DS_Store +0 -0
  654. package/components/AssignTo.vue +0 -199
  655. package/components/DisableAuthProviderModal.vue +0 -115
  656. package/components/MoveModal.vue +0 -167
  657. package/components/PromptChangePassword.vue +0 -123
  658. package/components/ResourceDetail/Masthead.vue +0 -842
  659. package/components/__tests__/ApplicationCard.test.ts +0 -27
  660. package/components/cards/ApplicationCard.vue +0 -145
  661. package/components/fleet/FleetBundleResources.vue +0 -86
  662. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  663. package/components/formatter/RKETemplateName.vue +0 -37
  664. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
  665. package/components/rancherResourceList/Masthead-btn.vue +0 -225
  666. package/components/rancherResourceList/Masthead.vue +0 -375
  667. package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
  668. package/components/rancherResourceList/index.vue +0 -307
  669. package/components/rancherResourceList/resource-list.config.js +0 -7
  670. package/components/rancherResourceTable.vue +0 -783
  671. package/components/rancherSortableTable/THead.vue +0 -561
  672. package/components/rancherSortableTable/actions.js +0 -153
  673. package/components/rancherSortableTable/advanced-filtering.js +0 -272
  674. package/components/rancherSortableTable/debug.js +0 -117
  675. package/components/rancherSortableTable/filtering.js +0 -290
  676. package/components/rancherSortableTable/grouping.js +0 -48
  677. package/components/rancherSortableTable/index.vue +0 -2712
  678. package/components/rancherSortableTable/paging.js +0 -155
  679. package/components/rancherSortableTable/selection.js +0 -629
  680. package/components/rancherSortableTable/sortable-config.ts +0 -4
  681. package/components/rancherSortableTable/sorting.js +0 -129
  682. package/config/product/legacy.js +0 -62
  683. package/config/secret.js +0 -14
  684. package/dialog/SaveAsRKETemplateDialog.vue +0 -139
  685. package/models/etcdbackup.js +0 -45
  686. package/pages/auth copy/login.vue +0 -595
  687. package/pages/auth copy/logout.vue +0 -47
  688. package/pages/auth copy/setup.vue +0 -523
  689. package/pages/auth copy/verify.vue +0 -203
  690. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  691. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  692. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  693. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  694. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  695. package/types/cloud-shell/index.d.ts +0 -11014
package/models/chart.js CHANGED
@@ -1,9 +1,12 @@
1
- import { compatibleVersionsFor } from '@shell/store/catalog';
1
+ import { compatibleVersionsFor, APP_UPGRADE_STATUS } from '@shell/store/catalog';
2
2
  import {
3
- REPO_TYPE, REPO, CHART, VERSION, _FLAGGED, HIDE_SIDE_NAV
3
+ REPO_TYPE, REPO, CHART, VERSION, _FLAGGED, HIDE_SIDE_NAV, CATEGORY, TAG
4
4
  } from '@shell/config/query-params';
5
5
  import { BLANK_CLUSTER } from '@shell/store/store-types.js';
6
6
  import SteveModel from '@shell/plugins/steve/steve-class';
7
+ import { CATALOG, ZERO_TIME } from '@shell/config/types';
8
+ import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations';
9
+ import day from 'dayjs';
7
10
 
8
11
  export default class Chart extends SteveModel {
9
12
  queryParams(from, hideSideNav) {
@@ -47,4 +50,156 @@ export default class Chart extends SteveModel {
47
50
  query,
48
51
  });
49
52
  }
53
+
54
+ /**
55
+ * Returns the list of installed apps that match this chart by:
56
+ * - chart name
57
+ * - repository name
58
+ * - and either:
59
+ * - the home URL matches the latest version’s home URL
60
+ * - or version + home URL match any other known version
61
+ *
62
+ * Inverse logic of `matchingCharts` in `catalog.cattle.io.app.js`.
63
+ *
64
+ * @returns {Array<Object>} List of matching installed app objects.
65
+ */
66
+ get matchingInstalledApps() {
67
+ const latestVersion = this.versions?.[0] || [];
68
+ const appHome = latestVersion?.home;
69
+ const installedApps = this.$rootGetters['cluster/all'](CATALOG.APP);
70
+
71
+ return installedApps.filter((installedApp) => {
72
+ const metadata = installedApp?.spec?.chart?.metadata;
73
+ const name = metadata?.name;
74
+ const version = metadata?.version;
75
+ const home = metadata?.home;
76
+
77
+ const repoName = metadata?.annotations?.[CATALOG_ANNOTATIONS.SOURCE_REPO_NAME] ||
78
+ installedApp?.metadata?.labels?.[CATALOG_ANNOTATIONS.CLUSTER_REPO_NAME];
79
+
80
+ // name and repo should match
81
+ if (name !== this.chartName || !repoName || repoName !== this.repoName) {
82
+ return false;
83
+ }
84
+
85
+ // match by comparing home URL in the latest version vs home URL from the installed app
86
+ if (appHome && home === appHome) {
87
+ return true;
88
+ }
89
+
90
+ // match by version + home for the rest
91
+ return this.versions?.some((v) => v.version === version && home === appHome);
92
+ });
93
+ }
94
+
95
+ /**
96
+ * Determines if the chart is installed by checking if exactly one matching installed app is found.
97
+ *
98
+ * @returns {boolean} `true` if the chart is currently installed.
99
+ */
100
+ get isInstalled() {
101
+ return this.matchingInstalledApps.length === 1;
102
+ }
103
+
104
+ /**
105
+ * Determines if the installed app has a single available upgrade.
106
+ * Requires the chart to be installed.
107
+ *
108
+ * @returns {boolean} `true` if the app is installed and has a single upgrade available.
109
+ */
110
+ get upgradeable() {
111
+ return this.isInstalled && this.matchingInstalledApps[0].upgradeAvailable === APP_UPGRADE_STATUS.SINGLE_UPGRADE;
112
+ }
113
+
114
+ /**
115
+ * Builds structured metadata for display in RcItemCard.vue:
116
+ * - Sub-header (version and last updated)
117
+ * - Footer (repository, categories, tags)
118
+ * - Status indicators (e.g. deprecated, upgradeable, installed)
119
+ *
120
+ * @returns {Object} Card content object with `subHeaderItems`, `footerItems`, and `statuses` arrays.
121
+ */
122
+ get cardContent() {
123
+ if (!this._cardContent) {
124
+ const latestVersion = this.versions?.[0] || {};
125
+ const subHeaderItems = [];
126
+
127
+ if (latestVersion) {
128
+ const hasZeroTime = latestVersion.created === ZERO_TIME;
129
+
130
+ subHeaderItems.push({
131
+ icon: 'icon-version-alt',
132
+ iconTooltip: { key: 'tableHeaders.version' },
133
+ label: latestVersion.version
134
+ });
135
+
136
+ const lastUpdatedItem = {
137
+ icon: 'icon-refresh-alt',
138
+ iconTooltip: { key: 'tableHeaders.lastUpdated' },
139
+ label: hasZeroTime ? this.t('generic.na') : day(latestVersion.created).format('MMM D, YYYY')
140
+ };
141
+
142
+ if (hasZeroTime) {
143
+ lastUpdatedItem.labelTooltip = this.t('catalog.charts.appChartCard.subHeaderItem.missingVersionDate');
144
+ }
145
+
146
+ subHeaderItems.push(lastUpdatedItem);
147
+ }
148
+
149
+ const footerItems = [
150
+ {
151
+ type: REPO,
152
+ icon: 'icon-repository-alt',
153
+ iconTooltip: { key: 'tableHeaders.repoName' },
154
+ labels: [this.repoNameDisplay]
155
+ }
156
+ ];
157
+
158
+ if (this.categories.length) {
159
+ footerItems.push( {
160
+ type: CATEGORY,
161
+ icon: 'icon-category-alt',
162
+ iconTooltip: { key: 'generic.category' },
163
+ labels: this.categories
164
+ });
165
+ }
166
+
167
+ if (this.tags.length) {
168
+ footerItems.push({
169
+ type: TAG,
170
+ icon: 'icon-tag-alt',
171
+ iconTooltip: { key: 'generic.tags' },
172
+ labels: this.tags
173
+ });
174
+ }
175
+
176
+ const statuses = [];
177
+
178
+ if (this.deprecated) {
179
+ statuses.push({
180
+ icon: 'icon-alert-alt', color: 'error', tooltip: { key: 'generic.deprecated' }
181
+ });
182
+ }
183
+
184
+ if (this.upgradeable) {
185
+ statuses.push({
186
+ icon: 'icon-upgrade-alt', color: 'info', tooltip: { key: 'generic.upgradeable' }
187
+ });
188
+ }
189
+
190
+ if (this.isInstalled) {
191
+ statuses.push({
192
+ icon: 'icon-confirmation-alt', color: 'success', tooltip: { key: 'generic.installed' }
193
+ });
194
+ }
195
+
196
+ this._cardContent = {
197
+ subHeaderItems,
198
+ footerItems,
199
+ statuses
200
+ };
201
+ }
202
+
203
+ return this._cardContent;
204
+ }
50
205
  }
@@ -227,7 +227,7 @@ export default class ClusterNode extends SteveModel {
227
227
  }
228
228
 
229
229
  get podCapacity() {
230
- return Number.parseInt(this.status.capacity?.pods);
230
+ return parseSi(this.status.capacity?.pods);
231
231
  }
232
232
 
233
233
  get podConsumed() {
@@ -408,6 +408,7 @@ export default class ClusterNode extends SteveModel {
408
408
  }
409
409
 
410
410
  get pods() {
411
+ // This fetches all pods that are in the store, rather than all pods in the cluster
411
412
  const allPods = this.$rootGetters['cluster/all'](POD);
412
413
 
413
414
  return allPods.filter((pod) => pod.spec.nodeName === this.name);
package/models/cluster.js CHANGED
@@ -33,10 +33,40 @@ export default class NormanCluster extends NormanModel {
33
33
  return !!(this.systemAnnotations || []).length;
34
34
  }
35
35
 
36
+ /**
37
+ * Return the namespace of the v1 prov cluster.
38
+ *
39
+ * Used to construct the prov cluster id
40
+ *
41
+ * objectset.rio.cattle.io/owner-namespace annotation is applied to v3 clusters that were automatically created following the creation of a v1 prov cluster
42
+ */
43
+ get provisioningClusterNs() {
44
+ return this.annotations?.['objectset.rio.cattle.io/owner-namespace'] || 'fleet-default';
45
+ }
46
+
47
+ /**
48
+ * Return the name of the v1 prov cluster (note - not the human name, but usually is)
49
+ *
50
+ * Used to construct the prov cluster id.
51
+ *
52
+ * It could be two different forms. If the v1 prov cluster was created ..
53
+ * - automatically following the creation of a v3 cluster = id is the v3 cluster id
54
+ * - directly by the user = id is the (roughly) human name, which is this.id
55
+ *
56
+ * objectset.rio.cattle.io/owner-namespace annotation is applied to v3 clusters that were automatically created following the creation of a v1 prov cluster
57
+ *
58
+ */
59
+ get provisioningClusterName() {
60
+ return this.annotations?.['objectset.rio.cattle.io/owner-name'] || this.id;
61
+ }
62
+
63
+ get provisioningClusterId() {
64
+ return `${ this.provisioningClusterNs }/${ this.provisioningClusterName }`;
65
+ }
66
+
36
67
  waitForProvisioning(timeout = 60000, interval) {
37
68
  return this.waitForTestFn(() => {
38
- const ns = this.annotations['objectset.rio.cattle.io/owner-namespace'] || 'fleet-default';
39
- const id = `${ ns }/${ this.id }`;
69
+ const id = this.provisioningClusterId;
40
70
 
41
71
  return id && !!this.$rootGetters['management/byId'](CAPI.RANCHER_CLUSTER, id);
42
72
  }, this.$rootGetters['i18n/t']('cluster.managementTimeout'), timeout, interval);
@@ -125,7 +125,7 @@ export default class CapiMachineDeployment extends SteveModel {
125
125
  return;
126
126
  }
127
127
 
128
- const initialValue = this.cluster.toJSON();
128
+ const initialValue = this.cluster;
129
129
 
130
130
  this.inClusterSpec.quantity += delta;
131
131
 
@@ -145,7 +145,16 @@ export default class CapiMachineDeployment extends SteveModel {
145
145
  let errors = exceptionToErrorsArray(err);
146
146
 
147
147
  if ( err.status === 409 && depth < 2 ) {
148
- const conflicts = await handleConflict(initialValue, value, liveModel, this.$rootGetters, { dispatch: this.$dispatch }, 'management');
148
+ const conflicts = await handleConflict(
149
+ initialValue,
150
+ value,
151
+ liveModel,
152
+ {
153
+ dispatch: this.$dispatch,
154
+ getters: this.$rootGetters
155
+ },
156
+ 'management'
157
+ );
149
158
 
150
159
  if ( conflicts === false ) {
151
160
  // It was automatically figured out, save again
@@ -1,5 +1,5 @@
1
- import { NAME as PRODUCT_NAME } from '@shell/config/product/cis';
2
- import { CIS } from '@shell/config/types';
1
+ import { NAME as PRODUCT_NAME } from '@shell/config/product/compliance';
2
+ import { COMPLIANCE } from '@shell/config/types';
3
3
  import { findBy } from '@shell/utils/array';
4
4
  import { downloadFile, generateZip } from '@shell/utils/download';
5
5
  import { get, isEmpty } from '@shell/utils/object';
@@ -53,7 +53,7 @@ export default class ClusterScan extends SteveModel {
53
53
  action: 'downloadLatestReport',
54
54
  enabled: this.hasReport,
55
55
  icon: 'icon icon-fw icon-download',
56
- label: t('cis.downloadReport'),
56
+ label: t('compliance.downloadReport'),
57
57
  total: 1,
58
58
  };
59
59
 
@@ -61,7 +61,7 @@ export default class ClusterScan extends SteveModel {
61
61
  action: 'downloadAllReports',
62
62
  enabled: this.hasReport,
63
63
  icon: 'icon icon-fw icon-download',
64
- label: t('cis.downloadAllReports'),
64
+ label: t('compliance.downloadAllReports'),
65
65
  total: 1,
66
66
  };
67
67
 
@@ -69,7 +69,7 @@ export default class ClusterScan extends SteveModel {
69
69
  out.unshift({ divider: true });
70
70
  if (this.spec?.scheduledScanConfig?.cronSchedule) {
71
71
  out.unshift(downloadAllReports);
72
- downloadReport.label = t('cis.downloadLatestReport');
72
+ downloadReport.label = t('compliance.downloadLatestReport');
73
73
  }
74
74
  out.unshift(downloadReport);
75
75
  }
@@ -92,7 +92,7 @@ export default class ClusterScan extends SteveModel {
92
92
  get hasReports() {
93
93
  const { relationships = [] } = this.metadata;
94
94
 
95
- const reportRel = findBy(relationships, 'toType', CIS.REPORT);
95
+ const reportRel = findBy(relationships, 'toType', COMPLIANCE.REPORT);
96
96
 
97
97
  return !!reportRel;
98
98
  }
@@ -100,7 +100,7 @@ export default class ClusterScan extends SteveModel {
100
100
  async getReports() {
101
101
  const owned = await this.findOwned();
102
102
 
103
- const reports = owned.filter((obj) => obj.type === CIS.REPORT) || [];
103
+ const reports = owned.filter((obj) => obj.type === COMPLIANCE.REPORT) || [];
104
104
 
105
105
  return sortBy(reports, 'metadata.creationTimestamp', true);
106
106
  }
@@ -158,7 +158,7 @@ export default class ClusterScan extends SteveModel {
158
158
  return {
159
159
  name: 'c-cluster-product-resource-id',
160
160
  params: {
161
- resource: CIS.CLUSTER_SCAN_PROFILE,
161
+ resource: COMPLIANCE.CLUSTER_SCAN_PROFILE,
162
162
  product: PRODUCT_NAME,
163
163
  id: this.status?.lastRunScanProfileName
164
164
  }
@@ -3,7 +3,7 @@ import SteveModel from '@shell/plugins/steve/steve-class';
3
3
 
4
4
  export default class ClusterScanBenchmark extends SteveModel {
5
5
  warnDeletionMessage(toRemove = []) {
6
- return this.$rootGetters['i18n/t']('cis.deleteBenchmarkWarning', { count: toRemove.length });
6
+ return this.$rootGetters['i18n/t']('compliance.deleteBenchmarkWarning', { count: toRemove.length });
7
7
  }
8
8
 
9
9
  get isDefault() {
@@ -1,11 +1,11 @@
1
1
 
2
2
  import SteveModel from '@shell/plugins/steve/steve-class';
3
- import { NAME as PRODUCT_NAME } from '@shell/config/product/cis';
4
- import { CIS } from '@shell/config/types';
3
+ import { NAME as PRODUCT_NAME } from '@shell/config/product/compliance';
4
+ import { COMPLIANCE } from '@shell/config/types';
5
5
 
6
- export default class CISProfile extends SteveModel {
6
+ export default class ComplianceProfile extends SteveModel {
7
7
  warnDeletionMessage(toRemove = []) {
8
- return this.$rootGetters['i18n/t']('cis.deleteProfileWarning', { count: toRemove.length });
8
+ return this.$rootGetters['i18n/t']('compliance.deleteProfileWarning', { count: toRemove.length });
9
9
  }
10
10
 
11
11
  get numberTestsSkipped() {
@@ -19,7 +19,7 @@ export default class CISProfile extends SteveModel {
19
19
  return {
20
20
  name: 'c-cluster-product-resource-id',
21
21
  params: {
22
- resource: CIS.BENCHMARK,
22
+ resource: COMPLIANCE.BENCHMARK,
23
23
  product: PRODUCT_NAME,
24
24
  id: this.spec?.benchmarkVersion
25
25
  }
@@ -1,7 +1,7 @@
1
1
  import { compare } from '@shell/utils/sort';
2
2
  import SteveModel from '@shell/plugins/steve/steve-class';
3
3
 
4
- export default class CISReport extends SteveModel {
4
+ export default class ComplianceReport extends SteveModel {
5
5
  get aggregatedTests() {
6
6
  const json = this.parsedReport;
7
7
  const results = json?.results;
@@ -0,0 +1,297 @@
1
+ import { matching, convertSelectorObj } from '@shell/utils/selector';
2
+ import isEmpty from 'lodash/isEmpty';
3
+ import { escapeHtml } from '@shell/utils/string';
4
+ import { FLEET, MANAGEMENT } from '@shell/config/types';
5
+ import { FLEET as FLEET_ANNOTATIONS } from '@shell/config/labels-annotations';
6
+ import { addObject, addObjects, findBy } from '@shell/utils/array';
7
+ import SteveModel from '@shell/plugins/steve/steve-class';
8
+ import { mapStateToEnum, primaryDisplayStatusFromCount, STATES_ENUM } from '@shell/plugins/dashboard-store/resource-class';
9
+ import FleetUtils from '@shell/utils/fleet';
10
+
11
+ function normalizeStateCounts(data) {
12
+ if (isEmpty(data)) {
13
+ return {
14
+ total: 0,
15
+ states: {},
16
+ };
17
+ }
18
+ const { desiredReady, ...rest } = data ;
19
+ const states = Object.entries(rest).reduce((res, [key, value]) => {
20
+ res[mapStateToEnum(key)] = value;
21
+
22
+ return res;
23
+ }, {});
24
+
25
+ return {
26
+ total: desiredReady,
27
+ states,
28
+ };
29
+ }
30
+
31
+ export default class FleetApplication extends SteveModel {
32
+ get currentUser() {
33
+ return this.$rootGetters['auth/v3User'] || {};
34
+ }
35
+
36
+ pause() {
37
+ this.spec.paused = true;
38
+ this.save();
39
+ }
40
+
41
+ unpause() {
42
+ this.spec.paused = false;
43
+ this.save();
44
+ }
45
+
46
+ goToClone() {
47
+ if (this.metadata?.labels?.[FLEET_ANNOTATIONS.CREATED_BY_USER_ID]) {
48
+ delete this.metadata.labels[FLEET_ANNOTATIONS.CREATED_BY_USER_ID];
49
+ }
50
+
51
+ if (this.metadata?.labels?.[FLEET_ANNOTATIONS.CREATED_BY_USER_NAME]) {
52
+ delete this.metadata.labels[FLEET_ANNOTATIONS.CREATED_BY_USER_NAME];
53
+ }
54
+
55
+ super.goToClone();
56
+ }
57
+
58
+ get state() {
59
+ if (this.spec?.paused === true) {
60
+ return 'paused';
61
+ }
62
+
63
+ return this.metadata?.state?.name || 'unknown';
64
+ }
65
+
66
+ get targetClusters() {
67
+ const workspace = this.$getters['byId'](FLEET.WORKSPACE, this.metadata.namespace);
68
+ const clusters = workspace?.clusters || [];
69
+ const groups = workspace?.clusterGroups || [];
70
+
71
+ if (workspace?.id === 'fleet-local') {
72
+ // should we be getting the clusters from workspace.clusters instead of having to rely on the groups,
73
+ // which takes an additional request to be done on the Fleet dashboard screen?
74
+ const local = findBy(groups, 'id', 'fleet-local/default');
75
+
76
+ if (local) {
77
+ return local.targetClusters;
78
+ }
79
+
80
+ return [];
81
+ }
82
+
83
+ if (!this.spec.targets) {
84
+ return [];
85
+ }
86
+
87
+ const out = [];
88
+
89
+ for (const tgt of this.spec.targets) {
90
+ if (tgt.clusterName) {
91
+ const cluster = findBy(clusters, 'metadata.name', tgt.clusterName);
92
+
93
+ if (cluster) {
94
+ addObject(out, cluster);
95
+ }
96
+ } else if (tgt.clusterGroup) {
97
+ const group = findBy(groups, {
98
+ 'metadata.namespace': this.metadata.namespace,
99
+ 'metadata.name': tgt.clusterGroup,
100
+ });
101
+
102
+ if (group) {
103
+ addObjects(out, group.targetClusters);
104
+ }
105
+ } else if (tgt.clusterGroupSelector) {
106
+ const expressions = convertSelectorObj(tgt.clusterGroupSelector);
107
+ const matchingGroups = matching(groups, expressions);
108
+
109
+ for (const group of matchingGroups) {
110
+ addObjects(out, group.targetClusters);
111
+ }
112
+ } else if (tgt.clusterSelector) {
113
+ const expressions = convertSelectorObj(tgt.clusterSelector);
114
+ const matchingClusters = matching(clusters, expressions);
115
+
116
+ addObjects(out, matchingClusters);
117
+ }
118
+ }
119
+
120
+ return out;
121
+ }
122
+
123
+ get targetInfo() {
124
+ const mode = FleetUtils.Application.getTargetMode(this.spec.targets || [], this.metadata.namespace);
125
+
126
+ return {
127
+ mode,
128
+ modeDisplay: this.t(`fleet.gitRepo.targetDisplay."${ mode }"`),
129
+ };
130
+ }
131
+
132
+ get groupByLabel() {
133
+ const name = this.metadata.namespace;
134
+
135
+ if (name) {
136
+ return this.$rootGetters['i18n/t']('resourceTable.groupLabel.workspace', { name: escapeHtml(name) });
137
+ } else {
138
+ return this.$rootGetters['i18n/t']('resourceTable.groupLabel.notInAWorkspace');
139
+ }
140
+ }
141
+
142
+ get allResourceStatuses() {
143
+ return normalizeStateCounts(this.status?.resourceCounts || {});
144
+ }
145
+
146
+ statusResourceCountsForCluster(clusterId) {
147
+ if (!this.targetClusters.some((c) => c.id === clusterId)) {
148
+ return {};
149
+ }
150
+
151
+ return this.status?.perClusterResourceCounts[clusterId] || { desiredReady: 0 };
152
+ }
153
+
154
+ get resourcesStatuses() {
155
+ if (isEmpty(this.status?.resources)) {
156
+ return [];
157
+ }
158
+
159
+ const clusters = (this.targetClusters || []).reduce((res, c) => {
160
+ res[c.id] = c;
161
+
162
+ return res;
163
+ }, {});
164
+
165
+ const resources = this.status?.resources?.reduce((acc, resourceInfo) => {
166
+ const { perClusterState, ...resource } = resourceInfo;
167
+
168
+ if (Object.entries(perClusterState).length === 0) {
169
+ (this.targetClusters || []).forEach((cluster) => {
170
+ acc.push(Object.assign({}, resource, { clusterId: cluster.id, state: resource.state }));
171
+ });
172
+ } else {
173
+ Object.entries(perClusterState).forEach(([state, clusterIds]) => {
174
+ clusterIds.filter((id) => !!clusters[id]).forEach((clusterId) => {
175
+ acc.push(Object.assign({}, resource, { clusterId, state }));
176
+ });
177
+ });
178
+ }
179
+
180
+ return acc;
181
+ }, []);
182
+
183
+ return resources.map((r) => {
184
+ const { namespace, name, clusterId } = r;
185
+ const type = FleetUtils.resourceType(r);
186
+ const c = clusters[clusterId];
187
+
188
+ return {
189
+ key: `${ clusterId }-${ type }-${ namespace }-${ name }`,
190
+
191
+ // Needed?
192
+ id: FleetUtils.resourceId(r),
193
+ type,
194
+ clusterId,
195
+
196
+ // columns, see FleetResources.vue
197
+ state: mapStateToEnum(r.state),
198
+ clusterName: c.nameDisplay,
199
+ apiVersion: r.apiVersion,
200
+ kind: r.kind,
201
+ name,
202
+ namespace,
203
+
204
+ // other properties
205
+ detailLocation: FleetUtils.detailLocation(r, c.metadata.labels[FLEET_ANNOTATIONS.CLUSTER_NAME]),
206
+ };
207
+ });
208
+ }
209
+
210
+ get clusterInfo() {
211
+ const ready = this.status?.readyClusters || 0;
212
+ const total = this.status?.desiredReadyClusters || 0;
213
+
214
+ return {
215
+ ready,
216
+ unready: total - ready,
217
+ total,
218
+ };
219
+ }
220
+
221
+ clusterState(clusterId) {
222
+ const resourceCounts = this.statusResourceCountsForCluster(clusterId);
223
+
224
+ return primaryDisplayStatusFromCount(resourceCounts) || STATES_ENUM.ACTIVE;
225
+ }
226
+
227
+ get authorId() {
228
+ return this.metadata?.labels?.[FLEET_ANNOTATIONS.CREATED_BY_USER_ID];
229
+ }
230
+
231
+ get author() {
232
+ if (this.authorId) {
233
+ return this.$rootGetters['management/byId'](MANAGEMENT.USER, this.authorId);
234
+ }
235
+
236
+ return null;
237
+ }
238
+
239
+ get createdBy() {
240
+ const displayName = this.metadata?.labels?.[FLEET_ANNOTATIONS.CREATED_BY_USER_NAME];
241
+
242
+ if (!displayName) {
243
+ return null;
244
+ }
245
+
246
+ return {
247
+ displayName,
248
+ location: !this.author ? null : {
249
+ name: 'c-cluster-product-resource-id',
250
+ params: {
251
+ cluster: '_',
252
+ product: 'auth',
253
+ resource: MANAGEMENT.USER,
254
+ id: this.author.id,
255
+ }
256
+ }
257
+ };
258
+ }
259
+
260
+ get showCreatedBy() {
261
+ return !!this.createdBy;
262
+ }
263
+
264
+ get clustersList() {
265
+ return this.$getters['all'](FLEET.CLUSTER);
266
+ }
267
+
268
+ get readyClusters() {
269
+ return this.status?.readyClusters || 0;
270
+ }
271
+
272
+ get meta() {
273
+ return this.currentRoute()?.meta || {};
274
+ }
275
+
276
+ get _detailLocation() {
277
+ return {
278
+ ...super._detailLocation,
279
+ name: this.meta.detailLocation || super._detailLocation.name
280
+ };
281
+ }
282
+
283
+ get doneOverride() {
284
+ return {
285
+ ...super.listLocation,
286
+ name: this.meta.doneOverride || super.listLocation.name
287
+ };
288
+ }
289
+
290
+ get doneRoute() {
291
+ return this.doneOverride?.name;
292
+ }
293
+
294
+ get parentNameOverride() {
295
+ return this.$rootGetters['i18n/t'](`typeLabel."${ FLEET.APPLICATION }"`, { count: 1 })?.trim();
296
+ }
297
+ }
@@ -1,6 +1,5 @@
1
1
  import { escapeHtml, ucFirst } from '@shell/utils/string';
2
2
  import SteveModel from '@shell/plugins/steve/steve-class';
3
- import typeHelper from '@shell/utils/type-helpers';
4
3
  import { addObject, addObjects, findBy } from '@shell/utils/array';
5
4
  import { FLEET, MANAGEMENT } from '@shell/config/types';
6
5
  import { FLEET as FLEET_ANNOTATIONS } from '@shell/config/labels-annotations';
@@ -11,18 +10,20 @@ export default class FleetBundle extends SteveModel {
11
10
  return this.status?.conditions?.[0].lastUpdateTime;
12
11
  }
13
12
 
14
- get bundleType() {
15
- if (typeHelper.memberOfObject(this.spec, 'helm')) {
16
- return 'helm';
17
- }
13
+ get repoName() {
14
+ const labels = this.metadata?.labels || {};
18
15
 
19
- return '';
16
+ return labels[FLEET_ANNOTATIONS.REPO_NAME];
20
17
  }
21
18
 
22
- get repoName() {
19
+ get helmName() {
23
20
  const labels = this.metadata?.labels || {};
24
21
 
25
- return labels[FLEET_ANNOTATIONS.REPO_NAME];
22
+ return labels[FLEET_ANNOTATIONS.HELM_NAME];
23
+ }
24
+
25
+ get appSourceName() {
26
+ return this.helmName || this.repoName;
26
27
  }
27
28
 
28
29
  get targetClusters() {