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
@@ -85,8 +85,9 @@ export default {
85
85
  :capacity="reserved.total"
86
86
  :used="reserved.useful"
87
87
  :color-stops="colorStops"
88
+ :reserveText="`已分配`"
88
89
  >
89
- <template #title>
90
+ <!-- <template #title>
90
91
  <span>
91
92
  {{ reservedTitle ?? t('clusterIndexPage.hardwareResourceGauge.reserved') }}
92
93
  <span class="values text-muted">
@@ -108,6 +109,23 @@ export default {
108
109
  <span>
109
110
  {{ percentage(reserved) }}
110
111
  </span>
112
+ </template> -->
113
+ <template #content>
114
+ <span>
115
+ {{ percentage(reserved) }}(
116
+ 共 <span v-if="reserved.formattedTotal">
117
+ {{ reserved.formattedTotal }}
118
+ </span>
119
+ <span v-else>
120
+ {{ maxDecimalPlaces(reserved.total) }} {{ reserved.units }}
121
+ </span>,{{ reservedTitle === '分配'? '已分配': '预留' }} <span v-if="reserved.formattedUseful">
122
+ {{ reserved.formattedUseful }} {{ reserved.units }}
123
+ </span>
124
+ <span v-else>
125
+ {{ maxDecimalPlaces(reserved.useful) }} {{ reserved.units }}
126
+ </span>
127
+ )
128
+ </span>
111
129
  </template>
112
130
  </ConsumptionGauge>
113
131
  </div>
@@ -119,8 +137,26 @@ export default {
119
137
  :capacity="used.total"
120
138
  :used="used.useful"
121
139
  :color-stops="colorStops"
140
+ :reserveText="`已使用`"
122
141
  >
123
- <template #title>
142
+ <template #content>
143
+ <span>
144
+ {{ percentage(used) }}(
145
+ 共 <span v-if="used.formattedTotal">
146
+ {{ used.formattedTotal }}
147
+ </span>
148
+ <span v-else>
149
+ {{ maxDecimalPlaces(used.total) }} {{ used.units }}
150
+ </span>,已使用 <span v-if="used.formattedUseful">
151
+ {{ used.formattedUseful }} {{ used.units }}
152
+ </span>
153
+ <span v-else>
154
+ {{ maxDecimalPlaces(used.useful) }} {{ used.units }}
155
+ </span>
156
+ )
157
+ </span>
158
+ </template>
159
+ <!-- <template #title>
124
160
  <span>
125
161
  {{ usedTitle ?? t('clusterIndexPage.hardwareResourceGauge.used') }}
126
162
  <span class="values text-muted">
@@ -142,7 +178,7 @@ export default {
142
178
  <span>
143
179
  {{ percentage(used) }}
144
180
  </span>
145
- </template>
181
+ </template> -->
146
182
  </ConsumptionGauge>
147
183
  </div>
148
184
  </div>
@@ -26,8 +26,8 @@ export default {
26
26
 
27
27
  <style lang="scss" scoped>
28
28
  .info-box {
29
- border: 2px solid var(--tabbed-border);
30
- padding: 10px;
29
+ border: 1px solid var(--tabbed-border);
30
+ padding: 20px;
31
31
  margin-bottom: 20px;
32
32
  border-radius: var(--border-radius);
33
33
  flex-grow: 1;
@@ -81,4 +81,4 @@ export default {
81
81
  }
82
82
  }
83
83
  }
84
- </style>
84
+ </style>
@@ -45,7 +45,9 @@ export default {
45
45
  </div>
46
46
  <div class="value">
47
47
  <slot name="value">
48
- {{ displayValue }}
48
+ <span v-clean-tooltip="displayValue">
49
+ {{ displayValue }}
50
+ </span>
49
51
  </slot>
50
52
  </div>
51
53
  </div>
@@ -53,7 +55,7 @@ export default {
53
55
  </template>
54
56
 
55
57
  <style lang="scss" scoped>
56
- .label {
58
+ /* .label {
57
59
  display: flex;
58
60
  flex-direction: column;
59
61
 
@@ -61,5 +63,29 @@ export default {
61
63
  font-size: 14px;
62
64
  line-height: $input-line-height;
63
65
  }
66
+ } */
67
+ .label {
68
+ display: flex;
69
+ /* align-items: center; */
70
+ /* flex-direction: column; */
71
+
72
+ .text-label{
73
+ width: 160px;
74
+ line-height: 32px;
75
+ }
76
+ .value {
77
+ /* font-size: 14px; */
78
+ /* line-height: $input-line-height; */
79
+ line-height: 32px;
80
+ flex: 1;
81
+ overflow: hidden;
82
+ text-overflow: ellipsis;
83
+ white-space: nowrap;
84
+
85
+ ul{
86
+ line-height: $input-line-height;
87
+ list-style:none;
88
+ }
89
+ }
64
90
  }
65
91
  </style>
@@ -30,7 +30,7 @@ export default {
30
30
  </template>
31
31
 
32
32
  <style lang="scss" scoped>
33
- .label {
33
+ /* .label {
34
34
  display: flex;
35
35
  flex-direction: column;
36
36
 
@@ -38,5 +38,24 @@ export default {
38
38
  font-size: 14px;
39
39
  line-height: $input-line-height;
40
40
  }
41
+ } */
42
+ .label {
43
+ display: flex;
44
+ /* flex-direction: column; */
45
+ /* align-items: center; */
46
+ .text-label{
47
+ width: 160px;
48
+ line-height: 32px;
49
+ }
50
+ .value {
51
+ line-height: $input-line-height;
52
+ overflow: hidden;
53
+ text-overflow: ellipsis;
54
+ white-space: nowrap;
55
+ line-height: 32px;
56
+ }
57
+ }
58
+ :deep() ul {
59
+ margin: 0px;
41
60
  }
42
61
  </style>
@@ -103,9 +103,6 @@ export default {
103
103
 
104
104
  <template>
105
105
  <div>
106
- <p class="set-landing-leadin">
107
- {{ t('landing.landingPrefs.body') }}
108
- </p>
109
106
  <RadioGroup
110
107
  id="login-route"
111
108
  :value="afterLoginRoute"
@@ -113,6 +110,11 @@ export default {
113
110
  :options="routeRadioOptions"
114
111
  @update:value="updateLoginRoute"
115
112
  >
113
+ <template #label>
114
+ <p class="set-landing-leadin">
115
+ {{ t('landing.landingPrefs.body') }}
116
+ </p>
117
+ </template>
116
118
  <template #2="{option}">
117
119
  <div class="custom-page">
118
120
  <RadioButton
@@ -1,11 +1,17 @@
1
1
  <script>
2
2
  import { mapGetters } from 'vuex';
3
3
  import Select from '@shell/components/form/Select.vue';
4
+ import { RcDropdown, RcDropdownTrigger, RcDropdownItem } from '@components/RcDropdown';
4
5
 
5
6
  export default {
6
7
  name: 'LocalSelector',
7
8
 
8
- components: { Select },
9
+ components: {
10
+ Select,
11
+ RcDropdown,
12
+ RcDropdownItem,
13
+ RcDropdownTrigger,
14
+ },
9
15
 
10
16
  props: {
11
17
  mode: {
@@ -65,111 +71,51 @@ export default {
65
71
  <template>
66
72
  <div>
67
73
  <div v-if="mode === 'login'">
68
- <div
69
- v-if="showLocale"
70
- role="menu"
71
- :aria-label="t('locale.menu')"
72
- class="locale-login-container"
73
- tabindex="0"
74
- @click="openLocaleSelector"
75
- @blur.capture="closeLocaleSelector"
76
- @keyup.enter="openLocaleSelector"
77
- @keyup.space="openLocaleSelector"
78
- >
79
- <v-dropdown
80
- popperClass="localeSelector"
81
- :shown="isLocaleSelectorOpen"
82
- placement="top"
83
- distance="8"
84
- skidding="12"
85
- :triggers="[]"
86
- :autoHide="false"
87
- :flip="false"
88
- :container="false"
89
- @focus.capture="openLocaleSelector"
74
+ <rc-dropdown v-if="showLocale">
75
+ <rc-dropdown-trigger
76
+ data-testid="locale-selector"
77
+ link
78
+ class="baseline"
79
+ :aria-label="t('locale.menu')"
90
80
  >
91
- <a
92
- data-testid="locale-selector"
93
- class="locale-chooser"
81
+ {{ selectedLocaleLabel }}
82
+ <template
83
+ v-if="showIcon"
84
+ #after
94
85
  >
95
- {{ selectedLocaleLabel }}
96
- <i
97
- v-if="showIcon"
98
- class="icon icon-fw icon-sort-down"
99
- />
100
- </a>
101
- <template #popper>
102
- <ul
103
- class="list-unstyled dropdown"
104
- style="margin: -1px;"
105
- >
106
- <li
107
- v-if="showNone"
108
- v-t="'locale.none'"
109
- class="hand"
110
- tabindex="0"
111
- role="menuitem"
112
- @click.stop="switchLocale('none')"
113
- @keyup.enter.stop="switchLocale('none')"
114
- @keyup.space.stop="switchLocale('none')"
115
- />
116
- <li
117
- v-for="(label, name) in availableLocales"
118
- :key="name"
119
- tabindex="0"
120
- role="menuitem"
121
- class="hand"
122
- @click.stop="switchLocale(name)"
123
- @keyup.enter.stop="switchLocale(name)"
124
- @keyup.space.stop="switchLocale(name)"
125
- >
126
- {{ label }}
127
- </li>
128
- </ul>
86
+ <i class="icon icon-fw icon-sort-down" />
129
87
  </template>
130
- </v-dropdown>
131
- </div>
88
+ </rc-dropdown-trigger>
89
+ <template #dropdownCollection>
90
+ <rc-dropdown-item
91
+ v-if="showNone"
92
+ v-t="'locale.none'"
93
+ @click="switchLocale('none')"
94
+ />
95
+ <rc-dropdown-item
96
+ v-for="(label, name) in availableLocales"
97
+ :key="name"
98
+ :lang="name"
99
+ @click.stop="switchLocale(name)"
100
+ >
101
+ {{ label }}
102
+ </rc-dropdown-item>
103
+ </template>
104
+ </rc-dropdown>
132
105
  </div>
133
106
  <div v-else>
134
107
  <Select
135
108
  :value="selectedOption"
136
109
  :options="localesOptions"
110
+ :is-lang-select="true"
137
111
  @update:value="switchLocale($event)"
138
112
  />
139
113
  </div>
140
114
  </div>
141
115
  </template>
142
116
 
143
- <style lang="scss" scoped>
144
- .advanced {
145
- user-select: none;
146
- padding: 0 5px;
147
- line-height: 40px;
148
- font-size: 15px;
149
- font-weight: 500;
150
- }
151
- .content {
152
- background: var(--nav-active);
153
- padding: 10px;
154
- margin-top: 6px;
155
- border-radius: 4px;
156
- }
157
-
158
- .hand:focus-visible {
159
- @include focus-outline;
160
- outline-offset: 4px;
161
- }
162
-
163
- .locale-chooser {
164
- cursor: pointer;
165
-
166
- &:hover {
167
- text-decoration: none;
117
+ <style lang="scss">
118
+ .baseline {
119
+ align-items: baseline;
168
120
  }
169
- }
170
-
171
- .locale-login-container:focus-visible {
172
- @include focus-outline;
173
- outline-offset: 2px;
174
- }
175
121
  </style>
@@ -0,0 +1,55 @@
1
+ <script lang="ts" setup>
2
+ import { computed, ref } from 'vue';
3
+ import { useStore } from 'vuex';
4
+
5
+ import AppModal from '@shell/components/AppModal.vue';
6
+
7
+ const store = useStore();
8
+
9
+ const isOpen = computed(() => store.getters['modal/isOpen']);
10
+ const component = computed(() => store.getters['modal/component']);
11
+ const componentProps = computed(() => store.getters['modal/componentProps']);
12
+ const resources = computed(() => store.getters['modal/resources']);
13
+ const closeOnClickOutside = computed(() => store.getters['modal/closeOnClickOutside']);
14
+ const modalWidth = computed(() => store.getters['modal/modalWidth']);
15
+ // const modalSticky = computed(() => store.getters['modal/modalSticky']); // TODO: Implement sticky modals
16
+
17
+ const backgroundClosing = ref<Function | null>(null);
18
+
19
+ function close() {
20
+ if (!isOpen.value) return;
21
+
22
+ if (backgroundClosing.value) {
23
+ backgroundClosing.value();
24
+ }
25
+
26
+ store.commit('modal/closeModal');
27
+ }
28
+
29
+ function registerBackgroundClosing(fn: Function) {
30
+ backgroundClosing.value = fn;
31
+ }
32
+ </script>
33
+
34
+ <template>
35
+ <Teleport to="#modals">
36
+ <app-modal
37
+ v-if="isOpen && component"
38
+ :click-to-close="closeOnClickOutside"
39
+ :width="modalWidth"
40
+ :style="{ '--prompt-modal-width': modalWidth }"
41
+ :trigger-focus-trap="true"
42
+ tabindex="0"
43
+ @close="close"
44
+ >
45
+ <component
46
+ :is="component"
47
+ v-bind="componentProps || {}"
48
+ data-testid="modal-manager-component"
49
+ :resources="resources"
50
+ :register-background-closing="registerBackgroundClosing"
51
+ @close="close"
52
+ />
53
+ </app-modal>
54
+ </Teleport>
55
+ </template>
@@ -21,7 +21,7 @@ export default {
21
21
 
22
22
  closeText: {
23
23
  type: String,
24
- default: 'Close'
24
+ default: '关闭'
25
25
  },
26
26
 
27
27
  saveText: {
@@ -65,8 +65,17 @@ export default {
65
65
  v-bind="$attrs"
66
66
  class="modal"
67
67
  data-testid="mvc__card"
68
- @close="$emit('finish', $event)"
68
+ :trigger-focus-trap="true"
69
+ @close="$emit('close', $event)"
69
70
  >
71
+ <!-- <slot name="closeicon">
72
+ <button
73
+ class="btn btn-sm role-link hide-icon-dialog-close"
74
+ @click.prevent="hide"
75
+ >
76
+ <i class="icon icon-x" />
77
+ </button>
78
+ </slot> -->
70
79
  <Card
71
80
  class="modal"
72
81
  :show-highlight-border="false"
@@ -117,7 +126,7 @@ export default {
117
126
  .footer {
118
127
  width: 100%;
119
128
  display: flex;
120
- justify-content: center;
129
+ justify-content: flex-end;
121
130
  }
122
131
 
123
132
  .banner {
@@ -132,6 +141,7 @@ export default {
132
141
 
133
142
  &.card-container {
134
143
  box-shadow: none;
144
+ padding: 24px;
135
145
  }
136
146
  }
137
147
  </style>
@@ -93,6 +93,7 @@ export default {
93
93
  :name="modalName"
94
94
  :width="440"
95
95
  height="auto"
96
+ :trigger-focus-trap="true"
96
97
  @close="close"
97
98
  >
98
99
  <Loading v-if="$fetchState.pending" />
@@ -218,7 +218,7 @@ export default defineComponent({
218
218
  :key="i"
219
219
  class="row row--y-center mb-20"
220
220
  >
221
- <span class="col span-2">
221
+ <span class="col">
222
222
  <Checkbox
223
223
  v-if="!labelsAlwaysActive"
224
224
  v-model:value="psaControl.active"
@@ -42,7 +42,7 @@ export default {
42
42
  custom-class="change-password-modal"
43
43
  data-testid="change-password__modal"
44
44
  name="password-modal"
45
- :width="500"
45
+ :width="700"
46
46
  :height="465"
47
47
  :trigger-focus-trap="true"
48
48
  @close="show(false)"
@@ -13,7 +13,11 @@ export default {
13
13
  components: { AppModal },
14
14
 
15
15
  data() {
16
- return { opened: false, backgroundClosing: null };
16
+ return {
17
+ opened: false,
18
+ backgroundClosing: null,
19
+ componentRendered: false
20
+ };
17
21
  },
18
22
 
19
23
  computed: {
@@ -31,7 +35,7 @@ export default {
31
35
 
32
36
  modalWidth() {
33
37
  // property set from workload.js to overwrite modal default width of 600px, with fallback value as well
34
- return this.modalData?.modalWidth || '600px';
38
+ return this.modalData?.modalWidth || '610px';
35
39
  },
36
40
  component() {
37
41
  // Looks for a dialog component by looking up in plugins and @shell/dialog/${name}.
@@ -54,10 +58,15 @@ export default {
54
58
  watch: {
55
59
  showModal(show) {
56
60
  this.opened = show;
57
- },
61
+ }
58
62
  },
59
63
 
60
64
  methods: {
65
+ onSlotComponentMounted() {
66
+ // variable for the watcher based focus-trap
67
+ // so that we know when the component is rendered
68
+ this.componentRendered = true;
69
+ },
61
70
  close() {
62
71
  if (!this.opened) {
63
72
  return;
@@ -69,6 +78,7 @@ export default {
69
78
  this.backgroundClosing();
70
79
  }
71
80
 
81
+ this.componentRendered = false;
72
82
  this.opened = false;
73
83
  },
74
84
 
@@ -85,6 +95,8 @@ export default {
85
95
  v-if="opened && component"
86
96
  :click-to-close="closeOnClickOutside"
87
97
  :width="modalWidth"
98
+ :trigger-focus-trap-watcher-based="true"
99
+ :focus-trap-watcher-based-variable="componentRendered"
88
100
  @close="close()"
89
101
  >
90
102
  <component
@@ -92,6 +104,7 @@ export default {
92
104
  :is="component"
93
105
  :resources="resources"
94
106
  :register-background-closing="registerBackgroundClosing"
107
+ @vue:mounted="onSlotComponentMounted"
95
108
  @close="close()"
96
109
  />
97
110
  </app-modal>
@@ -12,6 +12,7 @@ import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations
12
12
  import { CATALOG } from '@shell/config/types';
13
13
  import { LabeledInput } from '@components/Form/LabeledInput';
14
14
  import AppModal from '@shell/components/AppModal.vue';
15
+ import { translateError } from '@shell/utils/error';
15
16
 
16
17
  export default {
17
18
  name: 'PromptRemove',
@@ -213,6 +214,7 @@ export default {
213
214
  },
214
215
 
215
216
  methods: {
217
+ translateError,
216
218
  resourceNames,
217
219
  escapeHtml,
218
220
  close() {
@@ -336,9 +338,10 @@ export default {
336
338
  v-if="showModal"
337
339
  custom-class="remove-modal"
338
340
  name="promptRemove"
339
- :width="400"
341
+ :width="460"
340
342
  height="auto"
341
343
  styles="max-height: 100vh;"
344
+ :trigger-focus-trap="true"
342
345
  @close="close"
343
346
  >
344
347
  <Card
@@ -347,6 +350,11 @@ export default {
347
350
  >
348
351
  <template #title>
349
352
  <h4 class="text-default-text">
353
+ <img
354
+ src="@shell/assets/images/promp-yellow.svg"
355
+ class="img-span"
356
+ alt=""
357
+ >
350
358
  {{ t('promptRemove.title') }}
351
359
  </h4>
352
360
  </template>
@@ -354,7 +362,7 @@ export default {
354
362
  <div class="mb-10">
355
363
  <template v-if="!hasCustomRemove">
356
364
  {{ t('promptRemove.attemptingToRemove', { type }) }} <span
357
- v-clean-html="resourceNames(names, t)"
365
+ v-clean-html="resourceNames(names, null, t)"
358
366
  />
359
367
  </template>
360
368
 
@@ -395,14 +403,14 @@ export default {
395
403
  {{ warning }}
396
404
  </div>
397
405
  <div class="text-error mb-10 mt-10">
398
- {{ error }}
406
+ {{ translateError(error) }}
399
407
  </div>
400
- <div
408
+ <!-- <div
401
409
  v-if="!needsConfirm"
402
410
  class="text-info mt-20"
403
411
  >
404
412
  {{ protip }}
405
- </div>
413
+ </div> -->
406
414
  </LabeledInput>
407
415
  <div v-else-if="!hasCustomRemove">
408
416
  <div
@@ -415,7 +423,7 @@ export default {
415
423
  v-if="error"
416
424
  class="text-error mb-10 mt-10"
417
425
  >
418
- {{ error }}
426
+ {{ translateError(error) }}
419
427
  </div>
420
428
  </div>
421
429
  <Checkbox
@@ -436,7 +444,7 @@ export default {
436
444
  <div class="spacer" />
437
445
  <AsyncButton
438
446
  mode="delete"
439
- class="btn bg-error ml-10"
447
+ class="btn ml-10"
440
448
  :disabled="deleteDisabled"
441
449
  :data-testid="componentTestid + '-confirm-button'"
442
450
  @click="remove"
@@ -460,12 +468,24 @@ export default {
460
468
  text-align: right;
461
469
  }
462
470
 
463
- .card-actions {
471
+ /* .card-actions {
464
472
  display: flex;
465
473
 
466
474
  .spacer {
467
475
  flex: 1;
468
476
  }
469
- }
477
+ } */
470
478
  }
471
479
  </style>
480
+
481
+ <style scoped>
482
+ .text-default-text{
483
+ line-height: 20px;
484
+ margin: 0px;
485
+ display: flex;
486
+ align-items: center;
487
+ }
488
+ .img-span{
489
+ margin-right: 8px;
490
+ }
491
+ </style>
@@ -213,6 +213,7 @@ export default {
213
213
  styles="background-color: var(--nav-bg); border-radius: var(--border-radius); max-height: 100vh;"
214
214
  height="auto"
215
215
  :scrollable="true"
216
+ :trigger-focus-trap="true"
216
217
  @close="close"
217
218
  >
218
219
  <Card
@@ -56,6 +56,7 @@ export default {
56
56
  name="cancel-modal"
57
57
  :width="440"
58
58
  height="auto"
59
+ :trigger-focus-trap="true"
59
60
  @close="cancelCancel"
60
61
  >
61
62
  <div class="header">