@rancher/shell 3.0.2-rc.2 → 3.0.2-rc.4
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/styles/base/_basic.scss +7 -8
- package/assets/styles/global/_button.scss +10 -0
- package/assets/styles/global/_form.scss +2 -1
- package/assets/styles/global/_tooltip.scss +2 -2
- package/assets/styles/themes/_dark.scss +15 -3
- package/assets/styles/themes/_light.scss +7 -2
- package/assets/styles/vendor/vue-select.scss +4 -0
- package/assets/translations/en-us.yaml +66 -9
- package/assets/translations/zh-hans.yaml +2 -3
- package/components/AppModal.vue +50 -0
- package/components/BannerGraphic.vue +0 -42
- package/components/ButtonMultiAction.vue +1 -1
- package/components/Carousel.vue +88 -74
- package/components/CommunityLinks.vue +6 -1
- package/components/CopyToClipboardText.vue +3 -0
- package/components/Dialog.vue +20 -1
- package/components/GrowlManager.vue +9 -2
- package/components/LocaleSelector.vue +8 -1
- package/components/PaginatedResourceTable.vue +4 -7
- package/components/ProgressBarMulti.vue +14 -0
- package/components/PromptChangePassword.vue +3 -0
- package/components/Questions/Reference.vue +57 -28
- package/components/ResourceDetail/Masthead.vue +1 -1
- package/components/SelectIconGrid.vue +12 -1
- package/components/SideNav.vue +12 -38
- package/components/SortableTable/index.vue +1 -0
- package/components/Tabbed/index.vue +9 -1
- package/components/YamlEditor.vue +1 -0
- package/components/__tests__/Carousel.test.ts +56 -27
- package/components/auth/Principal.vue +5 -3
- package/components/fleet/FleetClusters.vue +82 -1
- package/components/fleet/FleetRepos.vue +13 -30
- package/components/fleet/ForceDirectedTreeChart/index.vue +2 -2
- package/components/form/ChangePassword.vue +2 -0
- package/components/form/ColorInput.vue +24 -1
- package/components/form/FileSelector.vue +2 -0
- package/components/form/KeyValue.vue +230 -160
- package/components/form/LabeledSelect.vue +2 -2
- package/components/form/PlusMinus.vue +14 -2
- package/components/form/ResourceLabeledSelect.vue +13 -53
- package/components/form/ResourceSelector.vue +1 -0
- package/components/form/ResourceTabs/index.vue +79 -36
- package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +192 -0
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +104 -0
- package/components/form/SSHKnownHosts/index.vue +101 -0
- package/components/form/SecretSelector.vue +2 -2
- package/components/form/Select.vue +1 -1
- package/components/form/SelectOrCreateAuthSecret.vue +43 -11
- package/components/form/__tests__/KeyValue.test.ts +1 -1
- package/components/form/__tests__/SSHKnownHosts.test.ts +59 -0
- package/components/formatter/FleetClusterSummaryGraph.vue +2 -2
- package/components/formatter/FleetSummaryGraph.vue +6 -7
- package/components/formatter/WorkloadHealthScale.vue +7 -0
- package/components/nav/Group.vue +30 -4
- package/components/nav/Header.vue +82 -114
- package/components/nav/HeaderPageActionMenu.vue +27 -131
- package/components/nav/NamespaceFilter.vue +1 -1
- package/components/nav/Type.vue +15 -0
- package/composables/focusTrap.ts +68 -0
- package/config/home-links.js +21 -13
- package/config/labels-annotations.js +2 -0
- package/config/page-actions.js +1 -0
- package/config/pagination-table-headers.js +15 -1
- package/config/product/explorer.js +7 -17
- package/config/table-headers.js +6 -0
- package/config/version.js +5 -1
- package/core/plugin.ts +41 -1
- package/core/plugins.js +125 -72
- package/core/types-provisioning.ts +91 -2
- package/core/types.ts +55 -0
- package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +12 -3
- package/detail/catalog.cattle.io.app.vue +1 -1
- package/detail/fleet.cattle.io.cluster.vue +3 -3
- package/detail/namespace.vue +13 -19
- package/detail/networking.k8s.io.ingress.vue +13 -53
- package/detail/provisioning.cattle.io.cluster.vue +12 -1
- package/detail/secret.vue +25 -0
- package/detail/workload/index.vue +3 -3
- package/dialog/AddCustomBadgeDialog.vue +5 -1
- package/edit/auth/ldap/__tests__/config.test.ts +18 -0
- package/edit/auth/ldap/config.vue +24 -0
- package/edit/auth/saml.vue +8 -6
- package/edit/fleet.cattle.io.gitrepo.vue +34 -23
- package/edit/logging-flow/index.vue +4 -19
- package/edit/networking.k8s.io.ingress/index.vue +18 -65
- package/edit/networking.k8s.io.networkpolicy/index.vue +4 -5
- package/edit/provisioning.cattle.io.cluster/index.vue +27 -8
- package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -115
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/tabs/networking/ACE.vue +14 -28
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +25 -12
- package/edit/secret/index.vue +1 -1
- package/edit/secret/ssh.vue +21 -3
- package/edit/service.vue +1 -2
- package/list/networking.k8s.io.ingress.vue +1 -1
- package/list/node.vue +15 -8
- package/list/persistentvolume.vue +12 -4
- package/list/provisioning.cattle.io.cluster.vue +1 -0
- package/list/service.vue +1 -1
- package/list/workload.vue +4 -0
- package/mixins/chart.js +4 -1
- package/models/catalog.cattle.io.app.js +3 -1
- package/models/catalog.cattle.io.clusterrepo.js +56 -7
- package/models/fleet.cattle.io.bundle.js +0 -11
- package/models/fleet.cattle.io.cluster.js +17 -1
- package/models/fleet.cattle.io.gitrepo.js +88 -52
- package/models/provisioning.cattle.io.cluster.js +36 -1
- package/models/secret.js +5 -0
- package/models/service.js +1 -0
- package/models/workload.js +19 -1
- package/package.json +5 -4
- package/pages/account/index.vue +4 -0
- package/pages/c/_cluster/apps/charts/index.vue +4 -0
- package/pages/c/_cluster/explorer/ConfigBadge.vue +4 -2
- package/pages/c/_cluster/explorer/index.vue +13 -6
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +3 -3
- package/pages/c/_cluster/fleet/index.vue +75 -89
- package/pages/c/_cluster/settings/links.vue +2 -2
- package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +3 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +3 -0
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +7 -1
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -1
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +10 -7
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +7 -0
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +181 -106
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +2 -0
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +9 -1
- package/pages/c/_cluster/uiplugins/index.vue +50 -12
- package/pages/diagnostic.vue +17 -15
- package/pages/home.vue +32 -6
- package/plugins/clean-html.js +50 -0
- package/plugins/dashboard-store/resource-class.js +4 -0
- package/plugins/plugin.js +54 -49
- package/plugins/steve/mutations.js +1 -1
- package/plugins/steve/steve-class.js +8 -0
- package/plugins/steve/steve-pagination-utils.ts +3 -1
- package/rancher-components/Accordion/Accordion.vue +4 -4
- package/rancher-components/BadgeState/BadgeState.vue +7 -0
- package/rancher-components/Card/Card.vue +12 -0
- package/rancher-components/Form/Checkbox/Checkbox.vue +9 -2
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +19 -1
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +39 -2
- package/rancher-components/RcButton/RcButton.vue +90 -0
- package/rancher-components/RcButton/index.ts +2 -0
- package/rancher-components/RcButton/types.ts +17 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +122 -0
- package/rancher-components/RcDropdown/RcDropdownItem.vue +127 -0
- package/rancher-components/RcDropdown/RcDropdownSeparator.vue +6 -0
- package/rancher-components/RcDropdown/RcDropdownTrigger.vue +42 -0
- package/rancher-components/RcDropdown/index.ts +4 -0
- package/rancher-components/RcDropdown/types.ts +22 -0
- package/rancher-components/RcDropdown/useDropdownCollection.ts +46 -0
- package/rancher-components/RcDropdown/useDropdownContext.ts +110 -0
- package/scripts/test-plugins-build.sh +2 -0
- package/scripts/typegen.sh +2 -0
- package/store/catalog.js +1 -1
- package/tsconfig.json +2 -1
- package/types/components/paginatedResourceTable.ts +25 -0
- package/types/components/resourceLabeledSelect.ts +48 -0
- package/types/resources/fleet.d.ts +17 -0
- package/types/shell/index.d.ts +61 -0
- package/utils/auth.js +5 -1
- package/utils/cluster.js +106 -0
- package/utils/fleet.ts +35 -3
- package/utils/ingress.ts +64 -0
- package/utils/uiplugins.ts +56 -44
- package/utils/validators/cron-schedule.js +7 -2
- package/utils/validators/formRules/__tests__/index.test.ts +53 -17
- package/utils/validators/formRules/index.ts +20 -5
- package/vue.config.js +1 -1
- package/components/RelatedWorkloadsTable.vue +0 -50
|
@@ -61,13 +61,13 @@ BODY {
|
|
|
61
61
|
INPUT,
|
|
62
62
|
SELECT,
|
|
63
63
|
TEXTAREA,
|
|
64
|
-
.labeled-input,
|
|
65
64
|
.checkbox-custom {
|
|
66
65
|
&:focus, &.focused {
|
|
67
66
|
@include form-focus;
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
|
|
70
|
+
.labeled-input,
|
|
71
71
|
.radio-custom,
|
|
72
72
|
.labeled-select,
|
|
73
73
|
.unlabeled-select {
|
|
@@ -76,6 +76,7 @@ TEXTAREA,
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
.labeled-input,
|
|
79
80
|
.labeled-select,
|
|
80
81
|
.unlabeled-select {
|
|
81
82
|
&.focused {
|
|
@@ -83,14 +84,12 @@ TEXTAREA,
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
box-shadow: 0 0 0 var(--outline-width) var(--outline);
|
|
91
|
-
background: var(--primary-hover-bg);
|
|
92
|
-
}
|
|
87
|
+
.unlabeled-select {
|
|
88
|
+
&:focus-visible, &.focused {
|
|
89
|
+
@include focus-outline;
|
|
90
|
+
}
|
|
93
91
|
}
|
|
92
|
+
|
|
94
93
|
A {
|
|
95
94
|
@include link-color(var(--link), var(--body-text));
|
|
96
95
|
|
|
@@ -126,6 +126,11 @@ button,
|
|
|
126
126
|
&.btn:not(.btn-sm) {
|
|
127
127
|
line-height: $btn-height - 2px;
|
|
128
128
|
}
|
|
129
|
+
|
|
130
|
+
&:focus-visible {
|
|
131
|
+
@include focus-outline;
|
|
132
|
+
outline-offset: 2px;
|
|
133
|
+
}
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
.role-link {
|
|
@@ -141,6 +146,11 @@ button,
|
|
|
141
146
|
color: var(--link);
|
|
142
147
|
box-shadow: none;
|
|
143
148
|
}
|
|
149
|
+
|
|
150
|
+
&:focus-visible {
|
|
151
|
+
@include focus-outline;
|
|
152
|
+
outline-offset: 2px;
|
|
153
|
+
}
|
|
144
154
|
}
|
|
145
155
|
|
|
146
156
|
.role-multi-action {
|
|
@@ -27,7 +27,8 @@ TEXTAREA,
|
|
|
27
27
|
|
|
28
28
|
@include input-status-color;
|
|
29
29
|
|
|
30
|
-
&:focus:not(.
|
|
30
|
+
&:focus:not(.labeled-input):not(.unlabeled-select):not(.labeled-select),
|
|
31
|
+
&.focused:not(.labeled-input):not(.unlabeled-select):not(.labeled-select) {
|
|
31
32
|
@include form-focus;
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -105,13 +105,13 @@
|
|
|
105
105
|
.v-popper__popper {
|
|
106
106
|
$color: var(--popover-bg);
|
|
107
107
|
border: 1px solid var(--border);
|
|
108
|
-
border-radius: var(--border-radius);
|
|
108
|
+
border-radius: var(--border-radius-lg);
|
|
109
109
|
|
|
110
110
|
.v-popper__inner {
|
|
111
111
|
background: $color;
|
|
112
112
|
color: var(--popover-text);
|
|
113
113
|
padding: 10px;
|
|
114
|
-
border-radius: var(--border-radius);
|
|
114
|
+
border-radius: var(--border-radius-lg);
|
|
115
115
|
border: none;
|
|
116
116
|
|
|
117
117
|
a {
|
|
@@ -35,6 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
$drag-over: #DCDEE7;
|
|
37
37
|
|
|
38
|
+
$slate: #4B4F6B;
|
|
39
|
+
|
|
40
|
+
--slate: #{$slate};
|
|
41
|
+
|
|
38
42
|
--default : #{$dark};
|
|
39
43
|
--default-text : #{$light};
|
|
40
44
|
--default-hover-bg : #{darken($dark, 10%)};
|
|
@@ -68,7 +72,7 @@
|
|
|
68
72
|
--banner-text-color : #{$lightest};
|
|
69
73
|
|
|
70
74
|
--nav-bg : #{$darkest};
|
|
71
|
-
--nav-active :
|
|
75
|
+
--nav-active : #333;
|
|
72
76
|
--nav-border : #{$medium};
|
|
73
77
|
--nav-hover : var(--primary);
|
|
74
78
|
--nav-expander-hover : var(--primary-banner-bg);
|
|
@@ -111,7 +115,7 @@
|
|
|
111
115
|
--dropdown-active-text : #{$lightest};
|
|
112
116
|
--dropdown-active-bg : #{$light};
|
|
113
117
|
--dropdown-hover-text : #{$lightest};
|
|
114
|
-
--dropdown-hover-bg :
|
|
118
|
+
--dropdown-hover-bg : #{$slate};
|
|
115
119
|
--dropdown-disabled-bg : #{$disabled};
|
|
116
120
|
--dropdown-disabled-text : #{$disabled};
|
|
117
121
|
--dropdown-group-text : #{$disabled};
|
|
@@ -146,7 +150,7 @@
|
|
|
146
150
|
--tag-primary : #{$lightest};
|
|
147
151
|
--tag-bg : #{$medium};
|
|
148
152
|
|
|
149
|
-
--popover-bg :
|
|
153
|
+
--popover-bg : #{$darker};
|
|
150
154
|
--popover-border : var(--border);
|
|
151
155
|
--popover-text : var(--body-text);
|
|
152
156
|
|
|
@@ -219,4 +223,12 @@
|
|
|
219
223
|
|
|
220
224
|
--product-icon : #{$lighter};
|
|
221
225
|
--product-icon-active : #{$lightest};
|
|
226
|
+
|
|
227
|
+
--badge-state-disabled-text : #{$desc-light};
|
|
228
|
+
--badge-state-disabled-bg : #{$medium};
|
|
229
|
+
--badge-state-disabled-border: #{$lighter};
|
|
230
|
+
|
|
231
|
+
$slate: #4B4F6B;
|
|
232
|
+
|
|
233
|
+
--slate: #{$slate};
|
|
222
234
|
}
|
|
@@ -347,6 +347,7 @@ BODY, .theme-light {
|
|
|
347
347
|
--border : #{$medium};
|
|
348
348
|
--border-width : 1px;
|
|
349
349
|
--border-radius : 4px;
|
|
350
|
+
--border-radius-lg : 8px;
|
|
350
351
|
--outline : var(--primary);
|
|
351
352
|
--outline-width : 1px;
|
|
352
353
|
|
|
@@ -374,8 +375,8 @@ BODY, .theme-light {
|
|
|
374
375
|
--dropdown-text : #{$darkest};
|
|
375
376
|
--dropdown-active-text : #{$lightest};
|
|
376
377
|
--dropdown-active-bg : #{$dark};
|
|
377
|
-
--dropdown-hover-text :
|
|
378
|
-
--dropdown-hover-bg :
|
|
378
|
+
--dropdown-hover-text : var(--body-text);
|
|
379
|
+
--dropdown-hover-bg : #{$light};
|
|
379
380
|
--dropdown-disabled-text : var(--muted);
|
|
380
381
|
--dropdown-disabled-bg : #{$disabled};
|
|
381
382
|
--dropdown-group-text : #{$darker};
|
|
@@ -544,4 +545,8 @@ BODY, .theme-light {
|
|
|
544
545
|
|
|
545
546
|
--product-icon : #{$darker};
|
|
546
547
|
--product-icon-active : #{$darkest};
|
|
548
|
+
|
|
549
|
+
--badge-state-disabled-text : #{$darker};
|
|
550
|
+
--badge-state-disabled-bg : #{$lighter};
|
|
551
|
+
--badge-state-disabled-border: #{$medium};
|
|
547
552
|
}
|
|
@@ -74,6 +74,10 @@
|
|
|
74
74
|
color: var(--dropdown-text);
|
|
75
75
|
white-space: nowrap;
|
|
76
76
|
z-index: 1000;
|
|
77
|
+
overflow-y: auto;
|
|
78
|
+
// needs overflow-x hidden so that select for type of charts in cluster chart page
|
|
79
|
+
// doesn't show a horizontal scroll https://github.com/rancher/dashboard/pull/13139/files/9e6a8e64181de4525ad378d4d1b93c8efc2ed6d5#r1929296126
|
|
80
|
+
overflow-x: hidden;
|
|
77
81
|
|
|
78
82
|
&:hover {
|
|
79
83
|
cursor: pointer;
|
|
@@ -9,12 +9,14 @@ generic:
|
|
|
9
9
|
back: Back
|
|
10
10
|
cancel: Cancel
|
|
11
11
|
confirm: Confirm
|
|
12
|
+
colorPicker: Color picker
|
|
12
13
|
clear: Clear
|
|
13
14
|
clearAll: Clear All
|
|
14
15
|
close: Close
|
|
15
16
|
comingSoon: Coming Soon
|
|
16
17
|
comma: ', '
|
|
17
18
|
copy: Copy
|
|
19
|
+
copyToClipboard: Copy text to Clipboard
|
|
18
20
|
create: Create
|
|
19
21
|
created: Created
|
|
20
22
|
customize: Customize
|
|
@@ -116,6 +118,10 @@ generic:
|
|
|
116
118
|
}
|
|
117
119
|
basic: Basic
|
|
118
120
|
|
|
121
|
+
ariaLabel:
|
|
122
|
+
key: Key {index}
|
|
123
|
+
value: Value {index}
|
|
124
|
+
|
|
119
125
|
locale:
|
|
120
126
|
menu: Locale selector menu
|
|
121
127
|
en-us: English
|
|
@@ -134,6 +140,8 @@ nav:
|
|
|
134
140
|
support: Support page link
|
|
135
141
|
about: About page link
|
|
136
142
|
pinCluster: Pin/Unpin cluster
|
|
143
|
+
collapseExpand: Collapse/Expand menu group
|
|
144
|
+
productAboutPage: Product about page link
|
|
137
145
|
alt:
|
|
138
146
|
mainMenuIcon: Main menu icon
|
|
139
147
|
mainMenuRancherLogo: Main menu Rancher logo
|
|
@@ -221,10 +229,18 @@ nav:
|
|
|
221
229
|
header:
|
|
222
230
|
setLoginPage: Set as login page
|
|
223
231
|
restoreCards: Restore hidden cards
|
|
232
|
+
showHideBanner: Show/Hide Banner
|
|
224
233
|
userMenu:
|
|
225
234
|
preferences: Preferences
|
|
226
235
|
accountAndKeys: Account & API Keys
|
|
227
236
|
logOut: Log Out
|
|
237
|
+
label: User menu
|
|
238
|
+
button:
|
|
239
|
+
label: Open user menu
|
|
240
|
+
actionMenu:
|
|
241
|
+
label: Page actions menu
|
|
242
|
+
button:
|
|
243
|
+
label: Open page actions menu
|
|
228
244
|
failWhale:
|
|
229
245
|
authMiddleware: Auth Middleware
|
|
230
246
|
clusterNotFound: Cluster { clusterId } not found
|
|
@@ -514,6 +530,9 @@ authConfig:
|
|
|
514
530
|
starttls:
|
|
515
531
|
label: Start TLS
|
|
516
532
|
tip: Upgrades non-encrypted connections by wrapping with TLS during the connection process. Can not be used in conjunction with TLS.
|
|
533
|
+
searchUsingServiceAccount:
|
|
534
|
+
label: Enable Service Account Search
|
|
535
|
+
tip: When enabled, Rancher will use the service account instead of the user account to search for users and groups.
|
|
517
536
|
tls: TLS
|
|
518
537
|
userEnabledAttribute: User Enabled Attribute
|
|
519
538
|
userMemberAttribute: User Member Attribute
|
|
@@ -931,6 +950,7 @@ catalog:
|
|
|
931
950
|
experimentalWarning: '{chartName} has been marked as experimental. Use caution when installing this helm chart as it might not function as expected.'
|
|
932
951
|
deprecatedAndExperimentalWarning: '{chartName} has been marked as deprecated and experimental. Use caution when installing this helm chart as it might be removed in the future and might not function as expected.'
|
|
933
952
|
charts:
|
|
953
|
+
refresh: refresh charts
|
|
934
954
|
all: All
|
|
935
955
|
categories:
|
|
936
956
|
all: All Categories
|
|
@@ -950,7 +970,7 @@ catalog:
|
|
|
950
970
|
all: All Operating Systems
|
|
951
971
|
linux: Linux
|
|
952
972
|
windows: Windows
|
|
953
|
-
search: Filter
|
|
973
|
+
search: Filter charts results
|
|
954
974
|
deprecatedChartsFilter:
|
|
955
975
|
label: Show deprecated apps
|
|
956
976
|
install:
|
|
@@ -961,7 +981,7 @@ catalog:
|
|
|
961
981
|
chart: Chart
|
|
962
982
|
warning:
|
|
963
983
|
managed:
|
|
964
|
-
Warning,
|
|
984
|
+
Warning, {manager} manages deployment and upgrade of the {name} app. Upgrading this app is not supported.<br>
|
|
965
985
|
{version, select,
|
|
966
986
|
null { }
|
|
967
987
|
other { Under most circumstances, no user intervention should be needed to ensure that the {version} version is compatible with the version of Rancher that you are running.}
|
|
@@ -1061,7 +1081,7 @@ catalog:
|
|
|
1061
1081
|
windows: '{ver} (Windows-only)'
|
|
1062
1082
|
delete:
|
|
1063
1083
|
warning:
|
|
1064
|
-
managed: Warning,
|
|
1084
|
+
managed: Warning, {manager} manages deployment and upgrade of the {name} app. Deleting this app is not supported.
|
|
1065
1085
|
operation:
|
|
1066
1086
|
tableHeaders:
|
|
1067
1087
|
action: Action
|
|
@@ -2074,6 +2094,7 @@ cluster:
|
|
|
2074
2094
|
label: Control Plane Concurrency
|
|
2075
2095
|
toolTip: "This can be either a fixed number of nodes (e.g. 1) at a time or a percentage (e.g. 10%)"
|
|
2076
2096
|
workerConcurrency:
|
|
2097
|
+
header: Worker Nodes
|
|
2077
2098
|
label: Worker Concurrency
|
|
2078
2099
|
toolTip: "This can be either a fixed number of nodes (e.g. 1) at a time or a percentage (e.g. 10%)"
|
|
2079
2100
|
drain:
|
|
@@ -2109,6 +2130,7 @@ cluster:
|
|
|
2109
2130
|
tlsSan:
|
|
2110
2131
|
label: TLS Alternate Names
|
|
2111
2132
|
fqdn:
|
|
2133
|
+
label: FQDN
|
|
2112
2134
|
toolTip: A FQDN which will resolve to the healthy control plane nodes of the cluster.
|
|
2113
2135
|
caCerts:
|
|
2114
2136
|
label: CA Certificates
|
|
@@ -2381,6 +2403,9 @@ fleet:
|
|
|
2381
2403
|
cluster:
|
|
2382
2404
|
summary: Resource Summary
|
|
2383
2405
|
nonReady: Non-Ready Bundles
|
|
2406
|
+
labels: Labels
|
|
2407
|
+
hideLabels: Show less
|
|
2408
|
+
showLabels: Show more
|
|
2384
2409
|
clusters:
|
|
2385
2410
|
harvester: |-
|
|
2386
2411
|
There {count, plural,
|
|
@@ -2416,6 +2441,7 @@ fleet:
|
|
|
2416
2441
|
resources: Resources
|
|
2417
2442
|
unready: Non-Ready
|
|
2418
2443
|
auth:
|
|
2444
|
+
title: Authentication
|
|
2419
2445
|
label: Authentication
|
|
2420
2446
|
git: Git Authentication
|
|
2421
2447
|
helm: Helm Authentication
|
|
@@ -2426,20 +2452,20 @@ fleet:
|
|
|
2426
2452
|
label: Paths
|
|
2427
2453
|
placeholder: e.g. /directory/in/your/repo
|
|
2428
2454
|
addLabel: Add Path
|
|
2429
|
-
empty: The root of the repo is used by default.
|
|
2455
|
+
empty: The root of the repo is used by default. Multiple different directories can be provided.
|
|
2430
2456
|
repo:
|
|
2457
|
+
title: Source
|
|
2431
2458
|
label: Repository URL
|
|
2432
2459
|
placeholder: e.g. https://github.com/rancher/fleet-examples.git or git@github.com:rancher/fleet-examples.git
|
|
2433
2460
|
addRepo: Add Repository
|
|
2434
2461
|
noRepos: No repositories have been added
|
|
2435
2462
|
noWorkspaces: There are no workspaces. <br/> Please create a workspace before adding repositories
|
|
2436
|
-
protocolBanner: Enter a valid HTTPS or SSH URL to a git repository.
|
|
2437
2463
|
resources:
|
|
2438
2464
|
label: 'Resource Handling'
|
|
2439
2465
|
keepResources: Always Keep Resources
|
|
2440
|
-
|
|
2466
|
+
keepResourcesTooltip: When enabled, resources will be kept when deleting a GitRepo or Bundle - only Helm release secrets will be deleted.
|
|
2441
2467
|
correctDrift: Enable Self-Healing
|
|
2442
|
-
|
|
2468
|
+
correctDriftTooltip: When enabled, Fleet will ensure that the cluster resources are kept in sync with the git repository. All resource changes made on the cluster will be lost.
|
|
2443
2469
|
add:
|
|
2444
2470
|
steps:
|
|
2445
2471
|
repoInfo:
|
|
@@ -2732,6 +2758,8 @@ hpa:
|
|
|
2732
2758
|
|
|
2733
2759
|
import:
|
|
2734
2760
|
title: Import YAML
|
|
2761
|
+
editor:
|
|
2762
|
+
label: YAML Editor
|
|
2735
2763
|
defaultNamespace:
|
|
2736
2764
|
label: Default Namespace
|
|
2737
2765
|
success: |-
|
|
@@ -4354,6 +4382,8 @@ plugins:
|
|
|
4354
4382
|
incompatibleUiExtensionsApiVersion: "The latest version of this extension ({ version }) is not compatible with the current Extensions API version ({ required })."
|
|
4355
4383
|
incompatibleHost: 'The latest version of this extension ({ version }) has a host of "{ required }" which is not compatible with this application "{ mainHost }".'
|
|
4356
4384
|
currentInstalledVersionBlockedByKubeVersion: "This version is not compatible with the current Kubernetes version ({ kubeVersion } Vs { kubeVersionToCheck })."
|
|
4385
|
+
closePluginPanel: Close plugin description panel
|
|
4386
|
+
viewVersionDetails: View extension {name} version {version} details/Readme
|
|
4357
4387
|
labels:
|
|
4358
4388
|
builtin: Built-in
|
|
4359
4389
|
experimental: Experimental
|
|
@@ -4361,6 +4391,8 @@ plugins:
|
|
|
4361
4391
|
image: Image
|
|
4362
4392
|
installing: Installing ...
|
|
4363
4393
|
uninstalling: Uninstalling ...
|
|
4394
|
+
menu: Extensions menu
|
|
4395
|
+
reloadRancher: Reload Rancher
|
|
4364
4396
|
descriptions:
|
|
4365
4397
|
experimental: This Extension is marked as experimental
|
|
4366
4398
|
third-party: This Extension is provided by a Third-Party
|
|
@@ -5113,10 +5145,22 @@ secret:
|
|
|
5113
5145
|
username: Username
|
|
5114
5146
|
ssh:
|
|
5115
5147
|
keys: Keys
|
|
5148
|
+
keysAndHosts: Keys and Known Hosts
|
|
5116
5149
|
public: Public Key
|
|
5117
5150
|
publicPlaceholder: "Paste in your public key"
|
|
5118
5151
|
private: Private Key
|
|
5119
5152
|
privatePlaceholder: "Paste in your private key"
|
|
5153
|
+
knownHosts: Known Hosts
|
|
5154
|
+
knownHostsPlaceholder: "Known hosts metadata, one per line"
|
|
5155
|
+
editKnownHosts:
|
|
5156
|
+
title: SSH Known Hosts Configuration
|
|
5157
|
+
entries: |-
|
|
5158
|
+
{entries, plural,
|
|
5159
|
+
=0 {Empty}
|
|
5160
|
+
=1 {1 Entry}
|
|
5161
|
+
other {{entries} Entries}
|
|
5162
|
+
}
|
|
5163
|
+
|
|
5120
5164
|
serviceAcct:
|
|
5121
5165
|
ca: CA Certificate
|
|
5122
5166
|
token: Token
|
|
@@ -5363,6 +5407,7 @@ sortableTable:
|
|
|
5363
5407
|
=1 {{count} {count, plural, =1 {{singularLabel}} other {{pluralLabel}}}}
|
|
5364
5408
|
other {{from} - {to} of {count} {pluralLabel}}}
|
|
5365
5409
|
search: Filter
|
|
5410
|
+
searchLabel: Filter table results
|
|
5366
5411
|
in: in
|
|
5367
5412
|
addFilter: Add Filter
|
|
5368
5413
|
filterFor: Filter for...
|
|
@@ -6030,6 +6075,8 @@ validation:
|
|
|
6030
6075
|
flowOutput:
|
|
6031
6076
|
both: Requires "Output" or "Cluster Output" to be selected.
|
|
6032
6077
|
global: Requires "Cluster Output" to be selected.
|
|
6078
|
+
git:
|
|
6079
|
+
repository: Repository URL must be a HTTP(s) or SSH url with no trailing spaces
|
|
6033
6080
|
output:
|
|
6034
6081
|
logdna:
|
|
6035
6082
|
apiKey: Required an "Api Key" to be set.
|
|
@@ -6133,6 +6180,11 @@ validation:
|
|
|
6133
6180
|
interval: '"{key}" must be of a format with digits followed by a unit i.e. 1h, 2m, 30s'
|
|
6134
6181
|
tab: "One or more fields in this tab contain a form validation error"
|
|
6135
6182
|
|
|
6183
|
+
carousel:
|
|
6184
|
+
previous: Previous
|
|
6185
|
+
next: Next
|
|
6186
|
+
controlItem: Go to slide nº {number}
|
|
6187
|
+
|
|
6136
6188
|
wizard:
|
|
6137
6189
|
previous: Previous
|
|
6138
6190
|
finish: Finish
|
|
@@ -6176,7 +6228,7 @@ wm:
|
|
|
6176
6228
|
containerShell:
|
|
6177
6229
|
clear: Clear
|
|
6178
6230
|
containerName: "Container: {label}"
|
|
6179
|
-
failed: "Unable to open a shell to the container (none of the shell
|
|
6231
|
+
failed: "Unable to open a shell to the container (none of the shell commands succeeded)\n\r"
|
|
6180
6232
|
logLevel:
|
|
6181
6233
|
info: INFO
|
|
6182
6234
|
error: ERROR
|
|
@@ -6189,6 +6241,11 @@ wm:
|
|
|
6189
6241
|
title: "Kubectl: {name}"
|
|
6190
6242
|
|
|
6191
6243
|
workload:
|
|
6244
|
+
scaleWorkloads: Scale workloads
|
|
6245
|
+
healthWorkloads: Jobs/Pods health status
|
|
6246
|
+
healthScaleToggle: Toggle/Expand workloads scaling/health
|
|
6247
|
+
plus: Scale up workload
|
|
6248
|
+
minus: Scale down workload
|
|
6192
6249
|
container:
|
|
6193
6250
|
command:
|
|
6194
6251
|
addEnvVar: Add Variable
|
|
@@ -7746,7 +7803,7 @@ customLinks:
|
|
|
7746
7803
|
issues: File an Issue
|
|
7747
7804
|
getStarted: Get Started
|
|
7748
7805
|
commercialSupport: Commercial Support
|
|
7749
|
-
|
|
7806
|
+
appCo: SUSE Application Collection
|
|
7750
7807
|
|
|
7751
7808
|
|
|
7752
7809
|
##############################
|
|
@@ -2153,13 +2153,12 @@ fleet:
|
|
|
2153
2153
|
addRepo: 添加仓库
|
|
2154
2154
|
noRepos: 未添加任何仓库
|
|
2155
2155
|
noWorkspaces: 没有工作空间。<br/>请在添加仓库之前创建一个工作空间
|
|
2156
|
-
protocolBanner: 输入指向 git 仓库的有效 HTTPS 或 SSH URL。
|
|
2157
2156
|
resources:
|
|
2158
2157
|
label: '资源处理'
|
|
2159
2158
|
keepResources: 永远保留资源
|
|
2160
|
-
|
|
2159
|
+
keepResourcesTooltip: 启用时,删除 GitRepo 或 Bundle 后将保留资源,只会删除 Helm Release Secret。
|
|
2161
2160
|
correctDrift: 启用自我修复
|
|
2162
|
-
|
|
2161
|
+
correctDriftTooltip: 启用后,Fleet 将确保集群资源与 Git 仓库保持同步。在 ecluster 上进行的所有资源更改都将丢失。
|
|
2163
2162
|
add:
|
|
2164
2163
|
steps:
|
|
2165
2164
|
repoInfo:
|
package/components/AppModal.vue
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { defineComponent } from 'vue';
|
|
3
|
+
import { DEFAULT_FOCUS_TRAP_OPTS, useBasicSetupFocusTrap, getFirstFocusableElement } from '@shell/composables/focusTrap';
|
|
4
|
+
|
|
5
|
+
export const DEFAULT_ITERABLE_NODE_SELECTOR = 'body;';
|
|
3
6
|
|
|
4
7
|
export default defineComponent({
|
|
5
8
|
name: 'AppModal',
|
|
@@ -56,6 +59,27 @@ export default defineComponent({
|
|
|
56
59
|
name: {
|
|
57
60
|
type: String,
|
|
58
61
|
default: '',
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* trigger focus trap
|
|
65
|
+
*/
|
|
66
|
+
triggerFocusTrap: {
|
|
67
|
+
type: Boolean,
|
|
68
|
+
default: false,
|
|
69
|
+
},
|
|
70
|
+
/**
|
|
71
|
+
* forcefully set return focus element based on this selector
|
|
72
|
+
*/
|
|
73
|
+
returnFocusSelector: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: '',
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* will return focus to the first iterable node of this container select
|
|
79
|
+
*/
|
|
80
|
+
returnFocusFirstIterableNodeSelector: {
|
|
81
|
+
type: String,
|
|
82
|
+
default: DEFAULT_ITERABLE_NODE_SELECTOR,
|
|
59
83
|
}
|
|
60
84
|
},
|
|
61
85
|
computed: {
|
|
@@ -85,6 +109,31 @@ export default defineComponent({
|
|
|
85
109
|
};
|
|
86
110
|
}
|
|
87
111
|
},
|
|
112
|
+
setup(props) {
|
|
113
|
+
if (props.triggerFocusTrap) {
|
|
114
|
+
let opts:any = DEFAULT_FOCUS_TRAP_OPTS;
|
|
115
|
+
|
|
116
|
+
// if we have a "returnFocusFirstIterableNodeSelector" on top of "returnFocusSelector"
|
|
117
|
+
// then we will use "returnFocusFirstIterableNodeSelector" as a fallback of "returnFocusSelector"
|
|
118
|
+
if (props.returnFocusFirstIterableNodeSelector && props.returnFocusFirstIterableNodeSelector !== DEFAULT_ITERABLE_NODE_SELECTOR && props.returnFocusSelector) {
|
|
119
|
+
opts = {
|
|
120
|
+
...DEFAULT_FOCUS_TRAP_OPTS,
|
|
121
|
+
setReturnFocus: () => {
|
|
122
|
+
return document.querySelector(props.returnFocusSelector) ? props.returnFocusSelector : getFirstFocusableElement(document.querySelector(props.returnFocusFirstIterableNodeSelector));
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
// otherwise, if we are sure of permanent existance of "returnFocusSelector"
|
|
126
|
+
// we just return to that element
|
|
127
|
+
} else if (props.returnFocusSelector) {
|
|
128
|
+
opts = {
|
|
129
|
+
...DEFAULT_FOCUS_TRAP_OPTS,
|
|
130
|
+
setReturnFocus: props.returnFocusSelector
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
useBasicSetupFocusTrap('#modal-container-element', opts);
|
|
135
|
+
}
|
|
136
|
+
},
|
|
88
137
|
mounted() {
|
|
89
138
|
document.addEventListener('keydown', this.handleEscapeKey);
|
|
90
139
|
},
|
|
@@ -134,6 +183,7 @@ export default defineComponent({
|
|
|
134
183
|
>
|
|
135
184
|
<div
|
|
136
185
|
v-bind="$attrs"
|
|
186
|
+
id="modal-container-element"
|
|
137
187
|
ref="modalRef"
|
|
138
188
|
:class="customClass"
|
|
139
189
|
class="modal-container"
|
|
@@ -51,19 +51,6 @@ export default {
|
|
|
51
51
|
data-testid="banner-title"
|
|
52
52
|
class="title"
|
|
53
53
|
/>
|
|
54
|
-
<div
|
|
55
|
-
v-if="pref"
|
|
56
|
-
class="close-button"
|
|
57
|
-
data-testid="graphic-banner-close"
|
|
58
|
-
tabindex="0"
|
|
59
|
-
:aria-label="t('generic.close')"
|
|
60
|
-
role="button"
|
|
61
|
-
@click="hide()"
|
|
62
|
-
@keyup.enter="hide()"
|
|
63
|
-
@keyup.space="hide()"
|
|
64
|
-
>
|
|
65
|
-
<i class="icon icon-close" />
|
|
66
|
-
</div>
|
|
67
54
|
</div>
|
|
68
55
|
</template>
|
|
69
56
|
|
|
@@ -74,35 +61,6 @@ export default {
|
|
|
74
61
|
.banner-graphic {
|
|
75
62
|
position: relative;
|
|
76
63
|
|
|
77
|
-
.close-button {
|
|
78
|
-
position: absolute;
|
|
79
|
-
visibility: hidden;
|
|
80
|
-
|
|
81
|
-
&:focus-visible {
|
|
82
|
-
@include focus-outline;
|
|
83
|
-
outline-offset: 2px;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
&:hover .close-button {
|
|
88
|
-
visibility: visible;
|
|
89
|
-
position: absolute;
|
|
90
|
-
right: 4px;
|
|
91
|
-
top: 4px;
|
|
92
|
-
font-size: 16px;
|
|
93
|
-
padding: 4px;
|
|
94
|
-
display: flex;
|
|
95
|
-
align-items: center;
|
|
96
|
-
cursor: pointer;
|
|
97
|
-
opacity: 0.4;
|
|
98
|
-
|
|
99
|
-
&:hover {
|
|
100
|
-
background-color: var(--accent-btn-hover);
|
|
101
|
-
color: var(--accent-btn-hover-text);
|
|
102
|
-
opacity: 1;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
64
|
.graphic {
|
|
107
65
|
display: flex;
|
|
108
66
|
flex-direction: column;
|