@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.
Files changed (172) hide show
  1. package/assets/styles/base/_basic.scss +7 -8
  2. package/assets/styles/global/_button.scss +10 -0
  3. package/assets/styles/global/_form.scss +2 -1
  4. package/assets/styles/global/_tooltip.scss +2 -2
  5. package/assets/styles/themes/_dark.scss +15 -3
  6. package/assets/styles/themes/_light.scss +7 -2
  7. package/assets/styles/vendor/vue-select.scss +4 -0
  8. package/assets/translations/en-us.yaml +66 -9
  9. package/assets/translations/zh-hans.yaml +2 -3
  10. package/components/AppModal.vue +50 -0
  11. package/components/BannerGraphic.vue +0 -42
  12. package/components/ButtonMultiAction.vue +1 -1
  13. package/components/Carousel.vue +88 -74
  14. package/components/CommunityLinks.vue +6 -1
  15. package/components/CopyToClipboardText.vue +3 -0
  16. package/components/Dialog.vue +20 -1
  17. package/components/GrowlManager.vue +9 -2
  18. package/components/LocaleSelector.vue +8 -1
  19. package/components/PaginatedResourceTable.vue +4 -7
  20. package/components/ProgressBarMulti.vue +14 -0
  21. package/components/PromptChangePassword.vue +3 -0
  22. package/components/Questions/Reference.vue +57 -28
  23. package/components/ResourceDetail/Masthead.vue +1 -1
  24. package/components/SelectIconGrid.vue +12 -1
  25. package/components/SideNav.vue +12 -38
  26. package/components/SortableTable/index.vue +1 -0
  27. package/components/Tabbed/index.vue +9 -1
  28. package/components/YamlEditor.vue +1 -0
  29. package/components/__tests__/Carousel.test.ts +56 -27
  30. package/components/auth/Principal.vue +5 -3
  31. package/components/fleet/FleetClusters.vue +82 -1
  32. package/components/fleet/FleetRepos.vue +13 -30
  33. package/components/fleet/ForceDirectedTreeChart/index.vue +2 -2
  34. package/components/form/ChangePassword.vue +2 -0
  35. package/components/form/ColorInput.vue +24 -1
  36. package/components/form/FileSelector.vue +2 -0
  37. package/components/form/KeyValue.vue +230 -160
  38. package/components/form/LabeledSelect.vue +2 -2
  39. package/components/form/PlusMinus.vue +14 -2
  40. package/components/form/ResourceLabeledSelect.vue +13 -53
  41. package/components/form/ResourceSelector.vue +1 -0
  42. package/components/form/ResourceTabs/index.vue +79 -36
  43. package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +192 -0
  44. package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +104 -0
  45. package/components/form/SSHKnownHosts/index.vue +101 -0
  46. package/components/form/SecretSelector.vue +2 -2
  47. package/components/form/Select.vue +1 -1
  48. package/components/form/SelectOrCreateAuthSecret.vue +43 -11
  49. package/components/form/__tests__/KeyValue.test.ts +1 -1
  50. package/components/form/__tests__/SSHKnownHosts.test.ts +59 -0
  51. package/components/formatter/FleetClusterSummaryGraph.vue +2 -2
  52. package/components/formatter/FleetSummaryGraph.vue +6 -7
  53. package/components/formatter/WorkloadHealthScale.vue +7 -0
  54. package/components/nav/Group.vue +30 -4
  55. package/components/nav/Header.vue +82 -114
  56. package/components/nav/HeaderPageActionMenu.vue +27 -131
  57. package/components/nav/NamespaceFilter.vue +1 -1
  58. package/components/nav/Type.vue +15 -0
  59. package/composables/focusTrap.ts +68 -0
  60. package/config/home-links.js +21 -13
  61. package/config/labels-annotations.js +2 -0
  62. package/config/page-actions.js +1 -0
  63. package/config/pagination-table-headers.js +15 -1
  64. package/config/product/explorer.js +7 -17
  65. package/config/table-headers.js +6 -0
  66. package/config/version.js +5 -1
  67. package/core/plugin.ts +41 -1
  68. package/core/plugins.js +125 -72
  69. package/core/types-provisioning.ts +91 -2
  70. package/core/types.ts +55 -0
  71. package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +12 -3
  72. package/detail/catalog.cattle.io.app.vue +1 -1
  73. package/detail/fleet.cattle.io.cluster.vue +3 -3
  74. package/detail/namespace.vue +13 -19
  75. package/detail/networking.k8s.io.ingress.vue +13 -53
  76. package/detail/provisioning.cattle.io.cluster.vue +12 -1
  77. package/detail/secret.vue +25 -0
  78. package/detail/workload/index.vue +3 -3
  79. package/dialog/AddCustomBadgeDialog.vue +5 -1
  80. package/edit/auth/ldap/__tests__/config.test.ts +18 -0
  81. package/edit/auth/ldap/config.vue +24 -0
  82. package/edit/auth/saml.vue +8 -6
  83. package/edit/fleet.cattle.io.gitrepo.vue +34 -23
  84. package/edit/logging-flow/index.vue +4 -19
  85. package/edit/networking.k8s.io.ingress/index.vue +18 -65
  86. package/edit/networking.k8s.io.networkpolicy/index.vue +4 -5
  87. package/edit/provisioning.cattle.io.cluster/index.vue +27 -8
  88. package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -115
  89. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +2 -2
  90. package/edit/provisioning.cattle.io.cluster/tabs/networking/ACE.vue +14 -28
  91. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +25 -12
  92. package/edit/secret/index.vue +1 -1
  93. package/edit/secret/ssh.vue +21 -3
  94. package/edit/service.vue +1 -2
  95. package/list/networking.k8s.io.ingress.vue +1 -1
  96. package/list/node.vue +15 -8
  97. package/list/persistentvolume.vue +12 -4
  98. package/list/provisioning.cattle.io.cluster.vue +1 -0
  99. package/list/service.vue +1 -1
  100. package/list/workload.vue +4 -0
  101. package/mixins/chart.js +4 -1
  102. package/models/catalog.cattle.io.app.js +3 -1
  103. package/models/catalog.cattle.io.clusterrepo.js +56 -7
  104. package/models/fleet.cattle.io.bundle.js +0 -11
  105. package/models/fleet.cattle.io.cluster.js +17 -1
  106. package/models/fleet.cattle.io.gitrepo.js +88 -52
  107. package/models/provisioning.cattle.io.cluster.js +36 -1
  108. package/models/secret.js +5 -0
  109. package/models/service.js +1 -0
  110. package/models/workload.js +19 -1
  111. package/package.json +5 -4
  112. package/pages/account/index.vue +4 -0
  113. package/pages/c/_cluster/apps/charts/index.vue +4 -0
  114. package/pages/c/_cluster/explorer/ConfigBadge.vue +4 -2
  115. package/pages/c/_cluster/explorer/index.vue +13 -6
  116. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +3 -3
  117. package/pages/c/_cluster/fleet/index.vue +75 -89
  118. package/pages/c/_cluster/settings/links.vue +2 -2
  119. package/pages/c/_cluster/uiplugins/AddExtensionRepos.vue +3 -1
  120. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +3 -0
  121. package/pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue +7 -1
  122. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -1
  123. package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +10 -7
  124. package/pages/c/_cluster/uiplugins/InstallDialog.vue +7 -0
  125. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +181 -106
  126. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +2 -0
  127. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +9 -1
  128. package/pages/c/_cluster/uiplugins/index.vue +50 -12
  129. package/pages/diagnostic.vue +17 -15
  130. package/pages/home.vue +32 -6
  131. package/plugins/clean-html.js +50 -0
  132. package/plugins/dashboard-store/resource-class.js +4 -0
  133. package/plugins/plugin.js +54 -49
  134. package/plugins/steve/mutations.js +1 -1
  135. package/plugins/steve/steve-class.js +8 -0
  136. package/plugins/steve/steve-pagination-utils.ts +3 -1
  137. package/rancher-components/Accordion/Accordion.vue +4 -4
  138. package/rancher-components/BadgeState/BadgeState.vue +7 -0
  139. package/rancher-components/Card/Card.vue +12 -0
  140. package/rancher-components/Form/Checkbox/Checkbox.vue +9 -2
  141. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +18 -1
  142. package/rancher-components/Form/LabeledInput/LabeledInput.vue +19 -1
  143. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +39 -2
  144. package/rancher-components/RcButton/RcButton.vue +90 -0
  145. package/rancher-components/RcButton/index.ts +2 -0
  146. package/rancher-components/RcButton/types.ts +17 -0
  147. package/rancher-components/RcDropdown/RcDropdown.vue +122 -0
  148. package/rancher-components/RcDropdown/RcDropdownItem.vue +127 -0
  149. package/rancher-components/RcDropdown/RcDropdownSeparator.vue +6 -0
  150. package/rancher-components/RcDropdown/RcDropdownTrigger.vue +42 -0
  151. package/rancher-components/RcDropdown/index.ts +4 -0
  152. package/rancher-components/RcDropdown/types.ts +22 -0
  153. package/rancher-components/RcDropdown/useDropdownCollection.ts +46 -0
  154. package/rancher-components/RcDropdown/useDropdownContext.ts +110 -0
  155. package/scripts/test-plugins-build.sh +2 -0
  156. package/scripts/typegen.sh +2 -0
  157. package/store/catalog.js +1 -1
  158. package/tsconfig.json +2 -1
  159. package/types/components/paginatedResourceTable.ts +25 -0
  160. package/types/components/resourceLabeledSelect.ts +48 -0
  161. package/types/resources/fleet.d.ts +17 -0
  162. package/types/shell/index.d.ts +61 -0
  163. package/utils/auth.js +5 -1
  164. package/utils/cluster.js +106 -0
  165. package/utils/fleet.ts +35 -3
  166. package/utils/ingress.ts +64 -0
  167. package/utils/uiplugins.ts +56 -44
  168. package/utils/validators/cron-schedule.js +7 -2
  169. package/utils/validators/formRules/__tests__/index.test.ts +53 -17
  170. package/utils/validators/formRules/index.ts +20 -5
  171. package/vue.config.js +1 -1
  172. 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
