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
@@ -112,7 +112,6 @@ export default {
112
112
  </script>
113
113
 
114
114
  <template>
115
- <!-- 当 type 有 route 时,渲染一个 Vue Router 自定义链接 -->
116
115
  <router-link
117
116
  v-if="type.route"
118
117
  :key="type.name"
@@ -120,24 +119,18 @@ export default {
120
119
  custom
121
120
  :to="type.route"
122
121
  >
123
-
124
- <!-- 导航项容器 -->
125
122
  <li
126
123
  class="child nav-type"
127
124
  :class="{'root': isRoot, [`depth-${depth}`]: true, 'router-link-active': isActive, 'router-link-exact-active': isExactActive}"
128
125
  @click="navigate"
129
126
  @keypress.enter="navigate"
130
127
  >
131
-
132
- <!-- 如果是精确匹配激活状态,则显示 TabTitle 组件 -->
133
128
  <TabTitle
134
129
  v-if="isExactActive"
135
130
  :show-child="false"
136
131
  >
137
132
  {{ type.labelKey ? t(type.labelKey) : (type.labelDisplay || type.label) }}
138
133
  </TabTitle>
139
-
140
- <!-- 链接主体 -->
141
134
  <a
142
135
  role="link"
143
136
  :aria-label="type.labelKey ? t(type.labelKey) : (type.labelDisplay || type.label)"
@@ -148,50 +141,38 @@ export default {
148
141
  @mouseenter="setNear(true)"
149
142
  @mouseleave="setNear(false)"
150
143
  >
151
- <!-- 文本标签:优先使用多语言 key -->
152
144
  <span
153
145
  v-if="type.labelKey"
154
146
  class="label"
155
147
  ><t :k="type.labelKey" /></span>
156
-
157
- <!-- 没有 labelKey 时,直接使用 HTML 文本 -->
158
- <div v-else style="display: flex; align-items: center;" class="labelKey_menu">
159
- <i v-if="!type.labelDisplay || (type.labelDisplay && type.labelDisplay.indexOf('</i>') === -1)" class="icon icon-fw icon-globe" style="color: var(--muted);width: 32px;text-align: left;"></i>
160
- <span
161
- v-clean-html="type.labelDisplay.replace('设置', '基础设置') || type.label"
162
- class="label"
163
- :class="{'no-icon': !type.icon}"
164
- />
165
- </div>
166
-
167
- <!-- 右侧附加信息(收藏按钮 / 命名空间图标 / 计数) -->
168
- <!-- <span
148
+ <span
149
+ v-else
150
+ v-clean-html="type.labelDisplay || type.label"
151
+ class="label"
152
+ :class="{'no-icon': !type.icon}"
153
+ />
154
+ <span
169
155
  v-if="showFavorite || namespaceIcon || showCount"
170
156
  class="count"
171
157
  >
172
-
173
158
  <Favorite
174
159
  v-if="showFavorite"
175
160
  :resource="type.name"
176
161
  />
177
-
178
162
  <i
179
163
  v-if="namespaceIcon"
180
164
  class="icon icon-namespace"
181
165
  :class="{'ns-and-icon': showCount}"
182
166
  data-testid="type-namespaced"
183
167
  />
184
-
185
168
  <span
186
169
  v-if="showCount"
187
170
  data-testid="type-count"
188
171
  >{{ count }}</span>
189
- </span> -->
172
+ </span>
190
173
  </a>
191
174
  </li>
192
175
  </router-link>
193
-
194
- <!-- 当 type 没有 route 但有外部 link 时 -->
195
176
  <li
196
177
  v-else-if="type.link"
197
178
  class="child nav-type nav-link"
@@ -207,8 +188,6 @@ export default {
207
188
  <span class="label">{{ type.label }}&nbsp;<i class="icon icon-external-link" /></span>
208
189
  </a>
209
190
  </li>
210
-
211
- <!-- 兜底情况:既没有 route,也没有 link -->
212
191
  <li v-else>
213
192
  {{ type }}?
214
193
  </li>
@@ -235,7 +214,6 @@ export default {
235
214
  .label {
236
215
  align-items: center;
237
216
  grid-area: label;
238
- display: flex;
239
217
  overflow: hidden;
240
218
  text-overflow: ellipsis;
241
219
 
@@ -243,13 +221,13 @@ export default {
243
221
  padding-left: 3px;
244
222
  }
245
223
 
246
- ::v-deep .highlight {
224
+ :deep() .highlight {
247
225
  background: var(--diff-ins-bg);
248
226
  color: var(--body-text);
249
227
  padding: 2px;
250
228
  }
251
229
 
252
- ::v-deep .icon {
230
+ :deep() .icon {
253
231
  position: relative;
254
232
  color: var(--muted);
255
233
  }
@@ -258,28 +236,24 @@ export default {
258
236
  A {
259
237
  display: grid;
260
238
  grid-template-areas: "label count";
261
- grid-template-columns: auto 20px;
239
+ grid-template-columns: auto auto;
262
240
  grid-column-gap: 5px;
263
241
  font-size: 14px;
264
242
  line-height: 24px;
265
- /* padding: 7.5px 7px 7.5px 10px; */
266
- padding: 0px 16px 0px 30px;
267
- height: 50px;
243
+ padding: 7.5px 7px 7.5px 10px;
268
244
  margin: 0 0 0 -3px;
269
245
  overflow: hidden;
270
246
  text-overflow: ellipsis;
271
247
  white-space: nowrap;
272
248
  color: var(--body-text);
249
+ height: 33px;
273
250
 
274
251
  &:hover {
275
- background: var(--nav-active) !important;
276
- color: var(--nav-hover-color);
277
- /* background: var(--nav-hover); */
252
+ background: var(--nav-hover);
278
253
  text-decoration: none;
279
254
 
280
- ::v-deep .icon {
281
- /* color: var(--body-text); */
282
- color: var(--nav-hover-color);
255
+ :deep() .icon {
256
+ color: var(--body-text);
283
257
  }
284
258
  }
285
259
  }
@@ -288,42 +262,46 @@ export default {
288
262
  grid-area: favorite;
289
263
  font-size: 12px;
290
264
  position: relative;
265
+ vertical-align: middle;
266
+ margin-right: 4px;
291
267
  }
292
268
 
293
269
  .count {
294
- grid-area: count;
295
270
  font-size: 12px;
296
- text-align: right;
297
271
  justify-items: center;
298
- line-height: 50px;
272
+ padding-right: 4px;
273
+ display: flex;
274
+ align-items: center;
275
+ }
276
+
277
+ &.nav-type.nav-link {
278
+ a .label {
279
+ display: flex;
280
+ }
299
281
  }
300
282
 
301
283
  &.nav-type:not(.depth-0) {
302
284
  A {
303
- font-size: 13px;
304
- padding: 5.5px 7px 5.5px 40px;
285
+ padding-left: 16px;
305
286
  }
306
287
 
307
- ::v-deep .label I {
288
+ :deep() .label I {
308
289
  padding-right: 2px;
309
290
  }
310
291
  }
311
- }
312
292
 
313
- .labelKey_menu{
314
- display: flex;
315
- align-items: center;
316
- }
317
- .labelKey_menu:hover{
318
- i{
319
- color: var(--nav-hover-color) !important;
320
- }
321
- }
322
- .router-link-active{
323
- .labelKey_menu{
324
- i{
325
- color: var(--nav-hover-color) !important;
293
+ &.nav-type:is(.depth-1) {
294
+ A {
295
+ font-size: 13px;
296
+ padding-left: 23px;
297
+ }
298
+ }
299
+
300
+ &.nav-type:not(.depth-0):not(.depth-1) {
301
+ A {
302
+ padding-left: 14px;
303
+ }
326
304
  }
327
305
  }
328
- }
306
+
329
307
  </style>
@@ -76,6 +76,6 @@ export const useClickOutside = <T extends OnClickOutsideOptions>(
76
76
 
77
77
  onBeforeUnmount(() => {
78
78
  window.removeEventListener('click', listener as any);
79
- window.removeEventListener('pointerdown', setShouldListen);
79
+ window.removeEventListener('pointerDown', setShouldListen);
80
80
  });
81
81
  };
@@ -58,21 +58,17 @@ export function matches(pl) {
58
58
  }
59
59
 
60
60
  export function getVendor() {
61
+ if ( vendor === SETTING.PL_RANCHER_VALUE ) {
62
+ // Custom vendor override based on brand
63
+ if (brand && CUSTOM_VENDOR[brand]) {
64
+ return CUSTOM_VENDOR[brand];
65
+ }
61
66
 
62
- return 'HCI';
63
- }
64
- // export function getVendor() {
65
- // if ( vendor === SETTING.PL_RANCHER_VALUE ) {
66
- // // Custom vendor override based on brand
67
- // if (brand && CUSTOM_VENDOR[brand]) {
68
- // return CUSTOM_VENDOR[brand];
69
- // }
70
-
71
- // return STANDARD_VENDOR;
72
- // }
67
+ return STANDARD_VENDOR;
68
+ }
73
69
 
74
- // return vendor;
75
- // }
70
+ return vendor;
71
+ }
76
72
 
77
73
  export function getProduct() {
78
74
  return product;
@@ -84,13 +80,13 @@ export function setTitle() {
84
80
  if (v === 'Harvester') {
85
81
  const ico = require(`~shell/assets/images/pl/harvester.png`);
86
82
 
87
- document.title = 'HCI';
83
+ document.title = 'Harvester';
88
84
  const link = document.createElement('link');
89
85
 
90
86
  link.hid = 'icon';
91
87
  link.rel = 'icon';
92
88
  link.type = 'image/x-icon';
93
- link.href = ico;
89
+ link.hrefv = ico;
94
90
  const head = document.getElementsByTagName('head')[0];
95
91
 
96
92
  head.appendChild(link);
@@ -191,23 +191,13 @@ export function init(store) {
191
191
  componentForType(`${ MANAGEMENT.AUTH_CONFIG }/genericoidc`, 'auth/oidc');
192
192
  componentForType(`${ MANAGEMENT.AUTH_CONFIG }/cognito`, 'auth/oidc');
193
193
 
194
- const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS')
195
-
196
- if (topLevelPermissions && topLevelPermissions === 'superadmin') {
197
- basicType([
198
- 'config',
199
- USERS_VIRTUAL_TYPE,
200
- NORMAN.SPOOFED.GROUP_PRINCIPAL,
201
- ROLES_VIRTUAL_TYPE,
202
- MANAGEMENT.OIDC_CLIENT
203
- ]);
204
- } else {
205
- basicType([
206
- USERS_VIRTUAL_TYPE,
207
- ROLES_VIRTUAL_TYPE
208
- ]);
209
- }
210
-
194
+ basicType([
195
+ 'config',
196
+ USERS_VIRTUAL_TYPE,
197
+ NORMAN.SPOOFED.GROUP_PRINCIPAL,
198
+ ROLES_VIRTUAL_TYPE,
199
+ MANAGEMENT.OIDC_CLIENT
200
+ ]);
211
201
 
212
202
  headers(NORMAN.SPOOFED.GROUP_PRINCIPAL, [
213
203
  GROUP_NAME,
@@ -112,25 +112,15 @@ export function init(store) {
112
112
  route: { name: 'c-cluster-settings-fleet' }
113
113
  });
114
114
 
115
- const topLevelPermissions = sessionStorage.getItem('TOPLEVELPERMISSIONS')
116
-
117
- if (topLevelPermissions && topLevelPermissions === 'superadmin') {
118
- basicType([
119
- 'settings',
120
- 'features',
121
- 'brand',
122
- 'banners',
123
- 'performance',
124
- 'links',
125
- 'fleet-settings'
126
- ]);
127
- } else {
128
- basicType([
129
- 'settings',
130
- 'brand',
131
- ]);
132
- }
133
-
115
+ basicType([
116
+ 'settings',
117
+ 'features',
118
+ 'brand',
119
+ 'banners',
120
+ 'performance',
121
+ 'links',
122
+ 'fleet-settings'
123
+ ]);
134
124
 
135
125
  configureType(MANAGEMENT.SETTING, {
136
126
  isCreatable: false,
@@ -112,34 +112,6 @@ export const SETTING = {
112
112
  CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET: 'cluster-agent-default-pod-disruption-budget'
113
113
  } as const;
114
114
 
115
- export const ALLOWED_SETTINGS_NEW: GlobalSetting = {
116
- [SETTING.CA_CERTS]: { kind: 'multiline', readOnly: true },
117
- [SETTING.PASSWORD_MIN_LENGTH]: {
118
- kind: 'integer',
119
- ruleSet: [
120
- {
121
- name: 'betweenValues',
122
- key: 'Password',
123
- factoryArg: [2, 256]
124
- },
125
- {
126
- name: 'isInteger',
127
- key: 'Password',
128
- },
129
- {
130
- name: 'isPositive',
131
- key: 'Password',
132
- },
133
- {
134
- name: 'isOctal',
135
- key: 'Password',
136
- }
137
- ],
138
- },
139
- [SETTING.AUTH_USER_SESSION_TTL_MINUTES]: {},
140
- [SETTING.AUTH_TOKEN_MAX_TTL_MINUTES]: {},
141
- }
142
-
143
115
  // These are the settings that are allowed to be edited via the UI
144
116
  export const ALLOWED_SETTINGS: GlobalSetting = {
145
117
  [SETTING.CA_CERTS]: { kind: 'multiline', readOnly: true },
@@ -52,7 +52,6 @@ export const NAME = {
52
52
  getValue: (row) => row.nameDisplay,
53
53
  sort: ['nameSort'],
54
54
  formatter: 'LinkDetail',
55
- width: 200,
56
55
  canBeVariable: true,
57
56
  };
58
57
 
@@ -162,7 +161,7 @@ export const NAMESPACE = {
162
161
  name: 'namespace',
163
162
  labelKey: 'tableHeaders.namespace',
164
163
  value: 'namespace',
165
- getValue: row => row && row.namespace && row.namespace,
164
+ getValue: (row) => row.namespace,
166
165
  sort: 'namespace',
167
166
  dashIfEmpty: true,
168
167
  };
@@ -281,7 +280,7 @@ export const NS_SNAPSHOT_QUOTA = {
281
280
  labelKey: 'harvester.tableHeaders.totalSnapshotQuota',
282
281
  value: 'snapshotSizeQuota',
283
282
  sort: 'snapshotSizeQuota',
284
- align: 'left',
283
+ align: 'center',
285
284
  formatter: 'Si',
286
285
  formatterOpts: {
287
286
  opts: {
@@ -98,9 +98,9 @@ export default {
98
98
  v-model="confirmName"
99
99
  type="text"
100
100
  >
101
- <!-- <div class="text-info mt-20">
101
+ <div class="text-info mt-20">
102
102
  {{ protip }}
103
- </div> -->
103
+ </div>
104
104
  <Banner
105
105
  v-for="(error, i) in errors"
106
106
  :key="i"
@@ -91,9 +91,9 @@ export default {
91
91
  @update:value="update()"
92
92
  />
93
93
  </div>
94
- <!-- <div class="text-info mt-20">
94
+ <div class="text-info mt-20">
95
95
  {{ protip }}
96
- </div> -->
96
+ </div>
97
97
  </div>
98
98
  </template>
99
99
  <template #actions>
@@ -214,11 +214,7 @@ export default {
214
214
  </script>
215
215
 
216
216
  <template>
217
-
218
- <!-- 如果没有获取到 value 数据,则显示加载组件 -->
219
217
  <Loading v-if="!value" />
220
-
221
- <!-- 如果有数据,则进入资源编辑/创建的表单界面 -->
222
218
  <CruResource
223
219
  v-else
224
220
  :done-route="doneRoute"
@@ -230,14 +226,10 @@ export default {
230
226
  class="create-edit"
231
227
  @finish="save"
232
228
  >
233
-
234
- <!-- 账户凭据区域 -->
235
229
  <div class="credentials">
236
230
  <h2> {{ t("user.edit.credentials.label") }}</h2>
237
-
238
- <!-- 用户名 & 显示名 -->
239
231
  <div class="row">
240
- <div class="col span-6">
232
+ <div class="col span-4">
241
233
  <LabeledInput
242
234
  ref="name"
243
235
  v-model:value="form.username"
@@ -249,7 +241,7 @@ export default {
249
241
  :ignore-password-managers="!isCreate"
250
242
  />
251
243
  </div>
252
- <div class="col span-6">
244
+ <div class="col span-4">
253
245
  <LabeledInput
254
246
  v-model:value="form.displayName"
255
247
  label-key="user.edit.credentials.displayName.label"
@@ -258,10 +250,8 @@ export default {
258
250
  />
259
251
  </div>
260
252
  </div>
261
-
262
- <!-- 用户描述 -->
263
- <div class="row">
264
- <div class="col span-6">
253
+ <div class="row mt-20 mb-10">
254
+ <div class="col span-8">
265
255
  <LabeledInput
266
256
  v-model:value="form.description"
267
257
  label-key="user.edit.credentials.userDescription.label"
@@ -271,7 +261,6 @@ export default {
271
261
  </div>
272
262
  </div>
273
263
 
274
- <!-- 修改密码(仅非查看模式显示) -->
275
264
  <ChangePassword
276
265
  v-if="!isView"
277
266
  ref="changePassword"
@@ -281,8 +270,6 @@ export default {
281
270
  @valid="validation.password = $event"
282
271
  />
283
272
  </div>
284
-
285
- <!-- 全局角色绑定区域(仅当 showGlobalRoles 为 true 时显示) -->
286
273
  <div
287
274
  v-if="showGlobalRoles"
288
275
  class="global-permissions"
@@ -243,14 +243,14 @@ export default {
243
243
  v-model:value="authType"
244
244
  :disabled="mode === view"
245
245
  :options="authOptions"
246
- label="验证类型"
246
+ label="Auth Type"
247
247
  @update:value="initializeType(authOptions, authType)"
248
248
  />
249
249
  </div>
250
250
  </div>
251
- <div
252
- v-if="authType === 'basicAuth'"
253
- class="row mb-20"
251
+ <div
252
+ v-if="authType === 'basicAuth'"
253
+ class="row mb-20"
254
254
  >
255
255
  <SimpleSecretSelector
256
256
  v-if="namespace"
@@ -265,16 +265,16 @@ export default {
265
265
  @updateSecretName="updateBasicAuthUsernameSecretName"
266
266
  @updateSecretKey="updateBasicAuthUsernameSecretKey"
267
267
  />
268
- <Banner
269
- v-else
270
- color="error"
268
+ <Banner
269
+ v-else
270
+ color="error"
271
271
  >
272
272
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
273
273
  </Banner>
274
274
  </div>
275
- <div
276
- v-if="authType === 'basicAuth'"
277
- class="row mb-20"
275
+ <div
276
+ v-if="authType === 'basicAuth'"
277
+ class="row mb-20"
278
278
  >
279
279
  <SimpleSecretSelector
280
280
  v-if="namespace"
@@ -289,16 +289,16 @@ export default {
289
289
  @updateSecretName="updateBasicAuthPasswordSecretName"
290
290
  @updateSecretKey="updateBasicAuthPasswordSecretKey"
291
291
  />
292
- <Banner
293
- v-else
294
- color="error"
292
+ <Banner
293
+ v-else
294
+ color="error"
295
295
  >
296
296
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
297
297
  </Banner>
298
298
  </div>
299
- <div
300
- v-if="authType === 'bearerTokenSecret'"
301
- class="row mb-20"
299
+ <div
300
+ v-if="authType === 'bearerTokenSecret'"
301
+ class="row mb-20"
302
302
  >
303
303
  <SimpleSecretSelector
304
304
  v-if="namespace"
@@ -313,9 +313,9 @@ export default {
313
313
  @updateSecretName="updateBearerTokenSecretName"
314
314
  @updateSecretKey="updateBearerTokenSecretKey"
315
315
  />
316
- <Banner
317
- v-else
318
- color="error"
316
+ <Banner
317
+ v-else
318
+ color="error"
319
319
  >
320
320
  {{ t("alertmanagerConfigReceiver.namespaceWarning") }}
321
321
  </Banner>
@@ -17,14 +17,14 @@ import { fetchAlertManagerConfigSpecs } from '@shell/utils/alertmanagerconfig';
17
17
  // i18n-uses monitoringReceiver.slack.*, monitoringReceiver.email.*, monitoringReceiver.pagerduty.*
18
18
  // i18n-uses monitoringReceiver.opsgenie.*, monitoringReceiver.webhook.*, monitoringReceiver.custom.*
19
19
  export const RECEIVERS_TYPES = [
20
- // {
21
- // name: 'slack',
22
- // label: 'monitoringReceiver.slack.label',
23
- // title: 'monitoringReceiver.slack.title',
24
- // info: 'monitoringReceiver.slack.info',
25
- // key: 'slackConfigs',
26
- // logo: require(`@shell/assets/images/vendor/slack.svg`)
27
- // },
20
+ {
21
+ name: 'slack',
22
+ label: 'monitoringReceiver.slack.label',
23
+ title: 'monitoringReceiver.slack.title',
24
+ info: 'monitoringReceiver.slack.info',
25
+ key: 'slackConfigs',
26
+ logo: require(`@shell/assets/images/vendor/slack.svg`)
27
+ },
28
28
  {
29
29
  name: 'email',
30
30
  label: 'monitoringReceiver.email.label',
@@ -32,21 +32,21 @@ export const RECEIVERS_TYPES = [
32
32
  key: 'emailConfigs',
33
33
  logo: require(`@shell/assets/images/vendor/email.svg`)
34
34
  },
35
- // {
36
- // name: 'pagerduty',
37
- // label: 'monitoringReceiver.pagerduty.label',
38
- // title: 'monitoringReceiver.pagerduty.title',
39
- // info: 'monitoringReceiver.pagerduty.info',
40
- // key: 'pagerdutyConfigs',
41
- // logo: require(`@shell/assets/images/vendor/pagerduty.svg`)
42
- // },
43
- // {
44
- // name: 'opsgenie',
45
- // label: 'monitoringReceiver.opsgenie.label',
46
- // title: 'monitoringReceiver.opsgenie.title',
47
- // key: 'opsgenieConfigs',
48
- // logo: require(`@shell/assets/images/vendor/email.svg`)
49
- // },
35
+ {
36
+ name: 'pagerduty',
37
+ label: 'monitoringReceiver.pagerduty.label',
38
+ title: 'monitoringReceiver.pagerduty.title',
39
+ info: 'monitoringReceiver.pagerduty.info',
40
+ key: 'pagerdutyConfigs',
41
+ logo: require(`@shell/assets/images/vendor/pagerduty.svg`)
42
+ },
43
+ {
44
+ name: 'opsgenie',
45
+ label: 'monitoringReceiver.opsgenie.label',
46
+ title: 'monitoringReceiver.opsgenie.title',
47
+ key: 'opsgenieConfigs',
48
+ logo: require(`@shell/assets/images/vendor/email.svg`)
49
+ },
50
50
  {
51
51
  name: 'webhook',
52
52
  label: 'monitoringReceiver.webhook.label',
@@ -54,14 +54,14 @@ export const RECEIVERS_TYPES = [
54
54
  key: 'webhookConfigs',
55
55
  logo: require(`@shell/assets/images/vendor/webhook.svg`),
56
56
  },
57
- // {
58
- // name: 'custom',
59
- // label: 'monitoringReceiver.custom.label',
60
- // title: 'monitoringReceiver.custom.title',
61
- // info: 'monitoringReceiver.custom.info',
62
- // key: 'webhookConfigs',
63
- // logo: require(`@shell/assets/images/vendor/custom.svg`)
64
- // },
57
+ {
58
+ name: 'custom',
59
+ label: 'monitoringReceiver.custom.label',
60
+ title: 'monitoringReceiver.custom.title',
61
+ info: 'monitoringReceiver.custom.info',
62
+ key: 'webhookConfigs',
63
+ logo: require(`@shell/assets/images/vendor/custom.svg`)
64
+ },
65
65
  ];
66
66
 
67
67
  export default {