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

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 (198) hide show
  1. package/assets/brand/harvester/favicon.png +0 -0
  2. package/assets/brand/suse/favicon.png +0 -0
  3. package/assets/images/pl/half-logo.svg +23 -2
  4. package/assets/images/pl/harvester.png +0 -0
  5. package/assets/styles/app.scss +0 -4
  6. package/assets/styles/base/_basic.scss +2 -2
  7. package/assets/styles/base/_mixins.scss +1 -1
  8. package/assets/styles/base/_typography.scss +1 -2
  9. package/assets/styles/base/_variables.scss +4 -11
  10. package/assets/styles/global/_button.scss +27 -45
  11. package/assets/styles/global/_columns.scss +1 -3
  12. package/assets/styles/global/_form.scss +13 -45
  13. package/assets/styles/global/_labeled-input.scss +26 -54
  14. package/assets/styles/global/_layout.scss +3 -8
  15. package/assets/styles/global/_select.scss +17 -25
  16. package/assets/styles/global/_table.scss +1 -7
  17. package/assets/styles/global/_tooltip.scss +6 -54
  18. package/assets/styles/themes/_dark.scss +0 -3
  19. package/assets/styles/themes/_light.scss +42 -63
  20. package/assets/styles/vendor/vue-select.scss +9 -22
  21. package/assets/translations/en-us.yaml +4 -28
  22. package/assets/translations/zh-hans.yaml +189 -376
  23. package/components/ActionDropdown.vue +1 -2
  24. package/components/ActionMenu.vue +2 -2
  25. package/components/ActionMenuShell.vue +0 -2
  26. package/components/AppModal.vue +5 -46
  27. package/components/BrandImage.vue +0 -1
  28. package/components/ButtonDropdown.vue +4 -26
  29. package/components/ButtonMultiAction.vue +0 -1
  30. package/components/ClusterIconMenu.vue +1 -1
  31. package/components/CodeMirror.vue +6 -20
  32. package/components/ConsumptionGauge.vue +5 -24
  33. package/components/CruResource.vue +8 -9
  34. package/components/CruResourceFooter.vue +2 -2
  35. package/components/DashboardOptions.vue +17 -29
  36. package/components/ExplorerProjectsNamespaces.vue +5 -19
  37. package/components/GlobalRoleBindings.vue +48 -112
  38. package/components/GrafanaDashboard.vue +4 -4
  39. package/components/GrowlManager.vue +1 -3
  40. package/components/HardwareResourceGauge.vue +3 -39
  41. package/components/IndentedPanel.vue +10 -4
  42. package/components/InfoBox.vue +3 -3
  43. package/components/InputOrDisplay.vue +2 -28
  44. package/components/LabelValue.vue +1 -20
  45. package/components/ModalWithCard.vue +3 -12
  46. package/components/PodSecurityAdmission.vue +1 -1
  47. package/components/PromptModal.vue +1 -1
  48. package/components/PromptRemove.vue +11 -30
  49. package/components/ResourceDetail/Masthead/legacy.vue +38 -181
  50. package/components/ResourceDetail/legacy.vue +13 -29
  51. package/components/ResourceList/Masthead.vue +54 -226
  52. package/components/ResourceList/ResourceLoadingIndicator.vue +2 -5
  53. package/components/ResourceTable.vue +2 -24
  54. package/components/SideNav.vue +20 -74
  55. package/components/SortableTable/THead.vue +3 -33
  56. package/components/SortableTable/index.vue +464 -1017
  57. package/components/SortableTable/paging.js +16 -26
  58. package/components/SortableTable/selection.js +2 -2
  59. package/components/Tabbed/Tab.vue +3 -3
  60. package/components/Tabbed/index.vue +29 -47
  61. package/components/YamlEditor.vue +1 -0
  62. package/components/auth/Principal.vue +12 -36
  63. package/components/auth/RoleDetailEdit.vue +7 -58
  64. package/components/auth/SelectPrincipal.vue +0 -1
  65. package/components/form/ArrayList.vue +33 -41
  66. package/components/form/ArrayListGrouped.vue +2 -10
  67. package/components/form/ArrayListSelect.vue +1 -1
  68. package/components/form/BannerSettings.vue +59 -64
  69. package/components/form/ChangePassword.vue +4 -4
  70. package/components/form/ColorInput.vue +8 -32
  71. package/components/form/Footer.vue +8 -11
  72. package/components/form/InputWithSelect.vue +5 -8
  73. package/components/form/KeyValue.vue +7 -47
  74. package/components/form/LabeledSelect.vue +241 -212
  75. package/components/form/Labels.vue +3 -3
  76. package/components/form/MatchExpressions.vue +7 -24
  77. package/components/form/Members/ClusterPermissionsEditor.vue +2 -1
  78. package/components/form/Members/MembershipEditor.vue +1 -1
  79. package/components/form/NameNsDescription.vue +20 -59
  80. package/components/form/Password.vue +7 -16
  81. package/components/form/PodAffinity.vue +5 -4
  82. package/components/form/ResourceQuota/Namespace.vue +4 -4
  83. package/components/form/ResourceQuota/NamespaceRow.vue +17 -18
  84. package/components/form/ResourceQuota/Project.vue +4 -4
  85. package/components/form/ResourceQuota/ProjectRow.vue +6 -3
  86. package/components/form/Select.vue +2 -5
  87. package/components/form/SimpleSecretSelector.vue +9 -29
  88. package/components/form/UnitInput.vue +3 -8
  89. package/components/formatter/BadgeStateFormatter.vue +5 -8
  90. package/components/formatter/LiveDate.vue +3 -3
  91. package/components/nav/Favorite.vue +1 -5
  92. package/components/nav/Group.vue +99 -132
  93. package/components/nav/Header.vue +27 -124
  94. package/components/nav/HeaderPageActionMenu.vue +0 -1
  95. package/components/nav/NamespaceFilter.vue +15 -19
  96. package/components/nav/TopLevelMenu.vue +119 -182
  97. package/components/nav/Type.vue +41 -63
  98. package/composables/useClickOutside.ts +1 -1
  99. package/config/private-label.js +11 -15
  100. package/config/product/auth.js +7 -17
  101. package/config/product/settings.js +9 -19
  102. package/config/settings.ts +0 -28
  103. package/config/table-headers.js +2 -3
  104. package/dialog/ForceMachineRemoveDialog.vue +2 -2
  105. package/dialog/ScalePoolDownDialog.vue +2 -2
  106. package/edit/management.cattle.io.user.vue +4 -17
  107. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
  108. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
  109. package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +12 -36
  110. package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
  111. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
  112. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
  113. package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
  114. package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
  115. package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
  116. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
  117. package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
  118. package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
  119. package/edit/namespace.vue +2 -1
  120. package/edit/token.vue +12 -31
  121. package/edit/workload/index.vue +1 -1
  122. package/list/management.cattle.io.setting.vue +13 -22
  123. package/list/management.cattle.io.user.vue +3 -7
  124. package/list/namespace.vue +0 -3
  125. package/list/provisioning.cattle.io.cluster.vue +7 -6
  126. package/mixins/brand.js +0 -17
  127. package/package.json +1 -1
  128. package/pages/account/index.vue +12 -74
  129. package/pages/auth/login.vue +51 -214
  130. package/pages/auth/setup.vue +19 -142
  131. package/pages/c/_cluster/_product/namespaces.vue +4 -4
  132. package/pages/c/_cluster/auth/roles/index.vue +1 -19
  133. package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
  134. package/pages/c/_cluster/settings/banners.vue +102 -174
  135. package/pages/c/_cluster/settings/brand.vue +302 -350
  136. package/pages/c/_cluster/settings/performance.vue +38 -61
  137. package/pages/home.vue +30 -70
  138. package/pages/prefs.vue +25 -27
  139. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  140. package/public/index.html +4 -4
  141. package/rancher-components/BadgeState/BadgeState.vue +4 -6
  142. package/rancher-components/Banner/Banner.vue +8 -12
  143. package/rancher-components/Card/Card.vue +8 -7
  144. package/rancher-components/Form/Checkbox/Checkbox.vue +0 -4
  145. package/rancher-components/Form/LabeledInput/LabeledInput.vue +3 -42
  146. package/rancher-components/Form/Radio/RadioButton.vue +11 -35
  147. package/rancher-components/Form/Radio/RadioGroup.vue +5 -13
  148. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +3 -3
  149. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +0 -1
  150. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +4 -12
  151. package/rancher-components/RcDropdown/RcDropdown.vue +7 -35
  152. package/rancher-components/RcDropdown/RcDropdownItem.vue +2 -2
  153. package/rancher-components/RcDropdown/RcDropdownMenu.vue +4 -9
  154. package/rancher-components/RcDropdown/types.ts +0 -1
  155. package/rancher-components/StringList/StringList.vue +1 -1
  156. package/static/favicon.ico +0 -0
  157. package/static/favicon.png +0 -0
  158. package/static/loading-indicator.html +3 -3
  159. package/store/i18n.js +2 -2
  160. package/store/modal.ts +3 -3
  161. package/store/prefs.js +4 -11
  162. package/store/type-map.js +2 -32
  163. package/types/shell/index.d.ts +67 -74
  164. package/utils/error.js +8 -87
  165. package/utils/router.js +0 -21
  166. package/utils/select.js +3 -26
  167. package/utils/string.js +5 -8
  168. package/utils/title.ts +1 -1
  169. package/assets/icons/demo.css +0 -539
  170. package/assets/icons/demo.css:Zone.Identifier +0 -0
  171. package/assets/icons/demo_index.html +0 -1131
  172. package/assets/icons/demo_index.html:Zone.Identifier +0 -0
  173. package/assets/icons/iconfont.css +0 -216
  174. package/assets/icons/iconfont.css:Zone.Identifier +0 -0
  175. package/assets/icons/iconfont.js +0 -1
  176. package/assets/icons/iconfont.js:Zone.Identifier +0 -0
  177. package/assets/icons/iconfont.json +0 -324
  178. package/assets/icons/iconfont.json:Zone.Identifier +0 -0
  179. package/assets/icons/iconfont.ttf +0 -0
  180. package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
  181. package/assets/icons/iconfont.woff +0 -0
  182. package/assets/icons/iconfont.woff2 +0 -0
  183. package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
  184. package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
  185. package/assets/images/API.svg +0 -3
  186. package/assets/images/action.svg +0 -6
  187. package/assets/images/login/password.svg +0 -20
  188. package/assets/images/login/user.svg +0 -6
  189. package/assets/images/login-bg.png +0 -0
  190. package/assets/images/login-left.png +0 -0
  191. package/assets/images/login-logo.svg +0 -19
  192. package/assets/images/logo.png +0 -0
  193. package/assets/images/pl/logo.png +0 -0
  194. package/assets/images/promp-yellow.svg +0 -5
  195. package/assets/images/user.png +0 -0
  196. package/assets/styles/all.scss +0 -63
  197. package/components/DotState.vue +0 -84
  198. package/utils/errorTranslate.json +0 -1336
