@rancher/shell 3.0.5-rc.1 → 3.0.5-rc.3
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 +2 -0
- package/assets/images/providers/sks.svg +1 -0
- package/assets/styles/base/_helpers.scss +4 -0
- package/assets/styles/base/_variables.scss +1 -0
- package/assets/styles/global/_layout.scss +0 -1
- package/assets/translations/en-us.yaml +92 -34
- package/assets/translations/zh-hans.yaml +4 -13
- package/chart/monitoring/index.vue +4 -2
- package/components/ActionDropdownShell.vue +71 -0
- package/components/AppModal.vue +18 -4
- package/components/AsyncButton.vue +2 -0
- package/components/CodeMirror.vue +3 -3
- package/components/CommunityLinks.vue +3 -58
- package/components/CruResource.vue +109 -16
- package/components/ExplorerProjectsNamespaces.vue +19 -6
- package/components/FixedBanner.vue +19 -5
- package/components/GlobalRoleBindings.vue +5 -1
- package/components/GrowlManager.vue +1 -0
- package/components/LandingPagePreference.vue +2 -0
- package/components/LocaleSelector.vue +1 -1
- package/components/ModalManager.vue +55 -0
- package/components/PaginatedResourceTable.vue +7 -0
- package/components/PromptModal.vue +47 -8
- package/components/ResourceDetail/Masthead.vue +38 -13
- package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
- package/components/ResourceDetail/index.vue +47 -12
- package/components/ResourceList/index.vue +2 -1
- package/components/ResourceTable.vue +54 -19
- package/components/SideNav.vue +5 -1
- package/components/SlideInPanelManager.vue +125 -0
- package/components/SortableTable/THead.vue +5 -2
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +54 -40
- package/components/SortableTable/paging.js +16 -19
- package/components/SortableTable/selection.js +1 -12
- package/components/Tabbed/index.vue +6 -0
- package/components/Wizard.vue +2 -2
- package/components/__tests__/AsyncButton.test.ts +39 -0
- package/components/__tests__/CruResource.test.ts +63 -0
- package/components/__tests__/ModalManager.spec.ts +176 -0
- package/components/__tests__/PromptModal.test.ts +146 -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/login/ldap.vue +1 -1
- package/components/fleet/FleetResources.vue +21 -6
- package/components/form/ArrayList.vue +138 -118
- package/components/form/BannerSettings.vue +149 -85
- package/components/form/ColorInput.vue +35 -6
- package/components/form/EnvVars.vue +1 -0
- package/components/form/KeyValue.vue +10 -7
- package/components/form/LabeledSelect.vue +25 -23
- package/components/form/MatchExpressions.vue +9 -2
- package/components/form/NameNsDescription.vue +6 -2
- package/components/form/NotificationSettings.vue +15 -1
- package/components/form/Password.vue +1 -0
- package/components/form/Probe.vue +1 -0
- package/components/form/ResourceSelector.vue +26 -23
- package/components/form/ResourceTabs/index.vue +2 -1
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +15 -34
- package/components/form/SSHKnownHosts/index.vue +14 -11
- package/components/form/Select.vue +8 -15
- package/components/form/UnitInput.vue +13 -0
- package/components/form/ValueFromResource.vue +12 -12
- package/components/form/__tests__/ArrayList.test.ts +34 -2
- package/components/form/__tests__/ColorInput.test.ts +35 -0
- package/components/form/__tests__/KeyValue.test.ts +36 -0
- package/components/form/__tests__/LabeledSelect.test.ts +73 -0
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
- package/components/form/__tests__/Select.test.ts +34 -1
- package/components/form/__tests__/UnitInput.test.ts +23 -1
- package/components/formatter/ClusterLink.vue +5 -8
- package/components/formatter/Description.vue +30 -0
- package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
- package/components/nav/Group.vue +12 -4
- package/components/nav/Header.vue +16 -43
- package/components/nav/NamespaceFilter.vue +134 -86
- package/components/nav/TopLevelMenu.vue +4 -5
- package/components/nav/WindowManager/ContainerLogs.vue +87 -61
- package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
- package/components/nav/WindowManager/index.vue +1 -0
- package/components/templates/default.vue +6 -3
- package/components/templates/home.vue +6 -0
- package/components/templates/plain.vue +6 -3
- package/composables/focusTrap.ts +12 -4
- package/config/product/explorer.js +16 -13
- package/config/product/manager.js +1 -28
- package/config/settings.ts +11 -13
- package/config/store.js +4 -0
- package/config/table-headers.js +7 -5
- package/config/uiplugins.js +5 -1
- package/core/types.ts +7 -6
- package/detail/catalog.cattle.io.app.vue +5 -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 +85 -9
- package/detail/service.vue +0 -1
- package/detail/workload/index.vue +21 -34
- package/dialog/AddCustomBadgeDialog.vue +0 -1
- package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
- package/dialog/AssignToDialog.vue +176 -0
- package/dialog/ChangePasswordDialog.vue +106 -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} +83 -65
- package/dialog/FeatureFlagListDialog.vue +288 -0
- package/dialog/ForceMachineRemoveDialog.vue +1 -1
- 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 -62
- 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__/service.test.ts +2 -1
- package/edit/auth/azuread.vue +1 -1
- package/edit/auth/github.vue +1 -1
- package/edit/auth/googleoauth.vue +1 -1
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +1 -1
- package/edit/auth/saml.vue +1 -1
- package/edit/cloudcredential.vue +24 -10
- package/edit/management.cattle.io.user.vue +28 -3
- package/edit/namespace.vue +1 -4
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -14
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +57 -62
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +3 -14
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +18 -30
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -10
- 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/index.vue +21 -73
- package/edit/provisioning.cattle.io.cluster/rke2.vue +24 -7
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +4 -1
- package/edit/service.vue +13 -28
- package/initialize/install-plugins.js +2 -1
- package/list/harvesterhci.io.management.cluster.vue +4 -1
- package/list/management.cattle.io.feature.vue +4 -288
- package/list/workload.vue +6 -1
- package/machine-config/azure.vue +16 -4
- package/mixins/resource-fetch-api-pagination.js +55 -43
- package/mixins/resource-fetch.js +14 -5
- package/mixins/vue-select-overrides.js +0 -4
- package/models/__tests__/workload.test.ts +1 -0
- package/models/cluster/node.js +1 -0
- package/models/cluster.js +32 -2
- package/models/fleet.cattle.io.cluster.js +8 -2
- package/models/fleet.cattle.io.gitrepo.js +8 -34
- package/models/management.cattle.io.cluster.js +0 -20
- package/models/management.cattle.io.feature.js +7 -1
- package/models/management.cattle.io.node.js +7 -22
- package/models/management.cattle.io.nodepool.js +12 -0
- package/models/namespace.js +12 -1
- package/models/provisioning.cattle.io.cluster.js +18 -64
- package/models/service.js +24 -9
- package/models/workload.js +70 -31
- package/package.json +1 -1
- package/pages/about.vue +13 -3
- package/pages/account/index.vue +12 -5
- package/pages/auth/login.vue +7 -4
- package/pages/auth/setup.vue +1 -0
- package/pages/auth/verify.vue +9 -7
- package/pages/c/_cluster/apps/charts/install.vue +25 -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 +28 -15
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/index.vue +3 -3
- 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 +60 -5
- package/pages/c/_cluster/settings/performance.vue +7 -26
- 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 +12 -9
- package/pages/fail-whale.vue +8 -5
- package/pages/home.vue +11 -52
- package/pages/prefs.vue +7 -6
- package/plugins/clean-html.js +2 -0
- package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
- package/plugins/dashboard-store/actions.js +122 -21
- package/plugins/dashboard-store/getters.js +74 -3
- package/plugins/dashboard-store/mutations.js +10 -5
- package/plugins/dashboard-store/resource-class.js +23 -3
- 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/__tests__/getters.test.ts +18 -11
- package/plugins/steve/__tests__/steve-class.test.ts +1 -0
- package/plugins/steve/actions.js +34 -24
- package/plugins/steve/getters.js +39 -10
- package/plugins/steve/steve-class.js +5 -0
- package/plugins/steve/steve-pagination-utils.ts +199 -37
- package/plugins/steve/worker/web-worker.advanced.js +3 -1
- package/public/index.html +1 -0
- package/rancher-components/Banner/Banner.test.ts +51 -3
- package/rancher-components/Banner/Banner.vue +28 -6
- 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 +51 -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 +75 -35
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +17 -0
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +26 -1
- 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 +17 -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/index.ts +2 -0
- 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 -13
- package/scripts/typegen.sh +2 -4
- package/store/action-menu.js +26 -56
- package/store/features.js +0 -1
- package/store/index.js +5 -0
- package/store/modal.ts +71 -0
- package/store/slideInPanel.ts +47 -0
- package/store/type-map.js +8 -1
- package/store/type-map.utils.ts +49 -6
- package/types/fleet.d.ts +1 -1
- 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/kube/kube-api.ts +22 -0
- package/types/resources/fleet.d.ts +0 -14
- package/types/resources/settings.d.ts +0 -4
- package/types/shell/index.d.ts +375 -306
- package/types/store/dashboard-store.types.ts +24 -1
- package/types/store/pagination.types.ts +19 -2
- 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 +24 -20
- package/utils/fleet.ts +15 -73
- package/utils/grafana.js +1 -0
- package/utils/object.js +36 -5
- package/utils/pagination-utils.ts +6 -2
- package/utils/perf-setting.utils.ts +28 -0
- package/utils/selector-typed.ts +205 -0
- package/utils/selector.js +29 -6
- package/utils/uiplugins.ts +10 -6
- package/utils/v-sphere.ts +5 -1
- package/utils/validators/formRules/__tests__/index.test.ts +10 -1
- package/utils/validators/formRules/index.ts +27 -3
- package/components/AssignTo.vue +0 -199
- package/components/DisableAuthProviderModal.vue +0 -115
- package/components/MoveModal.vue +0 -167
- package/components/PromptChangePassword.vue +0 -123
- package/components/fleet/FleetBundleResources.vue +0 -86
- package/components/formatter/RKETemplateName.vue +0 -37
- package/dialog/SaveAsRKETemplateDialog.vue +0 -139
- package/types/vue-shim.d +0 -20
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"ap-southeast-3",
|
|
12
12
|
"ap-southeast-4",
|
|
13
13
|
"ap-southeast-5",
|
|
14
|
+
"ap-southeast-7",
|
|
14
15
|
"ca-central-1",
|
|
15
16
|
"ca-west-1",
|
|
16
17
|
"cn-north-1",
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"il-central-1",
|
|
27
28
|
"me-central-1",
|
|
28
29
|
"me-south-1",
|
|
30
|
+
"mx-central-1",
|
|
29
31
|
"sa-east-1",
|
|
30
32
|
"us-east-1",
|
|
31
33
|
"us-east-2",
|
|
@@ -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>
|
|
@@ -7,6 +7,9 @@ generic:
|
|
|
7
7
|
userMenu: user menu
|
|
8
8
|
actionMenu: action menu
|
|
9
9
|
namespaceFilter: namespace filter menu
|
|
10
|
+
banners:
|
|
11
|
+
altCloseBanner: Close banner icon
|
|
12
|
+
bannerIcon: Banner icon
|
|
10
13
|
filterNamespaces: filter namespaces
|
|
11
14
|
clearSearch: clear search
|
|
12
15
|
clearFilters: clear filters
|
|
@@ -129,8 +132,16 @@ generic:
|
|
|
129
132
|
}
|
|
130
133
|
basic: Basic
|
|
131
134
|
ariaLabel:
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
keyValue: Key-Value input
|
|
136
|
+
key: Key for row {index}
|
|
137
|
+
value: Value for row {index}
|
|
138
|
+
remove: remove row {index}
|
|
139
|
+
addKeyValue: Add a new Key-Value row
|
|
140
|
+
readKeyValue: read Key-Values from file
|
|
141
|
+
genericAddRow: Add a new row
|
|
142
|
+
arrayList: Array list input
|
|
143
|
+
genericRow: row {index}
|
|
144
|
+
|
|
134
145
|
|
|
135
146
|
locale:
|
|
136
147
|
menu: Locale selector menu
|
|
@@ -144,6 +155,7 @@ nav:
|
|
|
144
155
|
localClusterIcon: Local Cluster icon
|
|
145
156
|
clusterProvIcon: Cluster {cluster} provider icon
|
|
146
157
|
topLevelMenu: Main menu
|
|
158
|
+
sideNav: Secondary menu
|
|
147
159
|
homePage: Home page navigation menu
|
|
148
160
|
cluster: Cluster menu item
|
|
149
161
|
harvesterCluster: Harvester cluster menu item
|
|
@@ -180,7 +192,6 @@ nav:
|
|
|
180
192
|
restoreSnapshot: Restore Snapshot
|
|
181
193
|
rotateCertificates: Rotate Certificates
|
|
182
194
|
rotateEncryptionKeys: Rotate Encryption Keys
|
|
183
|
-
saveAsRKETemplate: Save as RKE Template
|
|
184
195
|
takeSnapshot: Take Snapshot
|
|
185
196
|
seeAllClusters: See all clusters
|
|
186
197
|
seeAllClustersCollapsed: See all
|
|
@@ -237,9 +248,10 @@ nav:
|
|
|
237
248
|
clusters: clusters
|
|
238
249
|
ariaLabel: Filter clusters on main menu
|
|
239
250
|
resourceSearch:
|
|
240
|
-
label: Resource Search
|
|
241
|
-
|
|
242
|
-
|
|
251
|
+
label: Resource Type Search
|
|
252
|
+
prompt: Search for a Kubernetes Resource/Custom Resource type
|
|
253
|
+
toolTip: Resource Type Search {key}
|
|
254
|
+
placeholder: Type to search for a resource type...
|
|
243
255
|
filteringDescription: Using this input will immediately filter the results in the list below
|
|
244
256
|
header:
|
|
245
257
|
setLoginPage: Set as login page
|
|
@@ -328,7 +340,7 @@ layouts:
|
|
|
328
340
|
unauthenticated: unauthenticated layout
|
|
329
341
|
logout: logout layout
|
|
330
342
|
verify: verify layout
|
|
331
|
-
|
|
343
|
+
|
|
332
344
|
windowmanager:
|
|
333
345
|
closeTab: Close tab {tabId}
|
|
334
346
|
about:
|
|
@@ -497,7 +509,7 @@ authConfig:
|
|
|
497
509
|
4: 'Under Scopes for Google APIs, enable "email", "profile", and "openid".'
|
|
498
510
|
5: 'Click on "Save".'
|
|
499
511
|
topPrivateDomain: 'Top private domain of:'
|
|
500
|
-
ariaLabel:
|
|
512
|
+
ariaLabel:
|
|
501
513
|
hostname: Copy Hostname to clipboard
|
|
502
514
|
serverUrl: Copy Server URL to clipboard
|
|
503
515
|
2:
|
|
@@ -508,7 +520,7 @@ authConfig:
|
|
|
508
520
|
3: 'Authorized redirect URIs:'
|
|
509
521
|
4: 'Click "Create", and then click on the "Download JSON" button.'
|
|
510
522
|
5: 'Upload the downloaded JSON file in the OAuth credentials box.'
|
|
511
|
-
ariaLabel:
|
|
523
|
+
ariaLabel:
|
|
512
524
|
serverUrlVerify: Copy Server Auth Verfication URL to clipboard
|
|
513
525
|
3:
|
|
514
526
|
title: 'Create Service Account credentials'
|
|
@@ -715,6 +727,8 @@ assignTo:
|
|
|
715
727
|
workspace: Workspace
|
|
716
728
|
|
|
717
729
|
asyncButton:
|
|
730
|
+
alt:
|
|
731
|
+
iconAlt: Async button icon
|
|
718
732
|
apply:
|
|
719
733
|
action: Apply
|
|
720
734
|
success: Applied
|
|
@@ -871,13 +885,13 @@ asyncButton:
|
|
|
871
885
|
success: Generated
|
|
872
886
|
waiting: Generating…
|
|
873
887
|
|
|
874
|
-
backupRestoreOperator:
|
|
888
|
+
backupRestoreOperator:
|
|
875
889
|
backup:
|
|
876
890
|
label: Resource Set
|
|
877
891
|
description: The Resource Set determines which resources the backup-restore-operator collects in a backup
|
|
878
892
|
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>.'
|
|
879
893
|
missingResourceSetWarning: The <b><i>{resourceSet}</i></b> resource set doesn't exist, it's possible it has been deleted. Please select a different option.
|
|
880
|
-
resourceSetOptions:
|
|
894
|
+
resourceSetOptions:
|
|
881
895
|
'rancher-resource-set-basic': 'Basic Rancher backup resource set'
|
|
882
896
|
'rancher-resource-set-full': 'Full Rancher backup resource set'
|
|
883
897
|
custom: Custom
|
|
@@ -1365,7 +1379,7 @@ cluster:
|
|
|
1365
1379
|
registrationCommand:
|
|
1366
1380
|
label: Registration Command
|
|
1367
1381
|
linuxDetail: Run this command on each of the existing Linux machines you want to register.
|
|
1368
|
-
windowsDetail: Run this command in PowerShell on each of the existing Windows machines you want to register.
|
|
1382
|
+
windowsDetail: Run this command in PowerShell on each of the existing Windows machines you want to register.
|
|
1369
1383
|
windowsWorkersOnly: <b>Windows nodes can only be workers.</b>
|
|
1370
1384
|
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>
|
|
1371
1385
|
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.
|
|
@@ -1883,11 +1897,11 @@ cluster:
|
|
|
1883
1897
|
subGroups:
|
|
1884
1898
|
podAffinityAnti: Pod Affinity/Anti-Affinity
|
|
1885
1899
|
nodeAffinity: Node Affinity
|
|
1886
|
-
schedulingCustomization:
|
|
1900
|
+
schedulingCustomization:
|
|
1887
1901
|
label: Prevent Rancher cluster agent pod eviction
|
|
1888
1902
|
description: This ensures that the cluster agent pod is not evicted due to node pressure, resource constraints or scheduler policies.
|
|
1889
1903
|
banner: This feature has been enabled with settings that are different from the global default settings.
|
|
1890
|
-
innerCheckbox: Apply global settings for Priority Class and Pod Disruption Budget
|
|
1904
|
+
innerCheckbox: Apply global settings for Priority Class and Pod Disruption Budget
|
|
1891
1905
|
banners:
|
|
1892
1906
|
advanced: These are advanced configuration options. Generally, they should be left as-is.
|
|
1893
1907
|
tolerations: Additional Pod Tolerations will be added to the default Tolerations applied by Rancher.
|
|
@@ -1934,9 +1948,8 @@ cluster:
|
|
|
1934
1948
|
=1 { {pool_name}: The provided value for {fields} was not found in the list of expected values. This can happen with clusters provisioned outside of Rancher or when options for the provider have changed. }
|
|
1935
1949
|
other { {pool_name}: The provided values for {fields} were not found in the list of expected values. This can happen with clusters provisioned outside of Rancher or when options for the provider have changed. }
|
|
1936
1950
|
}
|
|
1937
|
-
rke1DeprecationMessage: 'Rancher Kubernetes Engine (RKE / RKE1)
|
|
1938
|
-
|
|
1939
|
-
rkeTemplateUpgrade: Template revision {name} available for upgrade
|
|
1951
|
+
rke1DeprecationMessage: 'Rancher Kubernetes Engine (RKE / RKE1) has reached end of life and these clusters are no longer supported. We recommend replatforming RKE1 clusters to RKE2 to ensure continued support and security updates. Learn more about the transition <a href="https://www.suse.com/support/kb/doc/?id=000021518" target="_blank" rel="noopener noreferrer nofollow">here</a>.'
|
|
1952
|
+
rke1Unsupported: RKE1 Clusters are no longer supported
|
|
1940
1953
|
cloudCredentials:
|
|
1941
1954
|
renew: Renew Cloud Credentials
|
|
1942
1955
|
expired: Cloud Credential expired, please Renew Cloud Credentials
|
|
@@ -2056,6 +2069,7 @@ cluster:
|
|
|
2056
2069
|
docker: Docker
|
|
2057
2070
|
eks: Amazon EKS
|
|
2058
2071
|
exoscale: Exoscale
|
|
2072
|
+
sks: Exoscale SKS
|
|
2059
2073
|
gcp: Google
|
|
2060
2074
|
google: Google GCE
|
|
2061
2075
|
googlegke: Google GKE
|
|
@@ -2214,7 +2228,7 @@ cluster:
|
|
|
2214
2228
|
snapshotScheduleCron:
|
|
2215
2229
|
label: Cron Schedule
|
|
2216
2230
|
snapshotRetention:
|
|
2217
|
-
label: Snapshot retention count
|
|
2231
|
+
label: Snapshot retention count
|
|
2218
2232
|
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.
|
|
2219
2233
|
exportMetric:
|
|
2220
2234
|
label: Metrics
|
|
@@ -3206,8 +3220,6 @@ landing:
|
|
|
3206
3220
|
title: Commercial Support
|
|
3207
3221
|
body: Learn about commercial support
|
|
3208
3222
|
landingPrefs:
|
|
3209
|
-
title: You can change what you see when you login via preferences
|
|
3210
|
-
userPrefs: Preferences
|
|
3211
3223
|
body: "You can change where you land when you login"
|
|
3212
3224
|
ariaLabelTakeMeToCluster: Select which cluster to take me to after login
|
|
3213
3225
|
options:
|
|
@@ -3905,6 +3917,7 @@ nameNsDescription:
|
|
|
3905
3917
|
placeholder: Any text you want that better describes this resource
|
|
3906
3918
|
|
|
3907
3919
|
namespace:
|
|
3920
|
+
cancelCreateAriaLabel: Cancel create namespace
|
|
3908
3921
|
containerResourceLimit: Container Resource Limit
|
|
3909
3922
|
resourceQuotas: Resource Quotas
|
|
3910
3923
|
project:
|
|
@@ -3943,6 +3956,10 @@ namespaceFilter:
|
|
|
3943
3956
|
one {1 item selected}
|
|
3944
3957
|
other {{total} items selected}
|
|
3945
3958
|
}
|
|
3959
|
+
input: Filter namespace options
|
|
3960
|
+
button:
|
|
3961
|
+
clear: Remove applied namespace filters
|
|
3962
|
+
clearFilter: Clear namespace options filter
|
|
3946
3963
|
|
|
3947
3964
|
namespaceList:
|
|
3948
3965
|
selectLabel: Namespace
|
|
@@ -4743,6 +4760,7 @@ prefs:
|
|
|
4743
4760
|
allNamespaces: Show dynamic Namespaces managed by Rancher (not intended for editing or deletion)
|
|
4744
4761
|
themeShortcut: Enable Dark/Light Theme keyboard shortcut toggle (shift+T)
|
|
4745
4762
|
pluginDeveloper: Enable Extension developer features
|
|
4763
|
+
pluginDeveloperTooltip: Enables the ability to perform a developer load of UI extensions
|
|
4746
4764
|
hideDesc:
|
|
4747
4765
|
label: Hide Type Description banners above resource lists
|
|
4748
4766
|
helm:
|
|
@@ -4759,6 +4777,8 @@ principal:
|
|
|
4759
4777
|
name: Name
|
|
4760
4778
|
loginName: Username
|
|
4761
4779
|
type: Type
|
|
4780
|
+
alt:
|
|
4781
|
+
avatar: User avatar image
|
|
4762
4782
|
|
|
4763
4783
|
probe:
|
|
4764
4784
|
checkInterval:
|
|
@@ -4971,12 +4991,6 @@ promptRollback:
|
|
|
4971
4991
|
multipleWorkloadError: "Only one workload can be rolled back at a time."
|
|
4972
4992
|
singleRevisionBanner: There are no revisions to roll back to.
|
|
4973
4993
|
|
|
4974
|
-
promptSaveAsRKETemplate:
|
|
4975
|
-
title: Convert {cluster} to new RKE Template
|
|
4976
|
-
name: Cluster Template Name
|
|
4977
|
-
description: Create a new RKE cluster template and initial revision from the current cluster configuration.
|
|
4978
|
-
warning: This will modify the cluster, setting it up to use the newly created cluster template and revision. This can not be undone.
|
|
4979
|
-
|
|
4980
4994
|
promptRotateEncryptionKey:
|
|
4981
4995
|
title: Rotate Encryption Keys
|
|
4982
4996
|
description: The last backup {name} was performed on {date}
|
|
@@ -5138,6 +5152,8 @@ rbac:
|
|
|
5138
5152
|
label: Login Access
|
|
5139
5153
|
clustertemplaterevisions-create:
|
|
5140
5154
|
label: Create RKE Template Revisions
|
|
5155
|
+
errors:
|
|
5156
|
+
escalation: You cannot assign Global Permissions that are higher than your own. Please verify the permissions you are attempting to assign.
|
|
5141
5157
|
|
|
5142
5158
|
resourceDetail:
|
|
5143
5159
|
detailTop:
|
|
@@ -5214,6 +5230,7 @@ resourceTable:
|
|
|
5214
5230
|
role: Group by Role
|
|
5215
5231
|
cluster: Group by Cluster
|
|
5216
5232
|
device: Group by Device
|
|
5233
|
+
pool: Group by Pool
|
|
5217
5234
|
groupLabel:
|
|
5218
5235
|
cluster: "<span>Cluster:</span> {name}"
|
|
5219
5236
|
notInACluster: Not in a Cluster
|
|
@@ -7571,6 +7588,9 @@ typeLabel:
|
|
|
7571
7588
|
}
|
|
7572
7589
|
|
|
7573
7590
|
action:
|
|
7591
|
+
ariaLabel:
|
|
7592
|
+
hidePass: Hide {area}
|
|
7593
|
+
showPass: Reveal {area}
|
|
7574
7594
|
clone: Clone
|
|
7575
7595
|
disable: Disable
|
|
7576
7596
|
download: Download YAML
|
|
@@ -7810,21 +7830,18 @@ performance:
|
|
|
7810
7830
|
authUserTTL: This timeout cannot be higher than the user session timeout auth-user-session-ttl-minutes, which is currently {current} minutes.
|
|
7811
7831
|
serverPagination:
|
|
7812
7832
|
label: Server-side Pagination
|
|
7813
|
-
description: By default Lists will fetch all resources and paginate
|
|
7814
|
-
checkboxLabel: Enable Server-side Pagination
|
|
7833
|
+
description: By default Lists will fetch all resources and paginate (create the page given sort and filter settings) locally in the browser. Server-Side Pagination moves this out from the browser to the server. This improves performance of the UI, especially in systems with lots of resources.
|
|
7815
7834
|
applicable: "Server-side pagination applies to Resource Types"
|
|
7816
|
-
|
|
7817
|
-
featureFlag: The <a href="{ffUrl}">Feature Flag</a> `ui-sql-cache` must be enabled to use this feature
|
|
7835
|
+
featureFlag: Enabling/Disabling <i class="mr-5">"Server-side Pagination"</i> is now solely done so via the <i class="mr-5">ui-sql-cache</i> <a href="{ffUrl}">Feature Flag</a>
|
|
7818
7836
|
resources:
|
|
7819
7837
|
generic: most resources in the cluster's 'More Resources' section
|
|
7820
7838
|
all: All Resources
|
|
7821
|
-
experimental: This setting is experimental and may be removed or updated in future versions. We do not recommend enabling this setting in production environments.
|
|
7822
7839
|
banner:
|
|
7823
7840
|
label: Fixed Banners
|
|
7824
7841
|
settingName: Banners
|
|
7825
|
-
|
|
7826
|
-
|
|
7827
|
-
|
|
7842
|
+
bannerHeader: Header Banner
|
|
7843
|
+
bannerFooter: Footer Banner
|
|
7844
|
+
bannerConsent: Login Screen Banner
|
|
7828
7845
|
text: Text
|
|
7829
7846
|
buttonText: Accept Button Text
|
|
7830
7847
|
textColor: Text Color
|
|
@@ -7851,6 +7868,12 @@ banner:
|
|
|
7851
7868
|
consent: Consent Banner
|
|
7852
7869
|
consentFootnote: "Tip: Use \\n character for line break"
|
|
7853
7870
|
individualSetting: 'This banner is managed by the setting "{name}" and can not be modified in the UI'
|
|
7871
|
+
type:
|
|
7872
|
+
html: HTML
|
|
7873
|
+
text: Text
|
|
7874
|
+
htmlWarning: 'Not all HTML elements or attriutes are permitted and the HTML entered here will be sanitized before display. For HTML anchor elements, it is recommended to use the target attribute to have links open in a blank tab.'
|
|
7875
|
+
htmlContent: HTML Content
|
|
7876
|
+
toggleTextHtml: Toggle between text and html
|
|
7854
7877
|
|
|
7855
7878
|
branding:
|
|
7856
7879
|
label: Branding
|
|
@@ -8151,3 +8174,38 @@ gitPicker:
|
|
|
8151
8174
|
networkAttachmentDefinition:
|
|
8152
8175
|
tabs:
|
|
8153
8176
|
config: Config
|
|
8177
|
+
|
|
8178
|
+
errors:
|
|
8179
|
+
actionNotAvailable: This action is not currently available
|
|
8180
|
+
missingRequired: is required
|
|
8181
|
+
notUnique: is not unique
|
|
8182
|
+
notNullable: must be set
|
|
8183
|
+
invalidOption: is not a valid option
|
|
8184
|
+
invalidCharacters: contains invalid characters
|
|
8185
|
+
minLengthExceeded: is not long enough
|
|
8186
|
+
maxLengthExceeded: is too long
|
|
8187
|
+
minLimitExceeded: is too small
|
|
8188
|
+
maxLimitExceded: is too big
|
|
8189
|
+
messageAndDetail: '{message} ({detail})'
|
|
8190
|
+
messageOrDetail: '{val}'
|
|
8191
|
+
failedInApi:
|
|
8192
|
+
withName:
|
|
8193
|
+
withCodeExplanation:
|
|
8194
|
+
withMessageDetail: 'Validation failed in API: {name} {codeExplanation}: {messageDetail}'
|
|
8195
|
+
withoutMessageDetail: 'Validation failed in API: {name} {codeExplanation}'
|
|
8196
|
+
withMessageDetail: 'Validation failed in API: {name} {messageDetail}'
|
|
8197
|
+
withoutAnythingElse: 'Validation failed in API: {name} '
|
|
8198
|
+
withoutName:
|
|
8199
|
+
withMessageDetail:
|
|
8200
|
+
withCodeExplanation: 'Validation failed in API: {codeExplanation}: {messageDetail}'
|
|
8201
|
+
withoutCodeExplanation: 'Validation failed in API: {messageDetail}'
|
|
8202
|
+
withCode:
|
|
8203
|
+
withCodeExplanation: 'Validation failed in API: {code} {codeExplanation}'
|
|
8204
|
+
withoutCodeExplanation: 'Validation failed in API: {code}'
|
|
8205
|
+
withoutAnything: Validation failed in API.
|
|
8206
|
+
notFound:
|
|
8207
|
+
withUrl: '{msg}: {url}'
|
|
8208
|
+
withoutUrl: '{msg}'
|
|
8209
|
+
|
|
8210
|
+
|
|
8211
|
+
|
|
@@ -137,7 +137,6 @@ nav:
|
|
|
137
137
|
restoreSnapshot: 还原快照
|
|
138
138
|
rotateCertificates: 轮换证书
|
|
139
139
|
rotateEncryptionKeys: 轮换加密密钥
|
|
140
|
-
saveAsRKETemplate: 保存为 RKE 模板
|
|
141
140
|
takeSnapshot: 拍摄快照
|
|
142
141
|
group:
|
|
143
142
|
cluster: 集群
|
|
@@ -1669,7 +1668,6 @@ cluster:
|
|
|
1669
1668
|
rke2-k3-reprovisioning: '更改集群配置可能导致节点重新配置。详情请参见 <a target="blank" href="{docsBase}/how-to-guides/new-user-guides/launch-kubernetes-with-rancher/rke1-vs-rke2-differences#cluster-api" target="_blank" rel="noopener nofollow">文档</a>。'
|
|
1670
1669
|
desiredNodeGroupWarning: 没有可用于运行 Cluster Agent 的节点。要让集群变为 Active 状态,至少需要有 1 个可用的节点。
|
|
1671
1670
|
haveArgInfo: 所选 Kubernetes 版本的配置信息不可用。此屏幕中可用的选项将受到限制,你可能需要使用 YAML 编辑器。
|
|
1672
|
-
rkeTemplateUpgrade: 模板修订版 {name} 可用于升级
|
|
1673
1671
|
|
|
1674
1672
|
availabilityWarnings:
|
|
1675
1673
|
node: 节点 {name} 处于非活动状态
|
|
@@ -1773,6 +1771,7 @@ cluster:
|
|
|
1773
1771
|
docker: Docker
|
|
1774
1772
|
eks: Amazon EKS
|
|
1775
1773
|
exoscale: Exoscale
|
|
1774
|
+
sks: Exoscale SKS
|
|
1776
1775
|
gcp: Google
|
|
1777
1776
|
google: Google GCE
|
|
1778
1777
|
googlegke: Google GKE
|
|
@@ -2730,8 +2729,6 @@ landing:
|
|
|
2730
2729
|
title: 商业支持
|
|
2731
2730
|
body: 了解商业支持
|
|
2732
2731
|
landingPrefs:
|
|
2733
|
-
title: 更改登录后显示的页面:
|
|
2734
|
-
userPrefs: 偏好设置
|
|
2735
2732
|
body: "登录后显示:"
|
|
2736
2733
|
options:
|
|
2737
2734
|
homePage: 主页
|
|
@@ -4446,12 +4443,6 @@ promptRollback:
|
|
|
4446
4443
|
multipleWorkloadError: "一次只能回滚一个工作负载。"
|
|
4447
4444
|
singleRevisionBanner: 没有可用于回滚的修订版本。
|
|
4448
4445
|
|
|
4449
|
-
promptSaveAsRKETemplate:
|
|
4450
|
-
title: 将 {cluster} 转换为新的 RKE 模板
|
|
4451
|
-
name: 集群模板名称
|
|
4452
|
-
description: 创建新的集群模板,并使用当前集群配置发起修改。
|
|
4453
|
-
warning: 此操作将对集群进行修改,即把新创建的集群模板和修改应用到集群中。此操作不能撤销。
|
|
4454
|
-
|
|
4455
4446
|
promptRotateEncryptionKey:
|
|
4456
4447
|
title: 轮换加密密钥
|
|
4457
4448
|
description: 上次备份 {name} 的备份时间为 {date}
|
|
@@ -7131,9 +7122,9 @@ performance:
|
|
|
7131
7122
|
banner:
|
|
7132
7123
|
label: 固定横幅
|
|
7133
7124
|
settingName: 横幅
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7125
|
+
bannerHeader: 标题横幅
|
|
7126
|
+
bannerFooter: 页脚横幅
|
|
7127
|
+
bannerConsent: 登录屏幕横幅
|
|
7137
7128
|
text: 文本
|
|
7138
7129
|
buttonText: 同意按钮文本
|
|
7139
7130
|
textColor: 文本颜色
|
|
@@ -55,7 +55,7 @@ export default {
|
|
|
55
55
|
async fetch() {
|
|
56
56
|
const { $store } = this;
|
|
57
57
|
|
|
58
|
-
// Fetch all the resources required for all the tabs
|
|
58
|
+
// Fetch all the resources required for all the tabs asynchronously up front
|
|
59
59
|
const hashPromises = {
|
|
60
60
|
namespaces: $store.getters['namespaces'](),
|
|
61
61
|
pvcs: $store.dispatch('cluster/findAll', { type: PVC }),
|
|
@@ -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
|
|
@@ -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() {
|
|
@@ -314,11 +314,13 @@ export default defineComponent({
|
|
|
314
314
|
v-if="displayIcon"
|
|
315
315
|
v-clean-tooltip="tooltip"
|
|
316
316
|
:class="{icon: true, 'icon-lg': true, [displayIcon]: true, 'mr-0': isManualRefresh}"
|
|
317
|
+
:alt="t('asyncButton.alt.iconAlt')"
|
|
317
318
|
/>
|
|
318
319
|
<span
|
|
319
320
|
v-if="labelAs === 'text' && displayLabel"
|
|
320
321
|
v-clean-tooltip="tooltip"
|
|
321
322
|
v-clean-html="displayLabel"
|
|
323
|
+
data-testid="async-btn-display-label"
|
|
322
324
|
/>
|
|
323
325
|
</button>
|
|
324
326
|
</template>
|
|
@@ -88,7 +88,7 @@ export default {
|
|
|
88
88
|
|
|
89
89
|
// fixes https://github.com/rancher/dashboard/issues/13653
|
|
90
90
|
// we can't use the inert HTML prop on the parent because it disables all interaction
|
|
91
|
-
out.readOnly = this.isDisabled
|
|
91
|
+
out.readOnly = !!this.isDisabled;
|
|
92
92
|
|
|
93
93
|
return out;
|
|
94
94
|
},
|
|
@@ -227,8 +227,8 @@ export default {
|
|
|
227
227
|
},
|
|
228
228
|
|
|
229
229
|
onFocus() {
|
|
230
|
-
this.isCodeMirrorFocused =
|
|
231
|
-
this.$emit('onFocus',
|
|
230
|
+
this.isCodeMirrorFocused = !this.isDisabled;
|
|
231
|
+
this.$emit('onFocus', this.isCodeMirrorFocused);
|
|
232
232
|
},
|
|
233
233
|
|
|
234
234
|
onBlur() {
|