dashboard-shell-shell 1.0.122 → 1.0.1000000081

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 (372) hide show
  1. package/.DS_Store +0 -0
  2. package/assets/brand/harvester/favicon.png +0 -0
  3. package/assets/brand/suse/favicon.png +0 -0
  4. package/assets/icons/iconfont.css +19 -3
  5. package/assets/icons/iconfont.js +1 -1
  6. package/assets/icons/iconfont.json +28 -0
  7. package/assets/icons/iconfont.ttf +0 -0
  8. package/assets/icons/iconfont.woff +0 -0
  9. package/assets/icons/iconfont.woff2 +0 -0
  10. package/assets/images/pl/half-logo.svg +2 -23
  11. package/assets/styles/base/_functions.scss +0 -0
  12. package/assets/styles/base/_mixins.scss +0 -0
  13. package/assets/styles/base/_variables.scss +1 -1
  14. package/assets/styles/global/_labeled-input.scss +0 -1
  15. package/assets/styles/global/_layout.scss +1 -1
  16. package/assets/styles/global/_select.scss +4 -2
  17. package/assets/styles/global/_table.scss +5 -0
  18. package/assets/styles/vendor/vue-select.scss +2 -1
  19. package/assets/translations/en-us.yaml +1 -1
  20. package/assets/translations/zh-hans.yaml +25 -15
  21. package/chart/monitoring/index.vue +3 -1
  22. package/chart/monitoring/prometheus/index.vue +13 -10
  23. package/cloud-credential/aws.vue +2 -0
  24. package/components/ActionDropdown.vue +1 -1
  25. package/components/ActionDropdownShell.vue +71 -0
  26. package/components/ActionMenu.vue +2 -2
  27. package/components/ActionMenuShell.vue +3 -0
  28. package/components/AppModal.vue +84 -8
  29. package/components/AssignTo.vue +25 -11
  30. package/components/AsyncButton.vue +24 -7
  31. package/components/BannerGraphic.vue +1 -0
  32. package/components/ButtonDropdown.vue +26 -4
  33. package/components/ButtonGroup.vue +4 -0
  34. package/components/ButtonMultiAction.vue +1 -0
  35. package/components/CodeMirror.vue +19 -6
  36. package/components/CommunityLinks.vue +3 -3
  37. package/components/ConsumptionGauge.vue +24 -5
  38. package/components/CopyToClipboardText.vue +2 -1
  39. package/components/CruResource.vue +13 -7
  40. package/components/CruResourceFooter.vue +2 -2
  41. package/components/DashboardOptions.vue +29 -17
  42. package/components/DetailText.vue +5 -0
  43. package/components/DisableAuthProviderModal.vue +1 -0
  44. package/components/DotState.vue +84 -0
  45. package/components/ExplorerMembers.vue +1 -1
  46. package/components/ExplorerProjectsNamespaces.vue +89 -16
  47. package/components/FixedBanner.vue +19 -12
  48. package/components/GlobalRoleBindings.vue +5 -1
  49. package/components/GrafanaDashboard.vue +4 -4
  50. package/components/GrowlManager.vue +4 -1
  51. package/components/HardwareResourceGauge.vue +39 -3
  52. package/components/InfoBox.vue +3 -3
  53. package/components/InputOrDisplay.vue +28 -2
  54. package/components/LabelValue.vue +20 -1
  55. package/components/LandingPagePreference.vue +5 -3
  56. package/components/LocaleSelector.vue +39 -93
  57. package/components/ModalManager.vue +55 -0
  58. package/components/ModalWithCard.vue +13 -3
  59. package/components/MoveModal.vue +1 -0
  60. package/components/PodSecurityAdmission.vue +1 -1
  61. package/components/PromptChangePassword.vue +1 -1
  62. package/components/PromptModal.vue +16 -3
  63. package/components/PromptRemove.vue +29 -9
  64. package/components/PromptRestore.vue +1 -0
  65. package/components/ResourceCancelModal.vue +1 -0
  66. package/components/ResourceDetail/Masthead.vue +52 -17
  67. package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
  68. package/components/ResourceDetail/index.vue +54 -16
  69. package/components/ResourceList/Masthead.vue +9 -4
  70. package/components/ResourceList/index.vue +4 -3
  71. package/components/ResourceTable.vue +1 -0
  72. package/components/SideNav.vue +20 -15
  73. package/components/SlideInPanelManager.vue +126 -0
  74. package/components/SortableTable/THead.vue +10 -4
  75. package/components/SortableTable/actions.js +1 -1
  76. package/components/SortableTable/index.vue +540 -553
  77. package/components/SortableTable/selection.js +2 -13
  78. package/components/StatusBadge.vue +77 -0
  79. package/components/Tabbed/Tab.vue +3 -3
  80. package/components/Tabbed/index.vue +47 -29
  81. package/components/Wizard.vue +2 -2
  82. package/components/YamlEditor.vue +1 -1
  83. package/components/__tests__/AsyncButton.test.ts +2 -2
  84. package/components/__tests__/FixedBanner.test.ts +3 -3
  85. package/components/__tests__/ModalManager.spec.ts +176 -0
  86. package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
  87. package/components/auth/Principal.vue +10 -3
  88. package/components/auth/RoleDetailEdit.vue +1 -1
  89. package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
  90. package/components/form/ArrayList.vue +123 -85
  91. package/components/form/ArrayListGrouped.vue +10 -2
  92. package/components/form/ArrayListSelect.vue +1 -1
  93. package/components/form/Command.vue +6 -15
  94. package/components/form/EnvVars.vue +16 -8
  95. package/components/form/Footer.vue +10 -7
  96. package/components/form/HealthCheck.vue +3 -3
  97. package/components/form/HookOption.vue +11 -16
  98. package/components/form/InputWithSelect.vue +6 -5
  99. package/components/form/KeyValue.vue +39 -10
  100. package/components/form/LabeledSelect.vue +73 -77
  101. package/components/form/Labels.vue +6 -3
  102. package/components/form/LifecycleHooks.vue +3 -3
  103. package/components/form/MatchExpressions.vue +42 -17
  104. package/components/form/NameNsDescription.vue +163 -116
  105. package/components/form/Networking.vue +20 -12
  106. package/components/form/NodeAffinity.vue +31 -23
  107. package/components/form/NodeScheduling.vue +13 -3
  108. package/components/form/Password.vue +11 -5
  109. package/components/form/PodAffinity.vue +47 -48
  110. package/components/form/Probe.vue +68 -66
  111. package/components/form/ResourceQuota/Namespace.vue +4 -4
  112. package/components/form/ResourceQuota/NamespaceRow.vue +5 -7
  113. package/components/form/ResourceQuota/Project.vue +9 -5
  114. package/components/form/ResourceQuota/ProjectRow.vue +4 -6
  115. package/components/form/ResourceSelector.vue +7 -9
  116. package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +6 -3
  117. package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +12 -1
  118. package/components/form/SSHKnownHosts/index.vue +16 -2
  119. package/components/form/Security.vue +54 -56
  120. package/components/form/Select.vue +44 -7
  121. package/components/form/ShellInput.vue +5 -1
  122. package/components/form/SimpleSecretSelector.vue +29 -9
  123. package/components/form/Tolerations.vue +5 -1
  124. package/components/form/UnitInput.vue +10 -5
  125. package/components/form/ValueFromResource.vue +134 -121
  126. package/components/form/WorkloadPorts.vue +18 -18
  127. package/components/form/__tests__/ArrayList.test.ts +5 -2
  128. package/components/form/__tests__/MatchExpressions.test.ts +12 -12
  129. package/components/form/__tests__/NameNsDescription.test.ts +115 -14
  130. package/components/form/__tests__/Probe.test.ts +12 -8
  131. package/components/form/__tests__/SSHKnownHosts.test.ts +11 -0
  132. package/components/form/__tests__/Select.test.ts +37 -0
  133. package/components/form/__tests__/UnitInput.test.ts +4 -5
  134. package/components/formatter/BadgeStateFormatter.vue +8 -5
  135. package/components/formatter/InternalExternalIP.vue +2 -0
  136. package/components/formatter/LiveDate.vue +3 -3
  137. package/components/formatter/SecretData.vue +20 -7
  138. package/components/nav/Favorite.vue +5 -1
  139. package/components/nav/Group.vue +18 -4
  140. package/components/nav/Header.vue +39 -13
  141. package/components/nav/Jump.vue +7 -0
  142. package/components/nav/NamespaceFilter.vue +21 -11
  143. package/components/nav/Pinned.vue +1 -1
  144. package/components/nav/TopLevelMenu.vue +5 -17
  145. package/components/nav/Type.vue +30 -33
  146. package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
  147. package/components/rancherResourceDetail/Masthead.vue +769 -0
  148. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
  149. package/components/rancherResourceDetail/index.vue +591 -0
  150. package/components/rancherResourceList/Masthead-btn.vue +225 -0
  151. package/components/rancherResourceList/Masthead.vue +375 -0
  152. package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
  153. package/components/rancherResourceList/index.vue +307 -0
  154. package/components/rancherResourceList/resource-list.config.js +7 -0
  155. package/components/rancherResourceTable.vue +783 -0
  156. package/components/rancherSortableTable/THead.vue +561 -0
  157. package/components/rancherSortableTable/actions.js +153 -0
  158. package/components/rancherSortableTable/advanced-filtering.js +272 -0
  159. package/components/rancherSortableTable/debug.js +117 -0
  160. package/components/rancherSortableTable/filtering.js +290 -0
  161. package/components/rancherSortableTable/grouping.js +48 -0
  162. package/components/rancherSortableTable/index.vue +2712 -0
  163. package/components/rancherSortableTable/paging.js +155 -0
  164. package/components/rancherSortableTable/selection.js +629 -0
  165. package/components/rancherSortableTable/sortable-config.ts +4 -0
  166. package/components/rancherSortableTable/sorting.js +129 -0
  167. package/components/templates/blank.vue +4 -1
  168. package/components/templates/default.vue +8 -0
  169. package/components/templates/home.vue +10 -1
  170. package/components/templates/plain.vue +10 -1
  171. package/composables/focusTrap.ts +11 -3
  172. package/composables/useRuntimeFlag.ts +29 -0
  173. package/config/private-label.js +15 -10
  174. package/config/router/routes.js +21 -13
  175. package/config/store.js +4 -0
  176. package/config/table-headers.js +3 -2
  177. package/config/uiplugins.js +5 -1
  178. package/core/plugin-routes.ts +5 -115
  179. package/core/plugins.js +1 -1
  180. package/core/types.ts +23 -2
  181. package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +84 -23
  182. package/detail/autoscaling.horizontalpodautoscaler/index.vue +13 -3
  183. package/detail/provisioning.cattle.io.cluster.vue +72 -6
  184. package/dialog/AddCustomBadgeDialog.vue +1 -0
  185. package/dialog/DeactivateDriverDialog.vue +5 -4
  186. package/dialog/ForceMachineRemoveDialog.vue +6 -3
  187. package/dialog/GitRepoForceUpdateDialog.vue +1 -1
  188. package/dialog/ScalePoolDownDialog.vue +2 -2
  189. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +16 -3
  190. package/edit/auth/__tests__/oidc.test.ts +162 -88
  191. package/edit/auth/azuread.vue +2 -1
  192. package/edit/auth/github.vue +1 -1
  193. package/edit/auth/googleoauth.vue +5 -1
  194. package/edit/auth/ldap/__tests__/config.test.ts +0 -14
  195. package/edit/auth/ldap/config.vue +0 -24
  196. package/edit/auth/ldap/index.vue +1 -1
  197. package/edit/auth/oidc.vue +39 -6
  198. package/edit/auth/saml.vue +1 -1
  199. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +5 -2
  200. package/edit/cloudcredential.vue +24 -9
  201. package/edit/fleet.cattle.io.clustergroup.vue +5 -3
  202. package/edit/fleet.cattle.io.gitrepo.vue +2 -0
  203. package/edit/logging-flow/Match.vue +1 -1
  204. package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +40 -9
  205. package/edit/management.cattle.io.user.vue +28 -3
  206. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  207. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
  208. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  209. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  210. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  211. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  212. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  213. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  214. package/edit/monitoring.coreos.com.receiver/auth.vue +29 -29
  215. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  216. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  217. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  218. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  219. package/edit/namespace.vue +1 -2
  220. package/edit/networking.k8s.io.ingress/IngressClass.vue +7 -3
  221. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  222. package/edit/networking.k8s.io.ingress/__tests__/IngressClass.test.ts +58 -0
  223. package/edit/persistentvolume/__tests__/persistentvolume.test.ts +14 -2
  224. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
  225. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -9
  226. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -10
  227. package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -40
  228. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +5 -2
  229. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +6 -1
  230. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +33 -2
  231. package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +3 -3
  232. package/edit/service.vue +0 -3
  233. package/edit/token.vue +32 -11
  234. package/edit/workload/Job.vue +6 -6
  235. package/edit/workload/__tests__/Job.test.ts +0 -1
  236. package/edit/workload/index.vue +1 -0
  237. package/edit/workload/mixins/workload.js +3 -3
  238. package/initialize/install-plugins.js +2 -1
  239. package/list/harvesterhci.io.management.cluster.vue +4 -1
  240. package/list/management.cattle.io.feature.vue +1 -0
  241. package/list/namespace.vue +3 -1
  242. package/list/provisioning.cattle.io.cluster.vue +20 -12
  243. package/list/workload.vue +7 -6
  244. package/machine-config/__tests__/vmwarevsphere.test.ts +48 -3
  245. package/machine-config/azure.vue +16 -4
  246. package/machine-config/vmwarevsphere.vue +16 -0
  247. package/mixins/resource-fetch.js +2 -1
  248. package/models/__tests__/logging.banzaicloud.io.flow.test.ts +88 -0
  249. package/models/__tests__/namespace.test.ts +25 -1
  250. package/models/cloudcredential.js +5 -0
  251. package/models/kontainerdriver.js +6 -3
  252. package/models/logging.banzaicloud.io.flow.js +2 -1
  253. package/models/management.cattle.io.node.js +3 -3
  254. package/models/management.cattle.io.setting.js +2 -1
  255. package/models/namespace.js +4 -5
  256. package/models/nodedriver.js +6 -3
  257. package/models/storage.k8s.io.storageclass.js +2 -2
  258. package/models/workload.js +4 -1
  259. package/package.json +1 -1
  260. package/pages/about.vue +16 -8
  261. package/pages/account/index.vue +80 -24
  262. package/pages/account/pri.vue +229 -0
  263. package/pages/auth/login.vue +195 -44
  264. package/pages/auth/logout.vue +4 -1
  265. package/pages/auth/setup.vue +144 -19
  266. package/pages/auth/verify.vue +13 -8
  267. package/pages/auth copy/login.vue +595 -0
  268. package/pages/auth copy/logout.vue +47 -0
  269. package/pages/auth copy/setup.vue +523 -0
  270. package/pages/auth copy/verify.vue +203 -0
  271. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  272. package/pages/c/_cluster/apps/charts/chart.vue +1 -1
  273. package/pages/c/_cluster/apps/charts/install.vue +26 -26
  274. package/pages/c/_cluster/auth/config/index.vue +10 -12
  275. package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
  276. package/pages/c/_cluster/explorer/index.vue +17 -15
  277. package/pages/c/_cluster/istio/index.vue +2 -2
  278. package/pages/c/_cluster/longhorn/index.vue +1 -1
  279. package/pages/c/_cluster/monitoring/index.vue +1 -1
  280. package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
  281. package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
  282. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  283. package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
  284. package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
  285. package/pages/c/_cluster/neuvector/index.vue +1 -1
  286. package/pages/c/_cluster/settings/brand.vue +3 -3
  287. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
  288. package/pages/diagnostic.vue +59 -11
  289. package/pages/fail-whale.vue +14 -8
  290. package/pages/home.vue +24 -18
  291. package/pages/prefs.vue +9 -7
  292. package/pages/support/index.vue +4 -1
  293. package/pkg/tsconfig.json +9 -9
  294. package/pkg/vue.config.js +1 -1
  295. package/plugins/dashboard-store/normalize.js +3 -1
  296. package/plugins/dashboard-store/resource-class.js +31 -29
  297. package/plugins/internal-api/index.ts +37 -0
  298. package/plugins/internal-api/shared/base-api.ts +13 -0
  299. package/plugins/internal-api/shell/shell.api.ts +108 -0
  300. package/promptRemove/management.cattle.io.fleetworkspace.vue +1 -1
  301. package/promptRemove/management.cattle.io.globalrole.vue +1 -1
  302. package/promptRemove/management.cattle.io.project.vue +2 -2
  303. package/promptRemove/management.cattle.io.roletemplate.vue +1 -1
  304. package/promptRemove/pod.vue +1 -1
  305. package/public/index.html +2 -1
  306. package/rancher-components/BadgeState/BadgeState.vue +5 -1
  307. package/rancher-components/Banner/Banner.vue +8 -2
  308. package/rancher-components/Card/Card.vue +3 -6
  309. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  310. package/rancher-components/Form/LabeledInput/LabeledInput.vue +5 -2
  311. package/rancher-components/Form/Radio/RadioButton.vue +3 -3
  312. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -5
  313. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
  314. package/rancher-components/RcDropdown/RcDropdownItem.vue +1 -2
  315. package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -3
  316. package/rancher-components/RcDropdown/types.ts +1 -0
  317. package/scripts/clean +0 -0
  318. package/scripts/extension/bundle +20 -0
  319. package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +2 -2
  320. package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
  321. package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
  322. package/scripts/extension/helm/scripts/package +0 -0
  323. package/scripts/extension/helm/scripts/patch +0 -0
  324. package/scripts/extension/helm/scripts/version +0 -0
  325. package/scripts/extension/helmpatch +44 -31
  326. package/scripts/extension/parse-tag-name +0 -0
  327. package/scripts/extension/publish +12 -12
  328. package/scripts/publish-shell.sh +18 -23
  329. package/scripts/serve-pkgs +0 -0
  330. package/scripts/sync-shell-deps +0 -0
  331. package/scripts/test-plugins-build.sh +4 -6
  332. package/scripts/typegen.sh +28 -46
  333. package/server/har-file.js +25 -3
  334. package/static/favicon.ico +0 -0
  335. package/static/favicon.png +0 -0
  336. package/static/loading-indicator.html +2 -2
  337. package/store/aws.js +9 -2
  338. package/store/features.js +2 -1
  339. package/store/i18n.js +3 -3
  340. package/store/modal.ts +71 -0
  341. package/store/slideInPanel.ts +47 -0
  342. package/store/type-map.js +2 -1
  343. package/types/cloud-shell/index.d.ts +11014 -0
  344. package/types/global-vue.d.ts +5 -0
  345. package/types/internal-api/shell/growl.d.ts +25 -0
  346. package/types/internal-api/shell/modal.d.ts +77 -0
  347. package/types/internal-api/shell/slideIn.d.ts +15 -0
  348. package/types/shell/index.d.ts +118 -128
  349. package/types/vue-shim.d.ts +4 -1
  350. package/utils/__tests__/object.test.ts +38 -4
  351. package/utils/__tests__/string.test.ts +2 -2
  352. package/utils/auth.js +1 -0
  353. package/utils/banners.js +0 -45
  354. package/utils/cluster.js +35 -0
  355. package/utils/color.js +9 -8
  356. package/utils/error.js +61 -3
  357. package/utils/errorTranslate.json +450 -30
  358. package/utils/object.js +46 -6
  359. package/utils/router.js +22 -1
  360. package/utils/select.js +26 -3
  361. package/utils/string.js +9 -8
  362. package/utils/title.ts +1 -1
  363. package/utils/validators/machine-pool.ts +20 -0
  364. package/vue.config.js +7 -2
  365. package/components/formatter/ExtensionCache.vue +0 -74
  366. package/components/formatter/Port.vue +0 -24
  367. package/components/formatter/SecretType.vue +0 -41
  368. package/types/resources/fleet.d.ts +0 -57
  369. package/types/resources/pod-security-admission.ts +0 -36
  370. package/types/resources/settings.d.ts +0 -93
  371. package/types/resources/userPreferences.d.ts +0 -13
  372. package/types/vue-shim.d +0 -20
