dashboard-shell-shell 1.0.122 → 1.0.1000000082

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 +88 -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 +26 -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 +542 -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 +9 -1
  343. package/types/cloud-shell/index.d.ts +11020 -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
@@ -130,7 +130,7 @@ export default {
130
130
  <div>
131
131
  <div class="row">
132
132
  <div class="col span-12">
133
- <h3>Target</h3>
133
+ <h3>目标</h3>
134
134
  </div>
135
135
  </div>
136
136
  <div
@@ -142,7 +142,7 @@ export default {
142
142
  v-model:value="integrationType"
143
143
  :options="integrationTypeOptions"
144
144
  :mode="mode"
145
- label="Integration Type"
145
+ label="整合型"
146
146
  />
147
147
  </div>
148
148
  </div>
@@ -186,7 +186,7 @@ export default {
186
186
  <LabeledInput
187
187
  v-model:value="value.httpConfig.proxyURL"
188
188
  :mode="mode"
189
- label="Proxy URL"
189
+ label="代理地址"
190
190
  placeholder="e.g. http://my-proxy/"
191
191
  data-testid="v2-monitoring-receiver-pagerduty-proxy-url"
192
192
  />
@@ -196,7 +196,7 @@ export default {
196
196
  <Checkbox
197
197
  v-model:value="value.sendResolved"
198
198
  :mode="mode"
199
- label="Enable send resolved alerts"
199
+ label="启用发送已解决的警报"
200
200
  />
201
201
  </div>
202
202
  </div>
@@ -82,7 +82,7 @@ export default {
82
82
  <div>
83
83
  <div class="row">
84
84
  <div class="col span-12">
85
- <h3>Target</h3>
85
+ <h3>目标</h3>
86
86
  </div>
87
87
  </div>
88
88
  <div class="row mb-20">
@@ -116,7 +116,7 @@ export default {
116
116
  <LabeledInput
117
117
  v-model:value="value.channel"
118
118
  :mode="mode"
119
- label="Default Channel"
119
+ label="默认频道"
120
120
  placeholder="e.g. #example"
121
121
  />
122
122
  </div>
@@ -124,7 +124,7 @@ export default {
124
124
  <LabeledInput
125
125
  v-model:value="value.httpConfig.proxyURL"
126
126
  :mode="mode"
127
- label="Proxy URL"
127
+ label="代理地址"
128
128
  placeholder="e.g. http://my-proxy/"
129
129
  />
130
130
  </div>
@@ -133,7 +133,7 @@ export default {
133
133
  <Checkbox
134
134
  v-model:value="value.sendResolved"
135
135
  :mode="mode"
136
- label="Enable send resolved alerts"
136
+ label="启用发送已解决的警报"
137
137
  />
138
138
  </div>
139
139
  </div>
@@ -160,7 +160,7 @@ export default {
160
160
  <div class="row">
161
161
  <div class="col span-12">
162
162
  <h3 class="mb-0">
163
- Target
163
+ 目标
164
164
  </h3>
165
165
  </div>
166
166
  </div>
@@ -81,38 +81,38 @@ export default {
81
81
  </div>
82
82
  <div class="row mb-20">
83
83
  <div class="col span-12">
84
- <LabeledSelect
85
- v-model:value="authType"
86
- :options="authOptions"
87
- label="Auth Type"
88
- @update:value="initializeType(authOptions, authType)"
84
+ <LabeledSelect
85
+ v-model:value="authType"
86
+ :options="authOptions"
87
+ label="验证类型"
88
+ @update:value="initializeType(authOptions, authType)"
89
89
  />
90
90
  </div>
91
91
  </div>
92
- <div
93
- v-if="authType === 'basic_auth'"
94
- class="row mb-20"
92
+ <div
93
+ v-if="authType === 'basic_auth'"
94
+ class="row mb-20"
95
95
  >
96
96
  <div class="col span-6">
97
- <LabeledInput
98
- v-model:value="value.basic_auth.username"
99
- :mode="mode"
100
- :label="t('monitoringReceiver.auth.username')"
97
+ <LabeledInput
98
+ v-model:value="value.basic_auth.username"
99
+ :mode="mode"
100
+ :label="t('monitoringReceiver.auth.username')"
101
101
  />
102
102
  </div>
103
103
  <div class="col span-6">
104
- <LabeledInput
105
- v-model:value="value.basic_auth.password"
106
- :mode="mode"
107
- :label="t('monitoringReceiver.auth.password')"
108
- type="password"
109
- autocomplete="password"
104
+ <LabeledInput
105
+ v-model:value="value.basic_auth.password"
106
+ :mode="mode"
107
+ :label="t('monitoringReceiver.auth.password')"
108
+ type="password"
109
+ autocomplete="password"
110
110
  />
111
111
  </div>
112
112
  </div>
113
- <div
114
- v-else-if="authType === 'bearer_token'"
115
- class="row mb-20"
113
+ <div
114
+ v-else-if="authType === 'bearer_token'"
115
+ class="row mb-20"
116
116
  >
117
117
  <div class="col span-6">
118
118
  <LabeledInput
@@ -125,16 +125,16 @@ export default {
125
125
  />
126
126
  </div>
127
127
  </div>
128
- <div
129
- v-else-if="authType === 'bearer_token_file'"
130
- class="row mb-20"
128
+ <div
129
+ v-else-if="authType === 'bearer_token_file'"
130
+ class="row mb-20"
131
131
  >
132
132
  <div class="col span-6">
133
- <LabeledInput
134
- v-model:value="value.bearer_token_file"
135
- :mode="mode"
136
- :label="t('monitoringReceiver.auth.bearerTokenFile.label')"
137
- :placeholder="t('monitoringReceiver.auth.bearerTokenFile.placeholder')"
133
+ <LabeledInput
134
+ v-model:value="value.bearer_token_file"
135
+ :mode="mode"
136
+ :label="t('monitoringReceiver.auth.bearerTokenFile.label')"
137
+ :placeholder="t('monitoringReceiver.auth.bearerTokenFile.placeholder')"
138
138
  />
139
139
  </div>
140
140
  </div>
@@ -39,7 +39,7 @@ export default {
39
39
  <div>
40
40
  <div class="row">
41
41
  <div class="col span-12">
42
- <h3>Target</h3>
42
+ <h3>目标</h3>
43
43
  </div>
44
44
  </div>
45
45
  <div class="row mb-20">
@@ -47,7 +47,7 @@ export default {
47
47
  <LabeledInput
48
48
  v-model:value="value.to"
49
49
  :mode="mode"
50
- label="Default Recipient Address"
50
+ label="默认收件人地址"
51
51
  placeholder="e.g. admin@example.com"
52
52
  />
53
53
  </div>
@@ -56,7 +56,7 @@ export default {
56
56
  v-model:value="value.send_resolved"
57
57
  :mode="mode"
58
58
  class="mt-20"
59
- label="Enable send resolved alerts"
59
+ label="启用发送已解决的警报"
60
60
  />
61
61
  </div>
62
62
  </div>
@@ -97,7 +97,7 @@ export default {
97
97
  v-model:value="value.require_tls"
98
98
  :mode="mode"
99
99
  class="mt-20"
100
- label="Use TLS"
100
+ label="启用TLS"
101
101
  />
102
102
  </div>
103
103
  </div>
@@ -106,7 +106,7 @@ export default {
106
106
  <LabeledInput
107
107
  v-model:value="value.auth_username"
108
108
  :mode="mode"
109
- label="Username"
109
+ label="用户名"
110
110
  placeholder="e.g. John"
111
111
  />
112
112
  </div>
@@ -114,7 +114,7 @@ export default {
114
114
  <LabeledInput
115
115
  v-model:value="value.auth_password"
116
116
  :mode="mode"
117
- label="Password"
117
+ label="密码"
118
118
  type="password"
119
119
  autocomplete="password"
120
120
  />
@@ -130,7 +130,7 @@ export default {
130
130
  <div>
131
131
  <div class="row">
132
132
  <div class="col span-12">
133
- <h3>Target</h3>
133
+ <h3>目标</h3>
134
134
  </div>
135
135
  </div>
136
136
  <div class="row mb-20">
@@ -147,7 +147,7 @@ export default {
147
147
  <LabeledInput
148
148
  v-model:value="value.http_config.proxy_url"
149
149
  :mode="mode"
150
- label="Proxy URL"
150
+ label="代理地址"
151
151
  placeholder="e.g. http://my-proxy/"
152
152
  />
153
153
  </div>
@@ -156,12 +156,12 @@ export default {
156
156
  <Checkbox
157
157
  v-model:value="value.send_resolved"
158
158
  :mode="mode"
159
- label="Enable send resolved alerts"
159
+ label="启用发送已解决的警报"
160
160
  />
161
161
  </div>
162
162
  <div class="row">
163
163
  <div class="col span-12">
164
- <h3>Responders</h3>
164
+ <h3>响应者</h3>
165
165
  <ArrayList
166
166
  v-model:value="responders"
167
167
  :mode="mode"
@@ -174,18 +174,18 @@ export default {
174
174
  class="row"
175
175
  :class="{'mb-15': isView, 'mb-10': !isView}"
176
176
  >
177
- <div class="col span-6">
178
- <span class="text-label">Type</span>
177
+ <div class="col" style="width:400px">
178
+ <span class="text-label">类型</span>
179
179
  </div>
180
- <div class="col span-6 send-to">
181
- <span class="text-label">Send To</span>
180
+ <div class="col send-to ml-10" style="flex: 1;">
181
+ <span class="text-label">发送至</span>
182
182
  </div>
183
183
  </div>
184
184
  </div>
185
185
  </template>
186
186
  <template v-slot:columns="scope">
187
187
  <div class="row responder">
188
- <div class="col span-6">
188
+ <div style="width:400px">
189
189
  <span v-if="isView">{{ typeLabel(scope.row.value.type) }}</span>
190
190
  <Select
191
191
  v-else
@@ -194,7 +194,7 @@ export default {
194
194
  :options="TYPES"
195
195
  />
196
196
  </div>
197
- <div class="col-span-6 target-container">
197
+ <div class="target-container ml-10" style="flex: 1;">
198
198
  <span v-if="isView">{{ targetLabel(scope.row.value.target) }}: {{ scope.row.value.value }}</span>
199
199
  <InputWithSelect
200
200
  v-else
@@ -56,7 +56,7 @@ export default {
56
56
  <div>
57
57
  <div class="row">
58
58
  <div class="col span-12">
59
- <h3>Target</h3>
59
+ <h3>目标</h3>
60
60
  </div>
61
61
  </div>
62
62
  <div class="row mb-20">
@@ -65,14 +65,14 @@ export default {
65
65
  v-model:value="integrationType"
66
66
  :options="integrationTypeOptions"
67
67
  :mode="mode"
68
- label="Integration Type"
68
+ label="整合型"
69
69
  />
70
70
  </div>
71
71
  <div class="col span-6">
72
72
  <LabeledInput
73
73
  v-model:value="value[integrationMapping[integrationType]]"
74
74
  :mode="mode"
75
- label="Default Integration Key"
75
+ label="默认集成密钥"
76
76
  />
77
77
  </div>
78
78
  </div>
@@ -81,7 +81,7 @@ export default {
81
81
  <LabeledInput
82
82
  v-model:value="value.http_config.proxy_url"
83
83
  :mode="mode"
84
- label="Proxy URL"
84
+ label="代理地址"
85
85
  placeholder="e.g. http://my-proxy/"
86
86
  />
87
87
  </div>
@@ -90,7 +90,7 @@ export default {
90
90
  <Checkbox
91
91
  v-model:value="value.send_resolved"
92
92
  :mode="mode"
93
- label="Enable send resolved alerts"
93
+ label="启用发送已解决的警报"
94
94
  />
95
95
  </div>
96
96
  </div>
@@ -40,7 +40,7 @@ export default {
40
40
  <div>
41
41
  <div class="row">
42
42
  <div class="col span-12">
43
- <h3>Target</h3>
43
+ <h3>目标</h3>
44
44
  </div>
45
45
  </div>
46
46
  <div class="row mb-20">
@@ -64,7 +64,7 @@ export default {
64
64
  <LabeledInput
65
65
  v-model:value="value.channel"
66
66
  :mode="mode"
67
- label="Default Channel"
67
+ label="默认频道"
68
68
  placeholder="e.g. #example"
69
69
  />
70
70
  </div>
@@ -72,7 +72,7 @@ export default {
72
72
  <LabeledInput
73
73
  v-model:value="value.http_config.proxy_url"
74
74
  :mode="mode"
75
- label="Proxy URL"
75
+ label="代理地址"
76
76
  placeholder="e.g. http://my-proxy/"
77
77
  />
78
78
  </div>
@@ -81,7 +81,7 @@ export default {
81
81
  <Checkbox
82
82
  v-model:value="value.send_resolved"
83
83
  :mode="mode"
84
- label="Enable send resolved alerts"
84
+ label="启用发送已解决的警报"
85
85
  />
86
86
  </div>
87
87
  </div>
@@ -186,11 +186,10 @@ export default {
186
186
  :value="value"
187
187
  :namespaced="false"
188
188
  :mode="mode"
189
- :extra-columns="['project-col']"
190
189
  >
191
190
  <template
192
191
  v-if="flatView && isCreate"
193
- #project-col
192
+ #customize
194
193
  >
195
194
  <LabeledSelect
196
195
  v-model:value="projectName"
@@ -5,6 +5,7 @@ import { get, set, remove } from '@shell/utils/object';
5
5
 
6
6
  export default {
7
7
  components: { LabeledSelect },
8
+ emits: ['update:value'],
8
9
  props: {
9
10
  value: {
10
11
  type: Object,
@@ -37,13 +38,16 @@ export default {
37
38
  },
38
39
  methods: {
39
40
  update(e) {
40
- if (!e || e.label === this.t('generic.none')) {
41
+ if (!e || e === '' || e.label === this.t('generic.none')) {
41
42
  remove(this.value, 'spec.ingressClassName');
42
43
  this.ingressClassName = '';
44
+ this.$emit('update:value', this.value);
43
45
  } else {
44
46
  // when a user manually types an ingress class name, the event emitted has a 'label' but no 'value'
45
- this.ingressClassName = e.value ? e.value : e.label;
47
+ this.ingressClassName = e.label || e;
46
48
  set(this.value, 'spec.ingressClassName', this.ingressClassName);
49
+
50
+ this.$emit('update:value', this.value);
47
51
  }
48
52
  }
49
53
  }
@@ -59,7 +63,7 @@ export default {
59
63
  :label="t('ingress.ingressClass.label')"
60
64
  :options="ingressClassOptions"
61
65
  option-label="label"
62
- @selecting="update"
66
+ @update:value="update"
63
67
  />
64
68
  </div>
65
69
  </template>
@@ -189,7 +189,7 @@ $row-height: 40px;
189
189
  height: 100%;
190
190
 
191
191
  input.no-label {
192
- height: calc($row-height - 2px);
192
+ height: 32px;
193
193
  padding: 10px;
194
194
  }
195
195
  }
@@ -0,0 +1,58 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import IngressClass from '@shell/edit/networking.k8s.io.ingress/IngressClass.vue';
3
+ import LabeledSelect from '@shell/components/form/LabeledSelect';
4
+ import { _EDIT } from '@shell/config/query-params';
5
+
6
+ jest.mock('@shell/components/form/LabeledSelect', () => ({
7
+ name: 'LabeledSelect',
8
+ template: '<div></div>',
9
+ props: ['value', 'taggable', 'searchable', 'mode', 'label', 'options', 'optionLabel'],
10
+ emits: ['update:value'],
11
+ }));
12
+
13
+ describe('ingressClass.vue', () => {
14
+ it('renders correctly', () => {
15
+ const wrapper = shallowMount(IngressClass, {
16
+ props: {
17
+ value: {},
18
+ ingressClasses: [],
19
+ mode: _EDIT,
20
+ },
21
+ });
22
+
23
+ expect(wrapper.exists()).toBe(true);
24
+ expect(wrapper.findComponent(LabeledSelect).exists()).toBe(true);
25
+ });
26
+
27
+ it('updates ingressClassName correctly', async() => {
28
+ const wrapper = shallowMount(IngressClass, {
29
+ props: {
30
+ value: {},
31
+ ingressClasses: [{ label: 'nginx', value: 'nginx' }],
32
+ mode: _EDIT,
33
+ },
34
+ });
35
+
36
+ await wrapper.findComponent(LabeledSelect).vm.$emit('update:value', 'nginx');
37
+
38
+ expect(wrapper.vm.ingressClassName).toBe('nginx');
39
+ expect(wrapper.props('value').spec.ingressClassName).toBe('nginx');
40
+ expect(wrapper.emitted()['update:value']).toBeTruthy();
41
+ });
42
+
43
+ it('removes ingressClassName when none is selected', async() => {
44
+ const wrapper = shallowMount(IngressClass, {
45
+ props: {
46
+ value: { spec: { ingressClassName: 'nginx' } },
47
+ ingressClasses: [{ label: 'nginx', value: 'nginx' }],
48
+ mode: _EDIT,
49
+ },
50
+ });
51
+
52
+ await wrapper.findComponent(LabeledSelect).vm.$emit('update:value', '');
53
+
54
+ expect(wrapper.vm.ingressClassName).toBe('');
55
+ expect(wrapper.props('value').spec.ingressClassName).toBeUndefined();
56
+ expect(wrapper.emitted()['update:value']).toBeTruthy();
57
+ });
58
+ });
@@ -9,7 +9,13 @@ describe('view: PersistentVolume', () => {
9
9
  };
10
10
  const resource = 'PersistentVolume';
11
11
  const wrapper = mount(PersistentVolume as ExtendedVue<Vue, {}, {}, {}, PersistentVolume>, {
12
- props: { value: { spec: { } } },
12
+ props: {
13
+ value: {
14
+ setAnnotation: jest.fn(),
15
+ spec: {},
16
+ metadata: {},
17
+ }
18
+ },
13
19
 
14
20
  global: {
15
21
  mocks: {
@@ -54,7 +60,13 @@ describe('view: PersistentVolume', () => {
54
60
  const plugin = 'csi';
55
61
  const resource = 'PersistentVolume';
56
62
  const wrapper = mount(PersistentVolume as ExtendedVue<Vue, {}, {}, {}, PersistentVolume>, {
57
- props: { value: { spec: { [plugin]: { value: plugin } } } },
63
+ props: {
64
+ value: {
65
+ setAnnotation: jest.fn(),
66
+ spec: { [plugin]: { value: plugin } },
67
+ metadata: {},
68
+ }
69
+ },
58
70
  global: {
59
71
  mocks: {
60
72
  $store: {
@@ -260,7 +260,10 @@ export default {
260
260
  />
261
261
 
262
262
  <template v-if="cluster.supportsWindows">
263
- <hr class="mt-20 mb-20">
263
+ <hr
264
+ class="mt-20 mb-20"
265
+ role="none"
266
+ >
264
267
  <h4 v-t="'cluster.custom.registrationCommand.windowsDetail'" />
265
268
  <Banner
266
269
  v-if="readyForWindows"
@@ -81,6 +81,30 @@ export default {
81
81
  },
82
82
 
83
83
  computed: {
84
+ hasCustomCloudCredentialComponent() {
85
+ const driverName = this.driverName;
86
+
87
+ return this.$store.getters['type-map/hasCustomCloudCredentialComponent'](driverName);
88
+ },
89
+
90
+ cloudCredentialComponent() {
91
+ const driverName = this.driverName;
92
+
93
+ return this.$store.getters['type-map/importCloudCredential'](driverName);
94
+ },
95
+
96
+ genericCloudCredentialComponent() {
97
+ return this.$store.getters['type-map/importCloudCredential']('generic');
98
+ },
99
+
100
+ cloudComponent() {
101
+ if (this.hasCustomCloudCredentialComponent) {
102
+ return this.cloudCredentialComponent;
103
+ }
104
+
105
+ return this.genericCloudCredentialComponent;
106
+ },
107
+
84
108
  isNone() {
85
109
  return this.credentialId === null || this.credentialId === _NONE;
86
110
  },
@@ -140,14 +164,6 @@ export default {
140
164
  return out;
141
165
  },
142
166
 
143
- createComponent() {
144
- if (this.$store.getters['type-map/hasCustomCloudCredentialComponent'](this.driverName)) {
145
- return this.$store.getters['type-map/importCloudCredential'](this.driverName);
146
- }
147
-
148
- return this.$store.getters['type-map/importCloudCredential']('generic');
149
- },
150
-
151
167
  validationPassed() {
152
168
  if ( this.credentialId === _NONE ) {
153
169
  return false;
@@ -175,6 +191,7 @@ export default {
175
191
  },
176
192
 
177
193
  methods: {
194
+
178
195
  async save(btnCb) {
179
196
  if ( this.errors ) {
180
197
  clear(this.errors);
@@ -266,7 +283,7 @@ export default {
266
283
  />
267
284
 
268
285
  <component
269
- :is="createComponent"
286
+ :is="cloudComponent"
270
287
  ref="create"
271
288
  v-model:value="newCredential"
272
289
  mode="create"
@@ -45,8 +45,6 @@ describe('component: Advanced', () => {
45
45
  mountOptions
46
46
  );
47
47
 
48
- // eslint-disable-next-line no-console
49
- console.log(wrapper.html());
50
48
  const inputElem = wrapper.find('[data-testid="array-list-box0"]');
51
49
 
52
50
  expect(inputElem.exists()).toBe(false);
@@ -178,7 +176,7 @@ describe('component: Advanced', () => {
178
176
  const selectorContainer = wrapper.find('[data-testid="selector-kubelet-arg"]');
179
177
 
180
178
  const globalInputElem = globalContainer;
181
- const selectorInputElem = selectorContainer.find('[data-testid="input-0"]').element as HTMLInputElement;
179
+ const selectorInputElem = selectorContainer.find('[data-testid="array-list-input-0"]').element as HTMLInputElement;
182
180
 
183
181
  expect(globalInputElem.exists()).toBe(false);
184
182
  expect(selectorInputElem.value).toContain('config-from-machineSelectorConfig');
@@ -201,7 +199,7 @@ describe('component: Advanced', () => {
201
199
  const selectorContainer = wrapper.find('[data-testid="selector-kubelet-arg"]');
202
200
 
203
201
  const selectorInputElem = selectorContainer;
204
- const globalInputElem = globalContainer.find('[data-testid="input-0"]').element as HTMLInputElement;
202
+ const globalInputElem = globalContainer.find('[data-testid="array-list-input-0"]').element as HTMLInputElement;
205
203
 
206
204
  expect(selectorInputElem.exists()).toBe(false);
207
205
  expect(globalInputElem.value).toContain('config-from-machineGlobalConfig');
@@ -224,8 +222,8 @@ describe('component: Advanced', () => {
224
222
  const globalContainer = wrapper.find('[data-testid="global-kubelet-arg"]');
225
223
  const selectorContainer = wrapper.find('[data-testid="selector-kubelet-arg"]');
226
224
 
227
- const selectorInputElem = selectorContainer.find('[data-testid="input-0"]').element as HTMLInputElement;
228
- const globalInputElem = globalContainer.find('[data-testid="input-0"]').element as HTMLInputElement;
225
+ const selectorInputElem = selectorContainer.find('[data-testid="array-list-input-0"]').element as HTMLInputElement;
226
+ const globalInputElem = globalContainer.find('[data-testid="array-list-input-0"]').element as HTMLInputElement;
229
227
 
230
228
  expect(selectorInputElem.value).toContain('config-from-machineSelectorConfig');
231
229
  expect(globalInputElem.value).toContain('config-from-machineGlobalConfig');
@@ -249,8 +247,8 @@ describe('component: Advanced', () => {
249
247
  const globalContainer = wrapper.find('[data-testid="global-kubelet-arg"]');
250
248
  const selectorContainer = wrapper.find('[data-testid="selector-kubelet-arg"]');
251
249
 
252
- const selectorInputElem = selectorContainer.find('[data-testid="input-0"]');
253
- const globalInputElem = globalContainer.find('[data-testid="input-0"]');
250
+ const selectorInputElem = selectorContainer.find('[data-testid="array-list-input-0"]');
251
+ const globalInputElem = globalContainer.find('[data-testid="array-list-input-0"]');
254
252
 
255
253
  const emptyCharacter = wrapper.find('.info-box').find('.text-muted').element;
256
254
 
@@ -284,8 +282,8 @@ describe('component: Advanced', () => {
284
282
  const globalContainer = wrapper.find('[data-testid="global-kubelet-arg"]');
285
283
  const selectorContainer = wrapper.find('[data-testid="selector-kubelet-arg"]');
286
284
 
287
- const selectorInputElem = selectorContainer.find('[data-testid="input-0"]');
288
- const globalInputElem = globalContainer.find('[data-testid="input-0"]');
285
+ const selectorInputElem = selectorContainer.find('[data-testid="array-list-input-0"]');
286
+ const globalInputElem = globalContainer.find('[data-testid="array-list-input-0"]');
289
287
 
290
288
  const emptyCharacter = wrapper.find('.info-box').find('.text-muted');
291
289