@rancher/shell 0.5.3 → 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 (581) 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 +2 -0
  7. package/assets/styles/themes/_csp.scss +2 -2
  8. package/assets/styles/themes/_dark.scss +8 -2
  9. package/assets/styles/themes/_light.scss +2 -1
  10. package/assets/styles/themes/_suse.scss +1 -1
  11. package/assets/styles/vendor/vue-select.scss +5 -0
  12. package/assets/translations/en-us.yaml +296 -58
  13. package/assets/translations/zh-hans.yaml +5 -27
  14. package/babel.config.js +1 -1
  15. package/chart/__tests__/S3.test.ts +9 -2
  16. package/chart/monitoring/grafana/index.vue +6 -2
  17. package/chart/monitoring/prometheus/index.vue +2 -2
  18. package/chart/rancher-backup/S3.vue +11 -9
  19. package/chart/rancher-backup/index.vue +15 -5
  20. package/cloud-credential/__tests__/harvester.test.ts +18 -0
  21. package/cloud-credential/generic.vue +18 -9
  22. package/cloud-credential/harvester.vue +11 -3
  23. package/components/AppModal.vue +167 -0
  24. package/components/AssignTo.vue +7 -4
  25. package/components/AsyncButton.vue +18 -5
  26. package/components/BackLink.vue +4 -4
  27. package/components/BannerGraphic.vue +1 -0
  28. package/components/BrandImage.vue +47 -1
  29. package/components/Carousel.vue +14 -8
  30. package/components/Certificates.vue +8 -11
  31. package/components/ClusterBadge.vue +12 -3
  32. package/components/ClusterIconMenu.vue +44 -16
  33. package/components/ClusterProviderIcon.vue +14 -3
  34. package/components/CodeMirror.vue +73 -38
  35. package/components/CommunityLinks.vue +12 -8
  36. package/components/CreateDriver.vue +81 -0
  37. package/components/CruResource.vue +51 -27
  38. package/components/DetailTop.vue +2 -2
  39. package/components/Dialog.vue +6 -5
  40. package/components/DisableAuthProviderModal.vue +14 -8
  41. package/components/DraggableZone.vue +2 -2
  42. package/components/ExplorerMembers.vue +3 -3
  43. package/components/ExplorerProjectsNamespaces.vue +6 -6
  44. package/components/FixedBanner.vue +47 -36
  45. package/components/GlobalRoleBindings.vue +26 -0
  46. package/components/Import.vue +10 -6
  47. package/components/Inactivity.vue +1 -5
  48. package/components/KeyValueView.vue +14 -10
  49. package/components/MessageLink.vue +2 -2
  50. package/components/ModalWithCard.vue +5 -8
  51. package/components/MoveModal.vue +35 -33
  52. package/components/PodSecurityAdmission.vue +3 -3
  53. package/components/PromptChangePassword.vue +33 -33
  54. package/components/PromptModal.vue +11 -21
  55. package/components/PromptRemove.vue +11 -17
  56. package/components/PromptRestore.vue +18 -16
  57. package/components/Questions/__tests__/Boolean.test.ts +9 -19
  58. package/components/Questions/__tests__/Float.test.ts +9 -19
  59. package/components/Questions/__tests__/Int.test.ts +9 -19
  60. package/components/Questions/__tests__/String.test.ts +9 -19
  61. package/components/Questions/__tests__/Yaml.test.ts +9 -20
  62. package/components/Questions/__tests__/utils/questions-defaults.ts +20 -0
  63. package/components/Questions/index.vue +18 -2
  64. package/components/ResourceCancelModal.vue +34 -29
  65. package/components/ResourceDetail/Masthead.vue +23 -7
  66. package/components/ResourceDetail/index.vue +5 -0
  67. package/components/ResourceList/Masthead.vue +28 -10
  68. package/components/ResourceList/index.vue +65 -14
  69. package/components/ResourceTable.vue +73 -19
  70. package/components/ResourceYaml.vue +1 -0
  71. package/components/SelectIconGrid.vue +3 -3
  72. package/components/SideNav.vue +15 -37
  73. package/components/SingleClusterInfo.vue +4 -4
  74. package/components/SortableTable/THead.vue +26 -12
  75. package/components/SortableTable/filtering.js +9 -1
  76. package/components/SortableTable/grouping.js +8 -1
  77. package/components/SortableTable/index.vue +142 -42
  78. package/components/SortableTable/paging.js +36 -7
  79. package/components/SortableTable/selection.js +2 -1
  80. package/components/SortableTable/sorting.js +24 -7
  81. package/components/TabTitle.vue +84 -0
  82. package/components/Tabbed/index.vue +6 -1
  83. package/components/TableDataUserIcon.vue +47 -0
  84. package/components/TypeDescription.vue +1 -0
  85. package/components/Wizard.vue +1 -0
  86. package/components/__tests__/AppModal.test.ts +98 -0
  87. package/components/__tests__/AsyncButton.test.ts +1 -3
  88. package/components/__tests__/BackLink.test.ts +1 -1
  89. package/components/__tests__/ButtonGroup.test.ts +3 -6
  90. package/components/__tests__/Carousel.test.ts +43 -0
  91. package/components/__tests__/Certificates.test.ts +29 -0
  92. package/components/__tests__/{CodeMirror.spec.ts → CodeMirror.test.ts} +5 -17
  93. package/components/__tests__/CruResource.test.ts +10 -9
  94. package/components/__tests__/EtcdInfoBanner.test.ts +37 -0
  95. package/components/__tests__/FixedBanner.test.ts +5 -20
  96. package/components/__tests__/NamespaceFilter.test.ts +9 -18
  97. package/components/__tests__/TabTitle.test.ts +129 -0
  98. package/components/auth/AzureWarning.vue +2 -2
  99. package/components/auth/RoleDetailEdit.vue +10 -0
  100. package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
  101. package/components/auth/login/oidc.vue +7 -1
  102. package/components/fleet/FleetClusters.vue +9 -9
  103. package/components/fleet/FleetIntro.vue +11 -17
  104. package/components/fleet/FleetNoWorkspaces.vue +2 -2
  105. package/components/fleet/FleetRepos.vue +1 -0
  106. package/components/fleet/ForceDirectedTreeChart/index.vue +9 -3
  107. package/components/form/ArrayList.vue +30 -19
  108. package/components/form/ArrayListSelect.vue +9 -4
  109. package/components/form/ClusterAppearance.vue +132 -0
  110. package/components/form/ColorInput.vue +1 -0
  111. package/components/form/Error.vue +3 -3
  112. package/components/form/Footer.vue +2 -2
  113. package/components/form/GitPicker.vue +83 -38
  114. package/components/form/KeyValue.vue +67 -48
  115. package/components/form/LabeledSelect.vue +143 -43
  116. package/components/form/Labels.vue +3 -1
  117. package/components/form/NameNsDescription.vue +26 -9
  118. package/components/form/ResourceLabeledSelect.vue +187 -0
  119. package/components/form/ResourceTabs/index.vue +31 -15
  120. package/components/form/SecretSelector.vue +93 -18
  121. package/components/form/Select.vue +1 -1
  122. package/components/form/SelectOrCreateAuthSecret.vue +135 -62
  123. package/components/form/SimpleSecretSelector.vue +88 -28
  124. package/components/form/__tests__/BannerSettings.test.ts +53 -0
  125. package/components/form/__tests__/KeyValue.test.ts +121 -12
  126. package/components/form/__tests__/LabeledSelect.test.ts +0 -18
  127. package/components/form/__tests__/NameNsDescription.test.ts +25 -15
  128. package/components/form/labeled-select-utils/labeled-select-pagination.ts +151 -0
  129. package/components/form/labeled-select-utils/labeled-select.utils.ts +122 -0
  130. package/components/formatter/AppSummaryGraph.vue +2 -2
  131. package/components/formatter/CloudCredPublicData.vue +30 -0
  132. package/components/formatter/ClusterLink.vue +2 -2
  133. package/components/formatter/FleetSummaryGraph.vue +2 -1
  134. package/components/formatter/ImagePercentageBar.vue +0 -4
  135. package/components/formatter/IngressTarget.vue +18 -7
  136. package/components/formatter/Link.vue +2 -2
  137. package/components/formatter/LinkDetail.vue +2 -2
  138. package/components/formatter/LinkDetailImage.vue +2 -2
  139. package/components/formatter/LinkName.vue +2 -2
  140. package/components/formatter/LiveDate.vue +16 -0
  141. package/components/formatter/PrincipalGroupBindings.vue +2 -2
  142. package/components/formatter/SecretType.vue +2 -2
  143. package/components/formatter/VirtualServiceGateways.vue +2 -2
  144. package/components/formatter/__tests__/LinkDetail.test.ts +5 -5
  145. package/components/nav/Group.vue +7 -5
  146. package/components/nav/Header.vue +82 -43
  147. package/components/nav/NamespaceFilter.vue +8 -1
  148. package/components/nav/TopLevelMenu.vue +336 -125
  149. package/components/nav/Type.vue +58 -102
  150. package/components/nav/__tests__/TopLevelMenu.test.ts +370 -9
  151. package/components/nav/__tests__/Type.test.ts +321 -126
  152. package/components/nuxt/nuxt-child.js +0 -5
  153. package/components/nuxt/nuxt-error.vue +1 -1
  154. package/components/nuxt/nuxt-link.client.js +13 -95
  155. package/components/templates/default.vue +3 -3
  156. package/components/templates/error.vue +6 -10
  157. package/components/templates/standalone.vue +0 -4
  158. package/components/templates/unauthenticated.vue +1 -2
  159. package/components/user.retention/user-retention-header.vue +34 -0
  160. package/composables/useCompactInput.test.ts +36 -0
  161. package/composables/useCompactInput.ts +2 -2
  162. package/composables/useI18n.ts +26 -0
  163. package/composables/useLabeledFormElement.test.ts +135 -0
  164. package/composables/useStore.ts +16 -0
  165. package/config/home-links.js +32 -1
  166. package/config/labels-annotations.js +2 -1
  167. package/config/middleware.js +0 -6
  168. package/config/pagination-table-headers.js +57 -0
  169. package/config/pod-security-admission.ts +1 -1
  170. package/config/private-label.js +1 -3
  171. package/config/product/auth.js +1 -0
  172. package/config/product/explorer.js +167 -46
  173. package/config/product/legacy.js +3 -95
  174. package/config/product/manager.js +44 -11
  175. package/config/query-params.js +1 -0
  176. package/config/roles.ts +23 -0
  177. package/config/router/index.js +23 -0
  178. package/config/router/navigation-guards/attempt-first-login.js +73 -0
  179. package/config/router/navigation-guards/authentication.js +63 -0
  180. package/config/router/navigation-guards/index.js +15 -0
  181. package/config/router/navigation-guards/load-initial-settings.js +15 -0
  182. package/config/router/routes.js +487 -0
  183. package/config/settings.ts +38 -2
  184. package/config/store.js +7 -3
  185. package/config/table-headers.js +46 -1
  186. package/config/types.js +36 -16
  187. package/config/uiplugins.js +10 -5
  188. package/core/plugin-helpers.js +1 -1
  189. package/core/plugin.ts +2 -1
  190. package/core/plugins.js +289 -282
  191. package/creators/app/files/.eslintignore +0 -2
  192. package/creators/app/files/.vscode/settings.json +0 -1
  193. package/creators/pkg/files/.github/workflows/build-extension-catalog.yml +2 -6
  194. package/creators/pkg/files/.github/workflows/build-extension-charts.yml +2 -6
  195. package/creators/pkg/init +32 -0
  196. package/detail/__tests__/service.test.ts +62 -0
  197. package/detail/catalog.cattle.io.app.vue +1 -1
  198. package/detail/cis.cattle.io.clusterscan.vue +14 -3
  199. package/detail/fleet.cattle.io.gitrepo.vue +15 -9
  200. package/detail/namespace.vue +2 -2
  201. package/detail/networking.k8s.io.ingress.vue +52 -19
  202. package/detail/node.vue +20 -43
  203. package/detail/pod.vue +1 -68
  204. package/detail/provisioning.cattle.io.cluster.vue +2 -1
  205. package/detail/service.vue +1 -1
  206. package/detail/workload/index.vue +2 -15
  207. package/dialog/AddCustomBadgeDialog.vue +318 -161
  208. package/dialog/DeactivateDriverDialog.vue +118 -0
  209. package/dialog/RollbackWorkloadDialog.vue +2 -2
  210. package/dialog/RotateCertificatesDialog.vue +0 -21
  211. package/directives/clean-html.js +15 -0
  212. package/directives/clean-tooltip.js +32 -0
  213. package/directives/focus.js +41 -0
  214. package/directives/int-number.js +21 -0
  215. package/directives/positive-int-number.js +19 -0
  216. package/directives/trim-whitespace.js +19 -0
  217. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +3 -2
  218. package/edit/__tests__/kontainerDriver.test.ts +107 -0
  219. package/edit/__tests__/management.cattle.io.clusterroletemplatebinding.test.ts +12 -1
  220. package/edit/__tests__/management.cattle.io.setting.test.ts +2 -1
  221. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +2 -3
  222. package/edit/__tests__/nodeDriver.test.ts +107 -0
  223. package/edit/__tests__/service.test.ts +1 -5
  224. package/edit/__tests__/ui.cattle.io.navlink.test.ts +3 -1
  225. package/edit/auth/AuthProviderWarningBanners.vue +34 -0
  226. package/edit/auth/__tests__/AuthProviderWarningBanners.test.ts +19 -0
  227. package/edit/auth/__tests__/azuread.test.ts +241 -0
  228. package/edit/auth/__tests__/oidc.test.ts +137 -0
  229. package/edit/auth/azuread.vue +133 -31
  230. package/edit/auth/github.vue +5 -17
  231. package/edit/auth/googleoauth.vue +5 -18
  232. package/edit/auth/ldap/index.vue +5 -17
  233. package/edit/auth/oidc.vue +143 -42
  234. package/edit/auth/saml.vue +5 -14
  235. package/edit/catalog.cattle.io.clusterrepo.vue +175 -20
  236. package/edit/cis.cattle.io.clusterscan.vue +5 -2
  237. package/edit/cis.cattle.io.clusterscanbenchmark.vue +41 -9
  238. package/edit/cloudcredential.vue +26 -4
  239. package/edit/configmap.vue +10 -4
  240. package/edit/fleet.cattle.io.gitrepo.vue +7 -4
  241. package/edit/helm.cattle.io.projecthelmchart.vue +29 -19
  242. package/edit/kontainerDriver.vue +65 -0
  243. package/edit/logging-flow/Match.vue +10 -9
  244. package/edit/logging-flow/index.vue +4 -19
  245. package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +232 -2
  246. package/edit/logging.banzaicloud.io.output/index.vue +43 -26
  247. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -3
  248. package/edit/management.cattle.io.project.vue +2 -1
  249. package/edit/management.cattle.io.setting.vue +20 -0
  250. package/edit/management.cattle.io.user.vue +2 -1
  251. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +10 -7
  252. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +21 -16
  253. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +1 -0
  254. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +3 -0
  255. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +2 -0
  256. package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +2 -0
  257. package/edit/monitoring.coreos.com.prometheusrule/index.vue +2 -0
  258. package/edit/networking.k8s.io.ingress/Rules.vue +8 -3
  259. package/edit/networking.k8s.io.ingress/index.vue +64 -8
  260. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -0
  261. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +6 -2
  262. package/edit/networking.k8s.io.networkpolicy/__tests__/{PolicyRuleTarget.spec.ts → PolicyRuleTarget.test.ts} +45 -6
  263. package/edit/networking.k8s.io.networkpolicy/__tests__/utils/selectors.test.ts +1 -1
  264. package/edit/networking.k8s.io.networkpolicy/index.vue +2 -0
  265. package/edit/nodeDriver.vue +65 -0
  266. package/edit/persistentvolume/index.vue +2 -2
  267. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +18 -9
  268. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +165 -1
  269. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +1 -1
  270. package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +0 -3
  271. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +228 -0
  272. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +70 -12
  273. package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +5 -0
  274. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  275. package/edit/provisioning.cattle.io.cluster/index.vue +21 -15
  276. package/edit/provisioning.cattle.io.cluster/rke2.vue +185 -114
  277. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +67 -7
  278. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +19 -6
  279. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +132 -0
  280. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +7 -0
  281. package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +1 -0
  282. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +1 -0
  283. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +3 -0
  284. package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +1 -0
  285. package/edit/resources.cattle.io.backup.vue +139 -124
  286. package/edit/resources.cattle.io.restore.vue +146 -126
  287. package/edit/service.vue +1 -0
  288. package/edit/serviceaccount.vue +46 -4
  289. package/edit/workload/__tests__/Job.test.ts +1 -3
  290. package/edit/workload/__tests__/Upgrading.test.ts +2 -2
  291. package/edit/workload/mixins/workload.js +34 -1
  292. package/edit/workload/storage/emptyDir.vue +2 -2
  293. package/initialize/App.vue +75 -0
  294. package/initialize/app-extended.js +128 -0
  295. package/initialize/entry-helpers.js +549 -0
  296. package/initialize/entry.js +32 -0
  297. package/initialize/install-components.js +23 -0
  298. package/initialize/install-directives.js +59 -0
  299. package/initialize/install-plugins.js +123 -0
  300. package/list/__tests__/workload.test.ts +1 -1
  301. package/list/cis.cattle.io.clusterscan.vue +16 -10
  302. package/list/group.principal.vue +2 -2
  303. package/list/management.cattle.io.feature.vue +11 -7
  304. package/list/management.cattle.io.user.vue +36 -3
  305. package/list/networking.k8s.io.ingress.vue +36 -0
  306. package/list/node.vue +211 -73
  307. package/list/provisioning.cattle.io.cluster.vue +17 -4
  308. package/list/ui.cattle.io.navlink.vue +2 -2
  309. package/list/workload.vue +22 -0
  310. package/machine-config/__tests__/vmwarevsphere-pool-config-merge.test.ts +30 -0
  311. package/machine-config/__tests__/vmwarevsphere.test.ts +162 -59
  312. package/machine-config/amazonec2.vue +1 -1
  313. package/machine-config/azure.vue +38 -21
  314. package/machine-config/generic.vue +11 -15
  315. package/machine-config/vmwarevsphere-pool-config-merge.ts +25 -0
  316. package/machine-config/vmwarevsphere.vue +20 -11
  317. package/middleware/authenticated.js +9 -361
  318. package/mixins/__tests__/chart.test.ts +48 -6
  319. package/mixins/__tests__/create-edit-view.test.ts +2 -3
  320. package/mixins/auth-config.js +3 -2
  321. package/mixins/brand.js +75 -57
  322. package/mixins/chart.js +27 -13
  323. package/mixins/create-edit-view/index.js +2 -2
  324. package/mixins/fetch.client.js +42 -48
  325. package/mixins/labeled-form-element.ts +21 -1
  326. package/mixins/page-actions.js +7 -5
  327. package/mixins/resource-fetch-api-pagination.js +304 -0
  328. package/mixins/resource-fetch-namespaced.js +1 -1
  329. package/mixins/resource-fetch.js +46 -5
  330. package/models/__tests__/cluster.test.ts +44 -0
  331. package/models/__tests__/fleet.cattle.io.cluster.test.ts +36 -0
  332. package/models/__tests__/schema.tests.ts +24 -0
  333. package/models/__tests__/steve-schema.test.ts +73 -0
  334. package/models/__tests__/workload.test.ts +1 -1
  335. package/models/catalog.cattle.io.app.js +8 -0
  336. package/models/catalog.cattle.io.clusterrepo.js +9 -1
  337. package/models/catalog.cattle.io.uiplugin.js +7 -8
  338. package/models/cis.cattle.io.clusterscan.js +29 -8
  339. package/models/cloudcredential.js +9 -1
  340. package/models/cluster/node.js +4 -0
  341. package/models/cluster/schema.js +6 -0
  342. package/models/cluster.js +33 -0
  343. package/models/driver.js +62 -0
  344. package/models/fleet.cattle.io.cluster.js +23 -11
  345. package/models/fleet.cattle.io.gitrepo.js +10 -0
  346. package/models/helm.cattle.io.projecthelmchart.js +1 -1
  347. package/models/kontainerdriver.js +68 -0
  348. package/models/management/schema.js +6 -0
  349. package/models/management.cattle.io.authconfig.js +3 -2
  350. package/models/management.cattle.io.cluster.js +5 -4
  351. package/models/management.cattle.io.globalrole.js +2 -0
  352. package/models/management.cattle.io.user.js +67 -2
  353. package/models/monitoring.coreos.com.receiver.js +3 -1
  354. package/models/monitoring.coreos.com.route.js +1 -1
  355. package/models/networking.k8s.io.ingress.js +2 -1
  356. package/models/nodedriver.js +68 -0
  357. package/models/provisioning.cattle.io.cluster.js +34 -1
  358. package/models/schema.js +28 -7
  359. package/models/service.js +2 -0
  360. package/models/steve-schema.ts +254 -0
  361. package/models/workload.js +1 -0
  362. package/package.json +6 -5
  363. package/pages/about.vue +12 -5
  364. package/pages/account/index.vue +7 -2
  365. package/pages/auth/login.vue +106 -102
  366. package/pages/auth/logout.vue +2 -2
  367. package/pages/auth/setup.vue +57 -64
  368. package/pages/auth/verify.vue +17 -17
  369. package/pages/c/_cluster/apps/charts/chart.vue +54 -9
  370. package/pages/c/_cluster/apps/charts/index.vue +37 -13
  371. package/pages/c/_cluster/apps/charts/install.vue +4 -4
  372. package/pages/c/_cluster/auth/config/_id.vue +0 -6
  373. package/pages/c/_cluster/auth/config/index.vue +15 -9
  374. package/pages/c/_cluster/auth/roles/index.vue +8 -10
  375. package/pages/c/_cluster/auth/user.retention/index.vue +384 -0
  376. package/pages/c/_cluster/explorer/ConfigBadge.vue +13 -8
  377. package/pages/c/_cluster/explorer/EventsTable.vue +18 -0
  378. package/pages/c/_cluster/explorer/__tests__/index.test.ts +181 -0
  379. package/pages/c/_cluster/explorer/index.vue +231 -72
  380. package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +69 -0
  381. package/pages/c/_cluster/explorer/tools/index.vue +12 -176
  382. package/pages/c/_cluster/fleet/index.vue +88 -93
  383. package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +89 -0
  384. package/pages/c/_cluster/longhorn/index.vue +52 -17
  385. package/pages/c/_cluster/manager/cloudCredential/index.vue +18 -25
  386. package/pages/c/_cluster/manager/drivers/kontainerDriver/_id.vue +12 -0
  387. package/pages/c/_cluster/manager/drivers/kontainerDriver/create.vue +15 -0
  388. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +94 -0
  389. package/pages/c/_cluster/manager/drivers/nodeDriver/_id.vue +12 -0
  390. package/pages/c/_cluster/manager/drivers/nodeDriver/create.vue +15 -0
  391. package/pages/c/_cluster/manager/drivers/nodeDriver/index.vue +63 -0
  392. package/pages/c/_cluster/manager/jwt.authentication/index.vue +235 -0
  393. package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +4 -0
  394. package/pages/c/_cluster/monitoring/index.vue +1 -17
  395. package/pages/c/_cluster/monitoring/route-receiver/index.vue +2 -2
  396. package/pages/c/_cluster/neuvector/index.vue +1 -0
  397. package/pages/c/_cluster/settings/DefaultLinksEditor.vue +1 -0
  398. package/pages/c/_cluster/settings/banners.vue +86 -8
  399. package/pages/c/_cluster/settings/brand.vue +258 -36
  400. package/pages/c/_cluster/settings/index.vue +4 -4
  401. package/pages/c/_cluster/settings/links.vue +5 -3
  402. package/pages/c/_cluster/settings/performance.vue +71 -2
  403. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +5 -2
  404. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +10 -7
  405. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +9 -6
  406. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +11 -5
  407. package/pages/c/_cluster/uiplugins/InstallDialog.vue +53 -18
  408. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +36 -301
  409. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +14 -6
  410. package/pages/c/_cluster/uiplugins/__tests__/SetupUIPlugins.test.ts +52 -106
  411. package/pages/c/_cluster/uiplugins/index.vue +38 -52
  412. package/pages/diagnostic.vue +1 -0
  413. package/pages/fail-whale.vue +103 -41
  414. package/pages/home.vue +81 -24
  415. package/pages/prefs.vue +8 -3
  416. package/pages/support/index.vue +12 -2
  417. package/plugins/clean-html-directive.js +5 -12
  418. package/plugins/clean-tooltip-directive.js +6 -31
  419. package/plugins/codemirror.js +0 -9
  420. package/plugins/dashboard-store/__tests__/mutations.test.ts +296 -313
  421. package/plugins/dashboard-store/actions.js +140 -32
  422. package/plugins/dashboard-store/getters.js +86 -39
  423. package/plugins/dashboard-store/index.js +0 -99
  424. package/plugins/dashboard-store/mutations.js +150 -48
  425. package/plugins/dashboard-store/resource-class.js +14 -109
  426. package/plugins/directives.js +6 -39
  427. package/plugins/ember-cookie.js +13 -0
  428. package/plugins/global-formatters.js +26 -5
  429. package/plugins/i18n.js +90 -56
  430. package/plugins/int-number.js +6 -20
  431. package/plugins/plugin.js +3 -3
  432. package/plugins/positive-int-number.js +6 -17
  433. package/plugins/steve/__tests__/{getters.spec.ts → getters.test.ts} +124 -31
  434. package/plugins/steve/__tests__/mutations.test.ts +49 -0
  435. package/plugins/steve/__tests__/subscribe.spec.ts +109 -0
  436. package/plugins/steve/__tests__/utils/mutation.test.helpers.ts +105 -0
  437. package/plugins/steve/accept-or-reject-socket-message.ts +103 -0
  438. package/plugins/steve/actions.js +0 -1
  439. package/plugins/steve/getters.js +183 -63
  440. package/plugins/steve/hybrid-class.js +5 -1
  441. package/plugins/steve/mutations.js +29 -5
  442. package/plugins/steve/norman-class.js +123 -2
  443. package/{utils → plugins/steve}/projectAndNamespaceFiltering.utils.ts +28 -10
  444. package/plugins/steve/schema.d.ts +22 -0
  445. package/plugins/steve/steve-pagination-utils.ts +368 -0
  446. package/plugins/steve/subscribe.js +37 -75
  447. package/plugins/trim-whitespace.js +6 -34
  448. package/plugins/vue-js-modal.js +1 -1
  449. package/public/index.html +1 -0
  450. package/rancher-components/Accordion/Accordion.vue +3 -2
  451. package/rancher-components/BadgeState/BadgeState.vue +3 -3
  452. package/rancher-components/Banner/Banner.test.ts +1 -5
  453. package/rancher-components/Banner/Banner.vue +2 -2
  454. package/rancher-components/Card/Card.vue +4 -4
  455. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -3
  456. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +1 -1
  457. package/rancher-components/Form/LabeledInput/LabeledInput.vue +66 -30
  458. package/rancher-components/Form/Radio/RadioButton.test.ts +1 -3
  459. package/rancher-components/Form/Radio/RadioButton.vue +13 -7
  460. package/rancher-components/Form/Radio/RadioGroup.vue +4 -3
  461. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
  462. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
  463. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
  464. package/rancher-components/StringList/StringList.vue +8 -8
  465. package/rancher-components/components/Accordion/Accordion.vue +3 -2
  466. package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
  467. package/rancher-components/components/Banner/Banner.test.ts +1 -5
  468. package/rancher-components/components/Banner/Banner.vue +2 -2
  469. package/rancher-components/components/Card/Card.vue +4 -4
  470. package/rancher-components/components/Form/Checkbox/Checkbox.vue +4 -3
  471. package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +1 -1
  472. package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +66 -30
  473. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -3
  474. package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
  475. package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
  476. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
  477. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
  478. package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
  479. package/rancher-components/components/StringList/StringList.vue +8 -8
  480. package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +27 -8
  481. package/scripts/clean +1 -1
  482. package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +11 -0
  483. package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -0
  484. package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
  485. package/scripts/extension/helm/package/Dockerfile +1 -1
  486. package/scripts/extension/helm/scripts/patch +27 -0
  487. package/scripts/extension/publish +6 -6
  488. package/scripts/serve-pkgs +0 -2
  489. package/scripts/test-plugins-build.sh +6 -6
  490. package/scripts/vue-migrate.js +683 -0
  491. package/store/__tests__/catalog.test.ts +224 -0
  492. package/store/auth.js +23 -4
  493. package/store/aws.js +53 -6
  494. package/store/catalog.js +21 -5
  495. package/store/cru-resource.ts +26 -0
  496. package/store/customisation.js +35 -0
  497. package/store/features.js +6 -4
  498. package/store/index.js +132 -39
  499. package/store/plugins.js +8 -4
  500. package/store/type-map.js +143 -143
  501. package/store/type-map.utils.ts +226 -0
  502. package/tsconfig.json +0 -1
  503. package/tsconfig.paths.json +4 -1
  504. package/types/components/labeledSelect.ts +50 -0
  505. package/types/resources/settings.d.ts +32 -0
  506. package/types/{userPreferences.d.ts → resources/userPreferences.d.ts} +0 -1
  507. package/types/shell/index.d.ts +996 -782
  508. package/types/store/dashboard-store.types.ts +42 -0
  509. package/types/store/pagination.types.ts +457 -0
  510. package/types/store/type-map.ts +30 -0
  511. package/types/store/vuex.d.ts +9 -0
  512. package/types/vue-shim.d.ts +51 -0
  513. package/utils/__tests__/cluster.test.ts +20 -18
  514. package/utils/__tests__/create-yaml.test.ts +359 -2
  515. package/utils/__tests__/kontainer.test.ts +92 -0
  516. package/utils/__tests__/pod-security-admission.test.ts +1 -1
  517. package/utils/alertmanagerconfig.js +19 -0
  518. package/utils/array.ts +40 -1
  519. package/utils/async.ts +2 -0
  520. package/utils/auth.js +152 -4
  521. package/utils/axios.js +2 -2
  522. package/utils/banners.js +103 -0
  523. package/utils/cluster.js +1 -1
  524. package/utils/config.js +4 -0
  525. package/utils/create-yaml.js +54 -27
  526. package/utils/error.js +25 -0
  527. package/utils/formatter.js +5 -3
  528. package/utils/git.ts +1 -1
  529. package/utils/install-redirect.js +1 -1
  530. package/utils/kontainer.ts +186 -0
  531. package/utils/monitoring.js +2 -37
  532. package/utils/pagination-utils.ts +154 -0
  533. package/utils/pod-security-admission.ts +1 -1
  534. package/utils/router.js +86 -0
  535. package/utils/settings.ts +46 -0
  536. package/utils/socket.js +1 -0
  537. package/utils/time.js +1 -0
  538. package/utils/title.ts +3 -0
  539. package/utils/unit-tests/ChildRenderingRouterLinkStub.ts +36 -0
  540. package/utils/validators/formRules/__tests__/index.test.ts +21 -0
  541. package/utils/validators/formRules/index.ts +3 -0
  542. package/utils/validators/index.js +1 -0
  543. package/vue.config.js +376 -421
  544. package/assets/styles/vendor/vue-js-modal.scss +0 -16
  545. package/chart/monitoring/steps/uninstall-v1.vue +0 -135
  546. package/components/EventsTable.vue +0 -67
  547. package/components/TabbedLinks/index.vue +0 -94
  548. package/components/nuxt/nuxt-link.server.js +0 -16
  549. package/components/nuxt/nuxt.js +0 -101
  550. package/config/router.js +0 -425
  551. package/initialize/App.js +0 -152
  552. package/initialize/client.js +0 -734
  553. package/initialize/index.js +0 -287
  554. package/middleware/i18n.js +0 -10
  555. package/middleware/unauthenticated.js +0 -22
  556. package/mixins/v1-workload-metrics.js +0 -43
  557. package/pages/c/_cluster/apps/index.vue +0 -15
  558. package/pages/c/_cluster/auth/index.vue +0 -17
  559. package/pages/c/_cluster/index.vue +0 -15
  560. package/pages/c/_cluster/legacy/index.vue +0 -22
  561. package/pages/c/_cluster/manager/index.vue +0 -22
  562. package/pages/c/_cluster/mcapps/index.vue +0 -21
  563. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +0 -232
  564. package/plugins/dashboard-store/rehydrate-all.js +0 -44
  565. package/plugins/index.js +0 -11
  566. package/plugins/portal-vue.js +0 -4
  567. package/plugins/portal.js +0 -4
  568. package/plugins/resize.js +0 -5
  569. package/plugins/shortkey.js +0 -4
  570. package/plugins/tooltip.js +0 -4
  571. package/plugins/v-select.js +0 -4
  572. package/utils/group.js +0 -70
  573. package/utils/nuxt.js +0 -638
  574. package/utils/router.scrollBehavior.js +0 -78
  575. /package/components/__tests__/{Collapse.spec.ts → Collapse.test.ts} +0 -0
  576. /package/models/__tests__/{node.ts → node.test.ts} +0 -0
  577. /package/plugins/steve/__tests__/{header-warnings.spec.ts → header-warnings.test.ts} +0 -0
  578. /package/plugins/steve/__tests__/{steve-class.spec.ts → steve-class.test.ts} +0 -0
  579. /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
  580. /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
  581. /package/types/{pod-security-admission.ts → resources/pod-security-admission.ts} +0 -0
