@rancher/shell 3.0.5-rc.3 → 3.0.5-rc.6

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 (424) hide show
  1. package/assets/data/aws-regions.json +1 -0
  2. package/assets/images/icons/document.svg +3 -0
  3. package/assets/images/key.svg +17 -0
  4. package/assets/images/vendor/cognito.svg +1 -0
  5. package/assets/styles/app.scss +1 -0
  6. package/assets/styles/base/_basic.scss +10 -0
  7. package/assets/styles/base/_spacing.scss +29 -0
  8. package/assets/styles/global/_form.scss +1 -1
  9. package/assets/styles/global/_labeled-input.scss +1 -1
  10. package/assets/styles/global/_layout.scss +1 -1
  11. package/assets/styles/themes/_dark.scss +28 -0
  12. package/assets/styles/themes/_light.scss +68 -0
  13. package/assets/styles/vendor/vue-select.scss +1 -1
  14. package/assets/translations/en-us.yaml +721 -83
  15. package/assets/translations/zh-hans.yaml +11 -9
  16. package/cloud-credential/gcp.vue +9 -1
  17. package/components/AppModal.vue +2 -0
  18. package/components/Certificates.vue +5 -0
  19. package/components/CodeMirror.vue +1 -1
  20. package/components/ConfigMapSettings/Settings.vue +377 -0
  21. package/components/ConfigMapSettings/index.vue +354 -0
  22. package/components/CruResource.vue +1 -2
  23. package/components/DetailText.vue +61 -11
  24. package/components/Drawer/Chrome.vue +116 -0
  25. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +61 -0
  26. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
  27. package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
  28. package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
  29. package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +82 -0
  30. package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
  31. package/components/Drawer/ResourceDetailDrawer/composables.ts +50 -0
  32. package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
  33. package/components/Drawer/ResourceDetailDrawer/index.vue +110 -0
  34. package/components/FilterPanel.vue +156 -0
  35. package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
  36. package/components/GrowlManager.vue +16 -15
  37. package/components/IconOrSvg.vue +19 -35
  38. package/components/KeyValueView.vue +1 -1
  39. package/components/LocaleSelector.vue +9 -1
  40. package/components/ProgressBarMulti.vue +1 -0
  41. package/components/PromptModal.vue +6 -1
  42. package/components/PromptRemove.vue +5 -1
  43. package/components/RelatedResources.vue +4 -12
  44. package/components/Resource/Detail/Additional.vue +46 -0
  45. package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
  46. package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
  47. package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
  48. package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
  49. package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
  50. package/components/Resource/Detail/Card/Scaler.vue +89 -0
  51. package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
  52. package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
  53. package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
  54. package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
  55. package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
  56. package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
  57. package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
  58. package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
  59. package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
  60. package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
  61. package/components/Resource/Detail/Card/index.vue +56 -0
  62. package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
  63. package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
  64. package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
  65. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
  66. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
  67. package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +64 -0
  68. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +298 -0
  69. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +133 -0
  70. package/components/Resource/Detail/Metadata/KeyValue.vue +138 -0
  71. package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
  72. package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
  73. package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
  74. package/components/Resource/Detail/Metadata/Rectangle.vue +32 -0
  75. package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
  76. package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
  77. package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
  78. package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
  79. package/components/Resource/Detail/Metadata/composables.ts +78 -0
  80. package/components/Resource/Detail/Metadata/index.vue +73 -0
  81. package/components/Resource/Detail/Page.vue +37 -0
  82. package/components/Resource/Detail/PercentageBar.vue +40 -0
  83. package/components/Resource/Detail/ResourceRow.vue +138 -0
  84. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
  85. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
  86. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
  87. package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
  88. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
  89. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
  90. package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
  91. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
  92. package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
  93. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
  94. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
  95. package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
  96. package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
  97. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
  98. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
  99. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
  100. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
  101. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
  102. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
  103. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
  104. package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
  105. package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
  106. package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
  107. package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
  108. package/components/Resource/Detail/SpacedRow.vue +14 -0
  109. package/components/Resource/Detail/StatusBar.vue +59 -0
  110. package/components/Resource/Detail/StatusRow.vue +61 -0
  111. package/components/Resource/Detail/TitleBar/Title.vue +14 -0
  112. package/components/Resource/Detail/TitleBar/Top.vue +14 -0
  113. package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
  114. package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
  115. package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
  116. package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
  117. package/components/Resource/Detail/TitleBar/composables.ts +44 -0
  118. package/components/Resource/Detail/TitleBar/index.vue +196 -0
  119. package/components/Resource/Detail/Top/index.vue +34 -0
  120. package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
  121. package/components/Resource/Detail/composables.ts +45 -0
  122. package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
  123. package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
  124. package/components/ResourceDetail/Masthead/index.vue +65 -0
  125. package/components/ResourceDetail/Masthead/latest.vue +44 -0
  126. package/components/ResourceDetail/__tests__/index.test.ts +135 -0
  127. package/components/ResourceDetail/index.vue +73 -557
  128. package/components/ResourceDetail/legacy.vue +562 -0
  129. package/components/ResourceList/Masthead.vue +6 -0
  130. package/components/ResourceTable.vue +41 -7
  131. package/components/ResourceYaml.vue +14 -1
  132. package/components/SlideInPanelManager.vue +117 -10
  133. package/components/SortableTable/index.vue +13 -2
  134. package/components/SortableTable/selection.js +21 -8
  135. package/components/StateDot/index.vue +28 -0
  136. package/components/StatusBadge.vue +6 -4
  137. package/components/SubtleLink.vue +25 -0
  138. package/components/Tabbed/index.vue +11 -15
  139. package/components/Wizard.vue +16 -3
  140. package/components/YamlEditor.vue +1 -1
  141. package/components/__tests__/ConfigMapSettings.test.ts +376 -0
  142. package/components/__tests__/FilterPanel.test.ts +81 -0
  143. package/components/__tests__/GrowlManager.test.ts +0 -25
  144. package/components/auth/AuthBanner.vue +2 -3
  145. package/components/auth/RoleDetailEdit.vue +45 -3
  146. package/components/auth/login/ldap.vue +1 -1
  147. package/components/auth/login/oidc.vue +6 -1
  148. package/components/fleet/FleetApplications.vue +174 -0
  149. package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
  150. package/components/fleet/FleetClusterTargets/index.vue +455 -0
  151. package/components/fleet/FleetClusters.vue +25 -6
  152. package/components/fleet/FleetGitRepoPaths.vue +476 -0
  153. package/components/fleet/FleetHelmOps.vue +123 -0
  154. package/components/fleet/FleetIntro.vue +58 -28
  155. package/components/fleet/FleetNoWorkspaces.vue +5 -1
  156. package/components/fleet/FleetOCIStorageSecret.vue +171 -0
  157. package/components/fleet/FleetRepos.vue +37 -80
  158. package/components/fleet/FleetResources.vue +53 -26
  159. package/components/fleet/FleetSummary.vue +26 -51
  160. package/components/fleet/FleetValuesFrom.vue +295 -0
  161. package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
  162. package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
  163. package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
  164. package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
  165. package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
  166. package/components/fleet/dashboard/Empty.vue +73 -0
  167. package/components/fleet/dashboard/ResourceCard.vue +184 -0
  168. package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
  169. package/components/fleet/dashboard/ResourceDetails.vue +194 -0
  170. package/components/fleet/dashboard/ResourcePanel.vue +383 -0
  171. package/components/form/ArrayList.vue +19 -2
  172. package/components/form/ChangePassword.vue +3 -1
  173. package/components/form/Footer.vue +10 -4
  174. package/components/form/KeyValue.vue +81 -43
  175. package/components/form/LabeledSelect.vue +56 -16
  176. package/components/form/Labels.vue +90 -17
  177. package/components/form/MatchExpressions.vue +46 -5
  178. package/components/form/NameNsDescription.vue +1 -1
  179. package/components/form/ResourceSelector.vue +1 -0
  180. package/components/form/ResourceTabs/index.vue +5 -0
  181. package/components/form/SecretSelector.vue +9 -2
  182. package/components/form/Select.vue +57 -19
  183. package/components/form/SimpleSecretSelector.vue +17 -4
  184. package/components/form/Taints.vue +21 -2
  185. package/components/form/UnitInput.vue +8 -0
  186. package/components/form/ValueFromResource.vue +31 -19
  187. package/components/form/__tests__/LabeledSelect.test.ts +8 -4
  188. package/components/form/__tests__/Labels.test.ts +360 -0
  189. package/components/form/__tests__/MatchExpressions.test.ts +16 -13
  190. package/components/form/__tests__/Select.test.ts +5 -2
  191. package/components/formatter/FleetApplicationClustersReady.vue +77 -0
  192. package/components/formatter/FleetApplicationSource.vue +71 -0
  193. package/components/formatter/FleetSummaryGraph.vue +7 -0
  194. package/components/formatter/WorkloadHealthScale.vue +1 -1
  195. package/components/google/AccountAccess.vue +211 -0
  196. package/components/google/types/gcp.d.ts +136 -0
  197. package/components/google/types/index.d.ts +101 -0
  198. package/components/google/util/__mocks__/gcp.ts +465 -0
  199. package/components/google/util/formatter.ts +82 -0
  200. package/components/google/util/gcp.ts +134 -0
  201. package/components/google/util/index.d.ts +11 -0
  202. package/components/nav/Favorite.vue +1 -1
  203. package/components/nav/Group.vue +70 -47
  204. package/components/nav/Header.vue +13 -8
  205. package/components/nav/NamespaceFilter.vue +13 -1
  206. package/components/nav/NotificationCenter/Notification.vue +510 -0
  207. package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
  208. package/components/nav/NotificationCenter/index.vue +148 -0
  209. package/components/nav/TopLevelMenu.helper.ts +55 -34
  210. package/components/nav/TopLevelMenu.vue +11 -0
  211. package/components/nav/Type.vue +4 -1
  212. package/composables/drawer.ts +26 -0
  213. package/composables/resources.test.ts +63 -0
  214. package/composables/resources.ts +38 -0
  215. package/composables/useI18n.ts +12 -11
  216. package/composables/useIsNewDetailPageEnabled.ts +17 -0
  217. package/config/labels-annotations.js +20 -11
  218. package/config/product/auth.js +17 -1
  219. package/config/product/{cis.js → compliance.js} +23 -26
  220. package/config/product/explorer.js +5 -1
  221. package/config/product/fleet.js +77 -17
  222. package/config/product/settings.js +22 -11
  223. package/config/query-params.js +6 -1
  224. package/config/roles.ts +2 -1
  225. package/config/router/navigation-guards/authentication.js +51 -2
  226. package/config/router/routes.js +45 -31
  227. package/config/secret.ts +15 -0
  228. package/config/settings.ts +24 -5
  229. package/config/store.js +2 -0
  230. package/config/system-namespaces.js +1 -1
  231. package/config/table-headers.js +53 -23
  232. package/config/types.js +17 -6
  233. package/core/plugin-helpers.ts +3 -2
  234. package/core/plugin.ts +32 -7
  235. package/core/types.ts +18 -1
  236. package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
  237. package/detail/fleet.cattle.io.cluster.vue +28 -15
  238. package/detail/fleet.cattle.io.gitrepo.vue +10 -1
  239. package/detail/fleet.cattle.io.helmop.vue +157 -0
  240. package/detail/management.cattle.io.fleetworkspace.vue +18 -27
  241. package/detail/management.cattle.io.oidcclient.vue +369 -0
  242. package/detail/node.vue +2 -2
  243. package/detail/pod.vue +2 -2
  244. package/detail/service.vue +10 -1
  245. package/detail/workload/index.vue +8 -2
  246. package/dialog/ExtensionCatalogUninstallDialog.vue +7 -4
  247. package/dialog/GenericPrompt.vue +1 -1
  248. package/dialog/HelmOpForceUpdateDialog.vue +132 -0
  249. package/dialog/ImportDialog.vue +8 -8
  250. package/dialog/OidcClientSecretDialog.vue +117 -0
  251. package/dialog/RedeployWorkloadDialog.vue +164 -0
  252. package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
  253. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
  254. package/edit/auth/oidc.vue +159 -93
  255. package/edit/autoscaling.horizontalpodautoscaler/index.vue +4 -1
  256. package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
  257. package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
  258. package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
  259. package/edit/configmap.vue +4 -1
  260. package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
  261. package/edit/fleet.cattle.io.gitrepo.vue +70 -255
  262. package/edit/fleet.cattle.io.helmop.vue +772 -0
  263. package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
  264. package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
  265. package/edit/logging-flow/index.vue +1 -0
  266. package/edit/logging.banzaicloud.io.output/index.vue +1 -0
  267. package/edit/management.cattle.io.fleetworkspace.vue +44 -10
  268. package/edit/management.cattle.io.oidcclient.vue +162 -0
  269. package/edit/management.cattle.io.project.vue +4 -1
  270. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  271. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
  272. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
  273. package/edit/monitoring.coreos.com.receiver/auth.vue +30 -30
  274. package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
  275. package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
  276. package/edit/monitoring.coreos.com.route.vue +1 -0
  277. package/edit/namespace.vue +1 -0
  278. package/edit/networking.istio.io.destinationrule/index.vue +4 -1
  279. package/edit/networking.k8s.io.ingress/index.vue +4 -1
  280. package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +7 -2
  281. package/edit/networking.k8s.io.networkpolicy/index.vue +6 -2
  282. package/edit/node.vue +1 -0
  283. package/edit/persistentvolume/index.vue +4 -1
  284. package/edit/provisioning.cattle.io.cluster/rke2.vue +418 -382
  285. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +27 -27
  286. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
  287. package/edit/resources.cattle.io.restore.vue +1 -1
  288. package/edit/secret/index.vue +1 -0
  289. package/edit/service.vue +4 -1
  290. package/edit/serviceaccount.vue +4 -1
  291. package/edit/storage.k8s.io.storageclass/index.vue +4 -1
  292. package/edit/workload/index.vue +5 -0
  293. package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
  294. package/list/fleet.cattle.io.gitrepo.vue +1 -1
  295. package/list/fleet.cattle.io.helmop.vue +108 -0
  296. package/list/management.cattle.io.oidcclient.vue +108 -0
  297. package/list/namespace.vue +5 -2
  298. package/list/node.vue +2 -0
  299. package/machine-config/amazonec2.vue +3 -24
  300. package/machine-config/components/GCEImage.vue +374 -0
  301. package/machine-config/google.vue +617 -0
  302. package/mixins/__tests__/brand.spec.ts +170 -0
  303. package/mixins/auth-config.js +8 -1
  304. package/mixins/brand.js +16 -17
  305. package/mixins/create-edit-view/index.js +5 -0
  306. package/mixins/preset.js +100 -0
  307. package/mixins/resource-fetch-api-pagination.js +18 -0
  308. package/mixins/resource-fetch.js +1 -1
  309. package/mixins/resource-table-watch.js +45 -0
  310. package/mixins/vue-select-overrides.js +1 -0
  311. package/models/__tests__/chart.test.ts +273 -0
  312. package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  313. package/models/chart.js +144 -2
  314. package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
  315. package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
  316. package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
  317. package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
  318. package/models/fleet-application.js +314 -0
  319. package/models/fleet.cattle.io.bundle.js +9 -8
  320. package/models/fleet.cattle.io.cluster.js +11 -0
  321. package/models/fleet.cattle.io.gitrepo.js +41 -365
  322. package/models/fleet.cattle.io.helmop.js +198 -0
  323. package/models/management.cattle.io.authconfig.js +1 -0
  324. package/models/management.cattle.io.fleetworkspace.js +14 -1
  325. package/models/management.cattle.io.oidcclient.js +18 -0
  326. package/models/management.cattle.io.registration.js +3 -0
  327. package/models/provisioning.cattle.io.cluster.js +5 -5
  328. package/models/service.js +4 -0
  329. package/models/workload.js +19 -18
  330. package/package.json +2 -1
  331. package/pages/about.vue +4 -58
  332. package/pages/auth/login.vue +1 -1
  333. package/pages/auth/verify.vue +13 -1
  334. package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
  335. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
  336. package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +54 -0
  337. package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
  338. package/pages/c/_cluster/apps/charts/index.vue +487 -465
  339. package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
  340. package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
  341. package/pages/c/_cluster/explorer/index.vue +3 -3
  342. package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
  343. package/pages/c/_cluster/fleet/__tests__/index.test.ts +426 -0
  344. package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
  345. package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
  346. package/pages/c/_cluster/fleet/application/create.vue +341 -0
  347. package/pages/c/_cluster/fleet/application/index.vue +139 -0
  348. package/pages/c/_cluster/fleet/graph/config.js +277 -0
  349. package/pages/c/_cluster/fleet/index.vue +809 -329
  350. package/pages/c/_cluster/fleet/settings/index.vue +229 -0
  351. package/pages/c/_cluster/longhorn/index.vue +5 -2
  352. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
  353. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
  354. package/pages/explorer/resource/detail/configmap.vue +42 -0
  355. package/pages/explorer/resource/detail/secret.vue +50 -0
  356. package/pages/home.vue +9 -55
  357. package/pages/support/index.vue +4 -6
  358. package/plugins/dashboard-store/actions.js +50 -14
  359. package/plugins/dashboard-store/getters.js +38 -21
  360. package/plugins/dashboard-store/mutations.js +51 -7
  361. package/plugins/dashboard-store/resource-class.js +30 -4
  362. package/plugins/steve/__tests__/subscribe.spec.ts +66 -1
  363. package/plugins/steve/actions.js +3 -0
  364. package/plugins/steve/steve-pagination-utils.ts +17 -8
  365. package/plugins/steve/subscribe.js +235 -43
  366. package/rancher-components/BadgeState/BadgeState.vue +3 -1
  367. package/rancher-components/Banner/Banner.vue +13 -0
  368. package/rancher-components/Form/Checkbox/Checkbox.vue +11 -6
  369. package/rancher-components/Form/LabeledInput/LabeledInput.vue +1 -1
  370. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +1 -0
  371. package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
  372. package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
  373. package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
  374. package/rancher-components/RcItemCard/index.ts +2 -0
  375. package/store/auth.js +3 -0
  376. package/store/catalog.js +85 -25
  377. package/store/growl.js +97 -8
  378. package/store/index.js +39 -14
  379. package/store/notifications.ts +426 -0
  380. package/store/prefs.js +0 -1
  381. package/store/slideInPanel.ts +6 -0
  382. package/store/type-map.js +19 -15
  383. package/store/uiplugins.ts +15 -1
  384. package/types/fleet.d.ts +59 -0
  385. package/types/notifications/index.ts +74 -0
  386. package/types/resources/settings.d.ts +19 -1
  387. package/types/shell/index.d.ts +388 -307
  388. package/types/store/dashboard-store.types.ts +33 -3
  389. package/types/store/pagination.types.ts +6 -1
  390. package/types/store/subscribe.types.ts +50 -0
  391. package/utils/__tests__/fleet.test.ts +148 -0
  392. package/utils/__tests__/object.test.ts +54 -1
  393. package/utils/__tests__/string.test.ts +273 -1
  394. package/utils/__tests__/time.test.ts +31 -0
  395. package/utils/auth.js +41 -5
  396. package/utils/crypto/encryption.ts +103 -0
  397. package/utils/cspAdaptor.ts +51 -0
  398. package/utils/fleet-types.ts +0 -0
  399. package/utils/fleet.ts +190 -2
  400. package/utils/object.js +36 -0
  401. package/utils/pagination-utils.ts +27 -2
  402. package/utils/pagination-wrapper.ts +132 -50
  403. package/utils/release-notes.ts +48 -0
  404. package/utils/selector-typed.ts +7 -2
  405. package/utils/settings.ts +4 -1
  406. package/utils/string.js +24 -0
  407. package/utils/style.ts +39 -0
  408. package/utils/{time.js → time.ts} +25 -6
  409. package/utils/uiplugins.ts +22 -0
  410. package/utils/validators/formRules/__tests__/index.test.ts +36 -3
  411. package/utils/validators/formRules/index.ts +13 -3
  412. package/utils/window.js +11 -7
  413. package/components/__tests__/ApplicationCard.test.ts +0 -27
  414. package/components/cards/ApplicationCard.vue +0 -145
  415. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
  416. package/config/product/legacy.js +0 -62
  417. package/config/secret.js +0 -14
  418. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
  419. package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
  420. package/pages/c/_cluster/legacy/project/_page.vue +0 -57
  421. package/pages/c/_cluster/legacy/project/index.vue +0 -32
  422. package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
  423. /package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +0 -0
  424. /package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +0 -0
