dashboard-shell-shell 3.0.5-test.6 → 3.0.5-test.61

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 (353) hide show
  1. package/assets/brand/csp/favicon.png +0 -0
  2. package/assets/brand/harvester/favicon.png +0 -0
  3. package/assets/brand/suse/favicon.png +0 -0
  4. package/assets/icons/demo.css +539 -0
  5. package/assets/icons/demo.css:Zone.Identifier +0 -0
  6. package/assets/icons/demo_index.html +1131 -0
  7. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  8. package/assets/icons/iconfont.css +219 -0
  9. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  10. package/assets/icons/iconfont.js +1 -0
  11. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  12. package/assets/icons/iconfont.json +324 -0
  13. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  14. package/assets/icons/iconfont.ttf +0 -0
  15. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  16. package/assets/icons/iconfont.woff +0 -0
  17. package/assets/icons/iconfont.woff2 +0 -0
  18. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  19. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  20. package/assets/iconsNew/demo.css +539 -0
  21. package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
  22. package/assets/iconsNew/demo_index.html +303 -0
  23. package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
  24. package/assets/iconsNew/iconfont.css +43 -0
  25. package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
  26. package/assets/iconsNew/iconfont.js +1 -0
  27. package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
  28. package/assets/iconsNew/iconfont.json +44 -0
  29. package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
  30. package/assets/iconsNew/iconfont.ttf +0 -0
  31. package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
  32. package/assets/iconsNew/iconfont.woff +0 -0
  33. package/assets/iconsNew/iconfont.woff2 +0 -0
  34. package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
  35. package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
  36. package/assets/images/API.svg +3 -0
  37. package/assets/images/action.svg +6 -0
  38. package/assets/images/login/password.svg +20 -0
  39. package/assets/images/login/user.svg +6 -0
  40. package/assets/images/login-bg.png +0 -0
  41. package/assets/images/login-left.png +0 -0
  42. package/assets/images/login-logo.svg +44 -0
  43. package/assets/images/logo.png +0 -0
  44. package/assets/images/logo.svg +47 -0
  45. package/assets/images/pl/dark/logo.png +0 -0
  46. package/assets/images/pl/half-logo.svg +2 -23
  47. package/assets/images/pl/harvester.png +0 -0
  48. package/assets/images/pl/logo.png +0 -0
  49. package/assets/images/promp-yellow.svg +5 -0
  50. package/assets/images/user.png +0 -0
  51. package/assets/styles/all.scss +83 -0
  52. package/assets/styles/app.scss +5 -0
  53. package/assets/styles/base/_basic.scss +2 -2
  54. package/assets/styles/base/_helpers.scss +1 -1
  55. package/assets/styles/base/_mixins.scss +1 -1
  56. package/assets/styles/base/_typography.scss +2 -1
  57. package/assets/styles/base/_variables.scss +14 -7
  58. package/assets/styles/fonts/_icons.scss +3 -2
  59. package/assets/styles/global/_button.scss +44 -26
  60. package/assets/styles/global/_columns.scss +3 -1
  61. package/assets/styles/global/_form.scss +46 -13
  62. package/assets/styles/global/_labeled-input.scss +54 -26
  63. package/assets/styles/global/_layout.scss +8 -3
  64. package/assets/styles/global/_select.scss +25 -17
  65. package/assets/styles/global/_table.scss +7 -1
  66. package/assets/styles/global/_tooltip.scss +60 -8
  67. package/assets/styles/themes/_dark.scss +3 -0
  68. package/assets/styles/themes/_light.scss +69 -46
  69. package/assets/styles/vendor/vue-select.scss +24 -10
  70. package/assets/translations/en-us.yaml +92 -4
  71. package/assets/translations/zh-hans.yaml +668 -206
  72. package/components/ActionDropdown.vue +2 -1
  73. package/components/ActionMenu.vue +2 -2
  74. package/components/ActionMenuShell.vue +2 -0
  75. package/components/AppModal.vue +46 -5
  76. package/components/BrandImage.vue +1 -0
  77. package/components/ButtonDropdown.vue +28 -4
  78. package/components/ButtonMultiAction.vue +1 -0
  79. package/components/ClusterIconMenu.vue +2 -2
  80. package/components/CodeMirror.vue +26 -10
  81. package/components/ConsumptionGauge.vue +24 -5
  82. package/components/ContainerResourceLimit.vue +2 -2
  83. package/components/CopyToClipboard.vue +15 -0
  84. package/components/CruResource.vue +12 -10
  85. package/components/CruResourceFooter.vue +2 -2
  86. package/components/DashboardOptions.vue +29 -17
  87. package/components/DotState.vue +84 -0
  88. package/components/Drawer/Chrome.vue +2 -2
  89. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  90. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  91. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  92. package/components/ExplorerMembers.vue +28 -4
  93. package/components/ExplorerProjectsNamespaces.vue +19 -5
  94. package/components/GlobalRoleBindings.vue +23 -4
  95. package/components/GrafanaDashboard.vue +4 -4
  96. package/components/GrowlManager.vue +3 -1
  97. package/components/HardwareResourceGauge.vue +39 -3
  98. package/components/IndentedPanel.vue +4 -10
  99. package/components/InfoBox.vue +3 -3
  100. package/components/InputOrDisplay.vue +28 -2
  101. package/components/LabelValue.vue +20 -1
  102. package/components/ModalWithCard.vue +12 -3
  103. package/components/PodSecurityAdmission.vue +2 -2
  104. package/components/PromptModal.vue +1 -1
  105. package/components/PromptRemove.vue +53 -12
  106. package/components/RelatedResources.vue +3 -0
  107. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  108. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  109. package/components/Resource/Detail/Metadata/index.vue +3 -1
  110. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  111. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  112. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  113. package/components/Resource/Detail/TitleBar/index.vue +125 -27
  114. package/components/ResourceDetail/Masthead/index.vue +1 -1
  115. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  116. package/components/ResourceDetail/Masthead/legacy.vue +183 -39
  117. package/components/ResourceDetail/legacy.vue +47 -29
  118. package/components/ResourceList/Masthead.vue +222 -54
  119. package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
  120. package/components/ResourceTable.vue +40 -2
  121. package/components/SideNav.vue +74 -20
  122. package/components/SingleClusterInfo.vue +2 -1
  123. package/components/SortableTable/THead.vue +79 -4
  124. package/components/SortableTable/index.vue +1053 -464
  125. package/components/SortableTable/paging.js +26 -16
  126. package/components/SortableTable/selection.js +2 -2
  127. package/components/Tabbed/Tab.vue +3 -3
  128. package/components/Tabbed/index.vue +53 -30
  129. package/components/YamlEditor.vue +0 -1
  130. package/components/auth/Principal.vue +51 -19
  131. package/components/auth/RoleDetailEdit.vue +69 -14
  132. package/components/auth/SelectPrincipal.vue +1 -0
  133. package/components/breadcrumb/index.vue +119 -0
  134. package/components/form/ArrayList.vue +177 -152
  135. package/components/form/ArrayListGrouped.vue +13 -3
  136. package/components/form/ArrayListSelect.vue +1 -1
  137. package/components/form/BannerSettings.vue +64 -59
  138. package/components/form/ChangePassword.vue +5 -5
  139. package/components/form/ClusterAppearance.vue +4 -3
  140. package/components/form/ColorInput.vue +32 -8
  141. package/components/form/Command.vue +4 -5
  142. package/components/form/Conditions.vue +15 -1
  143. package/components/form/Footer.vue +12 -8
  144. package/components/form/HealthCheck.vue +0 -2
  145. package/components/form/HookOption.vue +87 -58
  146. package/components/form/InputWithSelect.vue +8 -4
  147. package/components/form/KeyValue.vue +66 -8
  148. package/components/form/LabeledSelect.vue +216 -242
  149. package/components/form/Labels.vue +4 -4
  150. package/components/form/MatchExpressions.vue +28 -11
  151. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  152. package/components/form/Members/ClusterPermissionsEditor.vue +61 -43
  153. package/components/form/Members/MembershipEditor.vue +4 -4
  154. package/components/form/Members/ProjectMembershipEditor.vue +1 -1
  155. package/components/form/NameNsDescription.vue +62 -22
  156. package/components/form/Networking.vue +6 -9
  157. package/components/form/NodeAffinity.vue +29 -28
  158. package/components/form/Password.vue +16 -7
  159. package/components/form/PodAffinity.vue +24 -25
  160. package/components/form/Probe.vue +15 -11
  161. package/components/form/ProjectMemberEditor.vue +66 -48
  162. package/components/form/ResourceQuota/Namespace.vue +4 -4
  163. package/components/form/ResourceQuota/NamespaceRow.vue +26 -23
  164. package/components/form/ResourceQuota/Project.vue +4 -4
  165. package/components/form/ResourceQuota/ProjectRow.vue +38 -35
  166. package/components/form/ResourceSelector.vue +1 -1
  167. package/components/form/SecretSelector.vue +24 -23
  168. package/components/form/Security.vue +1 -3
  169. package/components/form/Select.vue +12 -3
  170. package/components/form/ServiceNameSelect.vue +2 -5
  171. package/components/form/ServicePorts.vue +149 -75
  172. package/components/form/SimpleSecretSelector.vue +29 -9
  173. package/components/form/Taints.vue +2 -1
  174. package/components/form/Tolerations.vue +13 -9
  175. package/components/form/UnitInput.vue +8 -3
  176. package/components/form/ValueFromResource.vue +110 -96
  177. package/components/form/WorkloadPorts.vue +143 -123
  178. package/components/formatter/BadgeStateFormatter.vue +8 -5
  179. package/components/formatter/LiveDate.vue +3 -3
  180. package/components/formatter/WorkloadHealthScale.vue +4 -3
  181. package/components/nav/Favorite.vue +5 -1
  182. package/components/nav/Group.vue +139 -99
  183. package/components/nav/Header.vue +138 -164
  184. package/components/nav/HeaderPageActionMenu.vue +1 -0
  185. package/components/nav/NamespaceFilter.vue +34 -36
  186. package/components/nav/TopLevelMenu.vue +62 -25
  187. package/components/nav/Type.vue +73 -43
  188. package/composables/useClickOutside.ts +1 -1
  189. package/config/menuRouteMap.js +10 -0
  190. package/config/private-label.js +14 -11
  191. package/config/product/auth.js +17 -7
  192. package/config/product/explorer.js +32 -10
  193. package/config/product/manager.js +28 -17
  194. package/config/product/settings.js +19 -9
  195. package/config/product/uiplugins.js +13 -10
  196. package/config/router/navigation-guards/index.js +61 -3
  197. package/config/settings.ts +28 -0
  198. package/config/table-headers.js +3 -2
  199. package/detail/node.vue +28 -23
  200. package/dialog/AddCustomBadgeDialog.vue +17 -9
  201. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  202. package/dialog/RollbackWorkloadDialog.vue +1 -1
  203. package/dialog/ScalePoolDownDialog.vue +2 -2
  204. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  205. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  206. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  207. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  208. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  209. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  210. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  211. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  212. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  213. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  214. package/edit/configmap.vue +4 -0
  215. package/edit/logging-flow/index.vue +1 -2
  216. package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +3 -3
  217. package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
  218. package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
  219. package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
  220. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
  221. package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
  222. package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
  223. package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
  224. package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
  225. package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
  226. package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
  227. package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
  228. package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
  229. package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
  230. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
  231. package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
  232. package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
  233. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
  234. package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
  235. package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
  236. package/edit/management.cattle.io.user.vue +17 -4
  237. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  238. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +50 -26
  239. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
  240. package/edit/monitoring.coreos.com.alertmanagerconfig/types/dingding.vue +32 -0
  241. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  242. package/edit/monitoring.coreos.com.alertmanagerconfig/types/message.vue +52 -0
  243. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  244. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  245. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  246. package/edit/monitoring.coreos.com.alertmanagerconfig/types/snmp.vue +45 -0
  247. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  248. package/edit/monitoring.coreos.com.alertmanagerconfig/types/work.vue +31 -0
  249. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  250. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  251. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  252. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  253. package/edit/namespace.vue +1 -2
  254. package/edit/networking.k8s.io.ingress/Certificate.vue +14 -5
  255. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  256. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  257. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  258. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  259. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  260. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  261. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  262. package/edit/persistentvolume/index.vue +3 -1
  263. package/edit/persistentvolumeclaim.vue +2 -0
  264. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +1 -1
  265. package/edit/secret/index.vue +2 -2
  266. package/edit/service.vue +4 -1
  267. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  268. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  269. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  270. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  271. package/edit/token.vue +31 -12
  272. package/edit/workload/Job.vue +31 -34
  273. package/edit/workload/Upgrading.vue +5 -5
  274. package/edit/workload/index.vue +22 -18
  275. package/edit/workload/storage/Mount.vue +1 -0
  276. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  277. package/edit/workload/storage/azureDisk.vue +14 -10
  278. package/edit/workload/storage/azureFile.vue +9 -7
  279. package/edit/workload/storage/csi/index.vue +6 -9
  280. package/edit/workload/storage/emptyDir.vue +7 -5
  281. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  282. package/edit/workload/storage/hostPath.vue +7 -5
  283. package/edit/workload/storage/nfs.vue +8 -6
  284. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  285. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  286. package/edit/workload/storage/secret.vue +9 -6
  287. package/edit/workload/storage/vsphereVolume.vue +11 -7
  288. package/initialize/app-extended.js +7 -1
  289. package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
  290. package/list/management.cattle.io.setting.vue +22 -13
  291. package/list/management.cattle.io.user.vue +7 -3
  292. package/list/namespace.vue +3 -0
  293. package/list/provisioning.cattle.io.cluster.vue +6 -7
  294. package/mixins/brand.js +17 -0
  295. package/mixins/create-edit-view/impl.js +10 -0
  296. package/models/provisioning.cattle.io.cluster.js +19 -18
  297. package/models/workload.js +2 -2
  298. package/package.json +1 -1
  299. package/pages/account/index.vue +93 -58
  300. package/pages/account/pri.vue +229 -0
  301. package/pages/auth/login.vue +216 -51
  302. package/pages/auth/setup.vue +175 -33
  303. package/pages/c/_cluster/_product/namespaces.vue +5 -5
  304. package/pages/c/_cluster/auth/roles/index.vue +83 -8
  305. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  306. package/pages/c/_cluster/explorer/index.vue +2 -1
  307. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  308. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  309. package/pages/c/_cluster/settings/banners.vue +174 -102
  310. package/pages/c/_cluster/settings/brand.vue +350 -302
  311. package/pages/c/_cluster/settings/performance.vue +61 -38
  312. package/pages/home.vue +119 -37
  313. package/pages/prefs.vue +27 -25
  314. package/pkg/tsconfig.json +9 -9
  315. package/pkg/vue.config.js +1 -1
  316. package/plugins/dashboard-store/actions.js +1 -1
  317. package/plugins/dashboard-store/resource-class.js +28 -27
  318. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  319. package/public/index.html +4 -4
  320. package/rancher-components/BadgeState/BadgeState.vue +38 -55
  321. package/rancher-components/Banner/Banner.vue +25 -9
  322. package/rancher-components/Card/Card.vue +7 -8
  323. package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
  324. package/rancher-components/Form/LabeledInput/LabeledInput.vue +42 -3
  325. package/rancher-components/Form/Radio/RadioButton.vue +35 -11
  326. package/rancher-components/Form/Radio/RadioGroup.vue +22 -6
  327. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  328. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +1 -0
  329. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +41 -4
  330. package/rancher-components/RcDropdown/RcDropdown.vue +35 -7
  331. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  332. package/rancher-components/RcDropdown/RcDropdownMenu.vue +12 -6
  333. package/rancher-components/RcDropdown/types.ts +1 -0
  334. package/rancher-components/StringList/StringList.vue +1 -1
  335. package/scripts/build-pkg.sh +18 -23
  336. package/scripts/publish-shell.sh +1 -1
  337. package/static/favicon.ico +0 -0
  338. package/static/favicon.png +0 -0
  339. package/static/loading-indicator.html +3 -3
  340. package/store/i18n.js +6 -2
  341. package/store/modal.ts +3 -3
  342. package/store/prefs.js +11 -4
  343. package/store/type-map.js +30 -2
  344. package/types/shell/index.d.ts +86 -97
  345. package/utils/error.js +109 -8
  346. package/utils/errorTranslate.json +1740 -0
  347. package/utils/errorTranslateNew.json +39 -0
  348. package/utils/roleFiltering.js +33 -0
  349. package/utils/router.js +21 -0
  350. package/utils/select.js +26 -3
  351. package/utils/string.js +8 -5
  352. package/utils/title.ts +1 -1
  353. package/vue.config.js +1 -1
