@rancher/shell 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (689) hide show
  1. package/assets/data/aws-regions.json +9 -0
  2. package/assets/images/vendor/openid.svg +18 -0
  3. package/assets/styles/app.scss +1 -2
  4. package/assets/styles/fonts/_icons.scss +3 -3
  5. package/assets/styles/global/_columns.scss +1 -1
  6. package/assets/styles/global/_labeled-input.scss +1 -0
  7. package/assets/styles/global/_layout.scss +99 -0
  8. package/assets/styles/themes/_csp.scss +2 -2
  9. package/assets/styles/themes/_dark.scss +8 -2
  10. package/assets/styles/themes/_light.scss +2 -1
  11. package/assets/styles/themes/_suse.scss +1 -1
  12. package/assets/styles/vendor/vue-select.scss +5 -0
  13. package/assets/translations/en-us.yaml +299 -63
  14. package/assets/translations/zh-hans.yaml +7 -31
  15. package/babel.config.js +8 -2
  16. package/chart/__tests__/S3.test.ts +9 -2
  17. package/chart/gatekeeper.vue +2 -11
  18. package/chart/istio.vue +1 -10
  19. package/chart/logging/index.vue +2 -11
  20. package/chart/monitoring/alerting/index.vue +7 -21
  21. package/chart/monitoring/grafana/index.vue +61 -2
  22. package/chart/monitoring/index.vue +52 -26
  23. package/chart/monitoring/prometheus/index.vue +39 -45
  24. package/chart/rancher-backup/S3.vue +11 -9
  25. package/chart/rancher-backup/index.vue +18 -15
  26. package/cloud-credential/__tests__/harvester.test.ts +18 -0
  27. package/cloud-credential/azure.vue +4 -17
  28. package/cloud-credential/generic.vue +18 -9
  29. package/cloud-credential/harvester.vue +11 -3
  30. package/components/AppModal.vue +167 -0
  31. package/components/AssignTo.vue +7 -4
  32. package/components/AsyncButton.vue +27 -5
  33. package/components/BackLink.vue +4 -4
  34. package/components/BannerGraphic.vue +1 -0
  35. package/components/BrandImage.vue +47 -1
  36. package/components/Carousel.vue +15 -8
  37. package/components/Certificates.vue +161 -0
  38. package/components/ClusterBadge.vue +12 -3
  39. package/components/ClusterIconMenu.vue +55 -12
  40. package/components/ClusterProviderIcon.vue +14 -3
  41. package/components/CodeMirror.vue +111 -17
  42. package/components/CommunityLinks.vue +12 -8
  43. package/components/CopyCode.vue +6 -2
  44. package/components/CopyToClipboard.vue +2 -1
  45. package/components/CopyToClipboardText.vue +14 -9
  46. package/components/CreateDriver.vue +81 -0
  47. package/components/CruResource.vue +52 -27
  48. package/components/DetailTop.vue +2 -2
  49. package/components/Dialog.vue +6 -5
  50. package/components/DisableAuthProviderModal.vue +14 -8
  51. package/components/DraggableZone.vue +2 -2
  52. package/components/EtcdInfoBanner.vue +5 -5
  53. package/components/ExplorerMembers.vue +3 -3
  54. package/components/ExplorerProjectsNamespaces.vue +31 -7
  55. package/components/FixedBanner.vue +48 -36
  56. package/components/GlobalRoleBindings.vue +26 -0
  57. package/components/IconOrSvg.vue +1 -1
  58. package/components/Import.vue +10 -6
  59. package/components/Inactivity.vue +1 -5
  60. package/components/KeyValueView.vue +14 -10
  61. package/components/Markdown.vue +16 -12
  62. package/components/MessageLink.vue +2 -2
  63. package/components/ModalWithCard.vue +5 -8
  64. package/components/MoveModal.vue +35 -33
  65. package/components/PodSecurityAdmission.vue +3 -3
  66. package/components/PromptChangePassword.vue +33 -33
  67. package/components/PromptModal.vue +11 -21
  68. package/components/PromptRemove.vue +11 -17
  69. package/components/PromptRestore.vue +18 -16
  70. package/components/Questions/__tests__/Boolean.test.ts +9 -19
  71. package/components/Questions/__tests__/Float.test.ts +9 -19
  72. package/components/Questions/__tests__/Int.test.ts +9 -19
  73. package/components/Questions/__tests__/String.test.ts +9 -19
  74. package/components/Questions/__tests__/Yaml.test.ts +9 -20
  75. package/components/Questions/__tests__/utils/questions-defaults.ts +20 -0
  76. package/components/Questions/index.vue +19 -3
  77. package/components/ResourceCancelModal.vue +34 -29
  78. package/components/ResourceDetail/Masthead.vue +48 -16
  79. package/components/ResourceDetail/index.vue +6 -4
  80. package/components/ResourceList/Masthead.vue +10 -9
  81. package/components/ResourceList/index.vue +65 -14
  82. package/components/ResourceTable.vue +87 -21
  83. package/components/ResourceYaml.vue +35 -5
  84. package/components/SelectIconGrid.vue +3 -3
  85. package/components/SideNav.vue +50 -94
  86. package/components/SingleClusterInfo.vue +4 -4
  87. package/components/SortableTable/THead.vue +33 -21
  88. package/components/SortableTable/filtering.js +9 -1
  89. package/components/SortableTable/grouping.js +8 -1
  90. package/components/SortableTable/index.vue +143 -44
  91. package/components/SortableTable/paging.js +36 -7
  92. package/components/SortableTable/selection.js +2 -1
  93. package/components/SortableTable/sorting.js +24 -7
  94. package/components/StatusTable.vue +5 -1
  95. package/components/Tabbed/index.vue +18 -1
  96. package/components/TableDataUserIcon.vue +47 -0
  97. package/components/TypeDescription.vue +1 -0
  98. package/components/Wizard.vue +1 -0
  99. package/components/YamlEditor.vue +1 -0
  100. package/components/__tests__/AppModal.test.ts +98 -0
  101. package/components/__tests__/AsyncButton.test.ts +1 -3
  102. package/components/__tests__/BackLink.test.ts +1 -1
  103. package/components/__tests__/ButtonGroup.test.ts +3 -6
  104. package/components/__tests__/Carousel.test.ts +43 -0
  105. package/components/__tests__/Certificates.test.ts +29 -0
  106. package/components/__tests__/CodeMirror.test.ts +87 -0
  107. package/components/__tests__/CopyCode.test.ts +5 -4
  108. package/components/__tests__/CruResource.test.ts +10 -9
  109. package/components/__tests__/EtcdInfoBanner.test.ts +37 -0
  110. package/components/__tests__/FixedBanner.test.ts +5 -20
  111. package/components/__tests__/NamespaceFilter.test.ts +9 -18
  112. package/components/__tests__/TabTitle.test.ts +129 -0
  113. package/components/auth/AzureWarning.vue +2 -2
  114. package/components/auth/RoleDetailEdit.vue +10 -0
  115. package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
  116. package/components/auth/login/oidc.vue +7 -1
  117. package/components/fleet/FleetBundles.vue +5 -11
  118. package/components/fleet/FleetClusters.vue +9 -9
  119. package/components/fleet/FleetIntro.vue +11 -17
  120. package/components/fleet/FleetNoWorkspaces.vue +2 -2
  121. package/components/fleet/FleetRepos.vue +63 -27
  122. package/components/fleet/FleetResources.vue +6 -1
  123. package/components/fleet/FleetStatus.vue +3 -3
  124. package/components/fleet/FleetSummary.vue +35 -30
  125. package/components/fleet/ForceDirectedTreeChart/index.vue +9 -3
  126. package/components/fleet/__tests__/FleetSummary.test.ts +316 -0
  127. package/components/form/ArrayList.vue +22 -18
  128. package/components/form/ArrayListSelect.vue +5 -0
  129. package/components/form/BannerSettings.vue +3 -0
  130. package/components/form/ClusterAppearance.vue +132 -0
  131. package/components/form/ColorInput.vue +1 -0
  132. package/components/form/Error.vue +3 -3
  133. package/components/form/FileSelector.vue +1 -0
  134. package/components/form/Footer.vue +2 -2
  135. package/components/form/GitPicker.vue +83 -38
  136. package/components/form/KeyValue.vue +69 -48
  137. package/components/form/LabeledSelect.vue +145 -41
  138. package/components/form/Labels.vue +3 -1
  139. package/components/form/NameNsDescription.vue +26 -9
  140. package/components/form/Password.vue +3 -1
  141. package/components/form/ResourceLabeledSelect.vue +187 -0
  142. package/components/form/ResourceTabs/index.vue +31 -15
  143. package/components/form/SecretSelector.vue +93 -18
  144. package/components/form/SelectOrCreateAuthSecret.vue +132 -59
  145. package/components/form/SimpleSecretSelector.vue +88 -28
  146. package/components/form/__tests__/BannerSettings.test.ts +53 -0
  147. package/components/form/__tests__/KeyValue.test.ts +120 -11
  148. package/components/form/__tests__/LabeledSelect.test.ts +0 -18
  149. package/components/form/__tests__/{NameNsDescription.ts → NameNsDescription.test.ts} +25 -15
  150. package/components/form/labeled-select-utils/labeled-select-pagination.ts +151 -0
  151. package/components/form/labeled-select-utils/labeled-select.utils.ts +122 -0
  152. package/components/formatter/AppSummaryGraph.vue +2 -2
  153. package/components/formatter/Checked.vue +11 -3
  154. package/components/formatter/CloudCredPublicData.vue +30 -0
  155. package/components/formatter/ClusterLink.vue +2 -2
  156. package/components/formatter/ClusterProvider.vue +1 -18
  157. package/components/formatter/FleetClusterSummaryGraph.vue +27 -0
  158. package/components/formatter/FleetSummaryGraph.vue +25 -12
  159. package/components/formatter/ImagePercentageBar.vue +0 -4
  160. package/components/formatter/IngressTarget.vue +18 -7
  161. package/components/formatter/Link.vue +2 -2
  162. package/components/formatter/LinkDetail.vue +2 -2
  163. package/components/formatter/LinkDetailImage.vue +2 -2
  164. package/components/formatter/LinkName.vue +2 -2
  165. package/components/formatter/LiveDuration.vue +1 -1
  166. package/components/formatter/PercentageBar.vue +1 -1
  167. package/components/formatter/PrincipalGroupBindings.vue +2 -2
  168. package/components/formatter/SecretType.vue +2 -2
  169. package/components/formatter/VirtualServiceGateways.vue +2 -2
  170. package/components/formatter/WorkloadDetailEndpoints.vue +12 -22
  171. package/components/formatter/__tests__/Checked.test.ts +19 -0
  172. package/components/formatter/__tests__/LinkDetail.test.ts +5 -5
  173. package/components/formatter/__tests__/WorkloadDetailEndpoints.test.ts +81 -0
  174. package/components/nav/Group.vue +9 -7
  175. package/components/nav/Header.vue +84 -45
  176. package/components/nav/Jump.vue +19 -9
  177. package/components/nav/NamespaceFilter.vue +8 -1
  178. package/components/nav/TopLevelMenu.vue +391 -132
  179. package/components/nav/Type.vue +71 -106
  180. package/components/nav/WindowManager/ContainerLogs.vue +120 -19
  181. package/components/nav/WindowManager/ContainerShell.vue +6 -1
  182. package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +186 -0
  183. package/components/nav/WindowManager/index.vue +11 -10
  184. package/components/nav/__tests__/TopLevelMenu.test.ts +400 -6
  185. package/components/nav/__tests__/Type.test.ts +322 -97
  186. package/components/nuxt/nuxt-child.js +9 -78
  187. package/components/nuxt/nuxt-error.vue +1 -1
  188. package/components/nuxt/nuxt-link.client.js +13 -95
  189. package/{layouts → components/templates}/blank.vue +1 -1
  190. package/{layouts → components/templates}/default.vue +11 -101
  191. package/{layouts → components/templates}/error.vue +13 -26
  192. package/{layouts → components/templates}/home.vue +4 -1
  193. package/{layouts → components/templates}/plain.vue +4 -1
  194. package/{layouts → components/templates}/standalone.vue +1 -5
  195. package/{layouts → components/templates}/unauthenticated.vue +2 -3
  196. package/composables/useCompactInput.test.ts +36 -0
  197. package/composables/useCompactInput.ts +20 -0
  198. package/composables/useLabeledFormElement.test.ts +135 -0
  199. package/composables/useLabeledFormElement.ts +138 -0
  200. package/config/harvester-manager-types.js +2 -0
  201. package/config/home-links.js +2 -1
  202. package/config/labels-annotations.js +2 -1
  203. package/config/middleware.js +0 -6
  204. package/config/pagination-table-headers.js +57 -0
  205. package/config/pod-security-admission.ts +1 -1
  206. package/config/private-label.js +21 -1
  207. package/config/product/auth.js +1 -0
  208. package/config/product/explorer.js +166 -45
  209. package/config/product/fleet.js +6 -1
  210. package/config/product/legacy.js +2 -11
  211. package/config/product/manager.js +51 -25
  212. package/config/query-params.js +2 -0
  213. package/config/roles.ts +23 -0
  214. package/config/router/index.js +23 -0
  215. package/config/router/navigation-guards/attempt-first-login.js +73 -0
  216. package/config/router/navigation-guards/authentication.js +63 -0
  217. package/config/router/navigation-guards/index.js +15 -0
  218. package/config/router/navigation-guards/load-initial-settings.js +15 -0
  219. package/config/router/routes.js +487 -0
  220. package/config/settings.ts +31 -2
  221. package/config/store.js +8 -4
  222. package/config/system-namespaces.js +3 -0
  223. package/config/table-headers.js +66 -1
  224. package/config/types.js +35 -20
  225. package/config/uiplugins.js +10 -5
  226. package/core/plugin-helpers.js +4 -6
  227. package/core/plugin-routes.ts +56 -114
  228. package/core/plugin.ts +18 -11
  229. package/core/plugins-loader.js +7 -9
  230. package/core/plugins.js +289 -285
  231. package/core/types-provisioning.ts +7 -0
  232. package/creators/app/files/.eslintignore +0 -2
  233. package/creators/app/files/.gitlab-ci.yml +14 -0
  234. package/creators/app/files/.vscode/settings.json +0 -1
  235. package/creators/app/init +19 -0
  236. package/creators/pkg/files/.github/workflows/build-extension-catalog.yml +2 -6
  237. package/creators/pkg/files/.github/workflows/build-extension-charts.yml +2 -6
  238. package/creators/pkg/init +32 -0
  239. package/detail/__tests__/provisioning.cattle.io.cluster.test.ts +77 -0
  240. package/detail/__tests__/service.test.ts +62 -0
  241. package/detail/catalog.cattle.io.app.vue +1 -1
  242. package/detail/cis.cattle.io.clusterscan.vue +14 -3
  243. package/detail/fleet.cattle.io.bundle.vue +1 -1
  244. package/detail/fleet.cattle.io.cluster.vue +11 -1
  245. package/detail/fleet.cattle.io.gitrepo.vue +15 -9
  246. package/detail/namespace.vue +2 -2
  247. package/detail/networking.k8s.io.ingress.vue +52 -19
  248. package/detail/node.vue +22 -3
  249. package/detail/provisioning.cattle.io.cluster.vue +27 -9
  250. package/detail/service.vue +1 -1
  251. package/detail/workload/index.vue +1 -0
  252. package/dialog/AddCustomBadgeDialog.vue +318 -161
  253. package/dialog/DeactivateDriverDialog.vue +118 -0
  254. package/dialog/RollbackWorkloadDialog.vue +2 -2
  255. package/dialog/RotateCertificatesDialog.vue +0 -21
  256. package/dialog/ScaleMachineDownDialog.vue +34 -17
  257. package/directives/clean-html.js +15 -0
  258. package/directives/clean-tooltip.js +32 -0
  259. package/directives/focus.js +41 -0
  260. package/directives/int-number.js +21 -0
  261. package/directives/positive-int-number.js +19 -0
  262. package/directives/trim-whitespace.js +19 -0
  263. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +3 -2
  264. package/edit/__tests__/kontainerDriver.test.ts +107 -0
  265. package/edit/__tests__/management.cattle.io.clusterroletemplatebinding.test.ts +12 -1
  266. package/edit/__tests__/management.cattle.io.setting.test.ts +2 -1
  267. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +2 -3
  268. package/edit/__tests__/nodeDriver.test.ts +107 -0
  269. package/edit/__tests__/service.test.ts +85 -0
  270. package/edit/__tests__/ui.cattle.io.navlink.test.ts +3 -1
  271. package/edit/auth/AuthProviderWarningBanners.vue +34 -0
  272. package/edit/auth/__tests__/AuthProviderWarningBanners.test.ts +19 -0
  273. package/edit/auth/__tests__/azuread.test.ts +241 -0
  274. package/edit/auth/__tests__/oidc.test.ts +137 -0
  275. package/edit/auth/azuread.vue +133 -31
  276. package/edit/auth/github.vue +5 -17
  277. package/edit/auth/googleoauth.vue +6 -23
  278. package/edit/auth/ldap/index.vue +5 -17
  279. package/edit/auth/oidc.vue +143 -42
  280. package/edit/auth/saml.vue +5 -14
  281. package/edit/catalog.cattle.io.clusterrepo.vue +177 -9
  282. package/edit/cis.cattle.io.clusterscan.vue +5 -2
  283. package/edit/cis.cattle.io.clusterscanbenchmark.vue +41 -9
  284. package/edit/cloudcredential.vue +28 -4
  285. package/edit/configmap.vue +10 -4
  286. package/edit/fleet.cattle.io.gitrepo.vue +3 -1
  287. package/edit/helm.cattle.io.projecthelmchart.vue +29 -19
  288. package/edit/kontainerDriver.vue +65 -0
  289. package/edit/logging-flow/Match.vue +10 -9
  290. package/edit/logging-flow/index.vue +4 -19
  291. package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +232 -2
  292. package/edit/logging.banzaicloud.io.output/index.vue +43 -26
  293. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -3
  294. package/edit/management.cattle.io.project.vue +3 -53
  295. package/edit/management.cattle.io.setting.vue +52 -2
  296. package/edit/management.cattle.io.user.vue +2 -1
  297. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +10 -7
  298. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +21 -16
  299. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +1 -1
  300. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +2 -2
  301. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +1 -1
  302. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +15 -3
  303. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +4 -1
  304. package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +2 -0
  305. package/edit/monitoring.coreos.com.prometheusrule/index.vue +2 -0
  306. package/edit/networking.k8s.io.ingress/Rules.vue +8 -3
  307. package/edit/networking.k8s.io.ingress/index.vue +64 -8
  308. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -0
  309. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +6 -2
  310. package/edit/networking.k8s.io.networkpolicy/__tests__/{PolicyRuleTarget.spec.ts → PolicyRuleTarget.test.ts} +46 -7
  311. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.ts → selectors.test.ts} +1 -1
  312. package/edit/networking.k8s.io.networkpolicy/index.vue +2 -0
  313. package/edit/nodeDriver.vue +65 -0
  314. package/edit/persistentvolume/index.vue +2 -2
  315. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +33 -16
  316. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +276 -0
  317. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +473 -0
  318. package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.tests.ts → CustomCommand.test.ts} +3 -0
  319. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +228 -0
  320. package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
  321. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +73 -0
  322. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +77 -13
  323. package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +391 -0
  324. package/edit/provisioning.cattle.io.cluster/import.vue +4 -4
  325. package/edit/provisioning.cattle.io.cluster/index.vue +126 -51
  326. package/edit/provisioning.cattle.io.cluster/rke2.vue +325 -791
  327. package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +137 -0
  328. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +217 -0
  329. package/edit/provisioning.cattle.io.cluster/{Basics.vue → tabs/Basics.vue} +123 -129
  330. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +132 -0
  331. package/edit/provisioning.cattle.io.cluster/{MachinePool.vue → tabs/MachinePool.vue} +1 -0
  332. package/edit/provisioning.cattle.io.cluster/{S3Config.vue → tabs/etcd/S3Config.vue} +1 -0
  333. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +135 -0
  334. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +190 -0
  335. package/edit/provisioning.cattle.io.cluster/{RegistryConfigs.vue → tabs/registries/RegistryConfigs.vue} +3 -0
  336. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +148 -0
  337. package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +76 -0
  338. package/edit/resources.cattle.io.backup.vue +139 -124
  339. package/edit/resources.cattle.io.restore.vue +146 -126
  340. package/edit/service.vue +13 -0
  341. package/edit/serviceaccount.vue +46 -4
  342. package/edit/token.vue +1 -0
  343. package/edit/workload/Upgrading.vue +3 -2
  344. package/edit/workload/__tests__/Job.test.ts +1 -3
  345. package/edit/workload/__tests__/Upgrading.test.ts +2 -2
  346. package/edit/workload/index.vue +2 -1
  347. package/edit/workload/mixins/workload.js +35 -2
  348. package/edit/workload/storage/emptyDir.vue +2 -2
  349. package/initialize/App.vue +75 -0
  350. package/initialize/app-extended.js +128 -0
  351. package/initialize/entry-helpers.js +549 -0
  352. package/initialize/entry.js +32 -0
  353. package/initialize/install-components.js +23 -0
  354. package/initialize/install-directives.js +59 -0
  355. package/initialize/install-plugins.js +123 -0
  356. package/list/__tests__/workload.test.ts +1 -1
  357. package/list/catalog.cattle.io.app.vue +1 -0
  358. package/list/cis.cattle.io.clusterscan.vue +16 -10
  359. package/list/group.principal.vue +2 -2
  360. package/list/management.cattle.io.feature.vue +12 -14
  361. package/list/management.cattle.io.setting.vue +1 -0
  362. package/list/management.cattle.io.user.vue +13 -4
  363. package/list/networking.k8s.io.ingress.vue +36 -0
  364. package/list/node.vue +212 -73
  365. package/list/provisioning.cattle.io.cluster.vue +17 -4
  366. package/list/ui.cattle.io.navlink.vue +2 -2
  367. package/list/workload.vue +22 -0
  368. package/machine-config/__tests__/vmwarevsphere-pool-config-merge.test.ts +30 -0
  369. package/machine-config/__tests__/vmwarevsphere.test.ts +1 -3
  370. package/machine-config/amazonec2.vue +1 -1
  371. package/machine-config/azure.vue +2 -1
  372. package/machine-config/generic.vue +11 -15
  373. package/machine-config/vmwarevsphere-pool-config-merge.ts +25 -0
  374. package/machine-config/vmwarevsphere.vue +31 -27
  375. package/middleware/authenticated.js +23 -380
  376. package/mixins/__tests__/chart.test.ts +48 -6
  377. package/mixins/__tests__/create-edit-view.test.ts +2 -3
  378. package/mixins/auth-config.js +5 -9
  379. package/mixins/brand.js +102 -96
  380. package/mixins/chart.js +27 -13
  381. package/mixins/create-edit-view/index.js +2 -2
  382. package/mixins/fetch.client.js +42 -48
  383. package/mixins/labeled-form-element.ts +27 -2
  384. package/mixins/page-actions.js +7 -5
  385. package/mixins/resource-fetch-api-pagination.js +304 -0
  386. package/mixins/resource-fetch-namespaced.js +1 -1
  387. package/mixins/resource-fetch.js +46 -5
  388. package/models/__tests__/cluster.test.ts +44 -0
  389. package/models/__tests__/fleet.cattle.io.cluster.test.ts +36 -0
  390. package/models/__tests__/management.cattle.io.cluster.test.ts +23 -0
  391. package/models/__tests__/management.cattle.io.node.ts +85 -0
  392. package/models/__tests__/management.cattle.io.nodepool.ts +83 -0
  393. package/models/__tests__/namespace.test.ts +49 -9
  394. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +241 -0
  395. package/models/__tests__/schema.tests.ts +24 -0
  396. package/models/__tests__/secret.test.ts +37 -0
  397. package/models/__tests__/steve-schema.test.ts +73 -0
  398. package/models/__tests__/storage.k8s.io.storageclass.test.ts +22 -0
  399. package/models/__tests__/workload.test.ts +91 -0
  400. package/models/catalog.cattle.io.app.js +8 -0
  401. package/models/catalog.cattle.io.clusterrepo.js +9 -1
  402. package/models/catalog.cattle.io.uiplugin.js +7 -8
  403. package/models/cis.cattle.io.clusterscan.js +29 -8
  404. package/models/cloudcredential.js +9 -1
  405. package/models/cluster/node.js +8 -4
  406. package/models/cluster/schema.js +6 -0
  407. package/models/cluster.js +33 -0
  408. package/models/cluster.x-k8s.io.machine.js +1 -1
  409. package/models/cluster.x-k8s.io.machinedeployment.js +14 -0
  410. package/models/driver.js +62 -0
  411. package/models/fleet.cattle.io.cluster.js +27 -11
  412. package/models/fleet.cattle.io.gitrepo.js +66 -13
  413. package/models/helm.cattle.io.projecthelmchart.js +1 -1
  414. package/models/kontainerdriver.js +68 -0
  415. package/models/management/schema.js +6 -0
  416. package/models/management.cattle.io.authconfig.js +3 -2
  417. package/models/management.cattle.io.cluster.js +16 -7
  418. package/models/management.cattle.io.globalrole.js +2 -0
  419. package/models/management.cattle.io.kontainerdriver.js +1 -0
  420. package/models/management.cattle.io.node.js +18 -14
  421. package/models/management.cattle.io.nodepool.js +17 -0
  422. package/models/management.cattle.io.project.js +0 -36
  423. package/models/management.cattle.io.setting.js +11 -7
  424. package/models/management.cattle.io.user.js +2 -2
  425. package/models/monitoring.coreos.com.receiver.js +3 -1
  426. package/models/monitoring.coreos.com.route.js +1 -1
  427. package/models/namespace.js +1 -1
  428. package/models/networking.k8s.io.ingress.js +2 -1
  429. package/models/nodedriver.js +68 -0
  430. package/models/pod.js +20 -0
  431. package/models/provisioning.cattle.io.cluster.js +125 -10
  432. package/models/schema.js +28 -7
  433. package/models/secret.js +126 -18
  434. package/models/service.js +2 -0
  435. package/models/steve-schema.ts +254 -0
  436. package/models/storage.k8s.io.storageclass.js +1 -1
  437. package/models/workload.js +17 -0
  438. package/models/workload.service.js +18 -0
  439. package/package.json +17 -14
  440. package/pages/about.vue +12 -6
  441. package/pages/account/create-key.vue +0 -1
  442. package/pages/account/index.vue +7 -3
  443. package/pages/auth/login.vue +106 -103
  444. package/pages/auth/logout.vue +2 -4
  445. package/pages/auth/setup.vue +92 -66
  446. package/pages/auth/verify.vue +30 -24
  447. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +2 -17
  448. package/pages/c/_cluster/apps/charts/chart.vue +54 -9
  449. package/pages/c/_cluster/apps/charts/index.vue +99 -69
  450. package/pages/c/_cluster/apps/charts/install.helpers.js +2 -13
  451. package/pages/c/_cluster/apps/charts/install.vue +9 -9
  452. package/pages/c/_cluster/auth/config/_id.vue +0 -6
  453. package/pages/c/_cluster/auth/config/index.vue +15 -9
  454. package/pages/c/_cluster/auth/roles/index.vue +8 -10
  455. package/pages/c/_cluster/ecm/index.vue +0 -2
  456. package/pages/c/_cluster/explorer/ConfigBadge.vue +13 -8
  457. package/pages/c/_cluster/explorer/EventsTable.vue +18 -0
  458. package/pages/c/_cluster/explorer/__tests__/index.test.ts +181 -0
  459. package/pages/c/_cluster/explorer/index.vue +253 -91
  460. package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +69 -0
  461. package/pages/c/_cluster/explorer/tools/index.vue +10 -6
  462. package/pages/c/_cluster/fleet/index.vue +89 -94
  463. package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +89 -0
  464. package/pages/c/_cluster/longhorn/index.vue +52 -17
  465. package/pages/c/_cluster/manager/cloudCredential/index.vue +18 -25
  466. package/pages/c/_cluster/manager/drivers/kontainerDriver/_id.vue +12 -0
  467. package/pages/c/_cluster/manager/drivers/kontainerDriver/create.vue +15 -0
  468. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +94 -0
  469. package/pages/c/_cluster/manager/drivers/nodeDriver/_id.vue +12 -0
  470. package/pages/c/_cluster/manager/drivers/nodeDriver/create.vue +15 -0
  471. package/pages/c/_cluster/manager/drivers/nodeDriver/index.vue +63 -0
  472. package/pages/c/_cluster/manager/jwt.authentication/index.vue +235 -0
  473. package/pages/c/_cluster/manager/pages/_page.vue +4 -5
  474. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +4 -0
  475. package/pages/c/_cluster/monitoring/route-receiver/index.vue +2 -2
  476. package/pages/c/_cluster/neuvector/index.vue +1 -0
  477. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +1 -0
  478. package/pages/c/_cluster/settings/banners.vue +86 -10
  479. package/pages/c/_cluster/settings/brand.vue +261 -38
  480. package/pages/c/_cluster/settings/index.vue +4 -6
  481. package/pages/c/_cluster/settings/links.vue +3 -2
  482. package/pages/c/_cluster/settings/performance.vue +71 -3
  483. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +5 -2
  484. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +12 -8
  485. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +9 -6
  486. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +10 -46
  487. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +11 -5
  488. package/pages/c/_cluster/uiplugins/InstallDialog.vue +53 -18
  489. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +36 -301
  490. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +14 -6
  491. package/pages/c/_cluster/uiplugins/__tests__/SetupUIPlugins.test.ts +52 -106
  492. package/pages/c/_cluster/uiplugins/index.vue +38 -54
  493. package/pages/diagnostic.vue +2 -2
  494. package/pages/fail-whale.vue +103 -42
  495. package/pages/home.vue +81 -24
  496. package/pages/prefs.vue +8 -4
  497. package/pages/support/index.vue +14 -10
  498. package/pkg/auto-import.js +1 -1
  499. package/plugins/axios.js +0 -36
  500. package/plugins/back-button.js +3 -5
  501. package/plugins/clean-html-directive.js +5 -30
  502. package/plugins/clean-html.js +53 -0
  503. package/plugins/clean-tooltip-directive.js +6 -31
  504. package/plugins/codemirror-loader.js +1 -1
  505. package/plugins/codemirror.js +41 -9
  506. package/plugins/dashboard-store/__tests__/mutations.test.ts +389 -0
  507. package/plugins/dashboard-store/__tests__/resource-class.test.ts +49 -0
  508. package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +7 -0
  509. package/plugins/dashboard-store/actions.js +132 -25
  510. package/plugins/dashboard-store/classify.js +1 -18
  511. package/plugins/dashboard-store/getters.js +154 -44
  512. package/plugins/dashboard-store/index.js +0 -111
  513. package/plugins/dashboard-store/mutations.js +150 -52
  514. package/plugins/dashboard-store/resource-class.js +77 -127
  515. package/plugins/directives.js +6 -39
  516. package/plugins/ember-cookie.js +13 -0
  517. package/plugins/global-formatters.js +26 -5
  518. package/plugins/i18n.js +89 -55
  519. package/plugins/int-number.js +6 -20
  520. package/plugins/plugin.js +3 -3
  521. package/plugins/positive-int-number.js +6 -17
  522. package/plugins/steve/__tests__/{getters.spec.ts → getters.test.ts} +81 -10
  523. package/plugins/steve/__tests__/mutations.test.ts +49 -0
  524. package/plugins/steve/__tests__/resource-utils.test.ts +159 -0
  525. package/plugins/steve/__tests__/steve-class.test.ts +59 -0
  526. package/plugins/steve/__tests__/subscribe.spec.ts +4 -1
  527. package/plugins/steve/__tests__/utils/mutation.test.helpers.ts +105 -0
  528. package/plugins/steve/__tests__/utils/steve-mocks.ts +31 -0
  529. package/plugins/steve/accept-or-reject-socket-message.ts +103 -0
  530. package/plugins/steve/actions.js +3 -38
  531. package/plugins/steve/getters.js +164 -61
  532. package/plugins/steve/hybrid-class.js +5 -1
  533. package/plugins/steve/mutations.js +24 -3
  534. package/plugins/steve/norman-class.js +142 -2
  535. package/{utils → plugins/steve}/projectAndNamespaceFiltering.utils.ts +28 -10
  536. package/plugins/steve/resource-utils.ts +38 -0
  537. package/plugins/steve/schema.d.ts +22 -0
  538. package/plugins/steve/steve-class.js +22 -0
  539. package/plugins/steve/steve-pagination-utils.ts +368 -0
  540. package/plugins/steve/subscribe.js +17 -76
  541. package/plugins/trim-whitespace.js +6 -34
  542. package/plugins/vue-js-modal.js +1 -1
  543. package/public/index.html +1 -0
  544. package/rancher-components/Form/LabeledInput/LabeledInput.vue +13 -8
  545. package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
  546. package/rancher-components/components/Banner/Banner.test.ts +1 -5
  547. package/rancher-components/components/Banner/Banner.vue +2 -2
  548. package/rancher-components/components/Card/Card.vue +4 -4
  549. package/rancher-components/components/Form/Checkbox/Checkbox.vue +4 -3
  550. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +18 -1
  551. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +57 -24
  552. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -3
  553. package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
  554. package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
  555. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
  556. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
  557. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
  558. package/rancher-components/components/StringList/StringList.test.ts +270 -0
  559. package/rancher-components/components/StringList/StringList.vue +65 -26
  560. package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +69 -0
  561. package/scripts/clean +1 -1
  562. package/scripts/extension/bundle +19 -7
  563. package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +11 -0
  564. package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -0
  565. package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
  566. package/scripts/extension/helm/package/Dockerfile +1 -1
  567. package/scripts/extension/helm/scripts/package +11 -3
  568. package/scripts/extension/helm/scripts/patch +27 -0
  569. package/scripts/extension/parse-tag-name +4 -4
  570. package/scripts/extension/publish +25 -14
  571. package/scripts/publish-shell.sh +11 -1
  572. package/scripts/serve-pkgs +0 -2
  573. package/scripts/test-plugins-build.sh +87 -11
  574. package/scripts/vue-migrate.js +683 -0
  575. package/server/har-file.js +183 -0
  576. package/store/__tests__/catalog.test.ts +224 -0
  577. package/store/__tests__/type-map.test.ts +1122 -0
  578. package/store/auth.js +23 -4
  579. package/store/aws.js +53 -6
  580. package/store/catalog.js +22 -6
  581. package/store/cru-resource.ts +26 -0
  582. package/store/customisation.js +35 -0
  583. package/store/features.js +7 -4
  584. package/store/i18n.js +11 -0
  585. package/store/index.js +139 -48
  586. package/store/plugins.js +8 -4
  587. package/store/prefs.js +33 -38
  588. package/store/type-map.js +288 -213
  589. package/store/type-map.utils.ts +226 -0
  590. package/tsconfig.json +34 -9
  591. package/tsconfig.paths.json +21 -0
  592. package/types/components/labeledSelect.ts +50 -0
  593. package/types/resources/settings.d.ts +32 -0
  594. package/types/{userPreferences.d.ts → resources/userPreferences.d.ts} +0 -1
  595. package/types/shell/index.d.ts +1042 -767
  596. package/types/store/dashboard-store.types.ts +42 -0
  597. package/types/store/pagination.types.ts +457 -0
  598. package/types/store/type-map.ts +30 -0
  599. package/types/store/vuex.d.ts +9 -0
  600. package/types/vue-shim.d.ts +51 -0
  601. package/utils/__tests__/cluster.test.ts +20 -18
  602. package/utils/__tests__/create-yaml.test.ts +359 -2
  603. package/utils/__tests__/kontainer.test.ts +92 -0
  604. package/utils/__tests__/pod-security-admission.test.ts +1 -1
  605. package/utils/alertmanagerconfig.js +19 -0
  606. package/utils/array.ts +40 -1
  607. package/utils/async.ts +2 -0
  608. package/utils/auth.js +152 -4
  609. package/utils/axios.js +2 -21
  610. package/utils/azure.js +24 -0
  611. package/utils/banners.js +103 -0
  612. package/utils/clipboard.js +5 -0
  613. package/utils/cluster.js +1 -1
  614. package/utils/config.js +4 -0
  615. package/utils/create-yaml.js +59 -28
  616. package/utils/custom-validators.js +0 -2
  617. package/utils/error.js +41 -1
  618. package/utils/formatter.js +5 -3
  619. package/utils/git.ts +1 -1
  620. package/utils/install-redirect.js +1 -1
  621. package/utils/kontainer.ts +186 -0
  622. package/utils/object.js +24 -0
  623. package/utils/pagination-utils.ts +154 -0
  624. package/utils/pod-security-admission.ts +1 -1
  625. package/utils/router.js +86 -0
  626. package/utils/settings.ts +46 -0
  627. package/utils/time.js +2 -1
  628. package/utils/unit-tests/ChildRenderingRouterLinkStub.ts +36 -0
  629. package/utils/url.ts +1 -1
  630. package/utils/validators/formRules/__tests__/index.test.ts +70 -4
  631. package/utils/validators/formRules/index.ts +15 -9
  632. package/utils/validators/index.js +1 -0
  633. package/utils/validators/setting.js +6 -10
  634. package/vue.config.js +377 -401
  635. package/.DS_Store +0 -0
  636. package/assets/images/providers/aks-black.svg +0 -28
  637. package/assets/images/providers/aks.svg +0 -31
  638. package/assets/styles/vendor/vue-js-modal.scss +0 -16
  639. package/components/ChartPsp.vue +0 -76
  640. package/components/EventsTable.vue +0 -67
  641. package/components/TabbedLinks/index.vue +0 -94
  642. package/components/__tests__/ChartPsp.test.ts +0 -75
  643. package/components/formatter/__tests__/ClusterProvider.test.ts +0 -28
  644. package/components/nuxt/nuxt-link.server.js +0 -16
  645. package/components/nuxt/nuxt.js +0 -101
  646. package/config/router.js +0 -408
  647. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -237
  648. package/initialize/App.js +0 -198
  649. package/initialize/client.js +0 -875
  650. package/initialize/index.js +0 -364
  651. package/initialize/layouts.ts +0 -26
  652. package/middleware/i18n.js +0 -10
  653. package/middleware/unauthenticated.js +0 -22
  654. package/mixins/fetch.server.js +0 -73
  655. package/pages/c/_cluster/apps/index.vue +0 -17
  656. package/pages/c/_cluster/auth/index.vue +0 -19
  657. package/pages/c/_cluster/index.vue +0 -17
  658. package/pages/c/_cluster/legacy/index.vue +0 -22
  659. package/pages/c/_cluster/manager/index.vue +0 -22
  660. package/pages/c/_cluster/mcapps/index.vue +0 -21
  661. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +0 -232
  662. package/pages/c/index.vue +0 -9
  663. package/pages/rio/mesh.vue +0 -508
  664. package/plugins/dashboard-store/__tests__/mutations.spec.ts +0 -406
  665. package/plugins/dashboard-store/rehydrate-all.js +0 -44
  666. package/plugins/portal-vue.js +0 -4
  667. package/plugins/portal.js +0 -4
  668. package/plugins/resize.js +0 -5
  669. package/plugins/shortkey.js +0 -4
  670. package/plugins/tooltip.js +0 -4
  671. package/plugins/transitions.js +0 -4
  672. package/plugins/v-select.js +0 -4
  673. package/plugins/vue-clipboard2.js +0 -4
  674. package/rancher-components/components/BadgeState/BadgeState.spec.ts +0 -12
  675. package/tsconfig.default.json +0 -46
  676. package/utils/group.js +0 -70
  677. package/utils/nuxt.js +0 -659
  678. package/utils/router.scrollBehavior.js +0 -80
  679. /package/components/__tests__/{Collapse.spec.ts → Collapse.test.ts} +0 -0
  680. /package/edit/provisioning.cattle.io.cluster/{AgentConfiguration.vue → tabs/AgentConfiguration.vue} +0 -0
  681. /package/edit/provisioning.cattle.io.cluster/{MemberRoles.vue → tabs/MemberRoles.vue} +0 -0
  682. /package/edit/provisioning.cattle.io.cluster/{ACE.vue → tabs/networking/ACE.vue} +0 -0
  683. /package/edit/provisioning.cattle.io.cluster/{RegistryMirrors.vue → tabs/registries/RegistryMirrors.vue} +0 -0
  684. /package/edit/provisioning.cattle.io.cluster/{DrainOptions.vue → tabs/upgrade/DrainOptions.vue} +0 -0
  685. /package/models/__tests__/{node.ts → node.test.ts} +0 -0
  686. /package/plugins/dashboard-store/__tests__/{actions.spec.ts → actions.test.ts} +0 -0
  687. /package/plugins/dashboard-store/__tests__/{getters.spec.ts → getters.test.ts} +0 -0
  688. /package/plugins/steve/__tests__/{header-warnings.spec.ts → header-warnings.test.ts} +0 -0
  689. /package/types/{pod-security-admission.ts → resources/pod-security-admission.ts} +0 -0