@@ -0,0 +1,42 @@
1
+ import { PaginationArgs } from '@shell/types/store/pagination.types';
2
+
3
+ /**
4
+ * Properties on all findX actions
5
+ */
6
+ export type ActionCoreFindArgs = {
7
+ force?: boolean,
8
+ }
9
+
10
+ /**
11
+ * Args used for findAll action
12
+ */
13
+ export interface ActionFindAllArgs extends ActionCoreFindArgs {
14
+ watch?: boolean,
15
+ namespaced?: string[],
16
+ incremental?: boolean,
17
+ hasManualRefresh?: boolean,
18
+ limit?: number,
19
+ /**
20
+ * Iterate over all pages and return all resources.
21
+ *
22
+ * This is done via the native kube pagination api, not steve
23
+ */
24
+ depaginate?: boolean,
25
+ }
26
+
27
+ /**
28
+ * Args used for findPage action
29
+ */
30
+ export interface ActionFindPageArgs extends ActionCoreFindArgs {
31
+ /**
32
+ * Set of pagination settings that creates the url.
33
+ *
34
+ * This is stored and can be used to compare in new request to determine if we already have this page
35
+ */
36
+ pagination: PaginationArgs,
37
+ /**
38
+ * The single namespace to filter by (used in url path, not part of pagination params)
39
+ */
40
+ namespaced?: string,
41
+ hasManualRefresh?: boolean,
42
+ }
@@ -0,0 +1,457 @@
1
+ import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';
2
+
3
+ // Pagination Typing
4
+ // These structures are designed to offer both convenience and flexibility based on a common structure and are
5
+ // converted to the url param format as per https://github.com/rancher/steve.
6
+ //
7
+ // Simple use cases such as filtering by a single param should be easy to use.
8
+ // More complex filtering (and'ing and 'or'ing multiple fields) is also supported.
9
+ //
10
+ // The top level object `PaginationArgs` contains all properties that will be converted to url params
11
+ //
12
+ // The two important / complex params are currently
13
+ // - `filter` https://github.com/rancher/steve?tab=readme-ov-file#filter
14
+ // - represented by `PaginationParamFilter extends PaginationParam`
15
+ // - Examples
16
+ // - filter=metadata.name=123
17
+ // - filter=metadata.name=123,metadata.name=456 (name is 123 OR 456)
18
+ // - filter=metadata.name=123&filter=metadata.namespace=abc (name 123 AND namespace abc)
19
+ // - `projectsornamespaces` https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces
20
+ // - represented by `PaginationParamProjectOrNamespace extends PaginationParam`
21
+ // - Examples
22
+ // - projectsornamespaces=123
23
+ // - projectsornamespaces=123,456 (projects or namespaces that have id 123 OR 456)
24
+ //
25
+ //
26
+ // Some of the types below are defined using classes instead of TS types/interfaces
27
+ // - Avoid making complex json objects by using clearer instance constructors
28
+ // - Better documented
29
+ // - Defaults (a lot of the time convenience > utility)
30
+ // - Adds some kind of typing in pure js docs
31
+ // - class ctor links to definition, instead of object just being a random json blob)
32
+ // - helps VSCode jsdoc highlighting
33
+
34
+ /**
35
+ * Sort the pagination result
36
+ *
37
+ * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#sort
38
+ */
39
+ export interface PaginationSort {
40
+ /**
41
+ * Name of field within the object to sort by
42
+ */
43
+ field: string,
44
+ asc: boolean
45
+ }
46
+
47
+ /**
48
+ * Filter the pagination result by these specific fields
49
+ *
50
+ * For example
51
+ *
52
+ * - metadata.name=test
53
+ * - metadata.namespace!=system
54
+ *
55
+ * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#query-parameters
56
+ */
57
+ export class PaginationFilterField {
58
+ /**
59
+ * Name of field within the object to filter by for example the x of x=y
60
+ *
61
+ * This can be optional for some (projectsornamespaces)
62
+ */
63
+ field?: string;
64
+ /**
65
+ * Value of field within the object to filter by for example the y of x=y
66
+ */
67
+ value: string;
68
+ /**
69
+ * Equality field within the object to filter by for example the `=` or `!=` of x=y
70
+ */
71
+ equals: boolean;
72
+ /**
73
+ * Match the field exactly. False for partial matches
74
+ *
75
+ * Value: pod1
76
+ * Exact: true. "p" no, "pod", no, "pod1" yes
77
+ * Exact: false. "p" yes, "pod", yes, "pod1" yes
78
+ */
79
+ exact: boolean;
80
+
81
+ constructor(
82
+ {
83
+ field, value, equals = true, exact = true
84
+ }:
85
+ { field?: string; value: string; equals?: boolean; exact?: boolean;}
86
+ ) {
87
+ this.field = field;
88
+ this.value = value;
89
+ this.equals = equals;
90
+ this.exact = exact;
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Represents filter like params, for example
96
+ *
97
+ * - `filter=abc!=xyz&def=123`
98
+ * - `projectsornamespace!=p-3456`
99
+ *
100
+ * ### Params
101
+ * #### Filter
102
+ * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter
103
+ *
104
+ * #### Projects Or Namespace
105
+ * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces
106
+ *
107
+ * ### Combining Params
108
+ * Params can be combined in two logical ways
109
+ *
110
+ * 1) AND
111
+ * - Used when you would like to filter by something like a=1 AND b=2 AND c=3
112
+ * - To do this multiple instances of `PaginationParam` are used in an array
113
+ * - Object Structure
114
+ * ```
115
+ * [
116
+ * PaginationParam,
117
+ * PaginationParam,
118
+ * PaginationParam
119
+ * ]
120
+ * ```
121
+ * - Results in url
122
+ * ```
123
+ * filter=a=1&filter=b=2&filter=c=3
124
+ * ```
125
+ * - Examples
126
+ * - `filter=metadata.namespace=abc&filter=metadata.name=123,property=123`
127
+ * 2) OR
128
+ * - Used when you would like to filter by something like a=1 OR b=2 OR c=3
129
+ * - To do this multiple fields within a single PaginationParam is used
130
+ * - Object Structure
131
+ * ```
132
+ * [
133
+ * PaginationParam {
134
+ * PaginationFilterField,
135
+ * PaginationFilterField,
136
+ * PaginationFilterField
137
+ * }
138
+ * ]
139
+ * ```
140
+ * - Results in url
141
+ * ```
142
+ * filter=a=1,b=2,c=3
143
+ * ```
144
+ *
145
+ * - For example `filter=a=1,b=2,c=3`
146
+ *
147
+ *
148
+ * This structure should give enough flexibility to cover all uses.
149
+ *
150
+ *
151
+ */
152
+ export abstract class PaginationParam {
153
+ /**
154
+ * Query Param. For example `filter` or `projectsornamespaces`
155
+ */
156
+ param: string;
157
+ /**
158
+ * should fields equal param.
159
+ *
160
+ * For example projectsornamexspaces=x or projectsornamexspaces!=x
161
+ */
162
+ equals: boolean;
163
+ /**
164
+ * Fields to filter by
165
+ *
166
+ * For example metadata.namespace=abc OR metadata.namespace=xyz
167
+ */
168
+ fields: PaginationFilterField[];
169
+
170
+ constructor(
171
+ { param, equals = true, fields = [] }:
172
+ {
173
+ param: string;
174
+ /**
175
+ * should param equal fields
176
+ *
177
+ * For definition see {@link PaginationParam} `equals`
178
+ */
179
+ equals?: boolean;
180
+ /**
181
+ * Collection of fields to filter by
182
+ *
183
+ * For definition see {@link PaginationParam} `fields`
184
+ */
185
+ fields?: PaginationFilterField[];
186
+ }) {
187
+ this.param = param;
188
+ this.equals = equals;
189
+ this.fields = fields;
190
+ }
191
+ }
192
+
193
+ /**
194
+ * This is a convenience class for the `filter` param which works some magic, adds defaults and converts to the required PaginationParam format
195
+ *
196
+ * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together
197
+ *
198
+ * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter
199
+ */
200
+ export class PaginationParamFilter extends PaginationParam {
201
+ constructor(
202
+ { equals = true, fields = [] }:
203
+ {
204
+ /**
205
+ * should param equal fields
206
+ *
207
+ * For definition see {@link PaginationParam} `equals`
208
+ */
209
+ equals?: boolean;
210
+ /**
211
+ * Collection of fields to filter by.
212
+ *
213
+ * Fields are ORd together
214
+ *
215
+ * For definition see {@link PaginationParam} `fields`
216
+ */
217
+ fields?: PaginationFilterField[];
218
+ }
219
+ ) {
220
+ super({
221
+ param: 'filter',
222
+ equals,
223
+ fields
224
+ });
225
+ }
226
+
227
+ /**
228
+ * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=x=y` param
229
+ */
230
+ static createSingleField(field: { field?: string; value: string; equals?: boolean; }): PaginationParam {
231
+ return new PaginationParamFilter({ fields: [new PaginationFilterField(field)] });
232
+ }
233
+
234
+ /**
235
+ * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=a=1,b=2,c=3` PaginationParam
236
+ *
237
+ * These will be OR'd together
238
+ */
239
+ static createMultipleFields(fields: PaginationFilterField[]): PaginationParam {
240
+ return new PaginationParamFilter({ fields });
241
+ }
242
+ }
243
+
244
+ /**
245
+ * This is a convenience class for the `projectsornamespaces` param which works some magic, adds defaults and converts to the required PaginationParam format
246
+ *
247
+ * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together
248
+ *
249
+ * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces
250
+ */
251
+ export class PaginationParamProjectOrNamespace extends PaginationParam {
252
+ constructor(
253
+ { equals = true, projectOrNamespace = [] }:
254
+ {
255
+ /**
256
+ * should param equal fields
257
+ * For definition see {@link PaginationParam} `equals`
258
+ */
259
+ equals?: boolean;
260
+ /**
261
+ * Collection of projects / namespace id's to filter by
262
+ *
263
+ * These are OR'd together
264
+ *
265
+ * For clarification on definition see {@link PaginationFilterField}
266
+ */
267
+ projectOrNamespace?: string[];
268
+ }
269
+ ) {
270
+ const safeFields = projectOrNamespace.map((f) => {
271
+ return new PaginationFilterField({
272
+ value: f
273
+ .replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')
274
+ .replace(NAMESPACE_FILTER_P_FULL_PREFIX, '')
275
+ });
276
+ });
277
+
278
+ super({
279
+ param: 'projectsornamespaces',
280
+ equals,
281
+ fields: safeFields
282
+ });
283
+ }
284
+ }
285
+
286
+ /**
287
+ * Pagination settings sent to actions and persisted to store
288
+ *
289
+ * Use this for making pagination requests that utilise the new vai cache backed API
290
+ */
291
+ export class PaginationArgs {
292
+ /**
293
+ * Page number to fetch
294
+ */
295
+ page: number | null;
296
+ /**
297
+ * Number of results in the page
298
+ */
299
+ pageSize?: number | null;
300
+ /**
301
+ * Sort the results
302
+ *
303
+ * For more info see {@link PaginationSort}
304
+ */
305
+ sort: PaginationSort[];
306
+ /**
307
+ * A collection of `filter` params
308
+ *
309
+ * For more info see {@link PaginationParamFilter}
310
+ */
311
+ filters: PaginationParamFilter[];
312
+ /**
313
+ * A collection of `projectsornamespace` params
314
+ *
315
+ * For more info see {@link PaginationParamProjectOrNamespace}
316
+ */
317
+ projectsOrNamespaces: PaginationParamProjectOrNamespace[];
318
+
319
+ /**
320
+ * Creates an instance of PaginationArgs.
321
+ *
322
+ * Contains defaults to avoid creating complex json objects all the time
323
+ */
324
+ constructor({
325
+ page = 1,
326
+ pageSize = 10,
327
+ sort = [],
328
+ filters = [],
329
+ projectsOrNamespaces = [],
330
+ }:
331
+ // This would be neater as just Partial<PaginationArgs> but we lose all jsdoc
332
+ {
333
+ /**
334
+ * For definition see {@link PaginationArgs} `page`
335
+ */
336
+ page?: number | null,
337
+ /**
338
+ * For definition see {@link PaginationArgs} `pageSize`
339
+ */
340
+ pageSize?: number | null,
341
+ /**
342
+ * For definition see {@link PaginationArgs} `sort`
343
+ */
344
+ sort?: PaginationSort[],
345
+ /**
346
+ * Automatically wrap if not an array
347
+ *
348
+ * For definition see {@link PaginationArgs} `filters`
349
+ */
350
+ filters?: PaginationParamFilter | PaginationParamFilter[],
351
+ /**
352
+ * Automatically wrap if not an array
353
+ *
354
+ * For definition see {@link PaginationArgs} `projectsOrNamespaces`
355
+ */
356
+ projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],
357
+ }) {
358
+ this.page = page;
359
+ this.pageSize = pageSize;
360
+ this.sort = sort;
361
+ if (filters) {
362
+ this.filters = Array.isArray(filters) ? filters : [filters];
363
+ } else {
364
+ this.filters = [];
365
+ }
366
+ if (projectsOrNamespaces) {
367
+ this.projectsOrNamespaces = Array.isArray(projectsOrNamespaces) ? projectsOrNamespaces : [projectsOrNamespaces];
368
+ } else {
369
+ this.projectsOrNamespaces = [];
370
+ }
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Wrapper around {@link PaginationArgs}
376
+ *
377
+ * Use this for making requests that utilise filtering backed by the new vai cache backed API
378
+ */
379
+ export class FilterArgs extends PaginationArgs {
380
+ /**
381
+ * Creates an instance of PaginationArgs.
382
+ *
383
+ * Contains defaults to avoid creating complex json objects all the time
384
+ */
385
+ constructor({
386
+ sort = [],
387
+ filters = [],
388
+ projectsOrNamespaces = [],
389
+ }:
390
+ // This would be neater as just Partial<PaginationArgs> but we lose all jsdoc
391
+ {
392
+ /**
393
+ * For definition see {@link PaginationArgs} `sort`
394
+ */
395
+ sort?: PaginationSort[],
396
+ /**
397
+ * Automatically wrap if not an array
398
+ *
399
+ * For definition see {@link PaginationArgs} `filters`
400
+ */
401
+ filters?: PaginationParamFilter | PaginationParamFilter[],
402
+ /**
403
+ * Automatically wrap if not an array
404
+ *
405
+ * For definition see {@link PaginationArgs} `projectsOrNamespaces`
406
+ */
407
+ projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],
408
+ }) {
409
+ super({
410
+ page: null, pageSize: null, sort, filters, projectsOrNamespaces
411
+ });
412
+ }
413
+ }
414
+
415
+ /**
416
+ * Overall result of a pagination request.
417
+ *
418
+ * Does not contain actual resources but overall stats (count, pages, etc)
419
+ */
420
+ export interface StorePaginationResult {
421
+ count: number,
422
+ pages: number,
423
+ /**
424
+ * The last time the resource was updated. Used to assist list watching for changes
425
+ */
426
+ timestamp: number,
427
+ }
428
+
429
+ export interface StorePaginationRequest {
430
+ /**
431
+ * The single namespace to filter results by (as part of url path, not pagination params)
432
+ */
433
+ namespace?: string,
434
+ /**
435
+ * The set of pagination args used to create the request
436
+ */
437
+ pagination: PaginationArgs
438
+ }
439
+
440
+ /**
441
+ * Pagination settings
442
+ * - what was requested
443
+ * - what was received (minus actual resources)
444
+ *
445
+ * Object is persisted to store
446
+ */
447
+ export interface StorePagination {
448
+ /**
449
+ * Collection of args that is used to make the request
450
+ */
451
+ request: StorePaginationRequest,
452
+
453
+ /**
454
+ * Information in the response outside of the actual resources returned
455
+ */
456
+ result: StorePaginationResult
457
+ }
@@ -0,0 +1,30 @@
1
+
2
+ /**
3
+ * interface for type-map's' definition for table headers/columns
4
+ */
5
+ export interface TableColumn {
6
+ name: string,
7
+ label?: string,
8
+ value: any,
9
+ sort?: string | string[],
10
+ formatter?: string,
11
+ formatterOpts?: any,
12
+ width?: number,
13
+ tooltip?: string,
14
+ search?: string | boolean,
15
+ }
16
+
17
+ export const COLUMN_BREAKPOINTS = {
18
+ /**
19
+ * Only show column if at tablet width or wider
20
+ */
21
+ TABLET: 'tablet',
22
+ /**
23
+ * Only show column if at laptop width or wider
24
+ */
25
+ LAPTOP: 'laptop',
26
+ /**
27
+ * Only show column if at desktop width or wider
28
+ */
29
+ DESKTOP: 'desktop'
30
+ };
@@ -0,0 +1,9 @@
1
+ // Unfortunately there's no current way to type the vuex store, however we have ts files that references it
2
+ // Until we bring that in, this file can contain the interfaces and types used by ts files in place of `any`
3
+
4
+ /**
5
+ * Generic interface for Vuex getters
6
+ */
7
+ export interface VuexStoreGetters {
8
+ [name:string]: Function
9
+ }
@@ -0,0 +1,51 @@
1
+ // eslint-disable-next-line no-unused-vars
2
+ import Vue, { ComponentCustomProperties } from 'vue';
3
+ declare module '*.vue' {
4
+ export default Vue;
5
+ }
6
+
7
+ // This is required to keep typescript from complaining. It is required for
8
+ // our i18n plugin. For more info see:
9
+ // https://v2.vuejs.org/v2/guide/typescript.html?redirect=true#Augmenting-Types-for-Use-with-Plugins
10
+ declare module 'vue/types/vue' {
11
+ // eslint-disable-next-line no-unused-vars
12
+ interface Vue {
13
+ /**
14
+ * Lookup a given string with the given arguments
15
+ * @param raw if set, do not do HTML escaping.
16
+ */
17
+ t: {
18
+ (key: string, args?: Record<string, any>, raw?: boolean): string;
19
+ (options: { k: string; raw?: boolean; tag?: string | Record<string, any>; escapehtml?: boolean }): string;
20
+ };
21
+ }
22
+ }
23
+
24
+ declare module '@vue/runtime-core' {
25
+ // eslint-disable-next-line no-unused-vars
26
+ interface Vue {
27
+ t: {
28
+ (key: string, args?: Record<string, any>, raw?: boolean): string;
29
+ (options: { k: string; raw?: boolean; tag?: string | Record<string, any>; escapehtml?: boolean }): string;
30
+ }
31
+ }
32
+
33
+ // eslint-disable-next-line no-unused-vars
34
+ interface ComponentCustomProperties {
35
+ t: {
36
+ (key: string, args?: Record<string, any>, raw?: boolean): string;
37
+ (options: { k: string; raw?: boolean; tag?: string | Record<string, any>; escapehtml?: boolean }): string;
38
+ },
39
+ $t: {
40
+ (key: string, args?: Record<string, any>, raw?: boolean): string;
41
+ (options: { k: string; raw?: boolean; tag?: string | Record<string, any>; escapehtml?: boolean }): string;
42
+ },
43
+ $store: {
44
+ getters: Record<string, any>,
45
+ dispatch: (action: string, payload?: any) => Promise<any>,
46
+ commit: (mutation: string, payload?: any) => void,
47
+ }
48
+ }
49
+ }
50
+
51
+ declare module 'js-yaml';
@@ -3,7 +3,7 @@ import { abbreviateClusterName } from '@shell/utils/cluster';
3
3
  describe('fx: abbreviateClusterName', () => {
4
4
  it.each([
5
5
  ['local', 'lcl'],
6
- ['world-wide-web', 'www'],
6
+ ['world-wide-web', 'wwb'],
7
7
  ['a', 'a'],
8
8
  ['ab', 'ab'],
9
9
  ['abc', 'abc'],
@@ -17,32 +17,34 @@ describe('fx: abbreviateClusterName', () => {
17
17
  ['a-b', 'a-b'],
18
18
  ['1-2', '1-2'],
19
19
  ['a-b-c', 'abc'],
20
- ['abc-def-ghi', 'adg'],
20
+ ['abc-def-ghi', 'adi'],
21
21
  ['abcd-efgh', 'adh'],
22
22
  ['a-bc', 'abc'],
23
23
  ['ab-c', 'abc'],
24
24
  ['ab-cd', 'abd'],
25
25
  ['a-bcd', 'abd'],
26
26
  ['abc-d', 'acd'],
27
- ['0123-4567-89ab-cdef', '048'],
28
- ['0123-4567-89ab-cdef-ghij', '048'],
29
- ['0123-4567-8901-2345', '048'],
30
- ['0123-4567-8901-2345-6789', '048'],
27
+ ['0123-4567-89ab-cdef', '04f'],
28
+ ['0123-4567-89ab-cdef-ghij', '04j'],
29
+ ['0123-4567-8901-2345', '045'],
30
+ ['0123-4567-8901-2345-6789', '049'],
31
31
  ['a1b', 'a1b'],
32
- ['a1b2', 'a1b'],
33
- ['ab12cd34', 'a1c'],
34
- ['test-cluster-one', 'tco'],
32
+ ['a1b2', 'a12'],
33
+ ['ab12cd34', 'a14'],
34
+ ['test-cluster-one', 'tce'],
35
35
  ['test-cluster-1', 'tc1'],
36
- ['customer-support-team-1', 'cst'],
37
- ['customer-support-team-one', 'cst'],
38
- ['customer-support-team-prod', 'cst'],
39
- ['customer-support-team-dev', 'cst'],
40
- ['customer-support-team-prod-1', 'cst'],
41
- ['customer-support-team-dev-1', 'cst'],
42
- ['customer-support-team-prod-2', 'cst'],
43
- ['customer-support-team-dev-2', 'cst'],
44
-
36
+ ['customer-support-team-1', 'cs1'],
37
+ ['customer-support-team-one', 'cse'],
38
+ ['customer-support-team-prod', 'csd'],
39
+ ['customer-support-team-dev', 'csv'],
40
+ ['customer-support-team-prod-1', 'cs1'],
41
+ ['customer-support-team-prod-f1xz', 'csz'],
42
+ ['customer-support-team-dev-1', 'cs1'],
43
+ ['customer-support-team-prod-2', 'cs2'],
44
+ ['customer-support-team-dev-2', 'cs2'],
45
45
  ['s322', 's32'],
46
+ ['mew-test10', 'mt0'],
47
+ ['mew-test11', 'mt1'],
46
48
  ['sowmya2', 'sa2'],
47
49
  ['sowmya4', 'sa4'],
48
50
  ['sowmya', 'sma'],