@@ -100,6 +100,30 @@ export default {
100
100
  computed: {
101
101
  rke2Enabled: mapFeature(RKE2_FEATURE),
102
102
 
103
+ hasCustomCloudCredentialComponent() {
104
+ const driverName = this.driverName;
105
+
106
+ return this.$store.getters['type-map/hasCustomCloudCredentialComponent'](driverName);
107
+ },
108
+
109
+ cloudCredentialComponent() {
110
+ const driverName = this.driverName;
111
+
112
+ return this.$store.getters['type-map/importCloudCredential'](driverName);
113
+ },
114
+
115
+ genericCloudCredentialComponent() {
116
+ return this.$store.getters['type-map/importCloudCredential']('generic');
117
+ },
118
+
119
+ cloudComponent() {
120
+ if (this.hasCustomCloudCredentialComponent) {
121
+ return this.cloudCredentialComponent;
122
+ }
123
+
124
+ return this.genericCloudCredentialComponent;
125
+ },
126
+
103
127
  validationPassed() {
104
128
  return this.credCustomComponentValidation && this.nameRequiredValidation;
105
129
  },
@@ -112,14 +136,6 @@ export default {
112
136
  return this.value?.provider;
113
137
  },
114
138
 
115
- cloudComponent() {
116
- if (this.$store.getters['type-map/hasCustomCloudCredentialComponent'](this.driverName)) {
117
- return this.$store.getters['type-map/importCloudCredential'](this.driverName);
118
- }
119
-
120
- return this.$store.getters['type-map/importCloudCredential']('generic');
121
- },
122
-
123
139
  // array of id, label, description, initials for type selection step
124
140
  secretSubTypes() {
125
141
  const out = [];
@@ -194,7 +210,6 @@ export default {
194
210
  },
195
211
 
196
212
  methods: {
197
-
198
213
  createValidationChanged(passed) {
199
214
  this.credCustomComponentValidation = passed;
200
215
  },
@@ -149,14 +149,16 @@ export default {
149
149
  :namespace-type="FLEET_WORKSPACE"
150
150
  @update:value="$emit('input', $event)"
151
151
  />
152
-
153
- <h2 v-t="'fleet.clusterGroup.selector.label'" />
154
152
  <MatchExpressions
155
153
  :mode="mode"
156
154
  :value="expressions"
157
155
  :show-remove="false"
158
156
  @update:value="matchChanged($event)"
159
- />
157
+ >
158
+ <template #header>
159
+ <h2 v-t="'fleet.clusterGroup.selector.label'" />
160
+ </template>
161
+ </MatchExpressions>
160
162
  <Banner
161
163
  v-if="matchingClusters"
162
164
  :color="(matchingClusters.isNone || matchingClusters.isAll ? 'warning' : 'success')"
@@ -103,6 +103,7 @@ export default {
103
103
  if (!pollingInterval) {
104
104
  if (this.realMode === _CREATE) {
105
105
  pollingInterval = DEFAULT_POLLING_INTERVAL;
106
+ this.value.spec.pollingInterval = this.durationSeconds(pollingInterval);
106
107
  } else if (this.realMode === _EDIT || this.realMode === _VIEW) {
107
108
  pollingInterval = MINIMUM_POLLING_INTERVAL;
108
109
  }
@@ -658,6 +659,7 @@ export default {
658
659
  :initial-empty-row="false"
659
660
  :value-placeholder="t('fleet.gitRepo.paths.placeholder')"
660
661
  :add-label="t('fleet.gitRepo.paths.addLabel')"
662
+ :a11y-label="t('fleet.gitRepo.paths.ariaLabel')"
661
663
  :add-icon="'icon-plus'"
662
664
  :protip="t('fleet.gitRepo.paths.empty')"
663
665
  />
@@ -124,7 +124,7 @@ export default {
124
124
  <div class="row">
125
125
  <div class="col span-12">
126
126
  <Select
127
- v-model="value.namespaces"
127
+ v-model:value="value.namespaces"
128
128
  class="lg"
129
129
  :options="namespaces"
130
130
  :placeholder="t('logging.flow.matches.namespaces.placeholder')"
@@ -1,5 +1,6 @@
1
1
  import { mount } from '@vue/test-utils';
2
2
  import Banzai from '@shell/edit/logging.banzaicloud.io.output/index.vue';
3
+ import { createStore } from 'vuex';
3
4
 
4
5
  const outputSchema = {
5
6
  id: 'logging.banzaicloud.io.output',
@@ -109,16 +110,26 @@ describe('view: logging.banzaicloud.io.output', () => {
109
110
  ['http://localhost:3100', []],
110
111
  ['not a proper URL', ['logging.loki.urlInvalid']],
111
112
  ])('should validate Loki URL on save', (url, expectation) => {
113
+ const store = createStore({
114
+ getters: {
115
+ namespaces: () => () => ({}),
116
+ currentStore: () => () => 'cluster',
117
+ 'cluster/schemaFor': () => jest.fn()
118
+ }
119
+ });
112
120
  const wrapper = mount(Banzai, {
113
121
  data: () => ({ selectedProvider: 'loki' }),
114
122
  props: {
115
123
  value: {
116
- save: jest.fn(),
117
- spec: { loki: { url } }
124
+ save: jest.fn(),
125
+ setAnnotation: jest.fn(),
126
+ spec: { loki: { url } },
127
+ metadata: {},
118
128
  }
119
129
  },
120
130
  global: {
121
- mocks: {
131
+ provide: { store },
132
+ mocks: {
122
133
  $fetchState: { pending: false },
123
134
  $store: {
124
135
  dispatch: jest.fn(),
@@ -149,16 +160,26 @@ describe('view: logging.banzaicloud.io.output', () => {
149
160
  });
150
161
 
151
162
  it('should load the default YAML data for output buffer config (from schema) in a CREATE scenario', async() => {
163
+ const store = createStore({
164
+ getters: {
165
+ namespaces: () => () => ({}),
166
+ currentStore: () => () => 'cluster',
167
+ 'cluster/schemaFor': () => jest.fn()
168
+ }
169
+ });
152
170
  const wrapper = mount(Banzai, {
153
171
  data: () => ({ selectedProvider: 'awsElasticsearch' }),
154
172
  props: {
155
173
  value: {
156
- save: jest.fn(),
157
- spec: {}
174
+ save: jest.fn(),
175
+ setAnnotation: jest.fn(),
176
+ spec: {},
177
+ metadata: {},
158
178
  }
159
179
  },
160
180
  global: {
161
- mocks: {
181
+ provide: { store },
182
+ mocks: {
162
183
  $fetchState: { pending: false },
163
184
  $store: {
164
185
  dispatch(arg: any) {
@@ -230,16 +251,26 @@ describe('view: logging.banzaicloud.io.output', () => {
230
251
  });
231
252
 
232
253
  it('should load current output buffer config in an EDIT scenario', async() => {
254
+ const store = createStore({
255
+ getters: {
256
+ namespaces: () => () => ({}),
257
+ currentStore: () => () => 'cluster',
258
+ 'cluster/schemaFor': () => jest.fn()
259
+ }
260
+ });
233
261
  const wrapper = mount(Banzai, {
234
262
  data: () => ({ selectedProvider: 'awsElasticsearch' }),
235
263
  props: {
236
264
  value: {
237
- save: jest.fn(),
238
- spec: { awsElasticsearch: { buffer: '#chunk_limit_records: int' } }
265
+ save: jest.fn(),
266
+ setAnnotation: jest.fn(),
267
+ spec: { awsElasticsearch: { buffer: '#chunk_limit_records: int' } },
268
+ metadata: {}
239
269
  }
240
270
  },
241
271
  global: {
242
- mocks: {
272
+ provide: { store },
273
+ mocks: {
243
274
  $fetchState: { pending: false },
244
275
  $store: {
245
276
  dispatch(arg: any) {
@@ -15,6 +15,8 @@ export default {
15
15
  ChangePassword, GlobalRoleBindings, CruResource, LabeledInput, Loading
16
16
  },
17
17
 
18
+ emits: ['update:mode'],
19
+
18
20
  mixins: [
19
21
  CreateEditView
20
22
  ],
@@ -40,6 +42,7 @@ export default {
40
42
  roles: !showGlobalRoles,
41
43
  rolesChanged: false,
42
44
  },
45
+ watchOverride: false,
43
46
  };
44
47
  },
45
48
 
@@ -115,7 +118,11 @@ export default {
115
118
  this.$router.replace({ name: this.doneRoute });
116
119
  buttonDone(true);
117
120
  } catch (err) {
118
- this.errors = exceptionToErrorsArray(err);
121
+ if (err?.message?.includes('errors due to escalation')) {
122
+ this.errors = [this.t('rbac.errors.escalation')];
123
+ } else {
124
+ this.errors = exceptionToErrorsArray(err);
125
+ }
119
126
  buttonDone(false);
120
127
  }
121
128
  },
@@ -150,7 +157,7 @@ export default {
150
157
 
151
158
  const normanUser = await this.$store.dispatch('rancher/find', {
152
159
  type: NORMAN.USER,
153
- id: this.value.id,
160
+ id: this.value.id || this.user?.id,
154
161
  });
155
162
 
156
163
  // Save change of password
@@ -181,8 +188,25 @@ export default {
181
188
  },
182
189
 
183
190
  async updateRoles(userId) {
184
- if (this.$refs.grb) {
191
+ if (!this.$refs.grb) {
192
+ return;
193
+ }
194
+
195
+ try {
185
196
  await this.$refs.grb.save(userId);
197
+ } catch (err) {
198
+ if (this.isCreate) {
199
+ this.watchOverride = true;
200
+ this.$emit(
201
+ 'update:mode',
202
+ {
203
+ userId,
204
+ mode: _EDIT,
205
+ resource: 'management.cattle.io.user',
206
+ }
207
+ );
208
+ }
209
+ throw err;
186
210
  }
187
211
  }
188
212
  }
@@ -255,6 +279,7 @@ export default {
255
279
  :user-id="value.id || liveValue.id"
256
280
  :mode="mode"
257
281
  :real-mode="realMode"
282
+ :watch-override="watchOverride"
258
283
  type="user"
259
284
  @hasChanges="validation.rolesChanged = $event"
260
285
  @canLogIn="validation.roles = $event"
@@ -243,14 +243,14 @@ export default {
243
243
  v-model:value="authType"
244
244
  :disabled="mode === view"
245
245
  :options="authOptions"
246
- label="Auth Type"
246
+ label="验证类型"
247
247
  @update:value="initializeType(authOptions, authType)"
248
248
  />
249
249
  </div>
250
250
  </div>
251
- <div
252
- v-if="authType === 'basicAuth'"
253
- class="row mb-20"
251
+ <div
252
+ v-if="authType === 'basicAuth'"
253
+ class="row mb-20"
254
254
  >
255
255
  <SimpleSecretSelector
256
256
  v-if="namespace"
@@ -265,16 +265,16 @@ export default {
265
265
  @updateSecretName="updateBasicAuthUsernameSecretName"
266
266
  @updateSecretKey="updateBasicAuthUsernameSecretKey"
267
267
  />
268
- <Banner
269
- v-else
270
- color="error"
268
+ <Banner
269
+ v-else
270
+ color="error"
271
271
  >
272
272
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
273
273
  </Banner>
274
274
  </div>
275
- <div
276
- v-if="authType === 'basicAuth'"
277
- class="row mb-20"
275
+ <div
276
+ v-if="authType === 'basicAuth'"
277
+ class="row mb-20"
278
278
  >
279
279
  <SimpleSecretSelector
280
280
  v-if="namespace"
@@ -289,16 +289,16 @@ export default {
289
289
  @updateSecretName="updateBasicAuthPasswordSecretName"
290
290
  @updateSecretKey="updateBasicAuthPasswordSecretKey"
291
291
  />
292
- <Banner
293
- v-else
294
- color="error"
292
+ <Banner
293
+ v-else
294
+ color="error"
295
295
  >
296
296
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
297
297
  </Banner>
298
298
  </div>
299
- <div
300
- v-if="authType === 'bearerTokenSecret'"
301
- class="row mb-20"
299
+ <div
300
+ v-if="authType === 'bearerTokenSecret'"
301
+ class="row mb-20"
302
302
  >
303
303
  <SimpleSecretSelector
304
304
  v-if="namespace"
@@ -313,9 +313,9 @@ export default {
313
313
  @updateSecretName="updateBearerTokenSecretName"
314
314
  @updateSecretKey="updateBearerTokenSecretKey"
315
315
  />
316
- <Banner
317
- v-else
318
- color="error"
316
+ <Banner
317
+ v-else
318
+ color="error"
319
319
  >
320
320
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
321
321
  </Banner>
@@ -17,14 +17,14 @@ import { fetchAlertManagerConfigSpecs } from '@shell/utils/alertmanagerconfig';
17
17
  // i18n-uses monitoringReceiver.slack.*, monitoringReceiver.email.*, monitoringReceiver.pagerduty.*
18
18
  // i18n-uses monitoringReceiver.opsgenie.*, monitoringReceiver.webhook.*, monitoringReceiver.custom.*
19
19
  export const RECEIVERS_TYPES = [
20
- {
21
- name: 'slack',
22
- label: 'monitoringReceiver.slack.label',
23
- title: 'monitoringReceiver.slack.title',
24
- info: 'monitoringReceiver.slack.info',
25
- key: 'slackConfigs',
26
- logo: require(`@shell/assets/images/vendor/slack.svg`)
27
- },
20
+ // {
21
+ // name: 'slack',
22
+ // label: 'monitoringReceiver.slack.label',
23
+ // title: 'monitoringReceiver.slack.title',
24
+ // info: 'monitoringReceiver.slack.info',
25
+ // key: 'slackConfigs',
26
+ // logo: require(`@shell/assets/images/vendor/slack.svg`)
27
+ // },
28
28
  {
29
29
  name: 'email',
30
30
  label: 'monitoringReceiver.email.label',
@@ -32,21 +32,21 @@ export const RECEIVERS_TYPES = [
32
32
  key: 'emailConfigs',
33
33
  logo: require(`@shell/assets/images/vendor/email.svg`)
34
34
  },
35
- {
36
- name: 'pagerduty',
37
- label: 'monitoringReceiver.pagerduty.label',
38
- title: 'monitoringReceiver.pagerduty.title',
39
- info: 'monitoringReceiver.pagerduty.info',
40
- key: 'pagerdutyConfigs',
41
- logo: require(`@shell/assets/images/vendor/pagerduty.svg`)
42
- },
43
- {
44
- name: 'opsgenie',
45
- label: 'monitoringReceiver.opsgenie.label',
46
- title: 'monitoringReceiver.opsgenie.title',
47
- key: 'opsgenieConfigs',
48
- logo: require(`@shell/assets/images/vendor/email.svg`)
49
- },
35
+ // {
36
+ // name: 'pagerduty',
37
+ // label: 'monitoringReceiver.pagerduty.label',
38
+ // title: 'monitoringReceiver.pagerduty.title',
39
+ // info: 'monitoringReceiver.pagerduty.info',
40
+ // key: 'pagerdutyConfigs',
41
+ // logo: require(`@shell/assets/images/vendor/pagerduty.svg`)
42
+ // },
43
+ // {
44
+ // name: 'opsgenie',
45
+ // label: 'monitoringReceiver.opsgenie.label',
46
+ // title: 'monitoringReceiver.opsgenie.title',
47
+ // key: 'opsgenieConfigs',
48
+ // logo: require(`@shell/assets/images/vendor/email.svg`)
49
+ // },
50
50
  {
51
51
  name: 'webhook',
52
52
  label: 'monitoringReceiver.webhook.label',
@@ -54,14 +54,14 @@ export const RECEIVERS_TYPES = [
54
54
  key: 'webhookConfigs',
55
55
  logo: require(`@shell/assets/images/vendor/webhook.svg`),
56
56
  },
57
- {
58
- name: 'custom',
59
- label: 'monitoringReceiver.custom.label',
60
- title: 'monitoringReceiver.custom.title',
61
- info: 'monitoringReceiver.custom.info',
62
- key: 'webhookConfigs',
63
- logo: require(`@shell/assets/images/vendor/custom.svg`)
64
- },
57
+ // {
58
+ // name: 'custom',
59
+ // label: 'monitoringReceiver.custom.label',
60
+ // title: 'monitoringReceiver.custom.title',
61
+ // info: 'monitoringReceiver.custom.info',
62
+ // key: 'webhookConfigs',
63
+ // logo: require(`@shell/assets/images/vendor/custom.svg`)
64
+ // },
65
65
  ];
66
66
 
67
67
  export default {
@@ -46,30 +46,34 @@ export default {
46
46
  </script>
47
47
  <template>
48
48
  <div>
49
- <h3>
50
- Receiver
49
+ <div class="route-title-config mb-20">
50
+ 接收器
51
51
  <i
52
52
  v-clean-tooltip="t('monitoring.alertmanagerConfig.receiverTooltip')"
53
53
  class="icon icon-info"
54
54
  />
55
- </h3>
55
+ </div>
56
56
  <Banner
57
57
  color="info"
58
58
  :label="t('monitoring.alertmanagerConfig.routeInfo')"
59
59
  />
60
- <div class="row mb-20">
60
+ <div class="row">
61
61
  <div class="col span-6">
62
62
  <LabeledSelect
63
63
  v-model:value="value.receiver"
64
64
  :mode="mode"
65
+ :isLabel="true"
66
+ :leftWidth="'225px'"
65
67
  :options="receiverOptions"
66
68
  />
67
69
  </div>
68
70
  </div>
69
- <h3>Grouping</h3>
70
- <div class="row mb-20">
71
+ <div class="route-title-config config-top mb-20">
72
+ 分组
73
+ </div>
74
+ <div class="row">
71
75
  <div class="col span-6">
72
- <span class="label">
76
+ <span class="label mb-10">
73
77
  {{ t("monitoringRoute.groups.addGroupByLabel'") }}
74
78
  <i
75
79
  v-clean-tooltip="t('monitoringRoute.groups.groupByTooltip')"
@@ -84,8 +88,10 @@ export default {
84
88
  />
85
89
  </div>
86
90
  </div>
87
- <h3>Waiting and Intervals</h3>
88
- <div class="row mb-20">
91
+ <div class="route-title-config config-top mb-20">
92
+ 等待和间隔
93
+ </div>
94
+ <div class="row">
89
95
  <div class="col span-6">
90
96
  <LabeledInput
91
97
  v-model:value="value.groupWait"
@@ -101,7 +107,7 @@ export default {
101
107
  />
102
108
  </div>
103
109
  </div>
104
- <div class="row mb-20">
110
+ <div class="row">
105
111
  <div class="col span-6">
106
112
  <LabeledInput
107
113
  v-model:value="value.repeatInterval"
@@ -111,7 +117,9 @@ export default {
111
117
  </div>
112
118
  </div>
113
119
 
114
- <h3>Matchers</h3>
120
+ <div class="route-title-config config-top mb-20 mb-20">
121
+ 匹配器
122
+ </div>
115
123
  <ArrayListGrouped
116
124
  v-model:value="value.matchers"
117
125
  class="mt-20"
@@ -120,7 +128,7 @@ export default {
120
128
  :default-add-value="{ matchers: [] }"
121
129
  >
122
130
  <template #default="props">
123
- <div class="row mt-20 mb-20">
131
+ <div class="row ">
124
132
  <div class="col span-4">
125
133
  <LabeledInput
126
134
  v-model:value="props.row.value.name"
@@ -150,3 +158,19 @@ export default {
150
158
  </ArrayListGrouped>
151
159
  </div>
152
160
  </template>
161
+
162
+ <style scoped>
163
+ .route-title-config{
164
+ font-size: 14px;
165
+ }
166
+
167
+ .row{
168
+ flex-wrap: wrap;
169
+ }
170
+ .col{
171
+ width: 49.125%;
172
+ }
173
+ .config-top{
174
+ margin-top: 32px;
175
+ }
176
+ </style>
@@ -80,7 +80,7 @@ export default {
80
80
  <div>
81
81
  <div class="row">
82
82
  <div class="col span-12">
83
- <h3>Target</h3>
83
+ <h3>目标</h3>
84
84
  </div>
85
85
  </div>
86
86
  <div class="row mb-20">
@@ -88,7 +88,7 @@ export default {
88
88
  <LabeledInput
89
89
  v-model:value="value.to"
90
90
  :mode="mode"
91
- label="Default Recipient Address"
91
+ label="默认收件人地址"
92
92
  placeholder="e.g. admin@example.com"
93
93
  />
94
94
  </div>
@@ -97,7 +97,7 @@ export default {
97
97
  v-model:value="value.sendResolved"
98
98
  :mode="mode"
99
99
  class="mt-20"
100
- label="Enable send resolved alerts"
100
+ label="启用发送已解决的警报"
101
101
  />
102
102
  </div>
103
103
  </div>
@@ -109,7 +109,7 @@ export default {
109
109
  <LabeledInput
110
110
  v-model:value="value.from"
111
111
  :mode="mode"
112
- label="Sender"
112
+ label="发件人"
113
113
  placeholder="e.g. admin@example.com"
114
114
  />
115
115
  </div>
@@ -119,7 +119,7 @@ export default {
119
119
  <LabeledInput
120
120
  v-model:value="value.smarthost"
121
121
  :mode="mode"
122
- label="Host"
122
+ label="主机"
123
123
  placeholder="e.g. 192.168.1.121:587"
124
124
  />
125
125
  </div>
@@ -128,7 +128,7 @@ export default {
128
128
  v-model:value="value.requireTLS"
129
129
  :mode="mode"
130
130
  class="mt-20"
131
- label="Use TLS"
131
+ label="启用TLS"
132
132
  />
133
133
  </div>
134
134
  </div>
@@ -165,7 +165,7 @@ export default {
165
165
  <div>
166
166
  <div class="row">
167
167
  <div class="col span-12">
168
- <h3>Target</h3>
168
+ <h3>目标</h3>
169
169
  </div>
170
170
  </div>
171
171
  <div class="row mb-20">
@@ -192,7 +192,7 @@ export default {
192
192
  <LabeledInput
193
193
  v-model:value="value.httpConfig.proxyURL"
194
194
  :mode="mode"
195
- label="Proxy URL"
195
+ label="代理地址"
196
196
  placeholder="e.g. http://my-proxy/"
197
197
  />
198
198
  </div>
@@ -201,12 +201,12 @@ export default {
201
201
  <Checkbox
202
202
  v-model:value="value.sendResolved"
203
203
  :mode="mode"
204
- label="Enable send resolved alerts"
204
+ label="启用发送已解决的警报"
205
205
  />
206
206
  </div>
207
207
  <div class="row">
208
208
  <div class="col span-12">
209
- <h3>Responders</h3>
209
+ <h3>响应者</h3>
210
210
  <ArrayList
211
211
  v-model:value="responders"
212
212
  :mode="mode"
@@ -219,18 +219,18 @@ export default {
219
219
  class="row"
220
220
  :class="{'mb-15': isView, 'mb-10': !isView}"
221
221
  >
222
- <div class="col span-6">
223
- <span class="text-label">Type</span>
222
+ <div class="col" style="width:400px">
223
+ <span class="text-label">类型</span>
224
224
  </div>
225
- <div class="col span-6 send-to">
226
- <span class="text-label">Send To</span>
225
+ <div class="col send-to ml-10" style="flex: 1;">
226
+ <span class="text-label">发送至</span>
227
227
  </div>
228
228
  </div>
229
229
  </div>
230
230
  </template>
231
231
  <template v-slot:columns="scope">
232
232
  <div class="row responder">
233
- <div class="col span-6">
233
+ <div style="width:400px">
234
234
  <span v-if="isView">{{ typeLabel(scope.row.value.type) }}</span>
235
235
  <Select
236
236
  v-else
@@ -239,7 +239,7 @@ export default {
239
239
  :options="TYPES"
240
240
  />
241
241
  </div>
242
- <div class="col-span-6 target-container">
242
+ <div class="target-container ml-10" style="flex: 1;">
243
243
  <span v-if="isView">{{ targetLabel(scope.row.value.target) }}: {{ scope.row.value.value }}</span>
244
244
  <InputWithSelect
245
245
  v-else