@@ -7,7 +7,7 @@ import ButtonGroup from '@shell/components/ButtonGroup';
7
7
  import SelectIconGrid from '@shell/components/SelectIconGrid';
8
8
  import TypeDescription from '@shell/components/TypeDescription';
9
9
  import {
10
- REPO_TYPE, REPO, CHART, VERSION, SEARCH_QUERY, _FLAGGED, CATEGORY, DEPRECATED, HIDDEN, OPERATING_SYSTEM
10
+ REPO_TYPE, REPO, CHART, VERSION, SEARCH_QUERY, _FLAGGED, CATEGORY, DEPRECATED as DEPRECATED_QUERY, HIDDEN, OPERATING_SYSTEM
11
11
  } from '@shell/config/query-params';
12
12
  import { lcFirst } from '@shell/utils/string';
13
13
  import { sortBy } from '@shell/utils/sort';
@@ -19,6 +19,7 @@ import { removeObject, addObject, findBy } from '@shell/utils/array';
19
19
  import { compatibleVersionsFor, filterAndArrangeCharts } from '@shell/store/catalog';
20
20
  import { CATALOG } from '@shell/config/labels-annotations';
21
21
  import { isUIPlugin } from '@shell/config/uiplugins';
22
+ import TabTitle from '@shell/components/TabTitle';
22
23
 
