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
@@ -30,21 +30,20 @@ import {
30
30
  } from '@shell/config/private-label';
31
31
  import loadPlugins from '@shell/plugins/plugin';
32
32
  import Loading from '@shell/components/Loading';
33
- import { getGlobalBannerFontSizes } from '@shell/utils/banners';
34
33
  import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
34
+ import TabTitle from '@shell/components/TabTitle.vue';
35
+ import { harvester2cloud } from '@shell/utils/router'
35
36
 
36
37
  export default {
37
38
  name: 'Login',
38
39
  components: {
39
- LabeledInput, AsyncButton, Checkbox, BrandImage, Banner, InfoBox, CopyCode, Password, LocaleSelector, Loading
40
+ LabeledInput, AsyncButton, Checkbox, BrandImage, Banner, InfoBox, CopyCode, Password, LocaleSelector, Loading, TabTitle
40
41
  },
41
42
 
42
43
  data() {
43
- const username = this.$cookies.get(USERNAME, { parseJSON: false }) || '';
44
-
45
44
  return {
46
- username,
47
- remember: !!username,
45
+ username: '',
46
+ remember: false,
48
47
  password: '',
49
48
 
50
49
  timedOut: this.$route.query[TIMED_OUT] === _FLAGGED,
@@ -60,7 +59,8 @@ export default {
60
59
  providerComponents: [],
61
60
  customLoginError: {},
62
61
  firstLogin: false,
63
- vendor: getVendor()
62
+ vendor: getVendor(),
63
+ imgLeft: require('~shell/assets/images/login-left.png')
64
64
  };
65
65
  },
66
66
 
@@ -79,7 +79,7 @@ export default {
79
79
  },
80
80
 
81
81
  isHarvester() {
82
- return this.isSingleProduct?.productName === HARVESTER;
82
+ return this.isSingleProduct?.productName === harvester2cloud(HARVESTER);
83
83
  },
84
84
 
85
85
  singleProvider() {
@@ -133,16 +133,14 @@ export default {
133
133
  hasLoginMessage() {
134
134
  return this.errorToDisplay || this.loggedOut || this.timedOut;
135
135
  },
136
-
137
- // Apply bottom margin so that the locale secletor control lifts up to avoid the footer fixed banner, if it is shown
138
- localeSelectorStyle() {
139
- const globalBannerSettings = getGlobalBannerFontSizes(this.$store);
140
-
141
- return { marginBottom: globalBannerSettings?.footerFont };
142
- }
143
136
  },
144
137
 
145
138
  async fetch() {
139
+ const username = this.$cookies.get(USERNAME, { parseJSON: false }) || '';
140
+
141
+ this.username = username;
142
+ this.remember = !!username;
143
+
146
144
  const { firstLoginSetting } = await this.loadInitialSettings();
147
145
  const { value } = await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.BANNERS });
148
146
  const drivers = await this.$store.dispatch('auth/getAuthProviders');
@@ -319,18 +317,32 @@ export default {
319
317
  v-if="$fetchState.pending"
320
318
  mode="relative"
321
319
  />
322
- <main
320
+ <div
323
321
  v-else
324
322
  class="main-layout login"
325
323
  >
324
+ <!-- <TabTitle
325
+ :show-child="false"
326
+ :breadcrumb="false"
327
+ >
328
+ {{ `${vendor} - ${t('login.login')}` }}
329
+ </TabTitle> -->
326
330
  <div class="row gutless mb-20">
327
- <div class="col span-6 p-20">
328
- <p class="text-center">
331
+ <!-- <img :src="imgLeft" alt="" class="col span-7"/> -->
332
+ <div class="col span-7 img-left"></div>
333
+ <div class="col span-5 p-20">
334
+ <!-- <p class="text-center">
329
335
  {{ t('login.howdy') }}
330
336
  </p>
331
337
  <h1 class="text-center login-welcome">
332
338
  {{ t('login.welcome', {vendor}) }}
333
- </h1>
339
+ </h1> -->
340
+ <div class="logo-login" :style="{ 'marginBottom': errorToDisplay? '0px': '30px'}">
341
+ <img
342
+ src="../../assets/images/login-logo.svg"
343
+ alt=""
344
+ />
345
+ </div>
334
346
  <div
335
347
  class="login-messages"
336
348
  data-testid="login__messages"
@@ -341,7 +353,7 @@ export default {
341
353
  :label="errorToDisplay"
342
354
  color="error"
343
355
  />
344
- <h4
356
+ <!-- <h4
345
357
  v-else-if="loggedOut"
346
358
  class="text-success text-center"
347
359
  >
@@ -352,7 +364,7 @@ export default {
352
364
  class="text-error text-center"
353
365
  >
354
366
  {{ t('login.loginAgain') }}
355
- </h4>
367
+ </h4> -->
356
368
  </div>
357
369
  <div
358
370
  v-if="firstLogin"
@@ -433,20 +445,33 @@ export default {
433
445
  :class="{'mt-30': !hasLoginMessage}"
434
446
  @submit.prevent
435
447
  >
436
- <div class="span-6 offset-3">
437
- <div class="mb-20">
448
+ <div class="login-form-display-label">
449
+ <div class="mb-20 login-input-all-svg">
450
+ <img
451
+ class="login-svg"
452
+ v-if="!firstLogin"
453
+ src="../../assets/images/login/user.svg"
454
+ alt=""
455
+ >
438
456
  <LabeledInput
439
457
  v-if="!firstLogin"
440
458
  ref="username"
459
+ :placeholder="'请输入用户名'"
441
460
  v-model:value.trim="username"
442
461
  data-testid="local-login-username"
443
462
  :label="t('login.username')"
444
463
  autocomplete="username"
445
464
  />
446
465
  </div>
447
- <div class="">
466
+ <div class="login-input-all-svg">
467
+ <img
468
+ class="login-svg"
469
+ src="../../assets/images/login/password.svg"
470
+ alt=""
471
+ >
448
472
  <Password
449
473
  ref="password"
474
+ :placeholder="'请输入密码'"
450
475
  v-model:value="password"
451
476
  data-testid="local-login-password"
452
477
  :label="t('login.password')"
@@ -454,8 +479,21 @@ export default {
454
479
  />
455
480
  </div>
456
481
  </div>
482
+ <div
483
+ v-if="!firstLogin"
484
+ class="mt-20 remeber-login"
485
+ >
486
+ <div class="checkbox-login">
487
+ <Checkbox
488
+ v-model:value="remember"
489
+ :label="t('login.remember.label')"
490
+ type="checkbox"
491
+ />
492
+ </div>
493
+ </div>
457
494
  <div class="mt-20">
458
495
  <div class="col span-12 text-center">
496
+
459
497
  <AsyncButton
460
498
  id="submit"
461
499
  data-testid="login-submit"
@@ -466,16 +504,7 @@ export default {
466
504
  :error-label="t('asyncButton.default.error')"
467
505
  @click="loginLocal"
468
506
  />
469
- <div
470
- v-if="!firstLogin"
471
- class="mt-20"
472
- >
473
- <Checkbox
474
- v-model:value="remember"
475
- :label="t('login.remember.label')"
476
- type="checkbox"
477
- />
478
- </div>
507
+
479
508
  </div>
480
509
  </div>
481
510
  </form>
@@ -509,23 +538,20 @@ export default {
509
538
  class="locale-selector"
510
539
  >
511
540
  <LocaleSelector
512
- :style="localeSelectorStyle"
513
541
  mode="login"
514
542
  />
515
543
  </div>
544
+ <div class="copyright">Copyright 2019-2025 HCI</div>
516
545
  </div>
517
- <BrandImage
518
- class="col span-6 landscape"
519
- data-testid="login-landscape__img"
520
- file-name="login-landscape.svg"
521
- />
522
546
  </div>
523
- </main>
547
+ </div>
524
548
  </template>
525
549
 
526
550
  <style lang="scss" scoped>
527
551
  .login {
528
552
  overflow: hidden;
553
+ padding: 0px 10%;
554
+ position: relative; // Used to keep the locale selector positioned correctly
529
555
 
530
556
  .row {
531
557
  align-items: center;
@@ -547,17 +573,20 @@ export default {
547
573
  align-items: center;
548
574
 
549
575
  .banner {
550
- margin: 5px;
576
+ /* margin: 5px; */
577
+
551
578
  }
552
579
  h4 {
553
580
  margin: 0;
554
581
  }
555
582
  &--hasContent {
556
- min-height: 70px;
583
+ /* min-height: 70px; */
584
+ /* margin-left: 20px; */
557
585
  }
558
586
 
559
587
  .text-error, .banner {
560
- max-width: 80%;
588
+ max-width: 400px;
589
+ justify-content: center;
561
590
  }
562
591
  }
563
592
 
@@ -583,9 +612,131 @@ export default {
583
612
  height: 100%;
584
613
  place-content: center;
585
614
  }
615
+ &>.span-5{
616
+ height: 53%;
617
+ background-color: rgba(68, 68, 68, 0.17);
618
+ position: relative;
619
+ }
586
620
  }
587
621
  .locale-selector {
588
622
  position: absolute;
589
623
  bottom: 30px;
590
624
  }
625
+
626
+ .login::before {
627
+ content: "";
628
+ position: absolute;
629
+ top: 0;
630
+ left: 0;
631
+ width: 100%;
632
+ height: 100%;
633
+ background-image:url('../../assets/images/login-bg.png');
634
+ background-size: cover;
635
+ background-position: 100%;
636
+ z-index: -2;
637
+ }
638
+ .img-left{
639
+ height: 53%;
640
+ position: relative;
641
+ }
642
+ .img-left::before{
643
+ content: "";
644
+ position: absolute;
645
+ top: 0;
646
+ left: 0;
647
+ width: 100%;
648
+ height: 100%;
649
+ background-image:url('../../assets/images/login-left.png');
650
+ background-size: cover;
651
+ background-position: 50%;
652
+ z-index: -1;
653
+ }
654
+
655
+
656
+
657
+ .login-form-display-label {
658
+ display: flex;
659
+ flex-direction: column;
660
+ align-items: center;
661
+ &:deep() label{
662
+ display: none;
663
+ width: 0px;
664
+ }
665
+ &:deep() .addon{
666
+ position: absolute;
667
+ top: 16px;
668
+ right: 24px;
669
+ }
670
+ }
671
+
672
+
673
+ .login-input-all {
674
+ &:deep() .labeled-input{
675
+ background-color: #fff;
676
+ }
677
+ }
678
+
679
+ .login-input-all-svg{
680
+ position: relative;
681
+ &:deep() INPUT{
682
+ height: 50px;
683
+ padding-left: 50px;
684
+ font-size: 14px;
685
+ background-color: #fff;
686
+ }
687
+ }
688
+ .login-svg{
689
+ position: absolute;
690
+ top: 12px;
691
+ left: 15px;
692
+ width: 24px;
693
+ z-index: 1;
694
+
695
+ }
696
+
697
+ .remeber-login{
698
+ display: flex;
699
+ justify-content: center
700
+
701
+ }
702
+ .checkbox-login{
703
+ width: 400px;
704
+ display: flex;
705
+ justify-content: flex-end;
706
+ }
707
+ .gutless {
708
+ &:deep() button{
709
+ width: 400px;
710
+ height: 50px !important;
711
+ border-radius: 4px;
712
+ font-size: 14px;
713
+ }
714
+ }
715
+ :deep() .checkbox-label{
716
+ color: #fff;
717
+ }
718
+ .copyright{
719
+ color: #fff;
720
+ /* font-size: 14px; */
721
+ line-height: 15px;
722
+ position: absolute;
723
+ left: 36%;
724
+ width: 100%;
725
+ bottom: 10px;
726
+ }
727
+ .logo-login{
728
+ display: flex;
729
+ justify-content: center;
730
+ margin-top: 30px;
731
+
732
+ }
733
+
734
+ @media only screen and (max-width: 1439px) {
735
+ .logo-login{
736
+ display: flex;
737
+ justify-content: center;
738
+ margin-top: 0px;
739
+
740
+ }
741
+ }
591
742
  </style>
@@ -28,7 +28,10 @@ export default {
28
28
  </script>
29
29
 
30
30
  <template>
31
- <main class="main-layout">
31
+ <main
32
+ class="main-layout"
33
+ :aria-label="t('layouts.logout')"
34
+ >
32
35
  <div>
33
36
  <h1 v-t="'logout.message'" />
34
37
  </div>
@@ -65,7 +65,7 @@ export default {
65
65
  v3User: null,
66
66
  serverUrl: null,
67
67
  mcmEnabled: null,
68
- eula: false,
68
+ eula: true,
69
69
  principals: null,
70
70
  errors: []
71
71
  };
@@ -148,7 +148,8 @@ export default {
148
148
  this['username'] = me?.loginName || 'admin';
149
149
  this['isFirstLogin'] = isFirstLogin;
150
150
  this['mustChangePassword'] = mustChangePassword;
151
- this['current'] = current;
151
+ // this['current'] = current;
152
+ this['current'] = 'admin';
152
153
  this['v3User'] = v3User;
153
154
  this['serverUrl'] = serverUrl;
154
155
  this['mcmEnabled'] = mcmEnabled;
@@ -157,6 +158,9 @@ export default {
157
158
 
158
159
  computed: {
159
160
  saveEnabled() {
161
+ // if ( this.isFirstLogin) {
162
+ // return false;
163
+ // }
160
164
  if ( !this.eula && this.isFirstLogin) {
161
165
  return false;
162
166
  }
@@ -273,27 +277,41 @@ export default {
273
277
  @submit.prevent
274
278
  >
275
279
  <div class="row">
276
- <div class="col span-6 form-col">
277
- <div>
278
- &nbsp;
279
- </div>
280
+ <!-- <BrandImage
281
+ class="col span-6 landscape"
282
+ file-name="login-landscape.svg"
283
+ /> -->
284
+ <div class="col span-7 img-left">
285
+
286
+ </div>
287
+ <div class="col span-5 p-20">
280
288
  <div>
281
- <h1 class="text-center">
289
+ <!-- <h1 class="text-center">
282
290
  {{ t('setup.welcome', {product}) }}
283
- </h1>
291
+ </h1> -->
284
292
 
285
293
  <template v-if="mustChangePassword">
286
294
  <p
287
295
  v-clean-html="t(isFirstLogin ? 'setup.setPassword' : 'setup.newUserSetPassword', { username }, true)"
288
- class="text-center mb-20 mt-20 setup-title"
296
+ class="mb-20 mt-20 setup-title"
289
297
  />
298
+ <!-- <Password
299
+ v-if="!haveCurrent"
300
+ v-model:value.trim="current"
301
+ autocomplete="current-password"
302
+ type="password"
303
+ :label="t('setup.currentPassword')"
304
+ class="mb-20 setup-password"
305
+ :required="true"
306
+ /> -->
290
307
  <Password
291
308
  v-if="!haveCurrent"
309
+ style="display: none;"
292
310
  v-model:value.trim="current"
293
311
  autocomplete="current-password"
294
312
  type="password"
295
313
  :label="t('setup.currentPassword')"
296
- class="mb-20"
314
+ class="mb-20 setup-password"
297
315
  :required="true"
298
316
  />
299
317
 
@@ -321,6 +339,7 @@ export default {
321
339
  :disabled="useRandom"
322
340
  data-testid="setup-password-random"
323
341
  label-key="setup.newPassword"
342
+ class="radom-password"
324
343
  >
325
344
  <template
326
345
  v-if="useRandom"
@@ -328,9 +347,10 @@ export default {
328
347
  >
329
348
  <div
330
349
  class="addon"
331
- style="padding: 0 0 0 12px;"
350
+ style="padding: 0 0 0 0px;"
332
351
  >
333
352
  <CopyToClipboard
353
+ :aria-label="t('setup.copyRandom')"
334
354
  :text="password"
335
355
  class="btn-sm"
336
356
  />
@@ -343,6 +363,7 @@ export default {
343
363
  v-model:value.trim="password"
344
364
  :label="t('setup.newPassword')"
345
365
  data-testid="setup-password"
366
+ class="setup-password"
346
367
  :required="true"
347
368
  />
348
369
  </div>
@@ -351,6 +372,7 @@ export default {
351
372
  v-model:value.trim="confirm"
352
373
  autocomplete="new-password"
353
374
  data-testid="setup-password-confirm"
375
+ class="setup-password"
354
376
  :label="t('setup.confirmPassword')"
355
377
  :required="true"
356
378
  />
@@ -361,6 +383,7 @@ export default {
361
383
  <hr
362
384
  v-if="mustChangePassword"
363
385
  class="mt-20 mb-20"
386
+ role="none"
364
387
  >
365
388
  <p>
366
389
  <t
@@ -393,7 +416,7 @@ export default {
393
416
  </div>
394
417
  </template>
395
418
 
396
- <div class="checkbox pt-10 eula">
419
+ <!-- <div class="checkbox pt-10 eula">
397
420
  <Checkbox
398
421
  id="checkbox-eula"
399
422
  v-model:value="eula"
@@ -407,7 +430,7 @@ export default {
407
430
  />
408
431
  </template>
409
432
  </Checkbox>
410
- </div>
433
+ </div> -->
411
434
  </template>
412
435
 
413
436
  <div
@@ -428,7 +451,7 @@ export default {
428
451
  <h4
429
452
  v-for="(err, i) in errors"
430
453
  :key="i"
431
- class="text-error text-center"
454
+ class="text-error "
432
455
  >
433
456
  {{ err }}
434
457
  </h4>
@@ -438,10 +461,7 @@ export default {
438
461
  &nbsp;
439
462
  </div>
440
463
  </div>
441
- <BrandImage
442
- class="col span-6 landscape"
443
- file-name="login-landscape.svg"
444
- />
464
+
445
465
  </div>
446
466
  </form>
447
467
  </template>
@@ -462,9 +482,23 @@ export default {
462
482
  }
463
483
  }
464
484
 
485
+ .setup::before {
486
+ content: "";
487
+ position: absolute;
488
+ top: 0;
489
+ left: 0;
490
+ width: 100%;
491
+ height: 100%;
492
+ background-image:url('../../assets/images/login-bg.png');
493
+ background-size: cover;
494
+ background-position: 100%;
495
+ z-index: -2;
496
+ }
497
+
465
498
  .setup {
466
499
  overflow: hidden;
467
-
500
+ height: 100%;
501
+ width: 100%;
468
502
  .row {
469
503
  & .checkbox {
470
504
  margin: auto
@@ -507,6 +541,8 @@ export default {
507
541
  :deep() code {
508
542
  font-size: 12px;
509
543
  padding: 0;
544
+ background-color: unset;
545
+ border: 0px;
510
546
  }
511
547
  }
512
548
 
@@ -518,4 +554,93 @@ export default {
518
554
  line-height: 20px;
519
555
  }
520
556
  }
557
+ .img-left{
558
+ height: 60%;
559
+ position: relative;
560
+ }
561
+ .img-left::before{
562
+ content: "";
563
+ position: absolute;
564
+ top: 0;
565
+ left: 0;
566
+ width: 100%;
567
+ height: 100%;
568
+ background-image:url('../../assets/images/login-left.png');
569
+ background-size: cover;
570
+ background-position: 50%;
571
+ z-index: -1;
572
+ }
573
+
574
+ .row {
575
+ display: flex;
576
+ flex-direction: column;
577
+ flex-wrap: wrap;
578
+ height: 100%;
579
+ justify-content: center;
580
+ align-items: center;
581
+ padding: 0 10%;
582
+ }
583
+ .span-5{
584
+ height: 60%;
585
+ background-color: rgba(68, 68, 68, 0.17);
586
+ position: relative;
587
+ margin-left: -10px;
588
+ width: 41.645%;
589
+ display: flex;
590
+ justify-content: center;
591
+ }
592
+
593
+ :deep() .label-input-all{
594
+ display: unset;
595
+ }
596
+ .addon{
597
+ &:deep() .role-primary{
598
+ border-radius: 0px;
599
+ }
600
+ }
601
+ :deep() .addon{
602
+ background-color: unset !important;
603
+ }
604
+
605
+ #submit{
606
+ position: absolute;
607
+ bottom: 20px;
608
+ left: 42%;
609
+ }
610
+
611
+ .setup-password{
612
+ :deep() .suffix{
613
+ position: relative;
614
+ INPUT{
615
+ background: #fff;
616
+ }
617
+ }
618
+ :deep() .addon{
619
+ position: absolute;
620
+ top: 6px;
621
+ left: 90%;
622
+ }
623
+ }
624
+
625
+ @media only screen and (max-width: 1439px) {
626
+ .span-5{
627
+ margin-left: 0px;
628
+ width: 48.645%;
629
+
630
+ }
631
+ .setup-password{
632
+ :deep() .suffix{
633
+ position: relative;
634
+ INPUT{
635
+ background: #fff;
636
+ }
637
+ }
638
+ :deep() .addon{
639
+ position: absolute;
640
+ top: 6px;
641
+ left: 84%;
642
+ }
643
+ }
644
+ }
645
+
521
646
  </style>