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
@@ -4,7 +4,8 @@ import PromptChangePassword from '@shell/components/PromptChangePassword';
4
4
  import { MANAGEMENT, NORMAN } from '@shell/config/types';
5
5
  import { SETTING } from '@shell/config/settings';
6
6
  import Loading from '@shell/components/Loading';
7
- import Principal from '@shell/components/auth/Principal';
7
+ // import Principal from '@shell/components/auth/Principal';
8
+ import Principal from './pri.vue';
8
9
  import BackRoute from '@shell/mixins/back-link';
9
10
  import { mapGetters } from 'vuex';
10
11
 
@@ -143,21 +144,37 @@ export default {
143
144
  <template>
144
145
  <Loading v-if="$fetchState.pending" />
145
146
  <div v-else>
146
- <BackLink :link="backLink" />
147
+ <!-- <BackLink :link="backLink" />
147
148
  <h1>
148
149
  <TabTitle breadcrumb="vendor-only">
149
150
  {{ t('accountAndKeys.title') }}
150
151
  </TabTitle>
151
- </h1>
152
+ </h1> -->
153
+ <div class="api-key-title mb-20">
154
+ {{ t('accountAndKeys.title') }}
155
+ </div>
152
156
 
153
- <h2 v-t="'accountAndKeys.account.title'" />
157
+ <!-- <h2 v-t="'accountAndKeys.account.title'" /> -->
154
158
  <div class="account">
159
+ <div class="account-title">
160
+ {{ t('accountAndKeys.account.title') }}
161
+ </div>
155
162
  <Principal
156
163
  :value="principal.id"
157
164
  :use-muted="false"
158
165
  :show-labels="true"
159
- />
160
- <div>
166
+ :isShowPass="true"
167
+ >
168
+ <template #edit>
169
+ <span
170
+ v-if="canChangePassword"
171
+ class="edit-pass-txt"
172
+ @click="$refs.promptChangePassword.show(true)"
173
+ >修改
174
+ </span>
175
+ </template>
176
+ </Principal>
177
+ <!-- <div>
161
178
  <button
162
179
  v-if="canChangePassword"
163
180
  role="button"
@@ -169,33 +186,33 @@ export default {
169
186
  >
170
187
  {{ t("accountAndKeys.account.change") }}
171
188
  </button>
172
- </div>
189
+ </div> -->
173
190
  </div>
174
191
  <PromptChangePassword ref="promptChangePassword" />
175
192
 
176
- <hr>
193
+ <!-- <hr role="none"> -->
194
+ <div
195
+ style=" border: 1px solid #d7d7d7;padding: 20px 20px 0px 20px;"
196
+ class="mt-20">
177
197
  <div class="keys-header">
178
198
  <div>
179
- <h2 v-t="'accountAndKeys.apiKeys.title'" />
199
+ <!-- <h2 v-t="'accountAndKeys.apiKeys.title'" /> -->
200
+ <div
201
+ v-t="'accountAndKeys.apiKeys.title'"
202
+ class="account-title mb-20"
203
+ />
180
204
  <div class="api-url">
181
205
  <span>{{ t("accountAndKeys.apiKeys.apiEndpoint") }}</span>
182
- <CopyToClipboardText :text="apiUrl" />
206
+ <CopyToClipboardText
207
+ :aria-label="t('accountAndKeys.apiKeys.copyApiEnpoint')"
208
+ :text="apiUrl"
209
+ />
183
210
  </div>
184
211
  </div>
185
- <button
186
- v-if="apiKeySchema"
187
- role="button"
188
- :aria-label="t('accountAndKeys.apiKeys.add.label')"
189
- class="btn role-primary add mb-20"
190
- data-testid="account_create_api_keys"
191
- @click="addKey"
192
- >
193
- {{ t('accountAndKeys.apiKeys.add.label') }}
194
- </button>
195
212
  </div>
196
213
  <div
197
214
  v-if="apiKeySchema"
198
- class="keys"
215
+ class="keys mb-20"
199
216
  >
200
217
  <ResourceTable
201
218
  :schema="apiKeySchema"
@@ -206,7 +223,20 @@ export default {
206
223
  :search="true"
207
224
  :row-actions="true"
208
225
  :table-actions="true"
209
- />
226
+ >
227
+ <template #header-right>
228
+ <button
229
+ v-if="apiKeySchema"
230
+ role="button"
231
+ :aria-label="t('accountAndKeys.apiKeys.add.label')"
232
+ class="btn role-primary add mb-20"
233
+ data-testid="account_create_api_keys"
234
+ @click="addKey"
235
+ >
236
+ {{ t('accountAndKeys.apiKeys.add.label') }}
237
+ </button>
238
+ </template>
239
+ </ResourceTable>
210
240
  </div>
211
241
  <div v-else>
212
242
  <Banner
@@ -215,6 +245,7 @@ export default {
215
245
  />
216
246
  </div>
217
247
  </div>
248
+ </div>
218
249
  </template>
219
250
 
220
251
  <style lang='scss' scoped>
@@ -223,8 +254,12 @@ export default {
223
254
  }
224
255
 
225
256
  .account {
226
- display: flex;
227
- justify-content: space-between
257
+ /* display: flex;
258
+ justify-content: space-between */
259
+ border: 1px solid #D7D7D7;
260
+ padding: 20px;
261
+ box-sizing: border-box;
262
+
228
263
  }
229
264
 
230
265
  .keys-header {
@@ -237,8 +272,10 @@ export default {
237
272
  .keys {
238
273
  display: flex;
239
274
  flex-direction: column;
275
+ margin-top: 20px;
240
276
  .add {
241
277
  align-self: flex-end;
278
+ margin-left: 10px
242
279
  }
243
280
  }
244
281
 
@@ -249,4 +286,23 @@ export default {
249
286
  margin-right: 6px;
250
287
  }
251
288
  }
289
+ .api-key-title{
290
+ font-size: 26px;
291
+ /* line-height: 20px; */
292
+ font-weight: 400;
293
+ }
294
+
295
+ .edit-pass-txt{
296
+ cursor: pointer;
297
+ color: var(--primary);
298
+ }
299
+
300
+ .table-account{
301
+ border: 1px solid #d7d7d7;
302
+ }
303
+ .account-title{
304
+ font-size: 14px;
305
+ line-height: 19px;
306
+ margin-bottom: 16px;
307
+ }
252
308
  </style>
@@ -0,0 +1,229 @@
1
+ <script>
2
+ import { NORMAN } from '@shell/config/types';
3
+
4
+ export default {
5
+ props: {
6
+ value: {
7
+ type: String,
8
+ required: true,
9
+ },
10
+
11
+ useMuted: {
12
+ type: Boolean,
13
+ default: true,
14
+ },
15
+
16
+ showLabels: {
17
+ type: Boolean,
18
+ default: false,
19
+ },
20
+ isShowPass: {
21
+ type: Boolean,
22
+ default: false,
23
+ }
24
+ },
25
+
26
+ async fetch() {
27
+ this.principal = this.$store.getters['rancher/byId'](NORMAN.PRINCIPAL, this.value);
28
+
29
+ if ( this.principal ) {
30
+ return;
31
+ }
32
+
33
+ const principalId = escape(this.value).replace(/\//g, '%2F');
34
+
35
+ try {
36
+ this.principal = await this.$store.dispatch('rancher/find', {
37
+ type: NORMAN.PRINCIPAL,
38
+ id: this.value,
39
+ opt: { url: `/v3/principals/${ principalId }` }
40
+ });
41
+ } catch (e) {
42
+ console.error('Failed to fetch principal', this.value, principalId); // eslint-disable-line no-console
43
+ }
44
+ },
45
+
46
+ data() {
47
+ // Load from cache immediately if possible
48
+ return { principal: null };
49
+ },
50
+
51
+ computed: {
52
+ showBoth() {
53
+ const p = this.principal;
54
+
55
+ return p.name && p.loginName && p.name.trim().toLowerCase() !== p.loginName.trim().toLowerCase();
56
+ }
57
+ },
58
+ };
59
+ </script>
60
+
61
+ <template>
62
+ <div
63
+ class="principal"
64
+ :class="{'showLabels': showLabels}"
65
+ >
66
+ <template v-if="!principal && $fetchState.pending">
67
+ <div class="avatar">
68
+ <div class="empty">
69
+ <i class="icon icon-spinner icon-lg" />
70
+ </div>
71
+ </div>
72
+ <div
73
+ v-clean-html="t('principal.loading', null, true)"
74
+ class="name"
75
+ :class="{'text-muted': useMuted}"
76
+ />
77
+ <div class="description" />
78
+ </template>
79
+
80
+ <template v-else-if="principal">
81
+ <div class="avatar">
82
+ <img
83
+ src="@shell/assets/images/user.png"
84
+ >
85
+ </div>
86
+ <div
87
+ v-if="showLabels"
88
+ class="name"
89
+ >
90
+ <table>
91
+ <tr class="mb-10">
92
+ <td>{{ t('principal.name') }}: </td><td>{{ principal.name || principal.loginName }}</td>
93
+ </tr>
94
+ <tr class="mb-10">
95
+ <td>{{ t('principal.loginName') }}: </td><td>{{ principal.loginName }}</td>
96
+ </tr>
97
+ <tr
98
+ v-if="isShowPass"
99
+ class="mb-10"
100
+ >
101
+ <td>修改密码: </td><td>****** <slot name="edit" /></td>
102
+ </tr>
103
+ <tr><td>{{ t('principal.type') }}: </td><td>{{ principal.displayType }}</td></tr>
104
+ </table>
105
+ </div>
106
+ <template v-else>
107
+ <div class="name">
108
+ <template v-if="showBoth">
109
+ {{ principal.name }}
110
+ <span
111
+ v-if="principal.loginName"
112
+ :class="{'text-muted': useMuted}"
113
+ >({{ principal.loginName }})</span>
114
+ </template>
115
+ <template v-else-if="principal.name">
116
+ {{ principal.name }}
117
+ </template>
118
+ <template v-else>
119
+ {{ principal.loginName }}
120
+ </template>
121
+ </div>
122
+ <div
123
+ class="description"
124
+ :class="{'text-muted': useMuted}"
125
+ >
126
+ {{ principal.displayType }}
127
+ </div>
128
+ </template>
129
+ </template>
130
+
131
+ <template v-else>
132
+ <div class="avatar">
133
+ <div
134
+ class="empty"
135
+ :class="{'text-muted': useMuted}"
136
+ >
137
+ <i class="icon icon-warning icon-lg" />
138
+ </div>
139
+ </div>
140
+ <div
141
+ v-t="'principal.error'"
142
+ class="name text-error"
143
+ />
144
+ <div
145
+ class="description"
146
+ :class="{'text-muted': useMuted}"
147
+ >
148
+ {{ value }}
149
+ </div>
150
+ </template>
151
+ </div>
152
+ </template>
153
+
154
+ <style lang="scss" scoped>
155
+ $size: 79px;
156
+
157
+ .principal {
158
+ display: grid;
159
+ grid-template-areas:
160
+ "avatar name"
161
+ "avatar description";
162
+ grid-template-columns: $size auto;
163
+ grid-template-rows: auto math.div($size, 2);
164
+ column-gap: 10px;
165
+
166
+ th {
167
+ text-align: left;
168
+ font-weight: normal;
169
+ padding-right: 10px;
170
+ }
171
+
172
+ &.showLabels {
173
+ /* grid-template-areas:
174
+ "avatar name";
175
+ grid-template-columns: 60px auto;
176
+ grid-template-rows: 60px;
177
+ column-gap: 0; */
178
+ display: flex;
179
+ column-gap:0;
180
+ .name {
181
+ display: flex;
182
+ line-height: unset;
183
+ }
184
+ table tr {
185
+ display: block;
186
+ }
187
+ table tr td:not(:first-of-type) {
188
+ padding-left: 10px;
189
+ }
190
+ table tr td:not(:last-of-type) {
191
+ width: 100px;
192
+ }
193
+ }
194
+
195
+ .avatar {
196
+ /* grid-area: avatar;
197
+ text-align: center; */
198
+ width: 287px;
199
+ display: flex;
200
+ justify-content: center;
201
+ align-items: center;
202
+
203
+ DIV.empty {
204
+ border: 1px solid var(--border);
205
+ line-height: $size;
206
+ }
207
+
208
+ IMG {
209
+ width: $size;
210
+ height: $size;
211
+ }
212
+
213
+ DIV.round, IMG.round {
214
+ border-radius: 50%;
215
+ }
216
+ }
217
+
218
+ .name {
219
+ grid-area: name;
220
+ line-height: math.div($size, 2);
221
+ overflow-wrap: anywhere;
222
+ }
223
+
224
+ .description {
225
+ grid-area: description;
226
+ line-height: math.div($size, 2);
227
+ }
228
+ }
229
+ </style>