@@ -65,7 +65,7 @@ export default {
65
65
  v3User: null,
66
66
  serverUrl: null,
67
67
  mcmEnabled: null,
68
- eula: true,
68
+ eula: false,
69
69
  principals: null,
70
70
  errors: []
71
71
  };
@@ -148,8 +148,7 @@ export default {
148
148
  this['username'] = me?.loginName || 'admin';
149
149
  this['isFirstLogin'] = isFirstLogin;
150
150
  this['mustChangePassword'] = mustChangePassword;
151
- // this['current'] = current;
152
- this['current'] = 'admin';
151
+ this['current'] = current;
153
152
  this['v3User'] = v3User;
154
153
  this['serverUrl'] = serverUrl;
155
154
  this['mcmEnabled'] = mcmEnabled;
@@ -158,9 +157,6 @@ export default {
158
157
 
159
158
  computed: {
160
159
  saveEnabled() {
161
- // if ( this.isFirstLogin) {
162
- // return false;
163
- // }
164
160
  if ( !this.eula && this.isFirstLogin) {
165
161
  return false;
166
162
  }
@@ -277,41 +273,27 @@ export default {
277
273
  @submit.prevent
278
274
  >
279
275
  <div class="row">
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">
276
+ <div class="col span-6 form-col">
277
+ <div>
278
+ &nbsp;
279
+ </div>
288
280
  <div>
289
- <!-- <h1 class="text-center">
281
+ <h1 class="text-center">
290
282
  {{ t('setup.welcome', {product}) }}
291
- </h1> -->
283
+ </h1>
292
284
 
293
285
  <template v-if="mustChangePassword">
294
286
  <p
295
287
  v-clean-html="t(isFirstLogin ? 'setup.setPassword' : 'setup.newUserSetPassword', { username }, true)"
296
- class="mb-20 mt-20 setup-title"
288
+ class="text-center mb-20 mt-20 setup-title"
297
289
  />
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
- /> -->
307
290
  <Password
308
291
  v-if="!haveCurrent"
309
- style="display: none;"
310
292
  v-model:value.trim="current"
311
293
  autocomplete="current-password"
312
294
  type="password"
313
295
  :label="t('setup.currentPassword')"
314
- class="mb-20 setup-password"
296
+ class="mb-20"
315
297
  :required="true"
316
298
  />
317
299
 
@@ -339,7 +321,6 @@ export default {
339
321
  :disabled="useRandom"
340
322
  data-testid="setup-password-random"
341
323
  label-key="setup.newPassword"
342
- class="radom-password"
343
324
  >
344
325
  <template
345
326
  v-if="useRandom"
@@ -347,7 +328,7 @@ export default {
347
328
  >
348
329
  <div
349
330
  class="addon"
350
- style="padding: 0 0 0 0px;"
331
+ style="padding: 0 0 0 12px;"
351
332
  >
352
333
  <CopyToClipboard
353
334
  :aria-label="t('setup.copyRandom')"
@@ -363,7 +344,6 @@ export default {
363
344
  v-model:value.trim="password"
364
345
  :label="t('setup.newPassword')"
365
346
  data-testid="setup-password"
366
- class="setup-password"
367
347
  :required="true"
368
348
  />
369
349
  </div>
@@ -372,7 +352,6 @@ export default {
372
352
  v-model:value.trim="confirm"
373
353
  autocomplete="new-password"
374
354
  data-testid="setup-password-confirm"
375
- class="setup-password"
376
355
  :label="t('setup.confirmPassword')"
377
356
  :required="true"
378
357
  />
@@ -416,7 +395,7 @@ export default {
416
395
  </div>
417
396
  </template>
418
397
 
419
- <!-- <div class="checkbox pt-10 eula">
398
+ <div class="checkbox pt-10 eula">
420
399
  <Checkbox
421
400
  id="checkbox-eula"
422
401
  v-model:value="eula"
@@ -430,7 +409,7 @@ export default {
430
409
  />
431
410
  </template>
432
411
  </Checkbox>
433
- </div> -->
412
+ </div>
434
413
  </template>
435
414
 
436
415
  <div
@@ -451,7 +430,7 @@ export default {
451
430
  <h4
452
431
  v-for="(err, i) in errors"
453
432
  :key="i"
454
- class="text-error "
433
+ class="text-error text-center"
455
434
  >
456
435
  {{ err }}
457
436
  </h4>
@@ -461,7 +440,10 @@ export default {
461
440
  &nbsp;
462
441
  </div>
463
442
  </div>
464
-
443
+ <BrandImage
444
+ class="col span-6 landscape"
445
+ file-name="login-landscape.svg"
446
+ />
465
447
  </div>
466
448
  </form>
467
449
  </template>
@@ -482,23 +464,9 @@ export default {
482
464
  }
483
465
  }
484
466
 
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
-
498
467
  .setup {
499
468
  overflow: hidden;
500
- height: 100%;
501
- width: 100%;
469
+
502
470
  .row {
503
471
  & .checkbox {
504
472
  margin: auto
@@ -541,8 +509,6 @@ export default {
541
509
  :deep() code {
542
510
  font-size: 12px;
543
511
  padding: 0;
544
- background-color: unset;
545
- border: 0px;
546
512
  }
547
513
  }
548
514
 
@@ -554,93 +520,4 @@ export default {
554
520
  line-height: 20px;
555
521
  }
556
522
  }
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
-
646
523
  </style>
@@ -63,13 +63,13 @@ export default {
63
63
  :rows="rows"
64
64
  :groupable="false"
65
65
  group-tooltip="resourceTable.groupBy.project"
66
- key-field="_key"
66
+ key-field="_key"
67
67
  >
68
68
  <template #cell:project="{row}">
69
69
  <span v-if="row.project">{{ row.project.nameDisplay }}</span>
70
- <span
71
- v-else
72
- class="text-muted"
70
+ <span
71
+ v-else
72
+ class="text-muted"
73
73
  >&ndash;</span>
74
74
  </template>
75
75
  </ResourceTable>
@@ -156,13 +156,11 @@ export default {
156
156
  <div v-else>
157
157
  <header>
158
158
  <div class="title">
159
- <div class="excram-list">用户 & 认证 / <span style="color: #1890FF;">角色模板</span></div>
160
159
  <h1 class="m-0">
161
160
  {{ t('auth.roleTemplate') }}
162
161
  </h1>
163
- <div style="margin: 20px 0;">支持管理员创建与管理不同角色‌,每个角色可预设特定权限集合,可简化用户权限分配流程,提升权限管理的灵活性与安全性。</div>
164
162
  </div>
165
- <div class="actions-container actions-container-box">
163
+ <div class="actions-container">
166
164
  <div class="actions">
167
165
  <router-link
168
166
  v-if="canCreate"
@@ -215,19 +213,3 @@ export default {
215
213
  </Tabbed>
216
214
  </div>
217
215
  </template>
218
-
219
- <style lang="scss" scoped>
220
-
221
- .excram-list{
222
- font-size: 14px;
223
- line-height: 22px;
224
- margin-bottom: 20px;
225
- font-family: 'Microsoft YaHei';
226
- }
227
- .actions-container-box {
228
- display: flex;
229
- justify-content: flex-end;
230
- align-items: flex-end;
231
- }
232
-
233
- </style>
@@ -52,14 +52,14 @@ export default {
52
52
  <div v-else>
53
53
  <div class="row header mb-40">
54
54
  <h1> {{ t('monitoring.monitors') }}</h1>
55
- <!-- <div>
55
+ <div>
56
56
  <button
57
57
  class="btn btn-lg role-primary float right"
58
58
  @click="$router.push(createRoute)"
59
59
  >
60
60
  {{ t('resourceList.head.createFromYaml') }}
61
61
  </button>
62
- </div> -->
62
+ </div>
63
63
  </div>
64
64
  <Tabbed
65
65
  ref="tabs"
@@ -249,180 +249,130 @@ export default {
249
249
  </script>
250
250
 
251
251
  <template>
252
-
253
- <!-- 如果正在获取数据,显示加载组件 -->
254
252
  <Loading v-if="$fetchState.pending" />
255
-
256
- <!-- 否则显示主要内容 -->
257
- <div style="padding: 20px 20px 100px;" v-else>
258
-
259
- <!-- 面包屑 -->
260
- <div class="excram-list">全局设置 / <span style="color: #1890FF;">横幅</span></div>
261
- <!-- 页面主标题 -->
253
+ <div v-else>
262
254
  <h1 class="mb-20">
263
255
  {{ t('banner.label') }}
264
256
  </h1>
265
257
  <div>
266
-
267
- <!-- 描述标签 -->
268
258
  <label class="text-label">
269
259
  {{ t(`advancedSettings.descriptions.${ 'ui-banners' }`, {}, true) }}
270
260
  </label>
271
261
 
272
- <!-- ===============================
273
- Header Banner(页头横幅设置)
274
- =============================== -->
275
- <div class="mt-20" style="padding: 20px;border: 1px solid var(--nav-border);">
276
- <h2 class="mb-20 setting-title">
277
- {{ t('banner.headerBanner') }}
278
-
279
- <!-- 如果是单独配置的横幅,则显示锁图标 -->
280
- <i
281
- v-if="!!uiBannerIndividual.bannerHeader"
282
- class="icon icon-lock"
283
- />
284
- </h2>
285
-
286
- <!-- 如果是单独配置,提示用户这是个独立设置 -->
287
- <div
262
+ <!-- Header Settings -->
263
+ <h2 class="mt-40 mb-10 setting-title">
264
+ {{ t('banner.bannerHeader') }}
265
+ <i
288
266
  v-if="!!uiBannerIndividual.bannerHeader"
289
- class="row mb-10"
290
- >
291
- <Banner
292
- color="warning"
293
- class="mt-0"
294
- :label="t('banner.individualSetting', {name: 'ui-banner-header'}, true)"
295
- />
296
- </div>
297
-
298
- <!-- 是否显示 Header Banner 的开关 -->
299
- <div class="row mb-20">
300
- <div class="col span-6">
301
- <Checkbox
302
- :disabled="!!uiBannerIndividual.bannerHeader"
303
- :value="bannerVal.showHeader === 'true'"
304
- :label="t('banner.showHeader')"
305
- :mode="mode"
306
- @update:value="e=> bannerVal.showHeader=e.toString()"
307
- />
308
- </div>
309
- </div>
310
-
311
- <!-- 头部横幅的详细设置组件 -->
312
- <BannerSettings
313
- v-model:value="bannerVal"
314
- banner-type="bannerHeader"
315
- :mode="headerMode"
267
+ class="icon icon-lock"
268
+ />
269
+ </h2>
270
+ <div
271
+ v-if="!!uiBannerIndividual.bannerHeader"
272
+ class="row mb-10"
273
+ >
274
+ <Banner
275
+ color="warning"
276
+ class="mt-0"
277
+ :label="t('banner.individualSetting', {name: 'ui-banner-header'}, true)"
316
278
  />
317
279
  </div>
318
- <!-- ===============================
319
- Footer Banner(页脚横幅设置)
320
- =============================== -->
321
- <div class="mt-20" style="padding: 20px;border: 1px solid var(--nav-border);">
322
- <h2 class="mb-20 setting-title">
323
- {{ t('banner.footerBanner') }}
324
-
325
- <!-- 如果是单独配置的横幅,则显示锁图标 -->
326
- <i
327
- v-if="!!uiBannerIndividual.bannerFooter"
328
- class="icon icon-lock"
329
- />
330
- </h2>
331
-
332
- <!-- 如果是单独配置,提示用户这是个独立设置 -->
333
- <div
334
- v-if="!!uiBannerIndividual.bannerFooter"
335
- class="row mb-10"
336
- >
337
- <Banner
338
- color="warning"
339
- class="mt-0"
340
- :label="t('banner.individualSetting', {name: 'ui-banner-footer'}, true)"
280
+ <div class="row mb-20">
281
+ <div class="col span-6">
282
+ <Checkbox
283
+ :disabled="!!uiBannerIndividual.bannerHeader"
284
+ :value="bannerVal.showHeader === 'true'"
285
+ :label="t('banner.showHeader')"
286
+ :mode="mode"
287
+ @update:value="e=> bannerVal.showHeader=e.toString()"
341
288
  />
342
289
  </div>
290
+ </div>
291
+ <BannerSettings
292
+ v-model:value="bannerVal"
293
+ banner-type="bannerHeader"
294
+ :mode="headerMode"
295
+ />
343
296
 
344
- <!-- 是否显示 Footer Banner 的开关 -->
345
- <div class="row">
346
- <div class="col span-6">
347
- <Checkbox
348
- :disabled="!!uiBannerIndividual.bannerFooter"
349
- :value="bannerVal.showFooter === 'true'"
350
- :label="t('banner.showFooter')"
351
- :mode="mode"
352
- @update:value="e=>bannerVal.showFooter = e.toString()"
353
- />
354
- </div>
355
- </div>
356
-
357
- <!-- 页脚横幅的详细设置组件 -->
358
- <BannerSettings
359
- v-model:value="bannerVal"
360
- banner-type="bannerFooter"
361
- :mode="footerMode"
297
+ <!-- Footer settings -->
298
+ <h2 class="mt-40 mb-10 setting-title">
299
+ {{ t('banner.bannerFooter') }}
300
+ <i
301
+ v-if="!!uiBannerIndividual.bannerFooter"
302
+ class="icon icon-lock"
303
+ />
304
+ </h2>
305
+ <div
306
+ v-if="!!uiBannerIndividual.bannerFooter"
307
+ class="row mb-10"
308
+ >
309
+ <Banner
310
+ color="warning"
311
+ class="mt-0"
312
+ :label="t('banner.individualSetting', {name: 'ui-banner-footer'}, true)"
362
313
  />
363
314
  </div>
364
-
365
- <div class="mt-20" style="padding: 20px;border: 1px solid var(--nav-border);">
366
- <!-- ===============================
367
- Consent Banner(登录界面同意横幅设置)
368
- =============================== -->
369
- <h2 class="mb-20 setting-title">
370
- {{ t('banner.loginScreenBanner') }}
371
- <i
372
- v-if="!!uiBannerIndividual.bannerConsent"
373
- class="icon icon-lock"
315
+ <div class="row mb-20">
316
+ <div class="col span-6">
317
+ <Checkbox
318
+ :disabled="!!uiBannerIndividual.bannerFooter"
319
+ :value="bannerVal.showFooter === 'true'"
320
+ :label="t('banner.showFooter')"
321
+ :mode="mode"
322
+ @update:value="e=>bannerVal.showFooter = e.toString()"
374
323
  />
375
- </h2>
376
-
377
- <!-- 如果是单独配置,提示用户这是个独立设置 -->
378
- <div
379
- v-if="!!uiBannerIndividual.bannerConsent"
380
- class="row mb-10"
381
- >
382
- <Banner
383
- color="warning"
384
- class="mt-0"
385
- :label="t('banner.individualSetting', {name: 'ui-banner-login-consent'}, true)"
386
- />
387
- </div>
388
-
389
- <!-- 是否显示 Consent Banner 的开关 -->
390
- <div class="row mb-20">
391
- <div class="col span-6">
392
- <Checkbox
393
- :disabled="!!uiBannerIndividual.bannerConsent"
394
- :value="bannerVal.showConsent === 'true'"
395
- :label="t('banner.showConsent')"
396
- :mode="mode"
397
- @update:value="e => bannerVal.showConsent = e.toString()"
398
- />
399
- </div>
400
324
  </div>
401
-
402
- <!-- 登录界面同意横幅的详细设置组件 -->
403
- <BannerSettings
404
- v-model:value="bannerVal"
405
- banner-type="bannerConsent"
406
- :mode="consentMode"
407
- />
408
325
  </div>
326
+ <BannerSettings
327
+ v-model:value="bannerVal"
328
+ banner-type="bannerFooter"
329
+ :mode="footerMode"
330
+ />
409
331
 
410
- <!-- ===============================
411
- 登录错误通知设置
412
- =============================== -->
413
- <div class="mt-20" style="padding: 20px;border: 1px solid var(--nav-border);">
414
- <h2 class="mb-20 setting-title">
415
- {{ t('notifications.loginError.header') }}
416
- </h2>
417
- <NotificationSettings
418
- v-model:value="bannerVal.loginError"
419
- :mode="mode"
420
- :label="t('notifications.loginError.messageLabel')"
332
+ <!-- Consent settings -->
333
+ <h2 class="mt-40 mb-10 setting-title">
334
+ {{ t('banner.bannerConsent') }}
335
+ <i
336
+ v-if="!!uiBannerIndividual.bannerConsent"
337
+ class="icon icon-lock"
338
+ />
339
+ </h2>
340
+ <div
341
+ v-if="!!uiBannerIndividual.bannerConsent"
342
+ class="row mb-10"
343
+ >
344
+ <Banner
345
+ color="warning"
346
+ class="mt-0"
347
+ :label="t('banner.individualSetting', {name: 'ui-banner-login-consent'}, true)"
421
348
  />
422
349
  </div>
350
+ <div class="row mb-20">
351
+ <div class="col span-6">
352
+ <Checkbox
353
+ :disabled="!!uiBannerIndividual.bannerConsent"
354
+ :value="bannerVal.showConsent === 'true'"
355
+ :label="t('banner.showConsent')"
356
+ :mode="mode"
357
+ @update:value="e => bannerVal.showConsent = e.toString()"
358
+ />
359
+ </div>
360
+ </div>
361
+ <BannerSettings
362
+ v-model:value="bannerVal"
363
+ banner-type="bannerConsent"
364
+ :mode="consentMode"
365
+ />
366
+ <h2 class="mt-40 mb-40">
367
+ {{ t('notifications.loginError.header') }}
368
+ </h2>
369
+ <NotificationSettings
370
+ v-model:value="bannerVal.loginError"
371
+ :mode="mode"
372
+ :label="t('notifications.loginError.messageLabel')"
373
+ :hidden-aria-described-label="t('notifications.loginError.header')"
374
+ />
423
375
  </div>
424
-
425
- <!-- 全局错误提示 -->
426
376
  <template
427
377
  v-for="(err, i) in errors"
428
378
  :key="i"
@@ -432,11 +382,9 @@ export default {
432
382
  :label="err"
433
383
  />
434
384
  </template>
435
-
436
- <!-- 编辑模式下显示“应用”按钮 -->
437
- <div class="action-btn" v-if="mode === 'edit'">
385
+ <div v-if="mode === 'edit'">
438
386
  <AsyncButton
439
- class="pull-right"
387
+ class="pull-right mt-20"
440
388
  mode="apply"
441
389
  @click="save"
442
390
  />
@@ -445,16 +393,6 @@ export default {
445
393
  </template>
446
394
 
447
395
  <style scoped lang='scss'>
448
- .action-btn {
449
- padding: 10px 30px;
450
- position: fixed;
451
- bottom: 0;
452
- left: 0;
453
- width: 100%;
454
- background: var(--body-bg);
455
- border-top: 1px solid var(--nav-border);
456
- }
457
-
458
396
  .overlay {
459
397
  width: 100%;
460
398
  height: 100%;
@@ -470,19 +408,9 @@ export default {
470
408
  h2.setting-title {
471
409
  align-items: center;
472
410
  display: flex;
473
- height: 40px;
474
- line-height: 40px;
475
- font-size: 14px;
476
411
 
477
412
  > i {
478
413
  padding-left: 5px;
479
414
  }
480
415
  }
481
-
482
- .excram-list{
483
- font-size: 14px;
484
- line-height: 22px;
485
- margin-bottom: 20px;
486
- font-family: 'Microsoft YaHei';
487
- }
488
416
  </style>