@rancher/shell 3.0.4 → 3.0.5-rc.2
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/images/providers/sks.svg +1 -0
- package/assets/styles/base/_basic.scss +6 -0
- package/assets/styles/base/_helpers.scss +4 -0
- package/assets/styles/base/_variables.scss +1 -0
- package/assets/styles/global/_button.scss +1 -0
- package/assets/translations/en-us.yaml +65 -15
- package/assets/translations/zh-hans.yaml +4 -3
- package/chart/monitoring/index.vue +3 -1
- package/cloud-credential/aws.vue +2 -0
- package/components/ActionDropdownShell.vue +71 -0
- package/components/AppModal.vue +18 -4
- package/components/AsyncButton.vue +24 -7
- package/components/BannerGraphic.vue +1 -0
- package/components/CommunityLinks.vue +4 -59
- package/components/CopyToClipboardText.vue +2 -1
- package/components/CruResource.vue +6 -1
- package/components/DetailText.vue +5 -0
- package/components/ExplorerMembers.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +68 -18
- package/components/GlobalRoleBindings.vue +5 -1
- package/components/GrowlManager.vue +1 -0
- package/components/LandingPagePreference.vue +7 -3
- package/components/LocaleSelector.vue +39 -95
- package/components/ModalManager.vue +55 -0
- package/components/ModalWithCard.vue +1 -0
- package/components/PromptModal.vue +47 -8
- package/components/PromptRemove.vue +1 -0
- package/components/PromptRestore.vue +1 -0
- package/components/ResourceCancelModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +38 -12
- package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
- package/components/ResourceDetail/index.vue +47 -12
- package/components/ResourceTable.vue +54 -19
- package/components/SideNav.vue +5 -1
- package/components/SlideInPanelManager.vue +126 -0
- package/components/SortableTable/THead.vue +5 -2
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +64 -51
- package/components/SortableTable/paging.js +16 -19
- package/components/SortableTable/selection.js +0 -11
- package/components/Wizard.vue +2 -2
- package/components/__tests__/AsyncButton.test.ts +2 -2
- package/components/__tests__/ModalManager.spec.ts +176 -0
- package/components/__tests__/PromptModal.test.ts +148 -0
- package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
- package/components/auth/AuthBanner.vue +13 -11
- package/components/auth/Principal.vue +1 -0
- package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
- package/components/auth/login/ldap.vue +1 -1
- package/components/fleet/FleetResources.vue +21 -6
- package/components/form/ArrayList.vue +76 -60
- package/components/form/BannerSettings.vue +17 -2
- package/components/form/ColorInput.vue +35 -6
- package/components/form/Command.vue +6 -15
- package/components/form/EnvVars.vue +16 -8
- package/components/form/HealthCheck.vue +3 -3
- package/components/form/HookOption.vue +11 -16
- package/components/form/LabeledSelect.vue +18 -22
- package/components/form/LifecycleHooks.vue +3 -3
- package/components/form/MatchExpressions.vue +14 -8
- package/components/form/NameNsDescription.vue +128 -104
- package/components/form/Networking.vue +20 -12
- package/components/form/NodeAffinity.vue +31 -23
- package/components/form/NodeScheduling.vue +13 -3
- package/components/form/NotificationSettings.vue +15 -1
- package/components/form/Password.vue +1 -0
- package/components/form/PodAffinity.vue +43 -43
- package/components/form/Probe.vue +68 -66
- package/components/form/ResourceQuota/Project.vue +5 -1
- package/components/form/ResourceSelector.vue +7 -9
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +16 -24
- package/components/form/SSHKnownHosts/index.vue +30 -13
- package/components/form/Security.vue +54 -56
- package/components/form/Select.vue +32 -21
- package/components/form/ShellInput.vue +5 -1
- package/components/form/Tolerations.vue +5 -1
- package/components/form/ValueFromResource.vue +134 -121
- package/components/form/WorkloadPorts.vue +18 -18
- package/components/form/__tests__/ArrayList.test.ts +5 -2
- package/components/form/__tests__/ColorInput.test.ts +35 -0
- package/components/form/__tests__/LabeledSelect.test.ts +40 -0
- package/components/form/__tests__/MatchExpressions.test.ts +12 -12
- package/components/form/__tests__/NameNsDescription.test.ts +115 -14
- package/components/form/__tests__/Probe.test.ts +12 -8
- package/components/form/__tests__/SSHKnownHosts.test.ts +22 -2
- package/components/form/__tests__/Select.test.ts +37 -0
- package/components/formatter/InternalExternalIP.vue +2 -0
- package/components/formatter/SecretData.vue +20 -7
- package/components/nav/Group.vue +27 -5
- package/components/nav/Header.vue +17 -43
- package/components/nav/NamespaceFilter.vue +134 -86
- package/components/nav/TopLevelMenu.vue +4 -5
- package/components/nav/Type.vue +12 -1
- package/components/nav/WindowManager/ContainerLogs.vue +87 -61
- package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
- package/components/templates/blank.vue +4 -1
- package/components/templates/default.vue +8 -3
- package/components/templates/home.vue +10 -1
- package/components/templates/plain.vue +10 -4
- package/composables/focusTrap.ts +12 -4
- package/composables/useRuntimeFlag.ts +29 -0
- package/config/router/routes.js +20 -13
- package/config/store.js +4 -0
- package/config/uiplugins.js +5 -1
- package/core/types.ts +12 -6
- package/detail/catalog.cattle.io.app.vue +6 -1
- package/detail/fleet.cattle.io.bundle.vue +70 -6
- package/detail/fleet.cattle.io.gitrepo.vue +1 -1
- package/detail/namespace.vue +0 -3
- package/detail/node.vue +17 -13
- package/detail/provisioning.cattle.io.cluster.vue +72 -6
- package/dialog/AddCustomBadgeDialog.vue +1 -1
- package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
- package/{components/AssignTo.vue → dialog/AssignToDialog.vue} +71 -80
- package/dialog/ChangePasswordDialog.vue +106 -0
- package/dialog/DeactivateDriverDialog.vue +1 -0
- package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
- package/dialog/DisableAuthProviderDialog.vue +101 -0
- package/dialog/DrainNode.vue +1 -1
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +69 -57
- package/dialog/FeatureFlagListDialog.vue +288 -0
- package/dialog/ForceMachineRemoveDialog.vue +5 -2
- package/{components/Import.vue → dialog/ImportDialog.vue} +0 -5
- package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
- package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -59
- package/dialog/MoveNamespaceDialog.vue +157 -0
- package/dialog/ScalePoolDownDialog.vue +1 -1
- package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
- package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
- package/dialog/WechatDialog.vue +57 -0
- package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +16 -3
- package/edit/auth/__tests__/oidc.test.ts +152 -109
- package/edit/auth/azuread.vue +2 -1
- package/edit/auth/github.vue +1 -1
- package/edit/auth/googleoauth.vue +5 -1
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +38 -5
- package/edit/auth/saml.vue +1 -1
- package/edit/cloudcredential.vue +24 -9
- package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +40 -9
- package/edit/management.cattle.io.user.vue +28 -3
- package/edit/namespace.vue +1 -4
- package/edit/networking.k8s.io.ingress/IngressClass.vue +7 -3
- package/edit/networking.k8s.io.ingress/__tests__/IngressClass.test.ts +58 -0
- package/edit/persistentvolume/__tests__/persistentvolume.test.ts +14 -2
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -9
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -8
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +66 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
- package/edit/provisioning.cattle.io.cluster/rke2.vue +49 -41
- package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +6 -1
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +33 -2
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +2 -2
- package/edit/token.vue +2 -0
- package/edit/workload/index.vue +1 -0
- package/edit/workload/mixins/workload.js +0 -2
- package/initialize/install-plugins.js +2 -1
- package/list/harvesterhci.io.management.cluster.vue +4 -1
- package/list/management.cattle.io.feature.vue +4 -287
- package/list/provisioning.cattle.io.cluster.vue +20 -12
- package/machine-config/azure.vue +16 -4
- package/mixins/vue-select-overrides.js +0 -4
- package/models/__tests__/namespace.test.ts +25 -1
- package/models/cloudcredential.js +5 -0
- package/models/fleet.cattle.io.cluster.js +8 -2
- package/models/fleet.cattle.io.gitrepo.js +8 -34
- package/models/kontainerdriver.js +6 -3
- package/models/management.cattle.io.feature.js +7 -1
- package/models/management.cattle.io.node.js +3 -3
- package/models/namespace.js +11 -6
- package/models/nodedriver.js +6 -3
- package/models/workload.js +4 -1
- package/package.json +3 -3
- package/pages/about.vue +13 -3
- package/pages/account/index.vue +16 -6
- package/pages/auth/login.vue +18 -7
- package/pages/auth/logout.vue +4 -1
- package/pages/auth/setup.vue +2 -0
- package/pages/auth/verify.vue +13 -8
- package/pages/c/_cluster/apps/charts/chart.vue +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +26 -26
- package/pages/c/_cluster/auth/config/index.vue +10 -12
- package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
- package/pages/c/_cluster/explorer/index.vue +17 -15
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/banners.vue +4 -3
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
- package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
- package/pages/c/_cluster/uiplugins/index.vue +98 -55
- package/pages/diagnostic.vue +59 -11
- package/pages/fail-whale.vue +14 -8
- package/pages/home.vue +24 -18
- package/pages/prefs.vue +7 -6
- package/pages/support/index.vue +4 -1
- package/plugins/internal-api/index.ts +37 -0
- package/plugins/internal-api/shared/base-api.ts +13 -0
- package/plugins/internal-api/shell/shell.api.ts +108 -0
- package/plugins/steve/actions.js +0 -12
- package/public/index.html +1 -0
- package/rancher-components/Card/Card.vue +1 -1
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +27 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +47 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +20 -2
- package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
- package/rancher-components/Form/Radio/RadioButton.vue +20 -4
- package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +52 -10
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +17 -0
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +5 -0
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +10 -1
- package/rancher-components/RcButton/RcButton.vue +2 -1
- package/rancher-components/RcButton/types.ts +1 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +18 -6
- package/rancher-components/RcDropdown/RcDropdownItem.vue +3 -56
- package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +68 -0
- package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +92 -0
- package/rancher-components/RcDropdown/RcDropdownTrigger.vue +10 -0
- package/rancher-components/RcDropdown/index.ts +2 -0
- package/rancher-components/RcDropdown/useDropdownCollection.ts +8 -0
- package/rancher-components/RcDropdown/useDropdownContext.ts +9 -3
- package/rancher-components/RcDropdown/useDropdownItem.ts +63 -0
- package/scripts/extension/bundle +20 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helmpatch +44 -31
- package/scripts/extension/publish +12 -12
- package/scripts/typegen.sh +2 -4
- package/server/har-file.js +25 -3
- package/store/action-menu.js +26 -56
- package/store/features.js +2 -1
- package/store/index.js +5 -0
- package/store/modal.ts +71 -0
- package/store/slideInPanel.ts +47 -0
- package/store/type-map.js +12 -1
- package/store/type-map.utils.ts +4 -4
- package/types/global-vue.d.ts +5 -0
- package/types/internal-api/shell/growl.d.ts +25 -0
- package/types/internal-api/shell/modal.d.ts +77 -0
- package/types/internal-api/shell/slideIn.d.ts +15 -0
- package/types/resources/fleet.d.ts +0 -14
- package/types/shell/index.d.ts +43 -24
- package/types/vue-shim.d.ts +4 -1
- package/utils/__mocks__/tabbable.js +13 -0
- package/utils/__tests__/object.test.ts +38 -4
- package/utils/cluster.js +35 -0
- package/utils/fleet.ts +15 -73
- package/utils/object.js +48 -5
- package/utils/validators/formRules/__tests__/index.test.ts +10 -1
- package/utils/validators/formRules/index.ts +27 -3
- package/utils/validators/machine-pool.ts +20 -0
- package/components/DisableAuthProviderModal.vue +0 -114
- package/components/MoveModal.vue +0 -166
- package/components/PromptChangePassword.vue +0 -123
- package/components/fleet/FleetBundleResources.vue +0 -86
- package/components/formatter/ExtensionCache.vue +0 -74
- package/components/formatter/Port.vue +0 -24
- package/components/formatter/SecretType.vue +0 -41
- package/types/vue-shim.d +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 66 57" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><use xlink:href="#A" x=".5" y=".5"/><symbol id="A" overflow="visible"><path d="M32 0L0 55.426h4.44L32 7.963v7.8L9.033 55.426h4.593L32 23.733v7.962l-13.78 23.73h4.593L32 39.656v7.8l-4.593 7.962H64z" stroke="none" fill="#da291c" fill-rule="nonzero"/></symbol></svg>
|
|
@@ -144,6 +144,7 @@ nav:
|
|
|
144
144
|
localClusterIcon: Local Cluster icon
|
|
145
145
|
clusterProvIcon: Cluster {cluster} provider icon
|
|
146
146
|
topLevelMenu: Main menu
|
|
147
|
+
sideNav: Secondary menu
|
|
147
148
|
homePage: Home page navigation menu
|
|
148
149
|
cluster: Cluster menu item
|
|
149
150
|
harvesterCluster: Harvester cluster menu item
|
|
@@ -158,6 +159,7 @@ nav:
|
|
|
158
159
|
alt:
|
|
159
160
|
mainMenuIcon: Main menu icon
|
|
160
161
|
mainMenuRancherLogo: Main menu Rancher logo
|
|
162
|
+
userAvatar: User avatar image
|
|
161
163
|
expandCollapseAppBar: Expand/Collapse the Application Bar
|
|
162
164
|
harvesterDashboard: Harvester Dashboard
|
|
163
165
|
backToRancher: Cluster Manager
|
|
@@ -236,9 +238,10 @@ nav:
|
|
|
236
238
|
clusters: clusters
|
|
237
239
|
ariaLabel: Filter clusters on main menu
|
|
238
240
|
resourceSearch:
|
|
239
|
-
label: Resource Search
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
label: Resource Type Search
|
|
242
|
+
prompt: Search for a Kubernetes Resource/Custom Resource type
|
|
243
|
+
toolTip: Resource Type Search {key}
|
|
244
|
+
placeholder: Type to search for a resource type...
|
|
242
245
|
filteringDescription: Using this input will immediately filter the results in the list below
|
|
243
246
|
header:
|
|
244
247
|
setLoginPage: Set as login page
|
|
@@ -319,6 +322,15 @@ suffix:
|
|
|
319
322
|
##############################
|
|
320
323
|
# Components & Pages
|
|
321
324
|
##############################
|
|
325
|
+
layouts:
|
|
326
|
+
home: home layout
|
|
327
|
+
plain: plain layout
|
|
328
|
+
default: default layout
|
|
329
|
+
blank: blank layout
|
|
330
|
+
unauthenticated: unauthenticated layout
|
|
331
|
+
logout: logout layout
|
|
332
|
+
verify: verify layout
|
|
333
|
+
|
|
322
334
|
windowmanager:
|
|
323
335
|
closeTab: Close tab {tabId}
|
|
324
336
|
about:
|
|
@@ -379,11 +391,15 @@ accountAndKeys:
|
|
|
379
391
|
title: API Keys
|
|
380
392
|
notAllowed: You do not have permission to manage API Keys
|
|
381
393
|
apiEndpoint: "API Endpoint:"
|
|
394
|
+
copyApiEnpoint: Copy API Endpoint to clipboard
|
|
382
395
|
add:
|
|
383
396
|
description:
|
|
384
397
|
label: Description
|
|
385
398
|
placeholder: Optionally enter a description to help you identify this API Key
|
|
386
399
|
label: Create API Key
|
|
400
|
+
ariaLabel:
|
|
401
|
+
expiration: Expiration duration - number input
|
|
402
|
+
expirationUnits: Expiration unit - time unit
|
|
387
403
|
expiry:
|
|
388
404
|
label: Automatically expire
|
|
389
405
|
options:
|
|
@@ -483,6 +499,9 @@ authConfig:
|
|
|
483
499
|
4: 'Under Scopes for Google APIs, enable "email", "profile", and "openid".'
|
|
484
500
|
5: 'Click on "Save".'
|
|
485
501
|
topPrivateDomain: 'Top private domain of:'
|
|
502
|
+
ariaLabel:
|
|
503
|
+
hostname: Copy Hostname to clipboard
|
|
504
|
+
serverUrl: Copy Server URL to clipboard
|
|
486
505
|
2:
|
|
487
506
|
title: 'Navigate to the "Credentials" tab to create your OAuth client ID'
|
|
488
507
|
body:
|
|
@@ -491,6 +510,8 @@ authConfig:
|
|
|
491
510
|
3: 'Authorized redirect URIs:'
|
|
492
511
|
4: 'Click "Create", and then click on the "Download JSON" button.'
|
|
493
512
|
5: 'Upload the downloaded JSON file in the OAuth credentials box.'
|
|
513
|
+
ariaLabel:
|
|
514
|
+
serverUrlVerify: Copy Server Auth Verfication URL to clipboard
|
|
494
515
|
3:
|
|
495
516
|
title: 'Create Service Account credentials'
|
|
496
517
|
introduction: 'Follow <a href="{docsBase}/how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/configure-google-oauth#3-creating-service-account-credentials" target="_blank" rel="noopener noreferrer nofollow">this</a> guide to:'
|
|
@@ -624,6 +645,7 @@ authConfig:
|
|
|
624
645
|
reply:
|
|
625
646
|
info: 'Azure AD requires a whitelisted URL for your Rancher server before beginning this setup. Please ensure that the following URL is set in the Reply URL section of your Azure Portal. Please note that it may take up to 5 minutes for the whitelisted URL to propagate.'
|
|
626
647
|
label: Reply URL
|
|
648
|
+
ariaLabel: Copy Reply URL to clipboard
|
|
627
649
|
updateEndpoint:
|
|
628
650
|
button: Update Endpoint
|
|
629
651
|
banner:
|
|
@@ -656,7 +678,7 @@ authConfig:
|
|
|
656
678
|
scope:
|
|
657
679
|
label: Scopes
|
|
658
680
|
placeholder: openid
|
|
659
|
-
protip: The <code>openid</code>
|
|
681
|
+
protip: The <code>openid</code>, <code>profile</code>, and <code>email</code> scopes are required and cannot be removed.
|
|
660
682
|
cert:
|
|
661
683
|
label: Certificate
|
|
662
684
|
placeholder: Paste in the certificate, starting with -----BEGIN CERTIFICATE-----
|
|
@@ -851,13 +873,13 @@ asyncButton:
|
|
|
851
873
|
success: Generated
|
|
852
874
|
waiting: Generating…
|
|
853
875
|
|
|
854
|
-
backupRestoreOperator:
|
|
876
|
+
backupRestoreOperator:
|
|
855
877
|
backup:
|
|
856
878
|
label: Resource Set
|
|
857
879
|
description: The Resource Set determines which resources the backup-restore-operator collects in a backup
|
|
858
880
|
enableEncryptionWarning: 'Enabling encryption is highly recommended when using <b><i>Full Rancher backup resource set</i></b>, otherwise sensitive information will be backed up as plain-text. <a target="_blank" rel="noopener noreferrer nofollow" href="https://ranchermanager.docs.rancher.com/reference-guides/backup-restore-configuration/backup-configuration#resourcesets">Read more</a>.'
|
|
859
881
|
missingResourceSetWarning: The <b><i>{resourceSet}</i></b> resource set doesn't exist, it's possible it has been deleted. Please select a different option.
|
|
860
|
-
resourceSetOptions:
|
|
882
|
+
resourceSetOptions:
|
|
861
883
|
'rancher-resource-set-basic': 'Basic Rancher backup resource set'
|
|
862
884
|
'rancher-resource-set-full': 'Full Rancher backup resource set'
|
|
863
885
|
custom: Custom
|
|
@@ -1345,7 +1367,7 @@ cluster:
|
|
|
1345
1367
|
registrationCommand:
|
|
1346
1368
|
label: Registration Command
|
|
1347
1369
|
linuxDetail: Run this command on each of the existing Linux machines you want to register.
|
|
1348
|
-
windowsDetail: Run this command in PowerShell on each of the existing Windows machines you want to register.
|
|
1370
|
+
windowsDetail: Run this command in PowerShell on each of the existing Windows machines you want to register.
|
|
1349
1371
|
windowsWorkersOnly: <b>Windows nodes can only be workers.</b>
|
|
1350
1372
|
windowsNotReady: The cluster must be up and running with Linux etcd, control plane, and worker nodes before the registration command for adding Windows workers will display.<br /> <br /><b>Windows nodes can only be workers.</b>
|
|
1351
1373
|
windowsWarning: Workload pods, including some deployed by Rancher charts, will be scheduled on both Linux and Windows nodes by default. Edit NodeSelector in the chart to direct them to be placed onto a compatible node.
|
|
@@ -1863,11 +1885,11 @@ cluster:
|
|
|
1863
1885
|
subGroups:
|
|
1864
1886
|
podAffinityAnti: Pod Affinity/Anti-Affinity
|
|
1865
1887
|
nodeAffinity: Node Affinity
|
|
1866
|
-
schedulingCustomization:
|
|
1888
|
+
schedulingCustomization:
|
|
1867
1889
|
label: Prevent Rancher cluster agent pod eviction
|
|
1868
1890
|
description: This ensures that the cluster agent pod is not evicted due to node pressure, resource constraints or scheduler policies.
|
|
1869
1891
|
banner: This feature has been enabled with settings that are different from the global default settings.
|
|
1870
|
-
innerCheckbox: Apply global settings for Priority Class and Pod Disruption Budget
|
|
1892
|
+
innerCheckbox: Apply global settings for Priority Class and Pod Disruption Budget
|
|
1871
1893
|
banners:
|
|
1872
1894
|
advanced: These are advanced configuration options. Generally, they should be left as-is.
|
|
1873
1895
|
tolerations: Additional Pod Tolerations will be added to the default Tolerations applied by Rancher.
|
|
@@ -2036,6 +2058,7 @@ cluster:
|
|
|
2036
2058
|
docker: Docker
|
|
2037
2059
|
eks: Amazon EKS
|
|
2038
2060
|
exoscale: Exoscale
|
|
2061
|
+
sks: Exoscale SKS
|
|
2039
2062
|
gcp: Google
|
|
2040
2063
|
google: Google GCE
|
|
2041
2064
|
googlegke: Google GKE
|
|
@@ -2097,7 +2120,8 @@ cluster:
|
|
|
2097
2120
|
title: Save Machine Configurations
|
|
2098
2121
|
body: Machine Configurations define how machines in Pools are deployed.<br><br> They will be saved upfront to ensure valid Cluster YAML can be saved.
|
|
2099
2122
|
snapshots:
|
|
2100
|
-
suffix: Snapshots
|
|
2123
|
+
suffix: Snapshots per node
|
|
2124
|
+
s3Suffix: Snapshots
|
|
2101
2125
|
systemService:
|
|
2102
2126
|
rke2-coredns: 'CoreDNS'
|
|
2103
2127
|
rke2-ingress-nginx: 'NGINX Ingress'
|
|
@@ -2193,7 +2217,7 @@ cluster:
|
|
|
2193
2217
|
snapshotScheduleCron:
|
|
2194
2218
|
label: Cron Schedule
|
|
2195
2219
|
snapshotRetention:
|
|
2196
|
-
label: Snapshot retention count
|
|
2220
|
+
label: Snapshot retention count
|
|
2197
2221
|
tooltip: Each backup records 1 snapshot per etcd node. If you specify 3 snapshots and you have 3 etcd nodes you will only retain 1 full backup.
|
|
2198
2222
|
exportMetric:
|
|
2199
2223
|
label: Metrics
|
|
@@ -2398,8 +2422,11 @@ drivers:
|
|
|
2398
2422
|
=1 { {warningDrivers} Resources in the corresponding provider will not be automatically removed.}
|
|
2399
2423
|
other { {warningDrivers} Resources in the corresponding providers will not be automatically removed.}
|
|
2400
2424
|
}
|
|
2425
|
+
error:
|
|
2426
|
+
activate: Failed to activate { name } driver
|
|
2401
2427
|
|
|
2402
2428
|
detailText:
|
|
2429
|
+
copyAriaLabel: Copy {item} value to clipboard
|
|
2403
2430
|
collapse: Hide
|
|
2404
2431
|
binary: '<Binary Data: {n, number} bytes>'
|
|
2405
2432
|
empty: '<Empty>'
|
|
@@ -2731,6 +2758,7 @@ clusterBadge:
|
|
|
2731
2758
|
iconText: Icon Text
|
|
2732
2759
|
buttonAction: Apply
|
|
2733
2760
|
badgeBgColor: Badge background color
|
|
2761
|
+
badgeBgColorInput: Badge background color selector input
|
|
2734
2762
|
badgeTextColor: Badge text color
|
|
2735
2763
|
badgeAsIcon: Use custom badge
|
|
2736
2764
|
maxCharsTooltip: Overwrites the default cluster name abbreviation.
|
|
@@ -2930,6 +2958,8 @@ ingress:
|
|
|
2930
2958
|
|
|
2931
2959
|
internalExternalIP:
|
|
2932
2960
|
none: None
|
|
2961
|
+
copyInternalIp: Copy internal IP address to clipboard
|
|
2962
|
+
copyExternalIp: Copy external IP address to clipboard
|
|
2933
2963
|
|
|
2934
2964
|
istio:
|
|
2935
2965
|
links:
|
|
@@ -3137,6 +3167,7 @@ labels:
|
|
|
3137
3167
|
hide: Hide System Labels and Annotations
|
|
3138
3168
|
annotations:
|
|
3139
3169
|
title: Annotations
|
|
3170
|
+
singular: Annotation
|
|
3140
3171
|
|
|
3141
3172
|
labelSelect:
|
|
3142
3173
|
noOptions:
|
|
@@ -3150,6 +3181,8 @@ labeledSelect:
|
|
|
3150
3181
|
pressEnter: Press enter to add "{input}"
|
|
3151
3182
|
|
|
3152
3183
|
landing:
|
|
3184
|
+
bannerImage: Homepage banner image
|
|
3185
|
+
homepage: Homepage
|
|
3153
3186
|
clusters:
|
|
3154
3187
|
title: Clusters
|
|
3155
3188
|
provider: Provider
|
|
@@ -3473,8 +3506,10 @@ neuvector:
|
|
|
3473
3506
|
na: Resource Unavailable
|
|
3474
3507
|
|
|
3475
3508
|
login:
|
|
3509
|
+
login: Login
|
|
3476
3510
|
howdy: Howdy!
|
|
3477
3511
|
welcome: Welcome to {vendor}
|
|
3512
|
+
landscapeAlt: Landscape image
|
|
3478
3513
|
loggedOut: You have been logged out.
|
|
3479
3514
|
loggedOutFromSso: You've been logged out of Rancher, however you may still be logged in to your single sign-on identity provider.
|
|
3480
3515
|
loggedOutFromSlo: You've been logged out of Rancher and from your single sign-on identity provider.
|
|
@@ -3911,6 +3946,10 @@ namespaceFilter:
|
|
|
3911
3946
|
one {1 item selected}
|
|
3912
3947
|
other {{total} items selected}
|
|
3913
3948
|
}
|
|
3949
|
+
input: Filter namespace options
|
|
3950
|
+
button:
|
|
3951
|
+
clear: Remove applied namespace filters
|
|
3952
|
+
clearFilter: Clear namespace options filter
|
|
3914
3953
|
|
|
3915
3954
|
namespaceList:
|
|
3916
3955
|
selectLabel: Namespace
|
|
@@ -4711,6 +4750,7 @@ prefs:
|
|
|
4711
4750
|
allNamespaces: Show dynamic Namespaces managed by Rancher (not intended for editing or deletion)
|
|
4712
4751
|
themeShortcut: Enable Dark/Light Theme keyboard shortcut toggle (shift+T)
|
|
4713
4752
|
pluginDeveloper: Enable Extension developer features
|
|
4753
|
+
pluginDeveloperTooltip: Enables the ability to perform a developer load of UI extensions
|
|
4714
4754
|
hideDesc:
|
|
4715
4755
|
label: Hide Type Description banners above resource lists
|
|
4716
4756
|
helm:
|
|
@@ -4727,6 +4767,8 @@ principal:
|
|
|
4727
4767
|
name: Name
|
|
4728
4768
|
loginName: Username
|
|
4729
4769
|
type: Type
|
|
4770
|
+
alt:
|
|
4771
|
+
avatar: User avatar image
|
|
4730
4772
|
|
|
4731
4773
|
probe:
|
|
4732
4774
|
checkInterval:
|
|
@@ -4879,6 +4921,7 @@ promptForceRemove:
|
|
|
4879
4921
|
modalTitle: Are you sure?
|
|
4880
4922
|
removeWarning: "There was an issue with deleting underlying infrastructure. If you proceed with this action, the Machine <b>{nameToMatch}</b> will be deleted from Rancher only. It's highly recommended to manually delete any referenced infrastructure."
|
|
4881
4923
|
forceDelete: Force Delete
|
|
4924
|
+
ariaLabel: Copy Machine name to clipboard
|
|
4882
4925
|
confirmName: "Enter in the pool name below to confirm:"
|
|
4883
4926
|
podRemoveWarning: "Force deleting pods does not wait for confirmation that the pod's processes have been terminated. This may result in <strong>data corruption or inconsistencies</strong>"
|
|
4884
4927
|
|
|
@@ -5105,6 +5148,8 @@ rbac:
|
|
|
5105
5148
|
label: Login Access
|
|
5106
5149
|
clustertemplaterevisions-create:
|
|
5107
5150
|
label: Create RKE Template Revisions
|
|
5151
|
+
errors:
|
|
5152
|
+
escalation: You cannot assign Global Permissions that are higher than your own. Please verify the permissions you are attempting to assign.
|
|
5108
5153
|
|
|
5109
5154
|
resourceDetail:
|
|
5110
5155
|
detailTop:
|
|
@@ -5181,6 +5226,7 @@ resourceTable:
|
|
|
5181
5226
|
role: Group by Role
|
|
5182
5227
|
cluster: Group by Cluster
|
|
5183
5228
|
device: Group by Device
|
|
5229
|
+
pool: Group by Pool
|
|
5184
5230
|
groupLabel:
|
|
5185
5231
|
cluster: "<span>Cluster:</span> {name}"
|
|
5186
5232
|
notInACluster: Not in a Cluster
|
|
@@ -5490,6 +5536,7 @@ setup:
|
|
|
5490
5536
|
setPassword: The first order of business is to set a strong password for the default <code>{username}</code> user. We suggest using this random one generated just for you, but enter your own if you like.
|
|
5491
5537
|
useManual: Set a specific password to use
|
|
5492
5538
|
useRandom: Use a randomly generated password
|
|
5539
|
+
copyRandom: Copy random password to clipboard
|
|
5493
5540
|
welcome: Welcome to {vendor}!
|
|
5494
5541
|
|
|
5495
5542
|
sortableTable:
|
|
@@ -7537,6 +7584,9 @@ typeLabel:
|
|
|
7537
7584
|
}
|
|
7538
7585
|
|
|
7539
7586
|
action:
|
|
7587
|
+
ariaLabel:
|
|
7588
|
+
hidePass: Hide {area}
|
|
7589
|
+
showPass: Reveal {area}
|
|
7540
7590
|
clone: Clone
|
|
7541
7591
|
disable: Disable
|
|
7542
7592
|
download: Download YAML
|
|
@@ -7788,9 +7838,9 @@ performance:
|
|
|
7788
7838
|
banner:
|
|
7789
7839
|
label: Fixed Banners
|
|
7790
7840
|
settingName: Banners
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7841
|
+
bannerHeader: Header Banner
|
|
7842
|
+
bannerFooter: Footer Banner
|
|
7843
|
+
bannerConsent: Login Screen Banner
|
|
7794
7844
|
text: Text
|
|
7795
7845
|
buttonText: Accept Button Text
|
|
7796
7846
|
textColor: Text Color
|
|
@@ -7941,12 +7991,12 @@ customLinks:
|
|
|
7941
7991
|
commercialSupport: Commercial Support
|
|
7942
7992
|
appCo: SUSE Application Collection
|
|
7943
7993
|
|
|
7944
|
-
|
|
7945
7994
|
##############################
|
|
7946
7995
|
### Support Page
|
|
7947
7996
|
##############################
|
|
7948
7997
|
|
|
7949
7998
|
support:
|
|
7999
|
+
bannerImage: Support page banner image
|
|
7950
8000
|
community:
|
|
7951
8001
|
title: SUSE Rancher provides world-class support
|
|
7952
8002
|
linksTitle: Community Support
|
|
@@ -1773,6 +1773,7 @@ cluster:
|
|
|
1773
1773
|
docker: Docker
|
|
1774
1774
|
eks: Amazon EKS
|
|
1775
1775
|
exoscale: Exoscale
|
|
1776
|
+
sks: Exoscale SKS
|
|
1776
1777
|
gcp: Google
|
|
1777
1778
|
google: Google GCE
|
|
1778
1779
|
googlegke: Google GKE
|
|
@@ -7131,9 +7132,9 @@ performance:
|
|
|
7131
7132
|
banner:
|
|
7132
7133
|
label: 固定横幅
|
|
7133
7134
|
settingName: 横幅
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7135
|
+
bannerHeader: 标题横幅
|
|
7136
|
+
bannerFooter: 页脚横幅
|
|
7137
|
+
bannerConsent: 登录屏幕横幅
|
|
7137
7138
|
text: 文本
|
|
7138
7139
|
buttonText: 同意按钮文本
|
|
7139
7140
|
textColor: 文本颜色
|
|
@@ -72,7 +72,9 @@ export default {
|
|
|
72
72
|
const { existing = false } = this.$attrs;
|
|
73
73
|
|
|
74
74
|
// If needed, fetch all the workloads that have prometheus operator like containers
|
|
75
|
-
|
|
75
|
+
const { CRON_JOB, ...validWorkloads } = WORKLOAD_TYPES;
|
|
76
|
+
|
|
77
|
+
this.workloadTypes = !existing ? Object.values(validWorkloads) : [];
|
|
76
78
|
|
|
77
79
|
this.workloadTypes.forEach((type) => {
|
|
78
80
|
// We'll use a filter to fetch the results. Atm there's no neat way to differentiate between ALL results and JUST filtered
|
package/cloud-credential/aws.vue
CHANGED
|
@@ -78,6 +78,7 @@ export default {
|
|
|
78
78
|
:rules="fvGetAndReportPathRules('decodedData.accessKey')"
|
|
79
79
|
:mode="mode"
|
|
80
80
|
:required="true"
|
|
81
|
+
data-testid="access-key"
|
|
81
82
|
@update:value="$emit('valueChanged', 'accessKey', $event)"
|
|
82
83
|
/>
|
|
83
84
|
<LabeledInput
|
|
@@ -89,6 +90,7 @@ export default {
|
|
|
89
90
|
:rules="fvGetAndReportPathRules('decodedData.secretKey')"
|
|
90
91
|
:mode="mode"
|
|
91
92
|
:required="true"
|
|
93
|
+
data-testid="secret-key"
|
|
92
94
|
@update:value="$emit('valueChanged', 'secretKey', $event)"
|
|
93
95
|
/>
|
|
94
96
|
<LabeledSelect
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { RcDropdown, RcDropdownTrigger, RcDropdownItem } from '@components/RcDropdown';
|
|
3
|
+
type HiddenAction = {
|
|
4
|
+
action: string;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
icon: string;
|
|
7
|
+
label: string;
|
|
8
|
+
bulkable: boolean;
|
|
9
|
+
bulkAction: string;
|
|
10
|
+
allEnabled: boolean;
|
|
11
|
+
anyEnabled: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
defineProps<{
|
|
15
|
+
disabled: boolean,
|
|
16
|
+
hiddenActions: HiddenAction[],
|
|
17
|
+
actionTooltip: unknown,
|
|
18
|
+
}>();
|
|
19
|
+
|
|
20
|
+
const emit = defineEmits(['click', 'mouseover', 'mouseleave']);
|
|
21
|
+
|
|
22
|
+
const applyTableAction = (act: HiddenAction, args: unknown, event: Event) => {
|
|
23
|
+
emit('click', act, args, event);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const setBulkActionOfInterest = (act: HiddenAction | null, event: 'mouseover' | 'mouseleave' = 'mouseover') => {
|
|
27
|
+
emit(event, act);
|
|
28
|
+
};
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<template>
|
|
32
|
+
<rc-dropdown
|
|
33
|
+
:distance="14"
|
|
34
|
+
placement="bottom"
|
|
35
|
+
>
|
|
36
|
+
<rc-dropdown-trigger
|
|
37
|
+
class="bulk-actions-dropdown"
|
|
38
|
+
:disabled="disabled"
|
|
39
|
+
>
|
|
40
|
+
<template #before>
|
|
41
|
+
<i class="icon icon-gear" />
|
|
42
|
+
</template>
|
|
43
|
+
<span>{{ t('sortableTable.bulkActions.collapsed.label') }}</span>
|
|
44
|
+
<template #after>
|
|
45
|
+
<i class="ml-10 icon icon-chevron-down" />
|
|
46
|
+
</template>
|
|
47
|
+
</rc-dropdown-trigger>
|
|
48
|
+
<template #dropdownCollection>
|
|
49
|
+
<rc-dropdown-item
|
|
50
|
+
v-for="(act, i) in hiddenActions"
|
|
51
|
+
:key="i"
|
|
52
|
+
v-clean-tooltip="{
|
|
53
|
+
content: actionTooltip,
|
|
54
|
+
placement: 'right'
|
|
55
|
+
}"
|
|
56
|
+
:disabled="!act.enabled"
|
|
57
|
+
@click="applyTableAction(act, null, $event)"
|
|
58
|
+
@mouseover="setBulkActionOfInterest(act)"
|
|
59
|
+
@mouseleave="setBulkActionOfInterest(null, 'mouseleave')"
|
|
60
|
+
>
|
|
61
|
+
<template #before>
|
|
62
|
+
<i
|
|
63
|
+
v-if="act.icon"
|
|
64
|
+
:class="act.icon"
|
|
65
|
+
/>
|
|
66
|
+
</template>
|
|
67
|
+
<span v-clean-html="act.label" />
|
|
68
|
+
</rc-dropdown-item>
|
|
69
|
+
</template>
|
|
70
|
+
</rc-dropdown>
|
|
71
|
+
</template>
|
package/components/AppModal.vue
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { defineComponent } from 'vue';
|
|
3
|
-
import {
|
|
2
|
+
import { defineComponent, ref } from 'vue';
|
|
3
|
+
import {
|
|
4
|
+
DEFAULT_FOCUS_TRAP_OPTS,
|
|
5
|
+
getFirstFocusableElement,
|
|
6
|
+
useWatcherBasedSetupFocusTrapWithDestroyIncluded
|
|
7
|
+
} from '@shell/composables/focusTrap';
|
|
4
8
|
|
|
5
9
|
export const DEFAULT_ITERABLE_NODE_SELECTOR = 'body;';
|
|
6
10
|
|
|
@@ -80,6 +84,13 @@ export default defineComponent({
|
|
|
80
84
|
returnFocusFirstIterableNodeSelector: {
|
|
81
85
|
type: String,
|
|
82
86
|
default: DEFAULT_ITERABLE_NODE_SELECTOR,
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* watcher-based focus trap variable to watch
|
|
90
|
+
*/
|
|
91
|
+
focusTrapWatcherBasedVariable: {
|
|
92
|
+
type: Boolean,
|
|
93
|
+
default: undefined,
|
|
83
94
|
}
|
|
84
95
|
},
|
|
85
96
|
computed: {
|
|
@@ -107,7 +118,7 @@ export default defineComponent({
|
|
|
107
118
|
width: this.modalWidth,
|
|
108
119
|
...this.stylesPropToObj,
|
|
109
120
|
};
|
|
110
|
-
}
|
|
121
|
+
}
|
|
111
122
|
},
|
|
112
123
|
setup(props) {
|
|
113
124
|
if (props.triggerFocusTrap) {
|
|
@@ -131,7 +142,10 @@ export default defineComponent({
|
|
|
131
142
|
};
|
|
132
143
|
}
|
|
133
144
|
|
|
134
|
-
|
|
145
|
+
// prop used to immediately trigger the focus trap when a proper watch variable is not required
|
|
146
|
+
const autoTriggerFocusTrapWatcher = ref(true);
|
|
147
|
+
|
|
148
|
+
useWatcherBasedSetupFocusTrapWithDestroyIncluded(() => props.focusTrapWatcherBasedVariable ?? autoTriggerFocusTrapWatcher, '#modal-container-element', opts, true);
|
|
135
149
|
}
|
|
136
150
|
},
|
|
137
151
|
mounted() {
|
|
@@ -11,6 +11,7 @@ export const ASYNC_BUTTON_STATES = {
|
|
|
11
11
|
|
|
12
12
|
const TEXT = 'text';
|
|
13
13
|
const TOOLTIP = 'tooltip';
|
|
14
|
+
const DISABLED_CLASS_STYLE = 'btn-disabled';
|
|
14
15
|
|
|
15
16
|
export type AsyncButtonCallback = (success: boolean) => void;
|
|
16
17
|
|
|
@@ -152,9 +153,29 @@ export default defineComponent({
|
|
|
152
153
|
out[`btn-${ this.size }`] = true;
|
|
153
154
|
}
|
|
154
155
|
|
|
156
|
+
// while we are waiting for the async button to get
|
|
157
|
+
// it's callback we want to the button to appear as disabled
|
|
158
|
+
// but not being actually disabled as need it to be
|
|
159
|
+
// able to return the keyboard navigation focus back to it
|
|
160
|
+
// which can't be done while actually disabled, as per
|
|
161
|
+
// https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#focusabilityofdisabledcontrols
|
|
162
|
+
if (this.phase === ASYNC_BUTTON_STATES.WAITING) {
|
|
163
|
+
out[DISABLED_CLASS_STYLE] = true;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// used to assist e2e testing mostly when waiting for button to return
|
|
167
|
+
// to it's normal state/phase
|
|
168
|
+
if (this.phase === ASYNC_BUTTON_STATES.ACTION) {
|
|
169
|
+
out['ready-for-action'] = true;
|
|
170
|
+
}
|
|
171
|
+
|
|
155
172
|
return out;
|
|
156
173
|
},
|
|
157
174
|
|
|
175
|
+
appearsDisabled(): boolean {
|
|
176
|
+
return this.disabled || this.phase === ASYNC_BUTTON_STATES.WAITING;
|
|
177
|
+
},
|
|
178
|
+
|
|
158
179
|
displayIcon(): string {
|
|
159
180
|
const exists = this.$store.getters['i18n/exists'];
|
|
160
181
|
const t = this.$store.getters['i18n/t'];
|
|
@@ -204,10 +225,6 @@ export default defineComponent({
|
|
|
204
225
|
return this.phase === ASYNC_BUTTON_STATES.WAITING;
|
|
205
226
|
},
|
|
206
227
|
|
|
207
|
-
isDisabled(): boolean {
|
|
208
|
-
return this.disabled || this.phase === ASYNC_BUTTON_STATES.WAITING;
|
|
209
|
-
},
|
|
210
|
-
|
|
211
228
|
isManualRefresh() {
|
|
212
229
|
return this.mode === 'manual-refresh';
|
|
213
230
|
},
|
|
@@ -232,7 +249,7 @@ export default defineComponent({
|
|
|
232
249
|
|
|
233
250
|
methods: {
|
|
234
251
|
clicked() {
|
|
235
|
-
if ( this.
|
|
252
|
+
if ( this.appearsDisabled ) {
|
|
236
253
|
return;
|
|
237
254
|
}
|
|
238
255
|
|
|
@@ -283,8 +300,8 @@ export default defineComponent({
|
|
|
283
300
|
:class="classes"
|
|
284
301
|
:name="name"
|
|
285
302
|
:type="type"
|
|
286
|
-
:disabled="
|
|
287
|
-
:aria-disabled="
|
|
303
|
+
:disabled="disabled"
|
|
304
|
+
:aria-disabled="appearsDisabled"
|
|
288
305
|
:tab-index="tabIndex"
|
|
289
306
|
:data-testid="componentTestid + '-async-button'"
|
|
290
307
|
@click="clicked"
|