- BUTTON,
87
- .btn {
88
- &:focus, &.focused {
89
- outline: none;
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(.unlabeled-select):not(.labeled-select), &.focused:not(.unlabeled-select):not(.labeled-select) {
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 : var(--primary-active-bg);
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 : var(--link);
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 : var(--body-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 : #{$lightest};
378
- --dropdown-hover-bg : var(--link);
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, Rancher manages deployment and upgrade of the {name} app. Upgrading this app is not supported.<br>
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, Rancher manages deployment and upgrade of the {name} app. Deleting this app is not supported.
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. To use one or more different directories, add them here.
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
- keepResourcesBanner: When enabled above, resources will be kept when deleting a GitRepo or Bundle - only Helm release secrets will be deleted.
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
- correctDriftBanner: 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.
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 commmands succeeded)\n\r"
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
- suseCollective: SUSE Collective
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
- keepResourcesBanner: 启用时,删除 GitRepo 或 Bundle 后将保留资源,只会删除 Helm Release Secret。
2159
+ keepResourcesTooltip: 启用时,删除 GitRepo 或 Bundle 后将保留资源,只会删除 Helm Release Secret。
2161
2160
  correctDrift: 启用自我修复
2162
- correctDriftBanner: 启用后,Fleet 将确保集群资源与 Git 仓库保持同步。在 ecluster 上进行的所有资源更改都将丢失。
2161
+ correctDriftTooltip: 启用后,Fleet 将确保集群资源与 Git 仓库保持同步。在 ecluster 上进行的所有资源更改都将丢失。
2163
2162
  add:
2164
2163
  steps:
2165
2164
  repoInfo:
@@ -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;
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { computed, defineEmits } from 'vue';
2
+ import { computed } from 'vue';
3
3
 
4
4
  defineEmits(['click']);
5
5