23
24
  export default {
24
25
  name: 'Charts',
@@ -31,16 +32,17 @@ export default {
31
32
  Checkbox,
32
33
  Select,
33
34
  SelectIconGrid,
34
- TypeDescription
35
+ TypeDescription,
36
+ TabTitle
35
37
  },
36
38
 
37
39
  async fetch() {
38
- await this.$store.dispatch('catalog/load', { force: true, reset: true });
40
+ await this.$store.dispatch('catalog/load');
39
41
 
40
42
  const query = this.$route.query;
41
43
 
42
44
  this.searchQuery = query[SEARCH_QUERY] || '';
43
- this.showDeprecated = query[DEPRECATED] === _FLAGGED;
45
+ this.showDeprecated = query[DEPRECATED_QUERY] === 'true' || query[DEPRECATED_QUERY] === _FLAGGED;
44
46
  this.showHidden = query[HIDDEN] === _FLAGGED;
45
47
  this.category = query[CATEGORY] || '';
46
48
  this.allRepos = this.areAllEnabled();
@@ -54,7 +56,6 @@ export default {
54
56
  searchQuery: null,
55
57
  showDeprecated: null,
56
58
  showHidden: null,
57
- isPspLegacy: false,
58
59
  chartOptions: [
59
60
  {
60
61
  label: 'Browse',
@@ -139,6 +140,11 @@ export default {
139
140
  return reducedRepos;
140
141
  },
141
142
 
143
+ /**
144
+ * Filter allll charts by invalid entries (deprecated, hidden and ui plugin).
145
+ *
146
+ * This does not include any user provided filters (like selected repos, categories and text query)
147
+ */
142
148
  enabledCharts() {
143
149
  return (this.allCharts || []).filter((c) => {
144
150
  if ( c.deprecated && !this.showDeprecated ) {
@@ -149,10 +155,6 @@ export default {
149
155
  return false;
150
156
  }
151
157
 
152
- if ( this.hideRepos.includes(c.repoKey) ) {
153
- return false;
154
- }
155
-
156
158
  if (isUIPlugin(c)) {
157
159
  return false;
158
160
  }
@@ -161,26 +163,26 @@ export default {
161
163
  });
162
164
  },
163
165
 
166
+ /**
167
+ * Filter enabled charts allll filters. These are what the user will see in the list
168
+ */
164
169
  filteredCharts() {
165
- const enabledCharts = (this.enabledCharts || []);
166
- const clusterProvider = this.currentCluster.status.provider || 'other';
167
-
168
- return filterAndArrangeCharts(enabledCharts, {
169
- clusterProvider,
170
- category: this.category,
171
- searchQuery: this.searchQuery,
172
- showDeprecated: this.showDeprecated,
173
- showHidden: this.showHidden,
174
- hideRepos: this.hideRepos,
175
- hideTypes: [CATALOG._CLUSTER_TPL],
176
- showPrerelease: this.$store.getters['prefs/get'](SHOW_PRE_RELEASE),
170
+ return this.filterCharts({
171
+ category: this.category,
172
+ searchQuery: this.searchQuery,
173
+ hideRepos: this.hideRepos
177
174
  });
178
175
  },
179
176
 
180
- getFeaturedCharts() {
181
- const allCharts = (this.filteredCharts || []);
177
+ /**
178
+ * Filter valid charts (alll filters minus user provided ones) by whether they are featured or not
179
+ *
180
+ * This will power the carousel
181
+ */
182
+ featuredCharts() {
183
+ const filteredCharts = this.filterCharts({});
182
184
 
183
- const featuredCharts = allCharts.filter((value) => value.featured).sort((a, b) => a.featured - b.featured);
185
+ const featuredCharts = filteredCharts.filter((value) => value.featured).sort((a, b) => a.featured - b.featured);
184
186
 
185
187
  return featuredCharts.slice(0, 5);
186
188
  },
@@ -188,7 +190,13 @@ export default {
188
190
  categories() {
189
191
  const map = {};
190
192
 
191
- for ( const chart of this.enabledCharts ) {
193
+ // Filter charts by everything except itself
194
+ const charts = this.filterCharts({
195
+ searchQuery: this.searchQuery,
196
+ hideRepos: this.hideRepos
197
+ });
198
+
199
+ for ( const chart of charts ) {
192
200
  for ( const c of chart.categories ) {
193
201
  if ( !map[c] ) {
194
202
  const labelKey = `catalog.charts.categories.${ lcFirst(c) }`;
@@ -209,14 +217,14 @@ export default {
209
217
  out.unshift({
210
218
  label: this.t('catalog.charts.categories.all'),
211
219
  value: '',
212
- count: this.enabledCharts.length
220
+ count: charts.length
213
221
  });
214
222
 
215
- return out;
223
+ return sortBy(out, ['label']);
216
224
  },
217
225
 
218
226
  showCarousel() {
219
- return this.chartMode === 'featured' && this.getFeaturedCharts.length;
227
+ return this.chartMode === 'featured' && this.featuredCharts.length;
220
228
  }
221
229
 
222
230
  },
@@ -233,6 +241,10 @@ export default {
233
241
  operatingSystem(os) {
234
242
  this.$router.applyQuery({ [OPERATING_SYSTEM]: os || undefined });
235
243
  },
244
+
245
+ showDeprecated(neu) {
246
+ this.$router.applyQuery({ [DEPRECATED_QUERY]: neu || undefined });
247
+ }
236
248
  },
237
249
 
238
250
  mounted() {
@@ -241,14 +253,6 @@ export default {
241
253
  }
242
254
  },
243
255
 
244
- created() {
245
- const release = this.currentCluster?.status?.version?.gitVersion || '';
246
- const isRKE2 = release.includes('rke2');
247
- const version = release.match(/\d+/g);
248
-
249
- this.isPspLegacy = version?.length ? isRKE2 && (+version[0] === 1 && +version[1] < 25) : false;
250
- },
251
-
252
256
  methods: {
253
257
  colorForChart(chart) {
254
258
  const repos = this.repoOptions;
@@ -312,18 +316,24 @@ export default {
312
316
  version = versions[0].version;
313
317
  }
314
318
 
319
+ const query = {
320
+ [REPO_TYPE]: chart.repoType,
321
+ [REPO]: chart.repoName,
322
+ [CHART]: chart.chartName,
323
+ [VERSION]: version
324
+ };
325
+
326
+ if (chart.deprecated && this.showDeprecated) {
327
+ query[DEPRECATED_QUERY] = 'true';
328
+ }
329
+
315
330
  this.$router.push({
316
331
  name: 'c-cluster-apps-charts-chart',
317
332
  params: {
318
333
  cluster: this.$route.params.cluster,
319
334
  product: this.$store.getters['productId'],
320
335
  },
321
- query: {
322
- [REPO_TYPE]: chart.repoType,
323
- [REPO]: chart.repoName,
324
- [CHART]: chart.chartName,
325
- [VERSION]: version,
326
- }
336
+ query
327
337
  });
328
338
  },
329
339
 
@@ -343,6 +353,22 @@ export default {
343
353
  btnCb(false);
344
354
  }
345
355
  },
356
+
357
+ filterCharts({ category, searchQuery, hideRepos }) {
358
+ const enabledCharts = (this.enabledCharts || []);
359
+ const clusterProvider = this.currentCluster.status.provider || 'other';
360
+
361
+ return filterAndArrangeCharts(enabledCharts, {
362
+ clusterProvider,
363
+ category,
364
+ searchQuery,
365
+ showDeprecated: this.showDeprecated,
366
+ showHidden: this.showHidden,
367
+ hideRepos,
368
+ hideTypes: [CATALOG._CLUSTER_TPL],
369
+ showPrerelease: this.$store.getters['prefs/get'](SHOW_PRE_RELEASE),
370
+ });
371
+ }
346
372
  },
347
373
  };
348
374
  </script>
@@ -356,11 +382,11 @@ export default {
356
382
  data-testid="charts-header-title"
357
383
  class="m-0"
358
384
  >
359
- {{ t('catalog.charts.header') }}
385
+ <TabTitle>{{ t('catalog.charts.header') }}</TabTitle>
360
386
  </h1>
361
387
  </div>
362
388
  <div
363
- v-if="getFeaturedCharts.length > 0"
389
+ v-if="featuredCharts.length > 0"
364
390
  class="actions-container"
365
391
  >
366
392
  <ButtonGroup
@@ -372,17 +398,12 @@ export default {
372
398
  <div v-if="showCarousel">
373
399
  <h3>{{ t('catalog.charts.featuredCharts') }}</h3>
374
400
  <Carousel
375
- :sliders="getFeaturedCharts"
401
+ :sliders="featuredCharts"
402
+ data-testid="charts-carousel"
376
403
  @clicked="(row) => selectChart(row)"
377
404
  />
378
405
  </div>
379
406
 
380
- <Banner
381
- v-if="isPspLegacy"
382
- color="warning"
383
- :label="t('catalog.chart.banner.legacy')"
384
- />
385
-
386
407
  <TypeDescription resource="chart" />
387
408
  <div class="left-right-split">
388
409
  <Select
@@ -391,6 +412,7 @@ export default {
391
412
  :value="flattenedRepoNames"
392
413
  class="checkbox-select"
393
414
  :close-on-select="false"
415
+ data-testid="charts-filter-repos"
394
416
  @option:selecting="$event.all ? toggleAll(!$event.enabled) : toggleRepo($event, !$event.enabled) "
395
417
  >
396
418
  <template #selected-option="selected">
@@ -424,6 +446,7 @@ export default {
424
446
  label="label"
425
447
  style="min-width: 200px;"
426
448
  :reduce="opt => opt.value"
449
+ data-testid="charts-filter-category"
427
450
  >
428
451
  <template #option="opt">
429
452
  {{ opt.label }} ({{ opt.count }})
@@ -437,6 +460,7 @@ export default {
437
460
  type="search"
438
461
  class="input-sm"
439
462
  :placeholder="t('catalog.charts.search')"
463
+ data-testid="charts-filter-input"
440
464
  >
441
465
 
442
466
  <button
@@ -451,6 +475,14 @@ export default {
451
475
  @click="refresh"
452
476
  />
453
477
  </div>
478
+
479
+ <div class="mt-10">
480
+ <Checkbox
481
+ v-model="showDeprecated"
482
+ :label="t('catalog.charts.deprecatedChartsFilter.label')"
483
+ data-testid="charts-show-deprecated-filter"
484
+ />
485
+ </div>
454
486
  </div>
455
487
 
456
488
  <Banner
@@ -471,6 +503,8 @@ export default {
471
503
  </div>
472
504
  <SelectIconGrid
473
505
  v-else
506
+ data-testid="chart-selection-grid"
507
+ component-test-id="chart-selection"
474
508
  :rows="filteredCharts"
475
509
  name-field="chartNameDisplay"
476
510
  description-field="chartDescription"
@@ -529,22 +563,21 @@ export default {
529
563
  }
530
564
  }
531
565
  }
532
- }
566
+ }
533
567
 
534
568
  .checkbox-select {
535
- .vs__search {
569
+ .vs__search {
536
570
  position: absolute;
537
571
  right: 0
538
572
  }
539
573
 
540
- .vs__selected-options {
574
+ .vs__selected-options {
541
575
  overflow: hidden;
542
576
  white-space: nowrap;
543
577
  text-overflow: ellipsis;
544
578
  display: inline-block;
545
579
  line-height: 2.4rem;
546
580
  }
547
-
548
581
  }
549
582
 
550
583
  .checkbox-outer-container.in-select {
@@ -552,7 +585,7 @@ export default {
552
585
  padding: 7px 0 6px 13px;
553
586
  width: calc(100% + 10px);
554
587
 
555
- ::v-deep.checkbox-label {
588
+ ::v-deep .checkbox-label {
556
589
  display: flex;
557
590
  align-items: center;
558
591
 
@@ -567,7 +600,7 @@ export default {
567
600
  }
568
601
  }
569
602
 
570
- &:hover ::v-deep.checkbox-label {
603
+ &:hover ::v-deep .checkbox-label {
571
604
  color: var(--body-text);
572
605
  }
573
606
 
@@ -575,7 +608,7 @@ export default {
575
608
  &:hover {
576
609
  background: var(--app-rancher-accent);
577
610
  }
578
- &:hover ::v-deep.checkbox-label {
611
+ &:hover ::v-deep .checkbox-label {
579
612
  color: var(--app-rancher-accent-text);
580
613
  }
581
614
  & i {
@@ -587,7 +620,7 @@ export default {
587
620
  &:hover {
588
621
  background: var(--app-partner-accent);
589
622
  }
590
- &:hover ::v-deep.checkbox-label {
623
+ &:hover ::v-deep .checkbox-label {
591
624
  color: var(--app-partner-accent-text);
592
625
  }
593
626
  & i {
@@ -599,7 +632,7 @@ export default {
599
632
  &:hover {
600
633
  background: var(--app-color1-accent);
601
634
  }
602
- &:hover ::v-deep.checkbox-label {
635
+ &:hover ::v-deep .checkbox-label {
603
636
  color: var(--app-color1-accent-text);
604
637
  }
605
638
  & i {
@@ -610,10 +643,10 @@ export default {
610
643
  &:hover {
611
644
  background: var(--app-color2-accent);
612
645
  }
613
- &:hover ::v-deep.checkbox-label {
646
+ &:hover ::v-deep .checkbox-label {
614
647
  color: var(--app-color2-accent-text);
615
648
  }
616
- & i {
649
+ & i {
617
650
  color: var(--app-color2-accent)
618
651
  }
619
652
  }
@@ -621,7 +654,7 @@ export default {
621
654
  &:hover {
622
655
  background: var(--app-color3-accent);
623
656
  }
624
- &:hover ::v-deep.checkbox-label {
657
+ &:hover ::v-deep .checkbox-label {
625
658
  color: var(--app-color3-accent-text);
626
659
  }
627
660
  & i {
@@ -643,7 +676,7 @@ export default {
643
676
  &:hover {
644
677
  background: var(--app-color5-accent);
645
678
  }
646
- &:hover ::v-deep.checkbox-label {
679
+ &:hover ::v-deep .checkbox-label {
647
680
  color: var(--app-color5-accent-text);
648
681
  }
649
682
  & i {
@@ -654,7 +687,7 @@ export default {
654
687
  &:hover {
655
688
  background: var(--app-color6-accent);
656
689
  }
657
- &:hover ::v-deep.checkbox-label {
690
+ &:hover ::v-deep .checkbox-label {
658
691
  color: var(--app-color6-accent-text);
659
692
  }
660
693
  & i {
@@ -665,7 +698,7 @@ export default {
665
698
  &:hover {
666
699
  background: var(--app-color7-accent);
667
700
  }
668
- &:hover ::v-deep.checkbox-label {
701
+ &:hover ::v-deep .checkbox-label {
669
702
  color: var(--app-color7-accent-text);
670
703
  }
671
704
  & i {
@@ -676,9 +709,6 @@ export default {
676
709
  &:hover {
677
710
  background: var(--app-color8-accent);
678
711
  }
679
- &:hover ::v-deep.checkbox-label {
680
- color: var(--app-color8-accent-text);
681
- }
682
712
  & i {
683
713
  color: var(--app-color8-accent)
684
714
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Return list of variables to filter chart questions
3
3
  */
4
- export const ignoreVariables = (cluster, data) => {
4
+ export const ignoreVariables = (data) => {
5
5
  const pspChartMap = {
6
6
  epinio: 'global.rbac.pspEnabled',
7
7
  longhorn: 'enablePSP',
@@ -11,16 +11,5 @@ export const ignoreVariables = (cluster, data) => {
11
11
  };
12
12
  const path = pspChartMap[data.chart.name];
13
13
 
14
- if (path) {
15
- const clusterVersion = cluster?.kubernetesVersion || '';
16
- const version = clusterVersion.match(/\d+/g);
17
- const isRequiredVersion = version?.length ? +version[0] === 1 && +version[1] < 25 : false;
18
-
19
- // Provide path as question variable to be ignored
20
- if (!isRequiredVersion) {
21
- return [path];
22
- }
23
- }
24
-
25
- return [];
14
+ return [path];
26
15
  };
@@ -248,7 +248,7 @@ export default {
248
248
  return;
249
249
  }
250
250
 
251
- if ( this.version && process.client ) {
251
+ if ( this.version ) {
252
252
  /*
253
253
  Check if the Helm chart has provided the name
254
254
  of a Vue component to use for configuring
@@ -473,7 +473,7 @@ export default {
473
473
  * Return list of variables to filter chart questions
474
474
  */
475
475
  ignoreVariables() {
476
- return ignoreVariables(this.currentCluster, this.versionInfo);
476
+ return ignoreVariables(this.versionInfo);
477
477
  },
478
478
 
479
479
  namespaceIsNew() {
@@ -857,11 +857,9 @@ export default {
857
857
  }
858
858
 
859
859
  if (provCluster?.isRke2) { // isRke2 returns true for both RKE2 and K3s clusters.
860
- const agentConfig = provCluster.spec?.rkeConfig?.machineSelectorConfig?.find((x) => !x.machineLabelSelector).config;
861
-
862
860
  // If a cluster scoped registry exists,
863
861
  // it should be used by default.
864
- const clusterRegistry = agentConfig?.['system-default-registry'] || '';
862
+ const clusterRegistry = provCluster.agentConfig?.['system-default-registry'] || '';
865
863
 
866
864
  if (clusterRegistry) {
867
865
  return clusterRegistry;
@@ -1603,6 +1601,7 @@ export default {
1603
1601
  v-if="componentHasTabs"
1604
1602
  ref="tabs"
1605
1603
  :side-tabs="true"
1604
+ :hide-single-tab="true"
1606
1605
  :class="{'with-name': showNameEditor}"
1607
1606
  class="step__values__content"
1608
1607
  @changed="tabChanged($event)"
@@ -1647,6 +1646,7 @@ export default {
1647
1646
  v-else-if="hasQuestions && showQuestions"
1648
1647
  ref="tabs"
1649
1648
  :side-tabs="true"
1649
+ :hide-single-tab="true"
1650
1650
  :class="{'with-name': showNameEditor}"
1651
1651
  class="step__values__content"
1652
1652
  @changed="tabChanged($event)"
@@ -1847,17 +1847,17 @@ export default {
1847
1847
  </span>
1848
1848
  <template v-if="!legacyEnabled">
1849
1849
  <span v-clean-html="t('catalog.install.error.legacy.enableLegacy.prompt', true)" />
1850
- <nuxt-link :to="legacyFeatureRoute">
1850
+ <router-link :to="legacyFeatureRoute">
1851
1851
  {{ t('catalog.install.error.legacy.enableLegacy.goto') }}
1852
- </nuxt-link>
1852
+ </router-link>
1853
1853
  </template>
1854
1854
  <template v-else-if="mcapp">
1855
1855
  <span v-clean-html="t('catalog.install.error.legacy.mcmNotSupported')" />
1856
1856
  </template>
1857
1857
  <template v-else>
1858
- <nuxt-link :to="legacyAppRoute">
1858
+ <router-link :to="legacyAppRoute">
1859
1859
  <span v-clean-html="t('catalog.install.error.legacy.navigate')" />
1860
- </nuxt-link>
1860
+ </router-link>
1861
1861
  </template>
1862
1862
  </Banner>
1863
1863
  </div>
@@ -19,12 +19,6 @@ export default {
19
19
  // Ensure we re-evaluate the redirect in case this auth provider has been disabled
20
20
  const authProvs = await authProvidersInfo(this.$store);
21
21
 
22
- // Nuxt does not remove it's loading indicator - if we are not changing route, then hide it
23
- // https://nuxtjs.org/docs/features/loading/
24
- if (authProvs.enabledLocation) {
25
- this.$nuxt.$loading.finish();
26
- }
27
-
28
22
  next(!authProvs.enabledLocation);
29
23
  } else {
30
24
  next();
@@ -5,18 +5,22 @@ import { sortBy } from '@shell/utils/sort';
5
5
  import { MODE, _EDIT } from '@shell/config/query-params';
6
6
  import { authProvidersInfo } from '@shell/utils/auth';
7
7
  import { Banner } from '@components/Banner';
8
+ import Loading from '@shell/components/Loading';
8
9
 
9
10
  export default {
10
- components: { SelectIconGrid, Banner },
11
+ components: {
12
+ SelectIconGrid, Banner, Loading
13
+ },
11
14
 
12
- async asyncData({ store, redirect }) {
13
- const authProvs = await authProvidersInfo(store);
15
+ async fetch() {
16
+ const authProvs = await authProvidersInfo(this.$store);
14
17
 
15
18
  if (!!authProvs.enabledLocation) {
16
- redirect(authProvs.enabledLocation);
19
+ return this.$router.replace(authProvs.enabledLocation);
17
20
  }
18
21
 
19
- return { nonLocal: authProvs.nonLocal, enabled: authProvs.enabled };
22
+ this.$set(this, 'enabled', authProvs.enabled);
23
+ this.$set(this, 'nonLocal', authProvs.nonLocal);
20
24
  },
21
25
 
22
26
  data() {
@@ -33,7 +37,8 @@ export default {
33
37
  hasListComponent,
34
38
  hasEditComponent,
35
39
 
36
- // Provided by asyncData later
40
+ // Provided by fetch later
41
+ enabled: false,
37
42
  nonLocal: null,
38
43
  };
39
44
  },
@@ -82,7 +87,8 @@ export default {
82
87
  </script>
83
88
 
84
89
  <template>
85
- <div>
90
+ <Loading v-if="$fetchState.pending" />
91
+ <div v-else>
86
92
  <h1 class="m-0">
87
93
  {{ displayName }}
88
94
  </h1>
@@ -93,9 +99,9 @@ export default {
93
99
  >
94
100
  <div>
95
101
  {{ t('authConfig.localEnabled') }}
96
- <nuxt-link :to="localUsersRoute">
102
+ <router-link :to="localUsersRoute">
97
103
  {{ t('authConfig.manageLocal') }}
98
- </nuxt-link>
104
+ </router-link>
99
105
  <br>
100
106
  {{ t('authConfig.noneEnabled') }}
101
107
  </div>
@@ -36,14 +36,12 @@ export default {
36
36
  Tab, Tabbed, ResourceTable, Loading, Banner
37
37
  },
38
38
 
39
- async asyncData({ store }) {
40
- const globalRoleSchema = store.getters[`management/schemaFor`](MANAGEMENT.GLOBAL_ROLE);
41
- const roleTemplatesSchema = store.getters[`management/schemaFor`](MANAGEMENT.ROLE_TEMPLATE);
39
+ async fetch() {
40
+ const globalRoleSchema = this.$store.getters[`management/schemaFor`](MANAGEMENT.GLOBAL_ROLE);
41
+ const roleTemplatesSchema = this.$store.getters[`management/schemaFor`](MANAGEMENT.ROLE_TEMPLATE);
42
42
 
43
- return {
44
- globalRoles: globalRoleSchema ? await store.dispatch(`management/findAll`, { type: MANAGEMENT.GLOBAL_ROLE }) : [],
45
- roleTemplates: roleTemplatesSchema ? await store.dispatch(`management/findAll`, { type: MANAGEMENT.ROLE_TEMPLATE }) : [],
46
- };
43
+ this.$set(this, 'globalRoles', globalRoleSchema ? await this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.GLOBAL_ROLE }) : []);
44
+ this.$set(this, 'roleTemplates', roleTemplatesSchema ? await this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.ROLE_TEMPLATE }) : []);
47
45
  },
48
46
 
49
47
  data() {
@@ -158,7 +156,7 @@ export default {
158
156
  </script>
159
157
 
160
158
  <template>
161
- <Loading v-if="!globalRoles || !roleTemplates" />
159
+ <Loading v-if="$fetchState.pending" />
162
160
  <div v-else>
163
161
  <header>
164
162
  <div class="title">
@@ -168,13 +166,13 @@ export default {
168
166
  </div>
169
167
  <div class="actions-container">
170
168
  <div class="actions">
171
- <n-link
169
+ <router-link
172
170
  v-if="canCreate"
173
171
  :to="createLocation"
174
172
  class="btn role-primary"
175
173
  >
176
174
  {{ createLabel }}
177
- </n-link>
175
+ </router-link>
178
176
  </div>
179
177
  </div>
180
178
  </header>
@@ -1,8 +1,6 @@
1
1
  <script>
2
2
 
3
3
  export default {
4
- layout: 'plain',
5
-
6
4
  mounted() {
7
5
  const link = this.$store.getters['backToRancherLink'];
8
6