@rancher/shell 3.0.2-rc.2 → 3.0.2-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/styles/base/_basic.scss +5 -7
- package/assets/styles/global/_button.scss +10 -0
- package/assets/styles/global/_tooltip.scss +2 -2
- package/assets/styles/themes/_dark.scss +14 -2
- package/assets/styles/themes/_light.scss +7 -2
- package/assets/styles/vendor/vue-select.scss +4 -0
- package/assets/translations/en-us.yaml +44 -5
- package/components/BannerGraphic.vue +0 -42
- package/components/ButtonMultiAction.vue +1 -1
- package/components/Carousel.vue +36 -29
- package/components/CommunityLinks.vue +6 -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/Questions/Reference.vue +57 -28
- package/components/SelectIconGrid.vue +12 -1
- package/components/SideNav.vue +12 -38
- package/components/SortableTable/index.vue +1 -0
- package/components/Tabbed/index.vue +12 -1
- package/components/YamlEditor.vue +1 -0
- 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 +1 -1
- 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/SecretSelector.vue +2 -2
- package/components/form/__tests__/KeyValue.test.ts +1 -1
- 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/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/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 +7 -1
- 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 +13 -1
- 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/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/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 +86 -50
- package/models/provisioning.cattle.io.cluster.js +47 -2
- package/models/service.js +1 -0
- package/models/workload.js +19 -1
- package/package.json +5 -4
- package/pages/c/_cluster/apps/charts/index.vue +4 -0
- package/pages/c/_cluster/explorer/ConfigBadge.vue +8 -7
- 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/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 +27 -1
- 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 +18 -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 +111 -0
- package/rancher-components/RcDropdown/RcDropdownItem.vue +127 -0
- package/rancher-components/RcDropdown/RcDropdownSeparator.vue +6 -0
- package/rancher-components/RcDropdown/RcDropdownTrigger.vue +43 -0
- package/rancher-components/RcDropdown/index.ts +4 -0
- package/rancher-components/RcDropdown/types.ts +22 -0
- package/rancher-components/RcDropdown/useDropdownCollection.ts +45 -0
- package/rancher-components/RcDropdown/useDropdownContext.ts +83 -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
|
@@ -83,14 +83,12 @@ TEXTAREA,
|
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
box-shadow: 0 0 0 var(--outline-width) var(--outline);
|
|
91
|
-
background: var(--primary-hover-bg);
|
|
92
|
-
}
|
|
86
|
+
.unlabeled-select {
|
|
87
|
+
&:focus-visible, &.focused {
|
|
88
|
+
@include focus-outline;
|
|
89
|
+
}
|
|
93
90
|
}
|
|
91
|
+
|
|
94
92
|
A {
|
|
95
93
|
@include link-color(var(--link), var(--body-text));
|
|
96
94
|
|
|
@@ -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 {
|
|
@@ -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%)};
|
|
@@ -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,6 +9,7 @@ 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
|
|
@@ -116,6 +117,10 @@ generic:
|
|
|
116
117
|
}
|
|
117
118
|
basic: Basic
|
|
118
119
|
|
|
120
|
+
ariaLabel:
|
|
121
|
+
key: Key {index}
|
|
122
|
+
value: Value {index}
|
|
123
|
+
|
|
119
124
|
locale:
|
|
120
125
|
menu: Locale selector menu
|
|
121
126
|
en-us: English
|
|
@@ -134,6 +139,8 @@ nav:
|
|
|
134
139
|
support: Support page link
|
|
135
140
|
about: About page link
|
|
136
141
|
pinCluster: Pin/Unpin cluster
|
|
142
|
+
collapseExpand: Collapse/Expand menu group
|
|
143
|
+
productAboutPage: Product about page link
|
|
137
144
|
alt:
|
|
138
145
|
mainMenuIcon: Main menu icon
|
|
139
146
|
mainMenuRancherLogo: Main menu Rancher logo
|
|
@@ -221,10 +228,18 @@ nav:
|
|
|
221
228
|
header:
|
|
222
229
|
setLoginPage: Set as login page
|
|
223
230
|
restoreCards: Restore hidden cards
|
|
231
|
+
showHideBanner: Show/Hide Banner
|
|
224
232
|
userMenu:
|
|
225
233
|
preferences: Preferences
|
|
226
234
|
accountAndKeys: Account & API Keys
|
|
227
235
|
logOut: Log Out
|
|
236
|
+
label: User menu
|
|
237
|
+
button:
|
|
238
|
+
label: Open user menu
|
|
239
|
+
actionMenu:
|
|
240
|
+
label: Page actions menu
|
|
241
|
+
button:
|
|
242
|
+
label: Open page actions menu
|
|
228
243
|
failWhale:
|
|
229
244
|
authMiddleware: Auth Middleware
|
|
230
245
|
clusterNotFound: Cluster { clusterId } not found
|
|
@@ -514,6 +529,9 @@ authConfig:
|
|
|
514
529
|
starttls:
|
|
515
530
|
label: Start TLS
|
|
516
531
|
tip: Upgrades non-encrypted connections by wrapping with TLS during the connection process. Can not be used in conjunction with TLS.
|
|
532
|
+
searchUsingServiceAccount:
|
|
533
|
+
label: Enable Service Account Search
|
|
534
|
+
tip: When enabled, Rancher will use the service account instead of the user account to search for users and groups.
|
|
517
535
|
tls: TLS
|
|
518
536
|
userEnabledAttribute: User Enabled Attribute
|
|
519
537
|
userMemberAttribute: User Member Attribute
|
|
@@ -931,6 +949,7 @@ catalog:
|
|
|
931
949
|
experimentalWarning: '{chartName} has been marked as experimental. Use caution when installing this helm chart as it might not function as expected.'
|
|
932
950
|
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
951
|
charts:
|
|
952
|
+
refresh: refresh charts
|
|
934
953
|
all: All
|
|
935
954
|
categories:
|
|
936
955
|
all: All Categories
|
|
@@ -950,7 +969,7 @@ catalog:
|
|
|
950
969
|
all: All Operating Systems
|
|
951
970
|
linux: Linux
|
|
952
971
|
windows: Windows
|
|
953
|
-
search: Filter
|
|
972
|
+
search: Filter charts results
|
|
954
973
|
deprecatedChartsFilter:
|
|
955
974
|
label: Show deprecated apps
|
|
956
975
|
install:
|
|
@@ -961,7 +980,7 @@ catalog:
|
|
|
961
980
|
chart: Chart
|
|
962
981
|
warning:
|
|
963
982
|
managed:
|
|
964
|
-
Warning,
|
|
983
|
+
Warning, {manager} manages deployment and upgrade of the {name} app. Upgrading this app is not supported.<br>
|
|
965
984
|
{version, select,
|
|
966
985
|
null { }
|
|
967
986
|
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 +1080,7 @@ catalog:
|
|
|
1061
1080
|
windows: '{ver} (Windows-only)'
|
|
1062
1081
|
delete:
|
|
1063
1082
|
warning:
|
|
1064
|
-
managed: Warning,
|
|
1083
|
+
managed: Warning, {manager} manages deployment and upgrade of the {name} app. Deleting this app is not supported.
|
|
1065
1084
|
operation:
|
|
1066
1085
|
tableHeaders:
|
|
1067
1086
|
action: Action
|
|
@@ -2074,6 +2093,7 @@ cluster:
|
|
|
2074
2093
|
label: Control Plane Concurrency
|
|
2075
2094
|
toolTip: "This can be either a fixed number of nodes (e.g. 1) at a time or a percentage (e.g. 10%)"
|
|
2076
2095
|
workerConcurrency:
|
|
2096
|
+
header: Worker Nodes
|
|
2077
2097
|
label: Worker Concurrency
|
|
2078
2098
|
toolTip: "This can be either a fixed number of nodes (e.g. 1) at a time or a percentage (e.g. 10%)"
|
|
2079
2099
|
drain:
|
|
@@ -2109,6 +2129,7 @@ cluster:
|
|
|
2109
2129
|
tlsSan:
|
|
2110
2130
|
label: TLS Alternate Names
|
|
2111
2131
|
fqdn:
|
|
2132
|
+
label: FQDN
|
|
2112
2133
|
toolTip: A FQDN which will resolve to the healthy control plane nodes of the cluster.
|
|
2113
2134
|
caCerts:
|
|
2114
2135
|
label: CA Certificates
|
|
@@ -2381,6 +2402,9 @@ fleet:
|
|
|
2381
2402
|
cluster:
|
|
2382
2403
|
summary: Resource Summary
|
|
2383
2404
|
nonReady: Non-Ready Bundles
|
|
2405
|
+
labels: Labels
|
|
2406
|
+
hideLabels: Show less
|
|
2407
|
+
showLabels: Show more
|
|
2384
2408
|
clusters:
|
|
2385
2409
|
harvester: |-
|
|
2386
2410
|
There {count, plural,
|
|
@@ -2732,6 +2756,8 @@ hpa:
|
|
|
2732
2756
|
|
|
2733
2757
|
import:
|
|
2734
2758
|
title: Import YAML
|
|
2759
|
+
editor:
|
|
2760
|
+
label: YAML Editor
|
|
2735
2761
|
defaultNamespace:
|
|
2736
2762
|
label: Default Namespace
|
|
2737
2763
|
success: |-
|
|
@@ -5363,6 +5389,7 @@ sortableTable:
|
|
|
5363
5389
|
=1 {{count} {count, plural, =1 {{singularLabel}} other {{pluralLabel}}}}
|
|
5364
5390
|
other {{from} - {to} of {count} {pluralLabel}}}
|
|
5365
5391
|
search: Filter
|
|
5392
|
+
searchLabel: Filter table results
|
|
5366
5393
|
in: in
|
|
5367
5394
|
addFilter: Add Filter
|
|
5368
5395
|
filterFor: Filter for...
|
|
@@ -6030,6 +6057,8 @@ validation:
|
|
|
6030
6057
|
flowOutput:
|
|
6031
6058
|
both: Requires "Output" or "Cluster Output" to be selected.
|
|
6032
6059
|
global: Requires "Cluster Output" to be selected.
|
|
6060
|
+
git:
|
|
6061
|
+
repository: Repository URL must be a HTTP(s) or SSH url with no trailing spaces
|
|
6033
6062
|
output:
|
|
6034
6063
|
logdna:
|
|
6035
6064
|
apiKey: Required an "Api Key" to be set.
|
|
@@ -6133,6 +6162,11 @@ validation:
|
|
|
6133
6162
|
interval: '"{key}" must be of a format with digits followed by a unit i.e. 1h, 2m, 30s'
|
|
6134
6163
|
tab: "One or more fields in this tab contain a form validation error"
|
|
6135
6164
|
|
|
6165
|
+
carousel:
|
|
6166
|
+
previous: Previous
|
|
6167
|
+
next: Next
|
|
6168
|
+
controlItem: Go to slide nº {number}
|
|
6169
|
+
|
|
6136
6170
|
wizard:
|
|
6137
6171
|
previous: Previous
|
|
6138
6172
|
finish: Finish
|
|
@@ -6176,7 +6210,7 @@ wm:
|
|
|
6176
6210
|
containerShell:
|
|
6177
6211
|
clear: Clear
|
|
6178
6212
|
containerName: "Container: {label}"
|
|
6179
|
-
failed: "Unable to open a shell to the container (none of the shell
|
|
6213
|
+
failed: "Unable to open a shell to the container (none of the shell commands succeeded)\n\r"
|
|
6180
6214
|
logLevel:
|
|
6181
6215
|
info: INFO
|
|
6182
6216
|
error: ERROR
|
|
@@ -6189,6 +6223,11 @@ wm:
|
|
|
6189
6223
|
title: "Kubectl: {name}"
|
|
6190
6224
|
|
|
6191
6225
|
workload:
|
|
6226
|
+
scaleWorkloads: Scale workloads
|
|
6227
|
+
healthWorkloads: Jobs/Pods health status
|
|
6228
|
+
healthScaleToggle: Toggle/Expand workloads scaling/health
|
|
6229
|
+
plus: Scale up workload
|
|
6230
|
+
minus: Scale down workload
|
|
6192
6231
|
container:
|
|
6193
6232
|
command:
|
|
6194
6233
|
addEnvVar: Add Variable
|
|
@@ -7746,7 +7785,7 @@ customLinks:
|
|
|
7746
7785
|
issues: File an Issue
|
|
7747
7786
|
getStarted: Get Started
|
|
7748
7787
|
commercialSupport: Commercial Support
|
|
7749
|
-
|
|
7788
|
+
appCo: SUSE Application Collection
|
|
7750
7789
|
|
|
7751
7790
|
|
|
7752
7791
|
##############################
|
|
@@ -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;
|
package/components/Carousel.vue
CHANGED
|
@@ -195,33 +195,51 @@ export default {
|
|
|
195
195
|
</div>
|
|
196
196
|
</component>
|
|
197
197
|
</div>
|
|
198
|
-
<div
|
|
199
|
-
class="controls"
|
|
200
|
-
:class="{'disable': sliders.length === 1}"
|
|
201
|
-
>
|
|
202
|
-
<div
|
|
203
|
-
v-for="(slide, i) in slider"
|
|
204
|
-
:key="i"
|
|
205
|
-
class="control-item"
|
|
206
|
-
:class="{'active': activeItemId === i}"
|
|
207
|
-
@click="scrollSlide(i, slider.length)"
|
|
208
|
-
/>
|
|
209
|
-
</div>
|
|
210
198
|
<div
|
|
211
199
|
ref="prev"
|
|
200
|
+
role="button"
|
|
212
201
|
class="prev"
|
|
202
|
+
:aria-label="t('carousel.previous')"
|
|
203
|
+
:aria-disabled="sliders.length === 1"
|
|
213
204
|
:class="{'disable': sliders.length === 1}"
|
|
205
|
+
tabindex="0"
|
|
214
206
|
@click="nextPrev('prev')"
|
|
207
|
+
@keyup.enter.space="nextPrev('prev')"
|
|
215
208
|
>
|
|
216
|
-
<i
|
|
209
|
+
<i
|
|
210
|
+
class="icon icon-chevron-left icon-4x"
|
|
211
|
+
/>
|
|
217
212
|
</div>
|
|
218
213
|
<div
|
|
219
214
|
ref="next"
|
|
215
|
+
role="button"
|
|
220
216
|
class="next"
|
|
217
|
+
:aria-label="t('carousel.next')"
|
|
218
|
+
:aria-disabled="sliders.length === 1"
|
|
221
219
|
:class="{'disable': sliders.length === 1}"
|
|
220
|
+
tabindex="0"
|
|
222
221
|
@click="nextPrev('next')"
|
|
222
|
+
@keyup.enter.space="nextPrev('next')"
|
|
223
|
+
>
|
|
224
|
+
<i
|
|
225
|
+
class="icon icon-chevron-right icon-4x"
|
|
226
|
+
/>
|
|
227
|
+
</div>
|
|
228
|
+
<div
|
|
229
|
+
class="controls"
|
|
230
|
+
:class="{'disable': sliders.length === 1}"
|
|
223
231
|
>
|
|
224
|
-
<
|
|
232
|
+
<div
|
|
233
|
+
v-for="(slide, i) in slider"
|
|
234
|
+
:key="i"
|
|
235
|
+
class="control-item"
|
|
236
|
+
:class="{'active': activeItemId === i}"
|
|
237
|
+
role="button"
|
|
238
|
+
tabindex="0"
|
|
239
|
+
:aria-label="t('carousel.controlItem', { number: i+1 })"
|
|
240
|
+
@click="scrollSlide(i, slider.length)"
|
|
241
|
+
@keyup.enter.space="scrollSlide(i, slider.length)"
|
|
242
|
+
/>
|
|
225
243
|
</div>
|
|
226
244
|
</div>
|
|
227
245
|
</template>
|
|
@@ -240,20 +258,6 @@ export default {
|
|
|
240
258
|
&.disable::after {
|
|
241
259
|
display: none;
|
|
242
260
|
}
|
|
243
|
-
|
|
244
|
-
&.disable:hover {
|
|
245
|
-
.prev,
|
|
246
|
-
.next {
|
|
247
|
-
display: none;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
&:hover {
|
|
252
|
-
.prev,
|
|
253
|
-
.next {
|
|
254
|
-
display: block;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
261
|
}
|
|
258
262
|
|
|
259
263
|
.slide-track {
|
|
@@ -367,13 +371,16 @@ export default {
|
|
|
367
371
|
position: absolute;
|
|
368
372
|
z-index: 20;
|
|
369
373
|
top: 90px;
|
|
370
|
-
display: none;
|
|
371
374
|
cursor: pointer;
|
|
372
375
|
|
|
373
376
|
&.disabled .icon {
|
|
374
377
|
color: var(--disabled-bg);
|
|
375
378
|
cursor: not-allowed;
|
|
376
379
|
}
|
|
380
|
+
|
|
381
|
+
.icon:focus-visible {
|
|
382
|
+
@include focus-outline;
|
|
383
|
+
}
|
|
377
384
|
}
|
|
378
385
|
|
|
379
386
|
.next {
|
|
@@ -7,6 +7,7 @@ import { SETTING } from '@shell/config/settings';
|
|
|
7
7
|
import { mapGetters } from 'vuex';
|
|
8
8
|
import { isRancherPrime } from '@shell/config/version';
|
|
9
9
|
import { fetchLinks } from '@shell/config/home-links';
|
|
10
|
+
import { processLink } from '@shell/plugins/clean-html';
|
|
10
11
|
|
|
11
12
|
// i18n-ignore footer.wechat.title, footer.wechat.modalText, footer.wechat.modalText2
|
|
12
13
|
export default {
|
|
@@ -77,7 +78,11 @@ export default {
|
|
|
77
78
|
all.push(...this.links.defaults.filter((link) => link.enabled));
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
// Process the links
|
|
82
|
+
return all.map((item) => ({
|
|
83
|
+
...item,
|
|
84
|
+
value: processLink(item.value)
|
|
85
|
+
}));
|
|
81
86
|
}
|
|
82
87
|
},
|
|
83
88
|
methods: {
|
|
@@ -87,7 +87,10 @@ export default {
|
|
|
87
87
|
<div class="growl-list">
|
|
88
88
|
<div
|
|
89
89
|
v-for="(growl, idx) in stack"
|
|
90
|
-
:key="
|
|
90
|
+
:key="growl.id"
|
|
91
|
+
role="alert"
|
|
92
|
+
:aria-labelledby="`growl-title-${ growl.id }`"
|
|
93
|
+
:aria-describedby="`growl-message-${ growl.id }`"
|
|
91
94
|
:data-testid="`growl-list-item-${idx}`"
|
|
92
95
|
:class="{'growl': true, ['bg-'+growl.color]: true}"
|
|
93
96
|
>
|
|
@@ -103,11 +106,15 @@ export default {
|
|
|
103
106
|
class="close hand icon icon-close"
|
|
104
107
|
@click="close(growl)"
|
|
105
108
|
/>
|
|
106
|
-
<div
|
|
109
|
+
<div
|
|
110
|
+
:id="`growl-title-${ growl.id }`"
|
|
111
|
+
class="growl-text-title"
|
|
112
|
+
>
|
|
107
113
|
{{ growl.title }}
|
|
108
114
|
</div>
|
|
109
115
|
<p
|
|
110
116
|
v-if="growl.message"
|
|
117
|
+
:id="`growl-message-${ growl.id }`"
|
|
111
118
|
:class="{ 'has-title': !!growl.title }"
|
|
112
119
|
>
|
|
113
120
|
{{ growl.message }}
|
|
@@ -11,6 +11,10 @@ export default {
|
|
|
11
11
|
mode: {
|
|
12
12
|
type: String,
|
|
13
13
|
default: ''
|
|
14
|
+
},
|
|
15
|
+
showIcon: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
default: true
|
|
14
18
|
}
|
|
15
19
|
},
|
|
16
20
|
|
|
@@ -89,7 +93,10 @@ export default {
|
|
|
89
93
|
class="locale-chooser"
|
|
90
94
|
>
|
|
91
95
|
{{ selectedLocaleLabel }}
|
|
92
|
-
<i
|
|
96
|
+
<i
|
|
97
|
+
v-if="showIcon"
|
|
98
|
+
class="icon icon-fw icon-sort-down"
|
|
99
|
+
/>
|
|
93
100
|
</a>
|
|
94
101
|
<template #popper>
|
|
95
102
|
<ul
|
|
@@ -2,13 +2,6 @@
|
|
|
2
2
|
import { defineComponent } from 'vue';
|
|
3
3
|
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
4
4
|
import ResourceTable from '@shell/components/ResourceTable.vue';
|
|
5
|
-
import { StorePaginationResult } from '@shell/types/store/pagination.types';
|
|
6
|
-
|
|
7
|
-
export type FetchSecondaryResourcesOpts = { canPaginate: boolean }
|
|
8
|
-
export type FetchSecondaryResources = (opts: FetchSecondaryResourcesOpts) => Promise<any>
|
|
9
|
-
|
|
10
|
-
export type FetchPageSecondaryResourcesOpts = { canPaginate: boolean, force: boolean, page: any[], pagResult: StorePaginationResult }
|
|
11
|
-
export type FetchPageSecondaryResources = (opts: FetchPageSecondaryResourcesOpts) => Promise<any>
|
|
12
5
|
|
|
13
6
|
/**
|
|
14
7
|
* This is meant to enable ResourceList like capabilities outside of List pages / components
|
|
@@ -57,6 +50,8 @@ export default defineComponent({
|
|
|
57
50
|
* Information may be required from resources other than the primary one shown per row
|
|
58
51
|
*
|
|
59
52
|
* This will fetch them ALL and will be run in a non-server-side pagination world
|
|
53
|
+
*
|
|
54
|
+
* of type PagTableFetchSecondaryResources
|
|
60
55
|
*/
|
|
61
56
|
fetchSecondaryResources: {
|
|
62
57
|
type: Function,
|
|
@@ -69,6 +64,8 @@ export default defineComponent({
|
|
|
69
64
|
* This will fetch only those relevant to the current page using server-side pagination based filters
|
|
70
65
|
*
|
|
71
66
|
* called from shell/mixins/resource-fetch-api-pagination.js
|
|
67
|
+
*
|
|
68
|
+
* of type PagTableFetchPageSecondaryResources
|
|
72
69
|
*/
|
|
73
70
|
fetchPageSecondaryResources: {
|
|
74
71
|
type: Function,
|
|
@@ -90,6 +90,19 @@ export default {
|
|
|
90
90
|
|
|
91
91
|
return out.filter((obj) => obj.percent);
|
|
92
92
|
},
|
|
93
|
+
ariaLabelText() {
|
|
94
|
+
if (Array.isArray(this.values) && this.values.length) {
|
|
95
|
+
let ariaLabel = '';
|
|
96
|
+
|
|
97
|
+
this.values.forEach((val) => {
|
|
98
|
+
ariaLabel += `${ val.value } ${ val.value === 1 ? 'item' : 'items' } ${ val.label }`;
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return ariaLabel;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return '';
|
|
105
|
+
}
|
|
93
106
|
}
|
|
94
107
|
};
|
|
95
108
|
|
|
@@ -108,6 +121,7 @@ function toPercent(value, min, max) {
|
|
|
108
121
|
<div
|
|
109
122
|
v-trim-whitespace
|
|
110
123
|
:class="{progress: true, multi: pieces.length > 1}"
|
|
124
|
+
:aria-label="ariaLabelText"
|
|
111
125
|
>
|
|
112
126
|
<div
|
|
113
127
|
v-for="(piece, idx) of pieces"
|