@@ -1,13 +1,13 @@
1
1
  import { NAME as APPS } from '@shell/config/product/apps';
2
2
  import { NAME as EXPLORER } from '@shell/config/product/explorer';
3
3
  import { NAME as MANAGER } from '@shell/config/product/manager';
4
- import { CAPI, MANAGEMENT, BACKUP_RESTORE, CIS } from '@shell/config/types';
4
+ import { CAPI, MANAGEMENT, BACKUP_RESTORE, COMPLIANCE } from '@shell/config/types';
5
5
  import { NAME as AUTH } from '@shell/config/product/auth';
6
6
 
7
7
  // All these imports are related to the install-redirect.js navigation guard.
8
8
  import { installRedirectRouteMeta } from '@shell/config/router/navigation-guards/install-redirect';
9
9
  import { NAME as BACKUP_NAME, CHART_NAME as BACKUP_CHART_NAME } from '@shell/config/product/backup';
10
- import { NAME as CIS_NAME, CHART_NAME as CIS_CHART_NAME } from '@shell/config/product/cis';
10
+ import { NAME as COMPLIANCE_NAME, CHART_NAME as COMPLIANCE_CHART_NAME } from '@shell/config/product/compliance';
11
11
  import { NAME as GATEKEEPER_NAME, CHART_NAME as GATEKEEPER_CHART_NAME } from '@shell/config/product/gatekeeper';