@@ -143,30 +143,46 @@ export default {
143
143
  return [this.permissionGroup];
144
144
  },
145
145
  options() {
146
+
146
147
  const customRoles = this.customRoles.map((role) => ({
147
148
  label: role.nameDisplay,
148
149
  description: role.description || role.metadata?.annotations?.[DESCRIPTION] || this.t('members.clusterPermissions.noDescription'),
149
150
  value: role.id
150
151
  }));
151
152
 
152
- return [
153
- {
154
- label: this.t('members.clusterPermissions.owner.label'),
155
- description: this.t('members.clusterPermissions.owner.description'),
156
- value: 'owner'
157
- },
158
- {
159
- label: this.t('members.clusterPermissions.member.label'),
160
- description: this.t('members.clusterPermissions.member.description'),
161
- value: 'member'
162
- },
163
- ...customRoles,
164
- {
165
- label: this.t('members.clusterPermissions.custom.label'),
166
- description: this.t('members.clusterPermissions.custom.description'),
167
- value: 'custom'
168
- }
169
- ];
153
+ let optionList = [{
154
+ label: this.t('members.clusterPermissions.cluster-tenant.label'),
155
+ description: this.t('members.clusterPermissions.cluster-tenant.description'),
156
+ value: 'cluster-tenant'
157
+ }];
158
+
159
+ if (sessionStorage.getItem('TOPLEVELPERMISSIONS') === 'superadmin') {
160
+ optionList = [
161
+ {
162
+ label: this.t('members.clusterPermissions.cluster-tenant.label'),
163
+ description: this.t('members.clusterPermissions.cluster-tenant.description'),
164
+ value: 'cluster-tenant'
165
+ },
166
+ {
167
+ label: this.t('members.clusterPermissions.owner.label'),
168
+ description: this.t('members.clusterPermissions.owner.description'),
169
+ value: 'owner'
170
+ },
171
+ {
172
+ label: this.t('members.clusterPermissions.member.label'),
173
+ description: this.t('members.clusterPermissions.member.description'),
174
+ value: 'member'
175
+ },
176
+ ...customRoles,
177
+ {
178
+ label: this.t('members.clusterPermissions.custom.label'),
179
+ description: this.t('members.clusterPermissions.custom.description'),
180
+ value: 'custom'
181
+ }
182
+ ];
183
+ }
184
+
185
+ return optionList
170
186
  },
