@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.
- package/assets/data/aws-regions.json +9 -0
- package/assets/images/vendor/openid.svg +18 -0
- package/assets/styles/app.scss +1 -2
- package/assets/styles/fonts/_icons.scss +3 -3
- package/assets/styles/global/_columns.scss +1 -1
- package/assets/styles/global/_labeled-input.scss +2 -0
- package/assets/styles/themes/_csp.scss +2 -2
- package/assets/styles/themes/_dark.scss +8 -2
- package/assets/styles/themes/_light.scss +2 -1
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/styles/vendor/vue-select.scss +5 -0
- package/assets/translations/en-us.yaml +296 -58
- package/assets/translations/zh-hans.yaml +5 -27
- package/babel.config.js +1 -1
- package/chart/__tests__/S3.test.ts +9 -2
- package/chart/monitoring/grafana/index.vue +6 -2
- package/chart/monitoring/prometheus/index.vue +2 -2
- package/chart/rancher-backup/S3.vue +11 -9
- package/chart/rancher-backup/index.vue +15 -5
- package/cloud-credential/__tests__/harvester.test.ts +18 -0
- package/cloud-credential/generic.vue +18 -9
- package/cloud-credential/harvester.vue +11 -3
- package/components/AppModal.vue +167 -0
- package/components/AssignTo.vue +7 -4
- package/components/AsyncButton.vue +18 -5
- package/components/BackLink.vue +4 -4
- package/components/BannerGraphic.vue +1 -0
- package/components/BrandImage.vue +47 -1
- package/components/Carousel.vue +14 -8
- package/components/Certificates.vue +8 -11
- package/components/ClusterBadge.vue +12 -3
- package/components/ClusterIconMenu.vue +44 -16
- package/components/ClusterProviderIcon.vue +14 -3
- package/components/CodeMirror.vue +73 -38
- package/components/CommunityLinks.vue +12 -8
- package/components/CreateDriver.vue +81 -0
- package/components/CruResource.vue +51 -27
- package/components/DetailTop.vue +2 -2
- package/components/Dialog.vue +6 -5
- package/components/DisableAuthProviderModal.vue +14 -8
- package/components/DraggableZone.vue +2 -2
- package/components/ExplorerMembers.vue +3 -3
- package/components/ExplorerProjectsNamespaces.vue +6 -6
- package/components/FixedBanner.vue +47 -36
- package/components/GlobalRoleBindings.vue +26 -0
- package/components/Import.vue +10 -6
- package/components/Inactivity.vue +1 -5
- package/components/KeyValueView.vue +14 -10
- package/components/MessageLink.vue +2 -2
- package/components/ModalWithCard.vue +5 -8
- package/components/MoveModal.vue +35 -33
- package/components/PodSecurityAdmission.vue +3 -3
- package/components/PromptChangePassword.vue +33 -33
- package/components/PromptModal.vue +11 -21
- package/components/PromptRemove.vue +11 -17
- package/components/PromptRestore.vue +18 -16
- package/components/Questions/__tests__/Boolean.test.ts +9 -19
- package/components/Questions/__tests__/Float.test.ts +9 -19
- package/components/Questions/__tests__/Int.test.ts +9 -19
- package/components/Questions/__tests__/String.test.ts +9 -19
- package/components/Questions/__tests__/Yaml.test.ts +9 -20
- package/components/Questions/__tests__/utils/questions-defaults.ts +20 -0
- package/components/Questions/index.vue +18 -2
- package/components/ResourceCancelModal.vue +34 -29
- package/components/ResourceDetail/Masthead.vue +23 -7
- package/components/ResourceDetail/index.vue +5 -0
- package/components/ResourceList/Masthead.vue +28 -10
- package/components/ResourceList/index.vue +65 -14
- package/components/ResourceTable.vue +73 -19
- package/components/ResourceYaml.vue +1 -0
- package/components/SelectIconGrid.vue +3 -3
- package/components/SideNav.vue +15 -37
- package/components/SingleClusterInfo.vue +4 -4
- package/components/SortableTable/THead.vue +26 -12
- package/components/SortableTable/filtering.js +9 -1
- package/components/SortableTable/grouping.js +8 -1
- package/components/SortableTable/index.vue +142 -42
- package/components/SortableTable/paging.js +36 -7
- package/components/SortableTable/selection.js +2 -1
- package/components/SortableTable/sorting.js +24 -7
- package/components/TabTitle.vue +84 -0
- package/components/Tabbed/index.vue +6 -1
- package/components/TableDataUserIcon.vue +47 -0
- package/components/TypeDescription.vue +1 -0
- package/components/Wizard.vue +1 -0
- package/components/__tests__/AppModal.test.ts +98 -0
- package/components/__tests__/AsyncButton.test.ts +1 -3
- package/components/__tests__/BackLink.test.ts +1 -1
- package/components/__tests__/ButtonGroup.test.ts +3 -6
- package/components/__tests__/Carousel.test.ts +43 -0
- package/components/__tests__/Certificates.test.ts +29 -0
- package/components/__tests__/{CodeMirror.spec.ts → CodeMirror.test.ts} +5 -17
- package/components/__tests__/CruResource.test.ts +10 -9
- package/components/__tests__/EtcdInfoBanner.test.ts +37 -0
- package/components/__tests__/FixedBanner.test.ts +5 -20
- package/components/__tests__/NamespaceFilter.test.ts +9 -18
- package/components/__tests__/TabTitle.test.ts +129 -0
- package/components/auth/AzureWarning.vue +2 -2
- package/components/auth/RoleDetailEdit.vue +10 -0
- package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
- package/components/auth/login/oidc.vue +7 -1
- package/components/fleet/FleetClusters.vue +9 -9
- package/components/fleet/FleetIntro.vue +11 -17
- package/components/fleet/FleetNoWorkspaces.vue +2 -2
- package/components/fleet/FleetRepos.vue +1 -0
- package/components/fleet/ForceDirectedTreeChart/index.vue +9 -3
- package/components/form/ArrayList.vue +30 -19
- package/components/form/ArrayListSelect.vue +9 -4
- package/components/form/ClusterAppearance.vue +132 -0
- package/components/form/ColorInput.vue +1 -0
- package/components/form/Error.vue +3 -3
- package/components/form/Footer.vue +2 -2
- package/components/form/GitPicker.vue +83 -38
- package/components/form/KeyValue.vue +67 -48
- package/components/form/LabeledSelect.vue +143 -43
- package/components/form/Labels.vue +3 -1
- package/components/form/NameNsDescription.vue +26 -9
- package/components/form/ResourceLabeledSelect.vue +187 -0
- package/components/form/ResourceTabs/index.vue +31 -15
- package/components/form/SecretSelector.vue +93 -18
- package/components/form/Select.vue +1 -1
- package/components/form/SelectOrCreateAuthSecret.vue +135 -62
- package/components/form/SimpleSecretSelector.vue +88 -28
- package/components/form/__tests__/BannerSettings.test.ts +53 -0
- package/components/form/__tests__/KeyValue.test.ts +121 -12
- package/components/form/__tests__/LabeledSelect.test.ts +0 -18
- package/components/form/__tests__/NameNsDescription.test.ts +25 -15
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +151 -0
- package/components/form/labeled-select-utils/labeled-select.utils.ts +122 -0
- package/components/formatter/AppSummaryGraph.vue +2 -2
- package/components/formatter/CloudCredPublicData.vue +30 -0
- package/components/formatter/ClusterLink.vue +2 -2
- package/components/formatter/FleetSummaryGraph.vue +2 -1
- package/components/formatter/ImagePercentageBar.vue +0 -4
- package/components/formatter/IngressTarget.vue +18 -7
- package/components/formatter/Link.vue +2 -2
- package/components/formatter/LinkDetail.vue +2 -2
- package/components/formatter/LinkDetailImage.vue +2 -2
- package/components/formatter/LinkName.vue +2 -2
- package/components/formatter/LiveDate.vue +16 -0
- package/components/formatter/PrincipalGroupBindings.vue +2 -2
- package/components/formatter/SecretType.vue +2 -2
- package/components/formatter/VirtualServiceGateways.vue +2 -2
- package/components/formatter/__tests__/LinkDetail.test.ts +5 -5
- package/components/nav/Group.vue +7 -5
- package/components/nav/Header.vue +82 -43
- package/components/nav/NamespaceFilter.vue +8 -1
- package/components/nav/TopLevelMenu.vue +336 -125
- package/components/nav/Type.vue +58 -102
- package/components/nav/__tests__/TopLevelMenu.test.ts +370 -9
- package/components/nav/__tests__/Type.test.ts +321 -126
- package/components/nuxt/nuxt-child.js +0 -5
- package/components/nuxt/nuxt-error.vue +1 -1
- package/components/nuxt/nuxt-link.client.js +13 -95
- package/components/templates/default.vue +3 -3
- package/components/templates/error.vue +6 -10
- package/components/templates/standalone.vue +0 -4
- package/components/templates/unauthenticated.vue +1 -2
- package/components/user.retention/user-retention-header.vue +34 -0
- package/composables/useCompactInput.test.ts +36 -0
- package/composables/useCompactInput.ts +2 -2
- package/composables/useI18n.ts +26 -0
- package/composables/useLabeledFormElement.test.ts +135 -0
- package/composables/useStore.ts +16 -0
- package/config/home-links.js +32 -1
- package/config/labels-annotations.js +2 -1
- package/config/middleware.js +0 -6
- package/config/pagination-table-headers.js +57 -0
- package/config/pod-security-admission.ts +1 -1
- package/config/private-label.js +1 -3
- package/config/product/auth.js +1 -0
- package/config/product/explorer.js +167 -46
- package/config/product/legacy.js +3 -95
- package/config/product/manager.js +44 -11
- package/config/query-params.js +1 -0
- package/config/roles.ts +23 -0
- package/config/router/index.js +23 -0
- package/config/router/navigation-guards/attempt-first-login.js +73 -0
- package/config/router/navigation-guards/authentication.js +63 -0
- package/config/router/navigation-guards/index.js +15 -0
- package/config/router/navigation-guards/load-initial-settings.js +15 -0
- package/config/router/routes.js +487 -0
- package/config/settings.ts +38 -2
- package/config/store.js +7 -3
- package/config/table-headers.js +46 -1
- package/config/types.js +36 -16
- package/config/uiplugins.js +10 -5
- package/core/plugin-helpers.js +1 -1
- package/core/plugin.ts +2 -1
- package/core/plugins.js +289 -282
- package/creators/app/files/.eslintignore +0 -2
- package/creators/app/files/.vscode/settings.json +0 -1
- package/creators/pkg/files/.github/workflows/build-extension-catalog.yml +2 -6
- package/creators/pkg/files/.github/workflows/build-extension-charts.yml +2 -6
- package/creators/pkg/init +32 -0
- package/detail/__tests__/service.test.ts +62 -0
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/cis.cattle.io.clusterscan.vue +14 -3
- package/detail/fleet.cattle.io.gitrepo.vue +15 -9
- package/detail/namespace.vue +2 -2
- package/detail/networking.k8s.io.ingress.vue +52 -19
- package/detail/node.vue +20 -43
- package/detail/pod.vue +1 -68
- package/detail/provisioning.cattle.io.cluster.vue +2 -1
- package/detail/service.vue +1 -1
- package/detail/workload/index.vue +2 -15
- package/dialog/AddCustomBadgeDialog.vue +318 -161
- package/dialog/DeactivateDriverDialog.vue +118 -0
- package/dialog/RollbackWorkloadDialog.vue +2 -2
- package/dialog/RotateCertificatesDialog.vue +0 -21
- package/directives/clean-html.js +15 -0
- package/directives/clean-tooltip.js +32 -0
- package/directives/focus.js +41 -0
- package/directives/int-number.js +21 -0
- package/directives/positive-int-number.js +19 -0
- package/directives/trim-whitespace.js +19 -0
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +3 -2
- package/edit/__tests__/kontainerDriver.test.ts +107 -0
- package/edit/__tests__/management.cattle.io.clusterroletemplatebinding.test.ts +12 -1
- package/edit/__tests__/management.cattle.io.setting.test.ts +2 -1
- package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +2 -3
- package/edit/__tests__/nodeDriver.test.ts +107 -0
- package/edit/__tests__/service.test.ts +1 -5
- package/edit/__tests__/ui.cattle.io.navlink.test.ts +3 -1
- package/edit/auth/AuthProviderWarningBanners.vue +34 -0
- package/edit/auth/__tests__/AuthProviderWarningBanners.test.ts +19 -0
- package/edit/auth/__tests__/azuread.test.ts +241 -0
- package/edit/auth/__tests__/oidc.test.ts +137 -0
- package/edit/auth/azuread.vue +133 -31
- package/edit/auth/github.vue +5 -17
- package/edit/auth/googleoauth.vue +5 -18
- package/edit/auth/ldap/index.vue +5 -17
- package/edit/auth/oidc.vue +143 -42
- package/edit/auth/saml.vue +5 -14
- package/edit/catalog.cattle.io.clusterrepo.vue +175 -20
- package/edit/cis.cattle.io.clusterscan.vue +5 -2
- package/edit/cis.cattle.io.clusterscanbenchmark.vue +41 -9
- package/edit/cloudcredential.vue +26 -4
- package/edit/configmap.vue +10 -4
- package/edit/fleet.cattle.io.gitrepo.vue +7 -4
- package/edit/helm.cattle.io.projecthelmchart.vue +29 -19
- package/edit/kontainerDriver.vue +65 -0
- package/edit/logging-flow/Match.vue +10 -9
- package/edit/logging-flow/index.vue +4 -19
- package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +232 -2
- package/edit/logging.banzaicloud.io.output/index.vue +43 -26
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +3 -3
- package/edit/management.cattle.io.project.vue +2 -1
- package/edit/management.cattle.io.setting.vue +20 -0
- package/edit/management.cattle.io.user.vue +2 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +10 -7
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +21 -16
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +1 -0
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +3 -0
- package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +2 -0
- package/edit/monitoring.coreos.com.prometheusrule/RecordingRule.vue +2 -0
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +2 -0
- package/edit/networking.k8s.io.ingress/Rules.vue +8 -3
- package/edit/networking.k8s.io.ingress/index.vue +64 -8
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +1 -0
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +6 -2
- package/edit/networking.k8s.io.networkpolicy/__tests__/{PolicyRuleTarget.spec.ts → PolicyRuleTarget.test.ts} +45 -6
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/selectors.test.ts +1 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +2 -0
- package/edit/nodeDriver.vue +65 -0
- package/edit/persistentvolume/index.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +18 -9
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +165 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +0 -3
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +228 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +70 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +5 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +21 -15
- package/edit/provisioning.cattle.io.cluster/rke2.vue +185 -114
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +67 -7
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +19 -6
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +132 -0
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +7 -0
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/S3Config.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +3 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +1 -0
- package/edit/resources.cattle.io.backup.vue +139 -124
- package/edit/resources.cattle.io.restore.vue +146 -126
- package/edit/service.vue +1 -0
- package/edit/serviceaccount.vue +46 -4
- package/edit/workload/__tests__/Job.test.ts +1 -3
- package/edit/workload/__tests__/Upgrading.test.ts +2 -2
- package/edit/workload/mixins/workload.js +34 -1
- package/edit/workload/storage/emptyDir.vue +2 -2
- package/initialize/App.vue +75 -0
- package/initialize/app-extended.js +128 -0
- package/initialize/entry-helpers.js +549 -0
- package/initialize/entry.js +32 -0
- package/initialize/install-components.js +23 -0
- package/initialize/install-directives.js +59 -0
- package/initialize/install-plugins.js +123 -0
- package/list/__tests__/workload.test.ts +1 -1
- package/list/cis.cattle.io.clusterscan.vue +16 -10
- package/list/group.principal.vue +2 -2
- package/list/management.cattle.io.feature.vue +11 -7
- package/list/management.cattle.io.user.vue +36 -3
- package/list/networking.k8s.io.ingress.vue +36 -0
- package/list/node.vue +211 -73
- package/list/provisioning.cattle.io.cluster.vue +17 -4
- package/list/ui.cattle.io.navlink.vue +2 -2
- package/list/workload.vue +22 -0
- package/machine-config/__tests__/vmwarevsphere-pool-config-merge.test.ts +30 -0
- package/machine-config/__tests__/vmwarevsphere.test.ts +162 -59
- package/machine-config/amazonec2.vue +1 -1
- package/machine-config/azure.vue +38 -21
- package/machine-config/generic.vue +11 -15
- package/machine-config/vmwarevsphere-pool-config-merge.ts +25 -0
- package/machine-config/vmwarevsphere.vue +20 -11
- package/middleware/authenticated.js +9 -361
- package/mixins/__tests__/chart.test.ts +48 -6
- package/mixins/__tests__/create-edit-view.test.ts +2 -3
- package/mixins/auth-config.js +3 -2
- package/mixins/brand.js +75 -57
- package/mixins/chart.js +27 -13
- package/mixins/create-edit-view/index.js +2 -2
- package/mixins/fetch.client.js +42 -48
- package/mixins/labeled-form-element.ts +21 -1
- package/mixins/page-actions.js +7 -5
- package/mixins/resource-fetch-api-pagination.js +304 -0
- package/mixins/resource-fetch-namespaced.js +1 -1
- package/mixins/resource-fetch.js +46 -5
- package/models/__tests__/cluster.test.ts +44 -0
- package/models/__tests__/fleet.cattle.io.cluster.test.ts +36 -0
- package/models/__tests__/schema.tests.ts +24 -0
- package/models/__tests__/steve-schema.test.ts +73 -0
- package/models/__tests__/workload.test.ts +1 -1
- package/models/catalog.cattle.io.app.js +8 -0
- package/models/catalog.cattle.io.clusterrepo.js +9 -1
- package/models/catalog.cattle.io.uiplugin.js +7 -8
- package/models/cis.cattle.io.clusterscan.js +29 -8
- package/models/cloudcredential.js +9 -1
- package/models/cluster/node.js +4 -0
- package/models/cluster/schema.js +6 -0
- package/models/cluster.js +33 -0
- package/models/driver.js +62 -0
- package/models/fleet.cattle.io.cluster.js +23 -11
- package/models/fleet.cattle.io.gitrepo.js +10 -0
- package/models/helm.cattle.io.projecthelmchart.js +1 -1
- package/models/kontainerdriver.js +68 -0
- package/models/management/schema.js +6 -0
- package/models/management.cattle.io.authconfig.js +3 -2
- package/models/management.cattle.io.cluster.js +5 -4
- package/models/management.cattle.io.globalrole.js +2 -0
- package/models/management.cattle.io.user.js +67 -2
- package/models/monitoring.coreos.com.receiver.js +3 -1
- package/models/monitoring.coreos.com.route.js +1 -1
- package/models/networking.k8s.io.ingress.js +2 -1
- package/models/nodedriver.js +68 -0
- package/models/provisioning.cattle.io.cluster.js +34 -1
- package/models/schema.js +28 -7
- package/models/service.js +2 -0
- package/models/steve-schema.ts +254 -0
- package/models/workload.js +1 -0
- package/package.json +6 -5
- package/pages/about.vue +12 -5
- package/pages/account/index.vue +7 -2
- package/pages/auth/login.vue +106 -102
- package/pages/auth/logout.vue +2 -2
- package/pages/auth/setup.vue +57 -64
- package/pages/auth/verify.vue +17 -17
- package/pages/c/_cluster/apps/charts/chart.vue +54 -9
- package/pages/c/_cluster/apps/charts/index.vue +37 -13
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/auth/config/_id.vue +0 -6
- package/pages/c/_cluster/auth/config/index.vue +15 -9
- package/pages/c/_cluster/auth/roles/index.vue +8 -10
- package/pages/c/_cluster/auth/user.retention/index.vue +384 -0
- package/pages/c/_cluster/explorer/ConfigBadge.vue +13 -8
- package/pages/c/_cluster/explorer/EventsTable.vue +18 -0
- package/pages/c/_cluster/explorer/__tests__/index.test.ts +181 -0
- package/pages/c/_cluster/explorer/index.vue +231 -72
- package/pages/c/_cluster/explorer/tools/__tests__/index.test.ts +69 -0
- package/pages/c/_cluster/explorer/tools/index.vue +12 -176
- package/pages/c/_cluster/fleet/index.vue +88 -93
- package/pages/c/_cluster/longhorn/__tests__/longhorn.index.test.ts +89 -0
- package/pages/c/_cluster/longhorn/index.vue +52 -17
- package/pages/c/_cluster/manager/cloudCredential/index.vue +18 -25
- package/pages/c/_cluster/manager/drivers/kontainerDriver/_id.vue +12 -0
- package/pages/c/_cluster/manager/drivers/kontainerDriver/create.vue +15 -0
- package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +94 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/_id.vue +12 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/create.vue +15 -0
- package/pages/c/_cluster/manager/drivers/nodeDriver/index.vue +63 -0
- package/pages/c/_cluster/manager/jwt.authentication/index.vue +235 -0
- package/pages/c/_cluster/monitoring/alertmanagerconfig/_alertmanagerconfigid/receiver.vue +4 -0
- package/pages/c/_cluster/monitoring/index.vue +1 -17
- package/pages/c/_cluster/monitoring/route-receiver/index.vue +2 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -0
- package/pages/c/_cluster/settings/DefaultLinksEditor.vue +1 -0
- package/pages/c/_cluster/settings/banners.vue +86 -8
- package/pages/c/_cluster/settings/brand.vue +258 -36
- package/pages/c/_cluster/settings/index.vue +4 -4
- package/pages/c/_cluster/settings/links.vue +5 -3
- package/pages/c/_cluster/settings/performance.vue +71 -2
- package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +5 -2
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +10 -7
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +9 -6
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +11 -5
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +53 -18
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +36 -301
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +14 -6
- package/pages/c/_cluster/uiplugins/__tests__/SetupUIPlugins.test.ts +52 -106
- package/pages/c/_cluster/uiplugins/index.vue +38 -52
- package/pages/diagnostic.vue +1 -0
- package/pages/fail-whale.vue +103 -41
- package/pages/home.vue +81 -24
- package/pages/prefs.vue +8 -3
- package/pages/support/index.vue +12 -2
- package/plugins/clean-html-directive.js +5 -12
- package/plugins/clean-tooltip-directive.js +6 -31
- package/plugins/codemirror.js +0 -9
- package/plugins/dashboard-store/__tests__/mutations.test.ts +296 -313
- package/plugins/dashboard-store/actions.js +140 -32
- package/plugins/dashboard-store/getters.js +86 -39
- package/plugins/dashboard-store/index.js +0 -99
- package/plugins/dashboard-store/mutations.js +150 -48
- package/plugins/dashboard-store/resource-class.js +14 -109
- package/plugins/directives.js +6 -39
- package/plugins/ember-cookie.js +13 -0
- package/plugins/global-formatters.js +26 -5
- package/plugins/i18n.js +90 -56
- package/plugins/int-number.js +6 -20
- package/plugins/plugin.js +3 -3
- package/plugins/positive-int-number.js +6 -17
- package/plugins/steve/__tests__/{getters.spec.ts → getters.test.ts} +124 -31
- package/plugins/steve/__tests__/mutations.test.ts +49 -0
- package/plugins/steve/__tests__/subscribe.spec.ts +109 -0
- package/plugins/steve/__tests__/utils/mutation.test.helpers.ts +105 -0
- package/plugins/steve/accept-or-reject-socket-message.ts +103 -0
- package/plugins/steve/actions.js +0 -1
- package/plugins/steve/getters.js +183 -63
- package/plugins/steve/hybrid-class.js +5 -1
- package/plugins/steve/mutations.js +29 -5
- package/plugins/steve/norman-class.js +123 -2
- package/{utils → plugins/steve}/projectAndNamespaceFiltering.utils.ts +28 -10
- package/plugins/steve/schema.d.ts +22 -0
- package/plugins/steve/steve-pagination-utils.ts +368 -0
- package/plugins/steve/subscribe.js +37 -75
- package/plugins/trim-whitespace.js +6 -34
- package/plugins/vue-js-modal.js +1 -1
- package/public/index.html +1 -0
- package/rancher-components/Accordion/Accordion.vue +3 -2
- package/rancher-components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/Banner/Banner.test.ts +1 -5
- package/rancher-components/Banner/Banner.vue +2 -2
- package/rancher-components/Card/Card.vue +4 -4
- package/rancher-components/Form/Checkbox/Checkbox.vue +4 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +1 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +66 -30
- package/rancher-components/Form/Radio/RadioButton.test.ts +1 -3
- package/rancher-components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/StringList/StringList.vue +8 -8
- package/rancher-components/components/Accordion/Accordion.vue +3 -2
- package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/components/Banner/Banner.test.ts +1 -5
- package/rancher-components/components/Banner/Banner.vue +2 -2
- package/rancher-components/components/Card/Card.vue +4 -4
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +4 -3
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +1 -1
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +66 -30
- package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -3
- package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +7 -5
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/components/StringList/StringList.vue +8 -8
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +27 -8
- package/scripts/clean +1 -1
- package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +11 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -0
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helm/package/Dockerfile +1 -1
- package/scripts/extension/helm/scripts/patch +27 -0
- package/scripts/extension/publish +6 -6
- package/scripts/serve-pkgs +0 -2
- package/scripts/test-plugins-build.sh +6 -6
- package/scripts/vue-migrate.js +683 -0
- package/store/__tests__/catalog.test.ts +224 -0
- package/store/auth.js +23 -4
- package/store/aws.js +53 -6
- package/store/catalog.js +21 -5
- package/store/cru-resource.ts +26 -0
- package/store/customisation.js +35 -0
- package/store/features.js +6 -4
- package/store/index.js +132 -39
- package/store/plugins.js +8 -4
- package/store/type-map.js +143 -143
- package/store/type-map.utils.ts +226 -0
- package/tsconfig.json +0 -1
- package/tsconfig.paths.json +4 -1
- package/types/components/labeledSelect.ts +50 -0
- package/types/resources/settings.d.ts +32 -0
- package/types/{userPreferences.d.ts → resources/userPreferences.d.ts} +0 -1
- package/types/shell/index.d.ts +996 -782
- package/types/store/dashboard-store.types.ts +42 -0
- package/types/store/pagination.types.ts +457 -0
- package/types/store/type-map.ts +30 -0
- package/types/store/vuex.d.ts +9 -0
- package/types/vue-shim.d.ts +51 -0
- package/utils/__tests__/cluster.test.ts +20 -18
- package/utils/__tests__/create-yaml.test.ts +359 -2
- package/utils/__tests__/kontainer.test.ts +92 -0
- package/utils/__tests__/pod-security-admission.test.ts +1 -1
- package/utils/alertmanagerconfig.js +19 -0
- package/utils/array.ts +40 -1
- package/utils/async.ts +2 -0
- package/utils/auth.js +152 -4
- package/utils/axios.js +2 -2
- package/utils/banners.js +103 -0
- package/utils/cluster.js +1 -1
- package/utils/config.js +4 -0
- package/utils/create-yaml.js +54 -27
- package/utils/error.js +25 -0
- package/utils/formatter.js +5 -3
- package/utils/git.ts +1 -1
- package/utils/install-redirect.js +1 -1
- package/utils/kontainer.ts +186 -0
- package/utils/monitoring.js +2 -37
- package/utils/pagination-utils.ts +154 -0
- package/utils/pod-security-admission.ts +1 -1
- package/utils/router.js +86 -0
- package/utils/settings.ts +46 -0
- package/utils/socket.js +1 -0
- package/utils/time.js +1 -0
- package/utils/title.ts +3 -0
- package/utils/unit-tests/ChildRenderingRouterLinkStub.ts +36 -0
- package/utils/validators/formRules/__tests__/index.test.ts +21 -0
- package/utils/validators/formRules/index.ts +3 -0
- package/utils/validators/index.js +1 -0
- package/vue.config.js +376 -421
- package/assets/styles/vendor/vue-js-modal.scss +0 -16
- package/chart/monitoring/steps/uninstall-v1.vue +0 -135
- package/components/EventsTable.vue +0 -67
- package/components/TabbedLinks/index.vue +0 -94
- package/components/nuxt/nuxt-link.server.js +0 -16
- package/components/nuxt/nuxt.js +0 -101
- package/config/router.js +0 -425
- package/initialize/App.js +0 -152
- package/initialize/client.js +0 -734
- package/initialize/index.js +0 -287
- package/middleware/i18n.js +0 -10
- package/middleware/unauthenticated.js +0 -22
- package/mixins/v1-workload-metrics.js +0 -43
- package/pages/c/_cluster/apps/index.vue +0 -15
- package/pages/c/_cluster/auth/index.vue +0 -17
- package/pages/c/_cluster/index.vue +0 -15
- package/pages/c/_cluster/legacy/index.vue +0 -22
- package/pages/c/_cluster/manager/index.vue +0 -22
- package/pages/c/_cluster/mcapps/index.vue +0 -21
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +0 -232
- package/plugins/dashboard-store/rehydrate-all.js +0 -44
- package/plugins/index.js +0 -11
- package/plugins/portal-vue.js +0 -4
- package/plugins/portal.js +0 -4
- package/plugins/resize.js +0 -5
- package/plugins/shortkey.js +0 -4
- package/plugins/tooltip.js +0 -4
- package/plugins/v-select.js +0 -4
- package/utils/group.js +0 -70
- package/utils/nuxt.js +0 -638
- package/utils/router.scrollBehavior.js +0 -78
- /package/components/__tests__/{Collapse.spec.ts → Collapse.test.ts} +0 -0
- /package/models/__tests__/{node.ts → node.test.ts} +0 -0
- /package/plugins/steve/__tests__/{header-warnings.spec.ts → header-warnings.test.ts} +0 -0
- /package/plugins/steve/__tests__/{steve-class.spec.ts → steve-class.test.ts} +0 -0
- /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /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', '
|
|
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', '
|
|
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', '
|
|
28
|
-
['0123-4567-89ab-cdef-ghij', '
|
|
29
|
-
['0123-4567-8901-2345', '
|
|
30
|
-
['0123-4567-8901-2345-6789', '
|
|
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', '
|
|
33
|
-
['ab12cd34', '
|
|
34
|
-
['test-cluster-one', '
|
|
32
|
+
['a1b2', 'a12'],
|
|
33
|
+
['ab12cd34', 'a14'],
|
|
34
|
+
['test-cluster-one', 'tce'],
|
|
35
35
|
['test-cluster-1', 'tc1'],
|
|
36
|
-
['customer-support-team-1', '
|
|
37
|
-
['customer-support-team-one', '
|
|
38
|
-
['customer-support-team-prod', '
|
|
39
|
-
['customer-support-team-dev', '
|
|
40
|
-
['customer-support-team-prod-1', '
|
|
41
|
-
['customer-support-team-
|
|
42
|
-
['customer-support-team-
|
|
43
|
-
['customer-support-team-
|
|
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'],
|