12
12
  import { NAME as ISTIO_NAME, CHART_NAME as ISTIO_CHART_NAME } from '@shell/config/product/istio';
13
13
  import { NAME as LOGGING_NAME, CHART_NAME as LOGGING_CHART_NAME } from '@shell/config/product/logging';
@@ -207,13 +207,45 @@ export default [
207
207
  name: 'c-cluster-backup',
208
208
  meta: { ...installRedirectRouteMeta(BACKUP_NAME, BACKUP_CHART_NAME, BACKUP_RESTORE.BACKUP) }
209
209
  }, {
210
- path: '/c/:cluster/cis',
211
- name: 'c-cluster-cis',
212
- meta: { ...installRedirectRouteMeta(CIS_NAME, CIS_CHART_NAME, CIS.CLUSTER_SCAN) }
210
+ path: '/c/:cluster/compliance',
211
+ name: 'c-cluster-compliance',
212
+ meta: { ...installRedirectRouteMeta(COMPLIANCE_NAME, COMPLIANCE_CHART_NAME, COMPLIANCE.CLUSTER_SCAN) }
213
213
  }, {
214
214
  path: '/c/:cluster/fleet',
215
215
  component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/index.vue')),
216
216
  name: 'c-cluster-fleet',
217
+ meta: {
218
+ detailLocation: 'c-cluster-fleet-application-resource-namespace-id',
219
+ doneOverride: 'c-cluster-fleet',
220
+ },
221
+ }, {
222
+ path: '/c/:cluster/fleet/application',
223
+ component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/application/index.vue')),
224
+ name: 'c-cluster-fleet-application',
225
+ meta: {
226
+ detailLocation: 'c-cluster-fleet-application-resource-namespace-id',
227
+ doneOverride: 'c-cluster-fleet-application',
228
+ },
229
+ }, {
230
+ path: '/c/:cluster/fleet/application/create',
231
+ component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/application/create.vue')),
232
+ name: 'c-cluster-fleet-application-create',
233
+ }, {
234
+ path: '/c/:cluster/fleet/application/:resource/create',
235
+ component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/application/_resource/create.vue')),
236
+ name: 'c-cluster-fleet-application-resource-create',
237
+ meta: {
238
+ detailLocation: 'c-cluster-fleet-application-resource-namespace-id',
239
+ doneOverride: 'c-cluster-fleet-application',
240
+ },
241
+ }, {
242
+ path: '/c/:cluster/fleet/application/:resource/:namespace/:id?',
243
+ component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/application/_resource/_id.vue')),
244
+ name: 'c-cluster-fleet-application-resource-namespace-id',
245
+ meta: {
246
+ detailLocation: 'c-cluster-fleet-application-resource-namespace-id',
247
+ doneOverride: 'c-cluster-fleet-application'
248
+ },
217
249
  }, {
218
250
  path: '/c/:cluster/gatekeeper',
219
251
  component: () => interopDefault(import('@shell/pages/c/_cluster/gatekeeper/index.vue')),
@@ -224,18 +256,6 @@ export default [
224
256
  component: () => interopDefault(import('@shell/pages/c/_cluster/istio/index.vue')),
225
257
  name: 'c-cluster-istio',
226
258
  meta: { ...installRedirectRouteMeta(ISTIO_NAME, ISTIO_CHART_NAME) }
227
- }, {
228
- path: '/c/:cluster/legacy',
229
- redirect(to) {
230
- return {
231
- name: 'c-cluster-legacy-project',
232
- params: {
233
- ...(to?.params || {}),
234
- product: EXPLORER,
235
- }
236
- };
237
- },
238
- name: 'c-cluster-legacy'
239
259
  }, {
240
260
  path: '/c/:cluster/logging',
241
261
  component: () => interopDefault(import('@shell/pages/c/_cluster/logging/index.vue')),
@@ -315,10 +335,6 @@ export default [
315
335
  path: '/c/:cluster/gatekeeper/constraints',
316
336
  component: () => interopDefault(import('@shell/pages/c/_cluster/gatekeeper/constraints/index.vue')),
317
337
  name: 'c-cluster-gatekeeper-constraints'
318
- }, {
319
- path: '/c/:cluster/legacy/project',
320
- component: () => interopDefault(import('@shell/pages/c/_cluster/legacy/project/index.vue')),
321
- name: 'c-cluster-legacy-project'
322
338
  }, {
323
339
  path: '/c/:cluster/manager/cloudCredential',
324
340
  component: () => interopDefault(import('@shell/pages/c/_cluster/manager/cloudCredential/index.vue')),
@@ -363,6 +379,10 @@ export default [
363
379
  path: '/c/:cluster/settings/performance',
364
380
  component: () => interopDefault(import('@shell/pages/c/_cluster/settings/performance.vue')),
365
381
  name: 'c-cluster-settings-performance'
382
+ }, {
383
+ path: '/c/:cluster/settings/fleet',
384
+ component: () => interopDefault(import('@shell/pages/c/_cluster/fleet/settings/index.vue')),
385
+ name: 'c-cluster-settings-fleet'
366
386
  }, {
367
387
  path: '/c/:cluster/auth/group.principal/assign-edit',
368
388
  component: () => interopDefault(import('@shell/pages/c/_cluster/auth/group.principal/assign-edit.vue')),
@@ -400,14 +420,6 @@ export default [
400
420
  path: '/c/:cluster/auth/config/:id',
401
421
  component: () => interopDefault(import('@shell/pages/c/_cluster/auth/config/_id.vue')),
402
422
  name: 'c-cluster-auth-config-id'
403
- }, {
404
- path: '/c/:cluster/legacy/pages/:page?',
405
- component: () => interopDefault(import('@shell/pages/c/_cluster/legacy/pages/_page.vue')),
406
- name: 'c-cluster-legacy-pages-page'
407
- }, {
408
- path: '/c/:cluster/legacy/project/:page',
409
- component: () => interopDefault(import('@shell/pages/c/_cluster/legacy/project/_page.vue')),
410
- name: 'c-cluster-legacy-project-page'
411
423
  }, {
412
424
  path: '/c/:cluster/manager/cloudCredential/:id',
413
425
  component: () => interopDefault(import('@shell/pages/c/_cluster/manager/cloudCredential/_id.vue')),
@@ -479,11 +491,13 @@ export default [
479
491
  }, {
480
492
  path: '/c/:cluster/:product/:resource/:id',
481
493
  component: () => interopDefault(import('@shell/pages/c/_cluster/_product/_resource/_id.vue')),
482
- name: 'c-cluster-product-resource-id'
494
+ name: 'c-cluster-product-resource-id',
495
+ meta: { asyncSetup: true }
483
496
  }, {
484
497
  path: '/c/:cluster/:product/:resource/:namespace/:id',
485
498
  component: () => interopDefault(import('@shell/pages/c/_cluster/_product/_resource/_namespace/_id.vue')),
486
- name: 'c-cluster-product-resource-namespace-id'
499
+ name: 'c-cluster-product-resource-namespace-id',
500
+ meta: { asyncSetup: true }
487
501
  }]
488
502
  },
489
503
  {
@@ -0,0 +1,15 @@
1
+ export const SECRET_TYPES = {
2
+ OPAQUE: 'Opaque',
3
+ SERVICE_ACCT: 'kubernetes.io/service-account-token',
4
+ DOCKER_JSON: 'kubernetes.io/dockerconfigjson',
5
+ BASIC: 'kubernetes.io/basic-auth',
6
+ SSH: 'kubernetes.io/ssh-auth',
7
+ TLS: 'kubernetes.io/tls',
8
+ BOOTSTRAP: 'bootstrap.kubernetes.io/token',
9
+ ISTIO_TLS: 'istio.io/key-and-cert',
10
+ HELM_RELEASE: 'helm.sh/release.v1',
11
+ FLEET_CLUSTER: 'fleet.cattle.io/cluster-registration-values',
12
+ CLOUD_CREDENTIAL: 'provisioning.cattle.io/cloud-credential',
13
+ RKE_AUTH_CONFIG: 'rke.cattle.io/auth-config',
14
+ FLEET_OCI_STORAGE: 'fleet.cattle.io/bundle-oci-storage/v1alpha1'
15
+ };
@@ -45,11 +45,11 @@ export const SETTING = {
45
45
  AUTH_TOKEN_MAX_TTL_MINUTES: 'auth-token-max-ttl-minutes',
46
46
  KUBECONFIG_GENERATE_TOKEN: 'kubeconfig-generate-token',
47
47
  KUBECONFIG_DEFAULT_TOKEN_TTL_MINUTES: 'kubeconfig-default-token-ttl-minutes',
48
- ENGINE_URL: 'engine-install-url',
49
48
  ENGINE_ISO_URL: 'engine-iso-url',
50
49
  FIRST_LOGIN: 'first-login',
51
50
  INGRESS_IP_DOMAIN: 'ingress-ip-domain',
52
51
  SERVER_URL: 'server-url',
52
+ RKE_METADATA_CONFIG: 'rke-metadata-config',
53
53
  EULA_AGREED: 'eula-agreed',
54
54
  AUTH_USER_INFO_MAX_AGE_SECONDS: 'auth-user-info-max-age-seconds',
55
55
  AUTH_USER_SESSION_TTL_MINUTES: 'auth-user-session-ttl-minutes',
@@ -106,6 +106,7 @@ export const SETTING = {
106
106
  DISABLE_INACTIVE_USER_AFTER: 'disable-inactive-user-after',
107
107
  DELETE_INACTIVE_USER_AFTER: 'delete-inactive-user-after',
108
108
  K3S_UPGRADER_UNINSTALL_CONCURRENCY: 'k3s-based-upgrader-uninstall-concurrency',
109
+ SYSTEM_AGENT_UPGRADER_INSTALL_CONCURRENCY: 'system-agent-upgrader-install-concurrency',
109
110
  IMPORTED_CLUSTER_VERSION_MANAGEMENT: 'imported-cluster-version-management',
110
111
  CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS: 'cluster-agent-default-priority-class',
111
112
  CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET: 'cluster-agent-default-pod-disruption-budget'
@@ -114,7 +115,6 @@ export const SETTING = {
114
115
  // These are the settings that are allowed to be edited via the UI
115
116
  export const ALLOWED_SETTINGS: GlobalSetting = {
116
117
  [SETTING.CA_CERTS]: { kind: 'multiline', readOnly: true },
117
- [SETTING.ENGINE_URL]: {},
118
118
  [SETTING.ENGINE_ISO_URL]: {},
119
119
  [SETTING.PASSWORD_MIN_LENGTH]: {
120
120
  kind: 'integer',
@@ -146,6 +146,7 @@ export const ALLOWED_SETTINGS: GlobalSetting = {
146
146
  [SETTING.KUBECONFIG_DEFAULT_TOKEN_TTL_MINUTES]: { kind: 'integer' },
147
147
  [SETTING.AUTH_USER_INFO_RESYNC_CRON]: {},
148
148
  [SETTING.SERVER_URL]: { kind: 'url', canReset: true },
149
+ [SETTING.RKE_METADATA_CONFIG]: { kind: 'json' },
149
150
  [SETTING.SYSTEM_DEFAULT_REGISTRY]: {},
150
151
  [SETTING.UI_INDEX]: {},
151
152
  [SETTING.UI_DASHBOARD_INDEX]: {},
@@ -160,6 +161,10 @@ export const ALLOWED_SETTINGS: GlobalSetting = {
160
161
  options: ['strict', 'system-store'],
161
162
  warning: 'agent-tls-mode'
162
163
  },
164
+ [SETTING.SYSTEM_AGENT_UPGRADER_INSTALL_CONCURRENCY]: {
165
+ kind: 'integer',
166
+ ruleSet: [{ name: 'minValue', factoryArg: 1 }]
167
+ },
163
168
  [SETTING.K3S_UPGRADER_UNINSTALL_CONCURRENCY]: {
164
169
  kind: 'integer',
165
170
  ruleSet: [{ name: 'minValue', factoryArg: 1 }]
@@ -170,7 +175,20 @@ export const ALLOWED_SETTINGS: GlobalSetting = {
170
175
 
171
176
  };
172
177
 
173
- export const PROVISIONING_SETTINGS = ['engine-iso-url', 'engine-install-url', 'imported-cluster-version-management', 'cluster-agent-default-priority-class', 'cluster-agent-default-pod-disruption-budget'];
178
+ /**
179
+ * Show settings in a special cluster provisioning section
180
+ *
181
+ * These should probably be an option in the maps above...
182
+ */
183
+ export const PROVISIONING_SETTINGS = [
184
+ SETTING.ENGINE_ISO_URL,
185
+ SETTING.RKE_METADATA_CONFIG,
186
+ SETTING.K3S_UPGRADER_UNINSTALL_CONCURRENCY,
187
+ SETTING.IMPORTED_CLUSTER_VERSION_MANAGEMENT,
188
+ SETTING.CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS,
189
+ SETTING.CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET
190
+ ];
191
+
174
192
  /**
175
193
  * Settings on how to handle warnings returning in api responses, specifically which to show as growls
176
194
  */
@@ -250,7 +268,8 @@ export const DEFAULT_PERF_SETTING: PerfSettings = {
250
268
  }
251
269
  },
252
270
  serverPagination: {
253
- useDefaultStores: true,
254
- stores: undefined,
271
+ useDefaultStores: true,
272
+ stores: undefined,
273
+ resourceChangesDebounceMs: 4000,
255
274
  }
256
275
  };
package/config/store.js CHANGED
@@ -38,6 +38,7 @@ let store = {};
38
38
  resolveStoreModules(require('../store/wm.js'), 'wm.js');
39
39
  resolveStoreModules(require('../store/customisation.js'), 'customisation.js');
40
40
  resolveStoreModules(require('../store/cru-resource.ts'), 'cru-resource.ts');
41
+ resolveStoreModules(require('../store/notifications.ts'), 'notifications.ts');
41
42
 
42
43
  // If the environment supports hot reloading...
43
44
 
@@ -67,6 +68,7 @@ let store = {};
67
68
  '../store/wm.js',
68
69
  '../store/customisation.js',
69
70
  '../store/cru-resource.ts',
71
+ '../store/notifications.ts',
70
72
  ], () => {
71
73
  // Update `root.modules` with the latest definitions.
72
74
  updateModules();
@@ -12,7 +12,7 @@ export default [
12
12
  'linkerd',
13
13
  'security-scan',
14
14
  'tekton-pipelines',
15
- 'cis-operator-system',
15
+ 'rancher-compliance-system',
16
16
  'istio-system',
17
17
  'longhorn-system',
18
18
  ];
@@ -761,6 +761,52 @@ export const FLEET_SUMMARY = {
761
761
  width: 100,
762
762
  };
763
763
 
764
+ export const FLEET_APPLICATION_TYPE = {
765
+ name: 'applicationType',
766
+ labelKey: 'fleet.tableHeaders.applicationType',
767
+ value: 'kind',
768
+ sort: 'kind',
769
+ search: false,
770
+ align: 'center',
771
+ width: 100,
772
+ };
773
+
774
+ export const FLEET_APPLICATION_SOURCE = {
775
+ name: 'applicationSource',
776
+ labelKey: 'fleet.tableHeaders.applicationSource',
777
+ value: 'source.value',
778
+ formatter: 'FleetApplicationSource',
779
+ sort: 'source.value',
780
+ search: ['source.value', 'sourceSub.value'],
781
+ };
782
+
783
+ export const FLEET_APPLICATION_TARGET = {
784
+ name: 'applicationTarget',
785
+ labelKey: 'fleet.tableHeaders.applicationTarget',
786
+ value: 'targetInfo.modeDisplay',
787
+ sort: ['targetInfo.modeDisplay'],
788
+ };
789
+
790
+ export const FLEET_APPLICATION_CLUSTERS_READY = {
791
+ name: 'applicationClustersReady',
792
+ labelKey: 'fleet.tableHeaders.applicationClustersReady',
793
+ value: 'readyClusters',
794
+ formatter: 'FleetApplicationClustersReady',
795
+ sort: 'readyClusters',
796
+ search: false,
797
+ };
798
+
799
+ export const FLEET_APPLICATION_RESOURCES_SUMMARY = {
800
+ name: 'applicationResourcesSummary',
801
+ labelKey: 'fleet.tableHeaders.applicationResourcesSummary',
802
+ value: 'status.resourceCounts',
803
+ sort: false,
804
+ search: false,
805
+ formatter: 'FleetSummaryGraph',
806
+ align: 'center',
807
+ width: 100,
808
+ };
809
+
764
810
  export const FLEET_REPO_CLUSTER_SUMMARY = {
765
811
  name: 'clusterSummary',
766
812
  labelKey: 'tableHeaders.clusterResources',
@@ -1052,36 +1098,20 @@ export const FLEET_BUNDLE_LAST_UPDATED = {
1052
1098
  sort: ['lastUpdateTime']
1053
1099
  };
1054
1100
 
1055
- export const FLEET_BUNDLE_TYPE = {
1056
- name: 'bundleType',
1057
- labelKey: 'tableHeaders.fleetBundleType',
1058
- value: 'bundleType',
1059
- sort: ['bundleType'],
1060
- width: 100,
1061
- };
1062
-
1063
- export const FLEET_REPO_CLUSTERS_READY = {
1064
- name: 'clustersReady',
1065
- labelKey: 'tableHeaders.clustersReady',
1066
- value: 'status.readyClusters',
1067
- sort: 'status.readyClusters',
1068
- search: false,
1069
- };
1070
-
1071
1101
  export const FLEET_REPO_TARGET = {
1072
1102
  name: 'target',
1073
1103
  labelKey: 'tableHeaders.target',
1074
1104
  value: 'targetInfo.modeDisplay',
1075
- sort: ['targetInfo.modeDisplay', 'targetInfo.cluster', 'targetInfo.clusterGroup'],
1076
-
1105
+ sort: ['targetInfo.modeDisplay'],
1077
1106
  };
1078
1107
 
1079
1108
  export const FLEET_REPO = {
1080
- name: 'repo',
1081
- labelKey: 'tableHeaders.repo',
1082
- value: 'repoDisplay',
1083
- sort: 'repoDisplay',
1084
- search: ['spec.repo', 'status.commit'],
1109
+ name: 'repo',
1110
+ labelKey: 'tableHeaders.repo',
1111
+ value: 'source.value',
1112
+ formatter: 'FleetApplicationSource',
1113
+ sort: 'source.value',
1114
+ search: ['source.value', 'sourceSub.value'],
1085
1115
  };
1086
1116
 
1087
1117
  export const UI_PLUGIN_CATALOG = [
package/config/types.js CHANGED
@@ -134,6 +134,14 @@ export const CATALOG = {
134
134
  REPO: 'catalog.cattle.io.repo',
135
135
  };
136
136
 
137
+ // Charts/Apps
138
+ export const CATALOG_SORT_OPTIONS = {
139
+ RECOMMENDED: 'recommended',
140
+ LAST_UPDATED_DESC: 'lastupdatedDescending',
141
+ ALPHABETICAL_ASC: 'alphaAscending',
142
+ ALPHABETICAL_DESC: 'alphaDescending'
143
+ };
144
+
137
145
  // UI Plugin type
138
146
  export const UI_PLUGIN = 'catalog.cattle.io.uiplugin';
139
147
 
@@ -211,7 +219,8 @@ export const MANAGEMENT = {
211
219
  GLOBAL_DNS_PROVIDER: 'management.cattle.io.globaldnsprovider',
212
220
  RKE_TEMPLATE: 'management.cattle.io.clustertemplate',
213
221
  RKE_TEMPLATE_REVISION: 'management.cattle.io.clustertemplaterevision',
214
- CLUSTER_PROXY_CONFIG: 'management.cattle.io.clusterproxyconfig'
222
+ CLUSTER_PROXY_CONFIG: 'management.cattle.io.clusterproxyconfig',
223
+ OIDC_CLIENT: 'management.cattle.io.oidcclient'
215
224
  };
216
225
 
217
226
  export const CAPI = {
@@ -229,12 +238,14 @@ export const CAPI = {
229
238
  // Base: /k8s/clusters/<id>/v1/
230
239
 
231
240
  export const FLEET = {
241
+ APPLICATION: 'fleet.cattle.io.application',
232
242
  BUNDLE: 'fleet.cattle.io.bundle',
233
243
  BUNDLE_DEPLOYMENT: 'fleet.cattle.io.bundledeployment',
234
244
  CLUSTER: 'fleet.cattle.io.cluster',
235
245
  CLUSTER_GROUP: 'fleet.cattle.io.clustergroup',
236
246
  DASHBOARD: 'fleet.cattle.io.dashboard',
237
247
  GIT_REPO: 'fleet.cattle.io.gitrepo',
248
+ HELM_OP: 'fleet.cattle.io.helmop',
238
249
  WORKSPACE: 'management.cattle.io.fleetworkspace',
239
250
  TOKEN: 'fleet.cattle.io.clusterregistrationtoken',
240
251
  BUNDLE_NAMESPACE_MAPPING: 'fleet.cattle.io.bundlenamespacemapping',
@@ -292,11 +303,11 @@ export const BACKUP_RESTORE = {
292
303
  RESTORE: 'resources.cattle.io.restore',
293
304
  };
294
305
 
295
- export const CIS = {
296
- CLUSTER_SCAN: 'cis.cattle.io.clusterscan',
297
- CLUSTER_SCAN_PROFILE: 'cis.cattle.io.clusterscanprofile',
298
- BENCHMARK: 'cis.cattle.io.clusterscanbenchmark',
299
- REPORT: 'cis.cattle.io.clusterscanreport'
306
+ export const COMPLIANCE = {
307
+ CLUSTER_SCAN: 'compliance.cattle.io.clusterscan',
308
+ CLUSTER_SCAN_PROFILE: 'compliance.cattle.io.clusterscanprofile',
309
+ BENCHMARK: 'compliance.cattle.io.clusterscanbenchmark',
310
+ REPORT: 'compliance.cattle.io.clusterscanreport'
300
311
  };
301
312
 
302
313
  export const UI = { NAV_LINK: 'ui.cattle.io.navlink' };
@@ -32,12 +32,13 @@ function checkRouteProduct($route: RouteLocation, locationConfigParam: string) {
32
32
  return false;
33
33
  }
34
34
 
35
- function checkRouteMode({ name, query }: {name: string, query: any}, locationConfigParam: LocationConfigParams) {
35
+ function checkRouteMode({ name, query, meta }: {name: string, query: any, meta: any}, locationConfigParam: LocationConfigParams) {
36
36
  if (locationConfigParam === _EDIT && query.mode && query.mode === _EDIT && !query.as) {
37
37
  return true;
38
38
  } else if (locationConfigParam === _CONFIG && query.as && query.as === _CONFIG) {
39
39
  return true;
40
- } else if (locationConfigParam === _DETAIL && !query.as && name.includes('-id') && (!query.mode || query?.mode !== _EDIT)) {
40
+ // I don't think we should be inspecting route names to infer modes. I'm thinking we may want to move it all to route metadata at some point
41
+ } else if (locationConfigParam === _DETAIL && !query.as && (name.includes('-id') || meta.mode === 'detail') && (!query.mode || query?.mode !== _EDIT)) {
41
42
  return true;
42
43
  // alias to target all list views
43
44
  } else if (locationConfigParam === _LIST && !name.includes('-id') && name.includes('-resource')) {
package/core/plugin.ts CHANGED
@@ -14,7 +14,8 @@ import {
14
14
  ExtensionPoint,
15
15
  TabLocation,
16
16
  ModelExtensionConstructor,
17
- PluginRouteRecordRaw, RegisterStore, UnregisterStore, CoreStoreSpecifics, CoreStoreConfig, OnNavToPackage, OnNavAwayFromPackage, OnLogOut,
17
+ PluginRouteRecordRaw, RegisterStore, UnregisterStore, CoreStoreSpecifics, CoreStoreConfig,
18
+ NavHooks, OnNavToPackage, OnNavAwayFromPackage, OnLogIn, OnLogOut,
18
19
  ExtensionEnvironment
19
20
  } from './types';
20
21
  import coreStore, { coreStoreModule, coreStoreState } from '@shell/plugins/dashboard-store';
@@ -43,6 +44,7 @@ export class Plugin implements IPlugin {
43
44
  public onEnter: OnNavToPackage = () => Promise.resolve();
44
45
  public onLeave: OnNavAwayFromPackage = () => Promise.resolve();
45
46
  public _onLogOut: OnLogOut = () => Promise.resolve();
47
+ public onLogIn: OnLogIn = () => Promise.resolve();
46
48
 
47
49
  public uiConfig: { [key: string]: any } = {};
48
50
 
@@ -314,13 +316,36 @@ export class Plugin implements IPlugin {
314
316
  }
315
317
 
316
318
  public addNavHooks(
317
- onEnter: OnNavToPackage = () => Promise.resolve(),
318
- onLeave: OnNavAwayFromPackage = () => Promise.resolve(),
319
- onLogOut: OnLogOut = () => Promise.resolve(),
319
+ onEnter?: OnNavToPackage | NavHooks,
320
+ onLeave?: OnNavAwayFromPackage,
321
+ onLogOut?: OnLogOut,
322
+ onLogIn?: OnLogIn,
320
323
  ): void {
321
- this.onEnter = onEnter;
322
- this.onLeave = onLeave;
323
- this._onLogOut = onLogOut;
324
+ if (typeof onEnter === 'object') {
325
+ const hooks = onEnter as NavHooks;
326
+
327
+ if (hooks.onEnter) {
328
+ this.onEnter = hooks.onEnter;
329
+ }
330
+
331
+ if (hooks.onLeave) {
332
+ this.onLeave = hooks.onLeave;
333
+ }
334
+
335
+ if (hooks.onLogout) {
336
+ this._onLogOut = hooks.onLogout;
337
+ }
338
+
339
+ if (hooks.onLogin) {
340
+ this.onLogIn = hooks.onLogin;
341
+ }
342
+ } else {
343
+ // No first arg, or first arg is not an object, so this is the legacy invocation
344
+ this.onEnter = (onEnter as OnNavToPackage) || (() => Promise.resolve());
345
+ this.onLeave = onLeave || (() => Promise.resolve());
346
+ this._onLogOut = onLogOut || (() => Promise.resolve());
347
+ this.onLogIn = onLogIn || (() => Promise.resolve());
348
+ }
324
349
  }
325
350
 
326
351
  public async onLogOut(store: any) {
package/core/types.ts CHANGED
@@ -39,6 +39,17 @@ export type OnEnterLeavePackageConfig = {
39
39
  export type OnNavToPackage = (store: any, config: OnEnterLeavePackageConfig) => Promise<void>;
40
40
  export type OnNavAwayFromPackage = (store: any, config: OnEnterLeavePackageConfig) => Promise<void>;
41
41
  export type OnLogOut = (store: any) => Promise<void>;
42
+ export type OnLogIn = (store: any) => Promise<void>;
43
+
44
+ /**
45
+ * Navigation hooks specified as an object
46
+ */
47
+ export type NavHooks = {
48
+ onEnter?: OnNavToPackage,
49
+ onLeave?: OnNavAwayFromPackage,
50
+ onLogout?: OnLogOut,
51
+ onLogin?: OnLogIn,
52
+ }
42
53
 
43
54
  /** Enum regarding the extensible areas/places of the UI */
44
55
  export enum ExtensionPoint {
@@ -324,6 +335,10 @@ export interface HeaderOptions {
324
335
  }
325
336
 
326
337
  export interface ConfigureTypeOptions {
338
+ /**
339
+ * Override for the create button string on a list view
340
+ */
341
+ listCreateButtonLabelKey?: boolean;
327
342
  /**
328
343
  * The resource can edit/show yaml
329
344
  */
@@ -644,8 +659,10 @@ export interface IPlugin {
644
659
  addNavHooks(
645
660
  onEnter?: OnNavToPackage,
646
661
  onLeave?: OnNavAwayFromPackage,
647
- onLogOut?: OnLogOut
662
+ onLogOut?: OnLogOut,
663
+ onLogIn?: OnLogIn,
648
664
  ): void;
665
+ addNavHooks(hooks: NavHooks): void;
649
666
 
650
667
  /**
651
668
  * Adds a model extension