171
187
  principal() {
172
188
  const principalId = this.principalId.replace(/\//g, '%2F');
@@ -232,11 +248,10 @@ export default {
232
248
  v-else
233
249
  class="cluster-permissions-editor"
234
250
  >
235
- <div class="row mt-10">
251
+ <div class="row mt-10 mb-20">
236
252
  <div class="col span-12">
237
253
  <SelectPrincipal
238
254
  v-focus
239
- class="mb-20"
240
255
  :mode="mode"
241
256
  :retain-selection="true"
242
257
  data-testid="cluster-member-select"
@@ -259,31 +274,34 @@ export default {
259
274
  </div>
260
275
  </template>
261
276
  <template v-slot:body>
262
- <RadioGroup
263
- v-model:value="permissionGroup"
264
- :options="options"
265
- name="permission-group"
266
- />
267
- <div
268
- v-if="permissionGroup === 'custom'"
269
- class="custom-permissions ml-20 mt-10"
270
- :class="{'two-column': useTwoColumnsForCustom}"
271
- >
277
+ <div style="max-height: 250px; overflow: auto;">
278
+ <RadioGroup
279
+ v-model:value="permissionGroup"
280
+ :options="options"
281
+ :flexDirection="'column'"
282
+ name="permission-group"
283
+ />
272
284
  <div
273
- v-for="(permission, i) in customPermissionsUpdate"
274
- :key="i"
285
+ v-if="permissionGroup === 'custom'"
286
+ class="custom-permissions ml-20 mt-10"
287
+ :class="{'two-column': useTwoColumnsForCustom}"
275
288
  >
276
- <Checkbox
277
- v-model:value="permission.value"
278
- :disabled="permission.locked"
279
- class="mb-5"
280
- :label="permission.label"
281
- />
282
- <i
283
- v-if="permission.locked"
284
- v-clean-tooltip="permission.tooltip"
285
- class="icon icon-lock icon-fw"
286
- />
289
+ <div
290
+ v-for="(permission, i) in customPermissionsUpdate"
291
+ :key="i"
292
+ >
293
+ <Checkbox
294
+ v-model:value="permission.value"
295
+ :disabled="permission.locked"
296
+ class="mb-5"
297
+ :label="permission.label"
298
+ />
299
+ <i
300
+ v-if="permission.locked"
301
+ v-clean-tooltip="permission.tooltip"
302
+ class="icon icon-lock icon-fw"
303
+ />
304
+ </div>
287
305
  </div>
288
306
  </div>
289
307
  </template>
@@ -170,7 +170,7 @@ export default {
170
170
  >
171
171
  <template #column-headers>
172
172
  <div class="box mb-0">
173
- <div class="column-headers row">
173
+ <div class="column-headers row" :style="{ width: isView ? '100%' : 'calc(100% - 100px)'}">
174
174
  <div class="col span-6">
175
175
  <label class="text-label">{{ t('membershipEditor.user') }}</label>
176
176
  </div>
@@ -181,7 +181,7 @@ export default {
181
181
  </div>
182
182
  </template>
183
183
  <template #columns="{row, i}">
184
- <div class="columns row">
184
+ <div style="width: 100%;" class="columns row">
185
185
  <div class="col span-6">
186
186
  <Principal
187
187
  :value="row.value.principalId"
@@ -191,7 +191,7 @@ export default {
191
191
  :data-testid="`role-item-${i}`"
192
192
  class="col span-6 role"
193
193
  >
194
- {{ row.value.roleDisplay }}
194
+ {{ $store.getters['i18n/withFallback'](`customConversion.${row.value.roleDisplay}`, row.value.roleDisplay) }}
195
195
  </div>
196
196
  </div>
197
197
  </template>
@@ -206,7 +206,7 @@ export default {
206
206
  </button>
207
207
  </template>
208
208
  <template #remove-button="{remove, i}">
209
- <span v-if="(isCreate && i === 0) || isView" />
209
+ <div style="width: 100px;" v-if="(isCreate && i === 0) || isView" />
210
210
  <button
211
211
  v-else
212
212
  type="button"
@@ -58,6 +58,6 @@ export default {
58
58
  :type="NORMAN.PROJECT_ROLE_TEMPLATE_BINDING"
59
59
  :mode="mode"
60
60
  parent-key="projectId"
61
- :parent-id="parentId"
61
+ :parent-id="parentId"
62
62
  />
63
63
  </template>
@@ -156,6 +156,10 @@ export default {
156
156
  type: Boolean,
157
157
  default: true,
158
158
  },
159
+ isDialog: {
160
+ type: Boolean,
161
+ default: false
162
+ },
159
163
  rules: {
160
164
  default: () => ({
161
165
  namespace: [],
@@ -172,7 +176,7 @@ export default {
172
176
  componentTestid: {
173
177
  type: String,
174
178
  default: 'name-ns-description'
175
- }
179
+ },
176
180
  },
177
181
 
178
182
  data() {
@@ -252,7 +256,7 @@ export default {
252
256
  const options = namespaces
253
257
  .map((namespace) => ({ nameDisplay: namespace, id: namespace }))
254
258
  .map(props.namespaceMapper || ((obj) => ({
255
- label: obj.nameDisplay,
259
+ label: obj.nameDisplay.replace('harvester', 'cloud'),
256
260
  value: obj.id,
257
261
  })));
258
262
 
@@ -276,10 +280,10 @@ export default {
276
280
  kind: 'divider'
277
281
  };
278
282
 
279
- const createOverhead = canCreateNamespace.value || props.createNamespaceOverride ? [createButton, divider] : [];
283
+ // const createOverhead = canCreateNamespace.value || props.createNamespaceOverride ? [createButton, divider] : [];
280
284
 
281
285
  return [
282
- ...createOverhead,
286
+ // ...createOverhead,
283
287
  ...sortedByLabel
284
288
  ];
285
289
  });
@@ -356,10 +360,11 @@ export default {
356
360
 
357
361
  colSpan() {
358
362
  if (!this.horizontal) {
359
- return `span-8`;
363
+ return `span-6`;
360
364
  }
361
365
  // Name and namespace take up two columns.
362
- let cols = (this.nameNsHidden ? 0 : 2) + (this.descriptionHidden ? 0 : 1) + this.extraColumns.length;
366
+ // let cols = (this.nameNsHidden ? 0 : 2) + (this.descriptionHidden ? 0 : 1) + this.extraColumns.length;
367
+ let cols = 2;
363
368
 
364
369
  cols = Math.max(2, cols); // If there's only one column, make it render half-width as if there were two
365
370
  const span = 12 / cols; // If there's 5, 7, or more columns this will break; don't do that.
@@ -428,13 +433,18 @@ export default {
428
433
  </script>
429
434
 
430
435
  <template>
431
- <div class="row mb-20">
432
- <slot name="project-selector" />
436
+ <div class="row">
437
+
438
+ <!-- 命名空间创建输入框 -->
433
439
  <div
434
440
  v-if="namespaced && !nameNsHidden && createNamespace"
435
441
  :data-testid="componentTestid + '-namespace-create'"
436
- class="col span-3"
442
+ class="col span-6"
443
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
444
+ style="display: flex;"
437
445
  >
446
+
447
+ <!-- 输入命名空间名称 -->
438
448
  <LabeledInput
439
449
  ref="namespaceInput"
440
450
  v-model:value="namespace"
@@ -446,6 +456,8 @@ export default {
446
456
  :required="nameRequired"
447
457
  :rules="rules.namespace"
448
458
  />
459
+
460
+ <!-- 取消创建命名空间按钮 -->
449
461
  <button
450
462
  :aria-label="t('namespace.cancelCreateAriaLabel')"
451
463
  @click="cancelCreateNamespace"
@@ -456,10 +468,12 @@ export default {
456
468
  />
457
469
  </button>
458
470
  </div>
471
+
472
+ <!-- 命名空间选择下拉框 -->
459
473
  <div
460
474
  v-if="namespaced && !nameNsHidden && !createNamespace"
461
475
  :data-testid="componentTestid + '-namespace'"
462
- class="col span-3"
476
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
463
477
  >
464
478
  <LabeledSelect
465
479
  v-show="!createNamespace"
@@ -478,10 +492,11 @@ export default {
478
492
  />
479
493
  </div>
480
494
 
495
+ <!-- 名称输入框 -->
481
496
  <div
482
497
  v-if="!nameHidden && !nameNsHidden"
483
498
  :data-testid="componentTestid + '-name'"
484
- class="col span-3"
499
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
485
500
  >
486
501
  <LabeledInput
487
502
  ref="nameInput"
@@ -498,11 +513,29 @@ export default {
498
513
  />
499
514
  </div>
500
515
 
516
+ <!-- 自定义插槽,可插入额外内容 -->
501
517
  <slot name="customize" />
502
- <div
518
+
519
+ <!-- <div
503
520
  v-show="!descriptionHidden"
504
521
  :data-testid="componentTestid + '-description'"
505
522
  :class="['col', extraColumns.length > 0 ? 'span-3' : 'span-6']"
523
+ > -->
524
+
525
+ <!-- 额外的动态列 -->
526
+ <div
527
+ v-for="(slot, i) in extraColumns"
528
+ :key="i"
529
+ :class="{ col: true, [colSpan]: true }"
530
+ >
531
+ <slot :name="slot" />
532
+ </div>
533
+
534
+ <!-- 描述输入框 -->
535
+ <div
536
+ v-show="!descriptionHidden"
537
+ :data-testid="componentTestid + '-description'"
538
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
506
539
  >
507
540
  <LabeledInput
508
541
  key="description"
@@ -516,13 +549,15 @@ export default {
516
549
  />
517
550
  </div>
518
551
 
552
+ <!-- 底部插槽 -->
519
553
  <div
520
- v-for="(slot, i) in extraColumns"
521
- :key="i"
522
- :class="{ col: true, [colSpan]: true }"
554
+ v-if="$slots.bottom"
555
+ style="width: 100%;"
523
556
  >
524
- <slot :name="slot" />
557
+ <slot name="bottom" />
525
558
  </div>
559
+
560
+ <!-- 间隔占位符 -->
526
561
  <div
527
562
  v-if="showSpacer"
528
563
  class="spacer"
@@ -533,13 +568,8 @@ export default {
533
568
  <style lang="scss" scoped>
534
569
  button {
535
570
  all: unset;
536
- height: 0;
537
- position: relative;
538
- top: -35px;
539
- float: right;
540
- margin-right: 7px;
541
-
542
571
  cursor: pointer;
572
+ margin-left: 10px;
543
573
 
544
574
  .align-value {
545
575
  padding-top: 7px;
@@ -576,4 +606,14 @@ button {
576
606
  }
577
607
 
578
608
  }
609
+ .namespace-item-row{
610
+ width: 100%;
611
+ margin-bottom: 4px;
612
+ position:relative;
613
+ display: flex;
614
+ }
615
+ .namespace-item-row ::v-deep textarea{
616
+ width: 400px;
617
+ }
618
+
579
619
  </style>
@@ -160,7 +160,7 @@ export default {
160
160
  <div>
161
161
  <div>
162
162
  <h3>{{ t('workload.container.titles.networkSettings') }}</h3>
163
- <div class="row mb-20">
163
+ <div class="row">
164
164
  <div class="col span-6">
165
165
  <LabeledSelect
166
166
  v-model:value="networkMode"
@@ -205,12 +205,11 @@ export default {
205
205
  </div>
206
206
  </div>
207
207
  </div>
208
- <div class="spacer" />
209
208
 
210
- <div>
209
+ <div class="mt-20">
211
210
  <h3>{{ t('workload.networking.dns') }}</h3>
212
211
  <div class="row">
213
- <div class="col span-6">
212
+ <div class="span-6">
214
213
  <ArrayList
215
214
  key="dnsNameservers"
216
215
  v-model:value="nameservers"
@@ -222,7 +221,7 @@ export default {
222
221
  @update:value="update"
223
222
  />
224
223
  </div>
225
- <div class="col span-6">
224
+ <div class="span-6">
226
225
  <ArrayList
227
226
  key="dnsSearches"
228
227
  v-model:value="searches"
@@ -236,9 +235,8 @@ export default {
236
235
  </div>
237
236
  </div>
238
237
  </div>
239
- <div class="spacer" />
240
238
 
241
- <div class="mt-20">
239
+ <div>
242
240
  <div class="row">
243
241
  <KeyValue
244
242
  v-model:value="options"
@@ -254,9 +252,8 @@ export default {
254
252
  />
255
253
  </div>
256
254
  </div>
257
- <div class="spacer" />
258
255
 
259
- <div class="row mt-20">
256
+ <div class="row mt-40">
260
257
  <div class="col span-12">
261
258
  <KeyValue
262
259
  key="hostAliases"
@@ -210,33 +210,31 @@ export default {
210
210
  @remove="remove"
211
211
  >
212
212
  <template #default="props">
213
- <div class="row">
214
- <div class="col span-9">
215
- <LabeledSelect
216
- :options="affinityOptions"
217
- :value="priorityDisplay(props.row.value)"
218
- :label="t('workload.scheduling.affinity.priority')"
219
- :mode="mode"
220
- :data-testid="`node-affinity-priority-index${props.i}`"
221
- @update:value="(changePriority(props.row.value))"
222
- />
223
- </div>
224
- <div
225
- v-if="'weight' in props.row.value"
226
- class="col span-3"
227
- >
228
- <LabeledInput
229
- v-model:value.number="props.row.value.weight"
230
- :mode="mode"
231
- type="number"
232
- min="1"
233
- max="100"
234
- :label="t('workload.scheduling.affinity.weight.label')"
235
- :placeholder="t('workload.scheduling.affinity.weight.placeholder')"
236
- :data-testid="`node-affinity-weight-index${props.i}`"
237
- @update:value="update"
238
- />
239
- </div>
213
+ <div class="col">
214
+ <LabeledSelect
215
+ :options="affinityOptions"
216
+ :value="priorityDisplay(props.row.value)"
217
+ :label="t('workload.scheduling.affinity.priority')"
218
+ :mode="mode"
219
+ :data-testid="`node-affinity-priority-index${props.i}`"
220
+ @update:value="(changePriority(props.row.value))"
221
+ />
222
+ </div>
223
+ <div
224
+ v-if="'weight' in props.row.value"
225
+ class="col"
226
+ >
227
+ <LabeledInput
228
+ v-model:value.number="props.row.value.weight"
229
+ :mode="mode"
230
+ type="number"
231
+ min="1"
232
+ max="100"
233
+ :label="t('workload.scheduling.affinity.weight.label')"
234
+ :placeholder="t('workload.scheduling.affinity.weight.placeholder')"
235
+ :data-testid="`node-affinity-weight-index${props.i}`"
236
+ @update:value="update"
237
+ />
240
238
  </div>
241
239
  <MatchExpressions
242
240
  :value="matchingSelectorDisplay ? props.row.value : props.row.value.matchExpressions"
@@ -254,5 +252,8 @@ export default {
254
252
  </div>
255
253
  </template>
256
254
 
257
- <style>
255
+ <style lang="scss" scoped>
256
+ .weight_input{
257
+ margin-left: 10px;
258
+ }
258
259
  </style>
@@ -41,6 +41,10 @@ export default {
41
41
  mode: {
42
42
  type: String,
43
43
  default: _CREATE,
44
+ },
45
+ placeholder: {
46
+ type: String,
47
+ default: '',
44
48
  }
45
49
  },
46
50
  data() {
@@ -116,6 +120,7 @@ export default {
116
120
  :disabled="isRandom"
117
121
  :ignore-password-managers="ignorePasswordManagers"
118
122
  :mode="mode"
123
+ :placeholder="placeholder"
119
124
  @blur="$emit('blur', $event)"
120
125
  >
121
126
  <template #suffix>
@@ -148,12 +153,13 @@ export default {
148
153
  </LabeledInput>
149
154
  <div
150
155
  v-if="isRandom"
151
- class="mt-10 genPassword"
156
+ class="genPassword"
152
157
  >
153
158
  <a
154
159
  href="#"
155
160
  @click.prevent.stop="generatePassword"
156
- ><i class="icon icon-refresh" /> {{ t('changePassword.newGeneratedPassword') }}</a>
161
+ style="height: 32px;display: flex;align-items: center;"
162
+ ><i class="icon icon-refresh mr-5 pl-5" /> {{ t('changePassword.newGeneratedPassword') }}</a>
157
163
  </div>
158
164
  </div>
159
165
  </template>
@@ -161,20 +167,23 @@ export default {
161
167
  <style lang="scss" scoped>
162
168
  .password {
163
169
  display: flex;
164
- flex-direction: column;
170
+ /* flex-direction: column; */
165
171
 
166
172
  .labeled-input {
167
173
  .addon {
168
- display: flex;
174
+ position: absolute;
175
+ top: 6px;
176
+ right: 6px;
177
+ /* display: flex;
169
178
  align-items: center;
170
179
  justify-content: center;
171
180
  padding-left: 12px;
172
- min-width: 65px;
181
+ min-width: 65px; */
173
182
 
174
- .hide-show:focus-visible {
183
+ /* .hide-show:focus-visible {
175
184
  @include focus-outline;
176
185
  outline-offset: 4px;
177
- }
186
+ } */
178
187
  }
179
188
  }
180
189
  .genPassword {
@@ -364,36 +364,33 @@ export default {
364
364
  <div class="col span-12">
365
365
  <ArrayListGrouped
366
366
  v-model:value="allSelectorTerms"
367
- class="mt-20"
368
367
  :default-add-value="defaultAddValue"
369
368
  :mode="mode"
370
369
  :add-label="addLabel"
371
370
  @remove="remove"
372
371
  >
373
372
  <template #default="props">
374
- <div class="row mt-20 mb-20">
375
- <div class="col span-6">
376
- <LabeledSelect
377
- :mode="mode"
378
- :options="[t('workload.scheduling.affinity.affinityOption'),t('workload.scheduling.affinity.antiAffinityOption')]"
379
- :value="props.row.value._anti ?t('workload.scheduling.affinity.antiAffinityOption') :t('workload.scheduling.affinity.affinityOption') "
380
- :label="t('workload.scheduling.affinity.type')"
381
- :data-testid="`pod-affinity-type-index${props.i}`"
382
- @update:value="props.row.value._anti = !props.row.value._anti"
383
- />
384
- </div>
385
- <div class="col span-6">
386
- <LabeledSelect
387
- :mode="mode"
388
- :options="[t('workload.scheduling.affinity.preferred'),t('workload.scheduling.affinity.required')]"
389
- :value="priorityDisplay(props.row.value)"
390
- :label="t('workload.scheduling.affinity.priority')"
391
- :data-testid="`pod-affinity-priority-index${props.i}`"
392
- @update:value="changePriority(props.row.value, props.i)"
393
- />
394
- </div>
373
+ <div class="col">
374
+ <LabeledSelect
375
+ :mode="mode"
376
+ :options="[t('workload.scheduling.affinity.affinityOption'),t('workload.scheduling.affinity.antiAffinityOption')]"
377
+ :value="props.row.value._anti ?t('workload.scheduling.affinity.antiAffinityOption') :t('workload.scheduling.affinity.affinityOption') "
378
+ :label="t('workload.scheduling.affinity.type')"
379
+ :data-testid="`pod-affinity-type-index${props.i}`"
380
+ @update:value="props.row.value._anti = !props.row.value._anti"
381
+ />
395
382
  </div>
396
- <div class="row">
383
+ <div class="col">
384
+ <LabeledSelect
385
+ :mode="mode"
386
+ :options="[t('workload.scheduling.affinity.preferred'),t('workload.scheduling.affinity.required')]"
387
+ :value="priorityDisplay(props.row.value)"
388
+ :label="t('workload.scheduling.affinity.priority')"
389
+ :data-testid="`pod-affinity-priority-index${props.i}`"
390
+ @update:value="changePriority(props.row.value, props.i)"
391
+ />
392
+ </div>
393
+ <div class="row mb-20">
397
394
  <RadioGroup
398
395
  :options="namespaceSelectionOptions"
399
396
  :labels="namespaceSelectionLabels"
@@ -439,7 +436,7 @@ export default {
439
436
  @update:value="e=>updateLabelSelector(e, props)"
440
437
  />
441
438
  <div class="row mt-20">
442
- <div class="col span-9">
439
+ <div class="col">
443
440
  <LabeledSelect
444
441
  v-if="hasNodes"
445
442
  v-model:value="props.row.value.topologyKey"
@@ -467,9 +464,11 @@ export default {
467
464
  @update:value="update"
468
465
  />
469
466
  </div>
467
+ </div>
468
+ <div class="row">
470
469
  <div
471
470
  v-if="'weight' in props.row.value"
472
- class="col span-3"
471
+ class="col"
473
472
  >
474
473
  <LabeledInput
475
474
  v-model:value.number="props.row.value.weight"