dashboard-shell-shell 1.0.1000000117 → 1.0.1000000118

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 (124) hide show
  1. package/assets/styles/base/_functions.scss +0 -0
  2. package/assets/styles/base/_mixins.scss +1 -1
  3. package/assets/styles/global/_button.scss +10 -17
  4. package/assets/styles/global/_form.scss +2 -2
  5. package/assets/styles/global/_labeled-input.scss +2 -6
  6. package/assets/styles/global/_select.scss +7 -6
  7. package/assets/styles/global/_table.scss +2 -3
  8. package/assets/styles/global/_tooltip.scss +1 -8
  9. package/assets/styles/themes/_dark.scss +0 -2
  10. package/assets/styles/themes/_light.scss +2 -5
  11. package/assets/styles/vendor/vue-select.scss +1 -2
  12. package/assets/translations/en-us.yaml +3 -1
  13. package/assets/translations/zh-hans.yaml +28 -51
  14. package/components/ActionDropdown.vue +0 -1
  15. package/components/ActionMenuShell.vue +3 -6
  16. package/components/BrandImage.vue +0 -22
  17. package/components/ClusterIconMenu.vue +1 -1
  18. package/components/CodeMirror.vue +0 -1
  19. package/components/CruResource.vue +1 -1
  20. package/components/CruResourceFooter.vue +1 -1
  21. package/components/ExplorerProjectsNamespaces.vue +24 -4
  22. package/components/GlobalRoleBindings.vue +48 -112
  23. package/components/IndentedPanel.vue +10 -4
  24. package/components/PromptRemove.vue +3 -3
  25. package/components/ResourceDetail/Masthead.vue +242 -190
  26. package/components/ResourceDetail/index.vue +5 -20
  27. package/components/ResourceList/Masthead.vue +84 -146
  28. package/components/ResourceList/ResourceLoadingIndicator.vue +2 -5
  29. package/components/ResourceTable.vue +1 -76
  30. package/components/SideNav.vue +29 -66
  31. package/components/SortableTable/THead.vue +0 -6
  32. package/components/SortableTable/index.vue +388 -481
  33. package/components/Tabbed/index.vue +5 -4
  34. package/components/auth/Principal.vue +2 -3
  35. package/components/auth/RoleDetailEdit.vue +5 -58
  36. package/components/auth/SelectPrincipal.vue +0 -1
  37. package/components/form/BannerSettings.vue +16 -18
  38. package/components/form/ChangePassword.vue +4 -4
  39. package/components/form/ColorInput.vue +8 -32
  40. package/components/form/Footer.vue +1 -1
  41. package/components/form/InputWithSelect.vue +0 -2
  42. package/components/form/KeyValue.vue +7 -31
  43. package/components/form/LabeledSelect.vue +178 -178
  44. package/components/form/Members/ClusterPermissionsEditor.vue +2 -1
  45. package/components/form/Members/MembershipEditor.vue +1 -1
  46. package/components/form/NameNsDescription.vue +11 -24
  47. package/components/form/Password.vue +2 -6
  48. package/components/form/ResourceQuota/Namespace.vue +1 -1
  49. package/components/form/ResourceQuota/NamespaceRow.vue +10 -13
  50. package/components/form/ResourceQuota/ProjectRow.vue +1 -0
  51. package/components/form/Select.vue +2 -2
  52. package/components/nav/Favorite.vue +1 -5
  53. package/components/nav/Group.vue +23 -69
  54. package/components/nav/Header.vue +17 -82
  55. package/components/nav/HeaderPageActionMenu.vue +0 -1
  56. package/components/nav/NamespaceFilter.vue +3 -0
  57. package/components/nav/TopLevelMenu.vue +119 -182
  58. package/components/nav/Type.vue +11 -48
  59. package/components/rancherResourceDetail/Masthead.vue +769 -0
  60. package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
  61. package/components/rancherResourceDetail/index.vue +591 -0
  62. package/components/rancherResourceList/Masthead.vue +375 -0
  63. package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
  64. package/components/rancherResourceList/index.vue +307 -0
  65. package/components/rancherResourceList/resource-list.config.js +7 -0
  66. package/components/rancherResourceTable.vue +783 -0
  67. package/components/rancherSortableTable/THead.vue +561 -0
  68. package/components/rancherSortableTable/actions.js +153 -0
  69. package/components/rancherSortableTable/advanced-filtering.js +272 -0
  70. package/components/rancherSortableTable/debug.js +117 -0
  71. package/components/rancherSortableTable/filtering.js +290 -0
  72. package/components/rancherSortableTable/grouping.js +48 -0
  73. package/components/rancherSortableTable/index.vue +2712 -0
  74. package/components/rancherSortableTable/paging.js +155 -0
  75. package/components/rancherSortableTable/selection.js +629 -0
  76. package/components/rancherSortableTable/sortable-config.ts +4 -0
  77. package/components/rancherSortableTable/sorting.js +129 -0
  78. package/composables/useClickOutside.ts +1 -1
  79. package/config/product/auth.js +7 -16
  80. package/config/product/explorer.js +1 -1
  81. package/config/product/settings.js +8 -17
  82. package/config/settings.ts +0 -28
  83. package/edit/management.cattle.io.user.vue +4 -17
  84. package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
  85. package/edit/token.vue +1 -1
  86. package/list/harvesterhci.io.management.cluster.vue +0 -17
  87. package/list/management.cattle.io.setting.vue +13 -22
  88. package/list/management.cattle.io.user.vue +14 -25
  89. package/list/provisioning.cattle.io.cluster.vue +7 -6
  90. package/mixins/brand.js +0 -17
  91. package/package.json +1 -1
  92. package/pages/auth/login.vue +29 -84
  93. package/pages/c/_cluster/auth/roles/index.vue +14 -61
  94. package/pages/c/_cluster/settings/banners.vue +101 -174
  95. package/pages/c/_cluster/settings/brand.vue +301 -348
  96. package/pages/c/_cluster/settings/performance.vue +38 -61
  97. package/pages/home.vue +21 -70
  98. package/pages/prefs.vue +23 -25
  99. package/pkg/tsconfig.json +9 -9
  100. package/pkg/vue.config.js +1 -1
  101. package/promptRemove/mixin/roleDeletionCheck.js +2 -2
  102. package/scripts/clean +0 -0
  103. package/scripts/extension/bundle +0 -0
  104. package/scripts/extension/helm/scripts/package +0 -0
  105. package/scripts/extension/helm/scripts/patch +0 -0
  106. package/scripts/extension/helm/scripts/version +0 -0
  107. package/scripts/extension/helmpatch +0 -0
  108. package/scripts/extension/parse-tag-name +0 -0
  109. package/scripts/extension/publish +0 -0
  110. package/scripts/publish-shell.sh +60 -86
  111. package/scripts/serve-pkgs +0 -0
  112. package/scripts/sync-shell-deps +0 -0
  113. package/scripts/typegen.sh +28 -44
  114. package/store/i18n.js +5 -5
  115. package/store/prefs.js +5 -17
  116. package/store/type-map.js +1 -2
  117. package/types/cloud-shell/index.d.ts +11014 -0
  118. package/types/shell/index.d.ts +1 -1
  119. package/utils/error.js +0 -4
  120. package/utils/router.js +3 -3
  121. package/vue.config.js +6 -1
  122. package/assets/images/action.svg +0 -6
  123. package/assets/images/pl/logo.png +0 -0
  124. /package/components/{ResourceList → rancherResourceList}/Masthead-btn.vue +0 -0
@@ -290,7 +290,7 @@ export default {
290
290
  </script>
291
291
 
292
292
  <template>
293
- <div style="display: flex;">
293
+ <div style="display: flex;">
294
294
  <div
295
295
  :class="{ 'labeled-container': true, raised, empty, [mode]: true, 'is-lable': isLabel }"
296
296
  :style="{ border: 'none', width: selectWidth===''?'160px':selectWidth,lineHeight: '32px' }"
@@ -309,196 +309,196 @@ export default {
309
309
  </label>
310
310
  </div>
311
311
  <!-- label -->
312
- <div
313
- ref="select"
314
- class="labeled-select"
315
- :class="[
316
- $attrs.class,
317
- {
318
- disabled: isView || disabled,
319
- focused,
320
- [mode]: true,
321
- [status]: status,
322
- taggable: $attrs.taggable,
323
- taggable: $attrs.multiple,
324
- hoverable: hoverTooltip,
325
- 'compact-input': isCompact,
326
- 'no-label': !hasLabel
327
- }
328
- ]"
329
- :tabindex="isView || disabled ? -1 : 0"
330
- role="listbox"
331
- @click="focusSearch"
332
- @keydown.enter="focusSearch"
333
- @keydown.down.prevent="focusSearch"
334
- @keydown.space.prevent="focusSearch"
312
+ <div
313
+ ref="select"
314
+ class="labeled-select"
315
+ :class="[
316
+ $attrs.class,
317
+ {
318
+ disabled: isView || disabled,
319
+ focused,
320
+ [mode]: true,
321
+ [status]: status,
322
+ taggable: $attrs.taggable,
323
+ taggable: $attrs.multiple,
324
+ hoverable: hoverTooltip,
325
+ 'compact-input': isCompact,
326
+ 'no-label': !hasLabel
327
+ }
328
+ ]"
329
+ :tabindex="isView || disabled ? -1 : 0"
330
+ role="listbox"
331
+ @click="focusSearch"
332
+ @keydown.enter="focusSearch"
333
+ @keydown.down.prevent="focusSearch"
334
+ @keydown.space.prevent="focusSearch"
335
+ >
336
+ <!-- <div
337
+ :class="{ 'labeled-container': true, raised, empty, [mode]: true }"
338
+ :style="{ border: 'none' }"
335
339
  >
336
- <!-- <div
337
- :class="{ 'labeled-container': true, raised, empty, [mode]: true }"
338
- :style="{ border: 'none' }"
340
+ <label
341
+ v-if="hasLabel"
342
+ :id="`labeled-select-uid-${uid}`"
339
343
  >
340
- <label
341
- v-if="hasLabel"
342
- :id="`labeled-select-uid-${uid}`"
343
- >
344
- <t
345
- v-if="labelKey"
346
- :k="labelKey"
347
- />
348
- <template v-else-if="label">{{ label }}</template>
349
-
350
- <span
351
- v-if="requiredField"
352
- class="required"
353
- >*</span>
354
- </label>
355
- </div> -->
356
- <v-select
357
- ref="select-input"
358
- :aria-labelledby="hasLabel ? `labeled-select-uid-${uid}` : ''"
359
- v-bind="filteredAttrs"
360
- class="inline"
361
- :append-to-body="appendToBody"
362
- :calculate-position="positionDropdown"
363
- :class="{ 'no-label': !(label || '').length}"
364
- :clearable="clearable"
365
- :disabled="isView || disabled || loading"
366
- :get-option-key="getOptionKey"
367
- :get-option-label="(opt) => getOptionLabel(opt)"
368
- :label="optionLabel"
369
- :options="_options"
370
- :map-keydown="mappedKeys"
371
- :placeholder="placeholder"
372
- :reduce="(x) => reduce(x)"
373
- :filterable="isFilterable"
374
- :searchable="isSearchable"
375
- :selectable="selectable"
376
- :modelValue="value != null && !loading ? value : ''"
377
- :dropdown-should-open="dropdownShouldOpen"
378
- :tabindex="-1"
379
- role="listitem"
380
- @update:modelValue="$emit('selecting', $event); $emit('update:value', $event)"
381
- @search:blur="onBlur"
382
- @search:focus="onFocus"
383
- @search="onSearch"
384
- @open="onOpen"
385
- @close="onClose"
386
- @option:selecting="$emit('selecting', $event)"
387
- @option:deselecting="$emit('deselecting', $event)"
388
- >
389
-
390
- <template #option="option">
391
- <template v-if="showTagPrompts">
392
- <div class="only-user-opts">
393
- {{ t('labeledSelect.pressEnter', {input:getOptionLabel(option.label)}) }}
394
- </div>
395
- </template>
396
- <template v-else-if="option.kind === 'group'">
397
- <div class="vs__option-kind-group">
398
- <i
399
- v-if="option.icon"
400
- class="icon"
401
- :class="{ [option.icon]: true}"
402
- />
403
- <b>{{ getOptionLabel(option) }}</b>
404
- <div v-if="option.badge">
405
- {{ option.badge }}
406
- </div>
407
- </div>
408
- </template>
409
- <!-- <template v-else-if="option.kind === 'divider'">
410
- <hr role="none">
411
- </template> -->
412
- <template v-else-if="option.kind === 'highlighted'">
413
- <div class="option-kind-highlighted">
414
- {{ option.label }}
415
- </div>
416
- </template>
417
- <div
418
- v-else
419
- class="vs__option-kind"
420
- :class="{ 'has-icon' : hasGroupIcon}"
421
- @mousedown="(e) => onClickOption(option, e)"
422
- >
423
- {{ getOptionLabel(option) }}
344
+ <t
345
+ v-if="labelKey"
346
+ :k="labelKey"
347
+ />
348
+ <template v-else-if="label">{{ label }}</template>
349
+
350
+ <span
351
+ v-if="requiredField"
352
+ class="required"
353
+ >*</span>
354
+ </label>
355
+ </div> -->
356
+ <v-select
357
+ ref="select-input"
358
+ :aria-labelledby="hasLabel ? `labeled-select-uid-${uid}` : ''"
359
+ v-bind="filteredAttrs"
360
+ class="inline"
361
+ :append-to-body="appendToBody"
362
+ :calculate-position="positionDropdown"
363
+ :class="{ 'no-label': !(label || '').length}"
364
+ :clearable="clearable"
365
+ :disabled="isView || disabled || loading"
366
+ :get-option-key="getOptionKey"
367
+ :get-option-label="(opt) => getOptionLabel(opt)"
368
+ :label="optionLabel"
369
+ :options="_options"
370
+ :map-keydown="mappedKeys"
371
+ :placeholder="placeholder"
372
+ :reduce="(x) => reduce(x)"
373
+ :filterable="isFilterable"
374
+ :searchable="isSearchable"
375
+ :selectable="selectable"
376
+ :modelValue="value != null && !loading ? value : ''"
377
+ :dropdown-should-open="dropdownShouldOpen"
378
+ :tabindex="-1"
379
+ role="listitem"
380
+ @update:modelValue="$emit('selecting', $event); $emit('update:value', $event)"
381
+ @search:blur="onBlur"
382
+ @search:focus="onFocus"
383
+ @search="onSearch"
384
+ @open="onOpen"
385
+ @close="onClose"
386
+ @option:selecting="$emit('selecting', $event)"
387
+ @option:deselecting="$emit('deselecting', $event)"
388
+ >
389
+
390
+ <template #option="option">
391
+ <template v-if="showTagPrompts">
392
+ <div class="only-user-opts">
393
+ {{ t('labeledSelect.pressEnter', {input:getOptionLabel(option.label)}) }}
394
+ </div>
395
+ </template>
396
+ <template v-else-if="option.kind === 'group'">
397
+ <div class="vs__option-kind-group">
424
398
  <i
425
- v-if="option.error"
426
- class="icon icon-warning pull-right"
427
- style="font-size: 20px;"
399
+ v-if="option.icon"
400
+ class="icon"
401
+ :class="{ [option.icon]: true}"
428
402
  />
403
+ <b>{{ getOptionLabel(option) }}</b>
404
+ <div v-if="option.badge">
405
+ {{ option.badge }}
406
+ </div>
429
407
  </div>
430
408
  </template>
431
- <!-- Pass down templates provided by the caller -->
432
- <template
433
- v-for="(_, slot) of $slots"
434
- :key="slot"
435
- #[slot]="scope"
409
+ <!-- <template v-else-if="option.kind === 'divider'">
410
+ <hr role="none">
411
+ </template> -->
412
+ <template v-else-if="option.kind === 'highlighted'">
413
+ <div class="option-kind-highlighted">
414
+ {{ option.label }}
415
+ </div>
416
+ </template>
417
+ <div
418
+ v-else
419
+ class="vs__option-kind"
420
+ :class="{ 'has-icon' : hasGroupIcon}"
421
+ @mousedown="(e) => onClickOption(option, e)"
436
422
  >
437
- <slot
438
- :name="slot"
439
- v-bind="scope"
423
+ {{ getOptionLabel(option) }}
424
+ <i
425
+ v-if="option.error"
426
+ class="icon icon-warning pull-right"
427
+ style="font-size: 20px;"
440
428
  />
441
- </template>
429
+ </div>
430
+ </template>
431
+ <!-- Pass down templates provided by the caller -->
432
+ <template
433
+ v-for="(_, slot) of $slots"
434
+ :key="slot"
435
+ #[slot]="scope"
436
+ >
437
+ <slot
438
+ :name="slot"
439
+ v-bind="scope"
440
+ />
441
+ </template>
442
442
 
443
- <template #list-footer>
444
- <div
445
- v-if="canPaginate && totalResults && pages > 1"
446
- class="pagination-slot"
447
- >
448
- <div class="load-more">
449
- <i
450
- v-if="paginating"
451
- class="icon icon-spinner icon-spin"
452
- />
453
- <div v-else>
454
- <a
455
- v-if="canLoadMore"
456
- @click="loadMore"
457
- > {{ t('labelSelect.pagination.more') }}</a>
458
- </div>
443
+ <template #list-footer>
444
+ <div
445
+ v-if="canPaginate && totalResults && pages > 1"
446
+ class="pagination-slot"
447
+ >
448
+ <div class="load-more">
449
+ <i
450
+ v-if="paginating"
451
+ class="icon icon-spinner icon-spin"
452
+ />
453
+ <div v-else>
454
+ <a
455
+ v-if="canLoadMore"
456
+ @click="loadMore"
457
+ > {{ t('labelSelect.pagination.more') }}</a>
459
458
  </div>
459
+ </div>
460
460
 
461
- <div class="count">
462
- {{ optionCounts }}
463
- </div>
461
+ <div class="count">
462
+ {{ optionCounts }}
464
463
  </div>
465
- </template>
466
- <template #no-options="{ search }">
467
- <div class="no-options-slot">
468
- <template v-if="showTagPrompts">
469
- <span v-if="!searching">{{ t('labeledSelect.startTyping') }}</span>
470
- </template>
471
- <div
472
- v-else-if="paginating"
473
- class="paginating"
474
- >
475
- <i class="icon icon-spinner icon-spin" />
476
- </div>
477
- <template v-else-if="search">
478
- {{ t('labelSelect.noOptions.noMatch') }}
479
- </template>
480
- <template v-else>
481
- {{ t(noOptionsLabelKey) }}
482
- </template>
464
+ </div>
465
+ </template>
466
+ <template #no-options="{ search }">
467
+ <div class="no-options-slot">
468
+ <template v-if="showTagPrompts">
469
+ <span v-if="!searching">{{ t('labeledSelect.startTyping') }}</span>
470
+ </template>
471
+ <div
472
+ v-else-if="paginating"
473
+ class="paginating"
474
+ >
475
+ <i class="icon icon-spinner icon-spin" />
483
476
  </div>
484
- </template>
485
- </v-select>
486
- <i
487
- v-if="loading"
488
- class="icon icon-spinner icon-spin icon-lg"
489
- />
490
- <LabeledTooltip
491
- v-if="tooltip && !focused"
492
- :hover="hoverTooltip"
493
- :value="tooltip"
494
- :status="status"
495
- />
496
- <LabeledTooltip
497
- v-if="!!validationMessage"
498
- :hover="hoverTooltip"
499
- :value="validationMessage"
500
- />
501
- </div>
477
+ <template v-else-if="search">
478
+ {{ t('labelSelect.noOptions.noMatch') }}
479
+ </template>
480
+ <template v-else>
481
+ {{ t(noOptionsLabelKey) }}
482
+ </template>
483
+ </div>
484
+ </template>
485
+ </v-select>
486
+ <i
487
+ v-if="loading"
488
+ class="icon icon-spinner icon-spin icon-lg"
489
+ />
490
+ <LabeledTooltip
491
+ v-if="tooltip && !focused"
492
+ :hover="hoverTooltip"
493
+ :value="tooltip"
494
+ :status="status"
495
+ />
496
+ <LabeledTooltip
497
+ v-if="!!validationMessage"
498
+ :hover="hoverTooltip"
499
+ :value="validationMessage"
500
+ />
501
+ </div>
502
502
  </div>
503
503
  </template>
504
504
 
@@ -232,10 +232,11 @@ export default {
232
232
  v-else
233
233
  class="cluster-permissions-editor"
234
234
  >
235
- <div class="row mt-10 mb-20">
235
+ <div class="row mt-10">
236
236
  <div class="col span-12">
237
237
  <SelectPrincipal
238
238
  v-focus
239
+ class="mb-20"
239
240
  :mode="mode"
240
241
  :retain-selection="true"
241
242
  data-testid="cluster-member-select"
@@ -170,7 +170,7 @@ export default {
170
170
  >
171
171
  <template #column-headers>
172
172
  <div class="box mb-0">
173
- <div class="column-headers row" style="width: 95%;">
173
+ <div class="column-headers row">
174
174
  <div class="col span-6">
175
175
  <label class="text-label">{{ t('membershipEditor.user') }}</label>
176
176
  </div>
@@ -356,7 +356,7 @@ export default {
356
356
 
357
357
  colSpan() {
358
358
  if (!this.horizontal) {
359
- return `span-5`;
359
+ return `span-6`;
360
360
  }
361
361
  // Name and namespace take up two columns.
362
362
  // let cols = (this.nameNsHidden ? 0 : 2) + (this.descriptionHidden ? 0 : 1) + this.extraColumns.length;
@@ -430,17 +430,12 @@ export default {
430
430
 
431
431
  <template>
432
432
  <div class="row">
433
-
434
- <!-- 命名空间创建输入框 -->
435
433
  <div
436
434
  v-if="namespaced && !nameNsHidden && createNamespace"
437
435
  :data-testid="componentTestid + '-namespace-create'"
438
- class="col span-5"
439
- :class=" isDialog? 'namespace-item-row mb-20': 'col span-5'"
440
- style="display: flex;"
436
+ class="col span-6"
437
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
441
438
  >
442
-
443
- <!-- 输入命名空间名称 -->
444
439
  <LabeledInput
445
440
  ref="namespaceInput"
446
441
  v-model:value="namespace"
@@ -452,8 +447,6 @@ export default {
452
447
  :required="nameRequired"
453
448
  :rules="rules.namespace"
454
449
  />
455
-
456
- <!-- 取消创建命名空间按钮 -->
457
450
  <button
458
451
  aria="Cancel create"
459
452
  @click="cancelCreateNamespace"
@@ -464,12 +457,10 @@ export default {
464
457
  />
465
458
  </button>
466
459
  </div>
467
-
468
- <!-- 命名空间选择下拉框 -->
469
460
  <div
470
461
  v-if="namespaced && !nameNsHidden && !createNamespace"
471
462
  :data-testid="componentTestid + '-namespace'"
472
- :class=" isDialog? 'namespace-item-row mb-20': 'col span-5'"
463
+ :class=" isDialog? 'namespace-item-row mb-20': 'col span-6'"
473
464
  >
474
465
  <LabeledSelect
475
466
  v-show="!createNamespace"
@@ -488,7 +479,6 @@ export default {
488
479
  />
489
480
  </div>
490
481
 
491
- <!-- 名称输入框 -->
492
482
  <div
493
483
  v-if="!nameNsHidden"
494
484
  :data-testid="componentTestid + '-name'"
@@ -509,15 +499,12 @@ export default {
509
499
  />
510
500
  </div>
511
501
 
512
- <!-- 自定义插槽,可插入额外内容 -->
513
502
  <slot name="customize" />
514
503
  <!-- <div
515
504
  v-show="!descriptionHidden"
516
505
  :data-testid="componentTestid + '-description'"
517
- :class="['col', extraColumns.length > 0 ? 'span-3' : 'span-5']"
506
+ :class="['col', extraColumns.length > 0 ? 'span-3' : 'span-6']"
518
507
  > -->
519
-
520
- <!-- 额外的动态列 -->
521
508
  <div
522
509
  v-for="(slot, i) in extraColumns"
523
510
  :key="i"
@@ -525,8 +512,6 @@ export default {
525
512
  >
526
513
  <slot :name="slot" />
527
514
  </div>
528
-
529
- <!-- 描述输入框 -->
530
515
  <div
531
516
  v-show="!descriptionHidden"
532
517
  :data-testid="componentTestid + '-description'"
@@ -544,15 +529,12 @@ export default {
544
529
  />
545
530
  </div>
546
531
 
547
- <!-- 底部插槽 -->
548
532
  <div
549
533
  v-if="$slots.bottom"
550
534
  style="width: 100%;"
551
535
  >
552
536
  <slot name="bottom" />
553
537
  </div>
554
-
555
- <!-- 间隔占位符 -->
556
538
  <div
557
539
  v-if="showSpacer"
558
540
  class="spacer"
@@ -563,8 +545,13 @@ export default {
563
545
  <style lang="scss" scoped>
564
546
  button {
565
547
  all: unset;
548
+ height: 0;
549
+ position: relative;
550
+ top: -35px;
551
+ float: right;
552
+ margin-right: 7px;
553
+
566
554
  cursor: pointer;
567
- margin-left: 10px;
568
555
 
569
556
  .align-value {
570
557
  padding-top: 7px;
@@ -153,13 +153,12 @@ export default {
153
153
  </LabeledInput>
154
154
  <div
155
155
  v-if="isRandom"
156
- class="genPassword"
156
+ class="mt-10 genPassword"
157
157
  >
158
158
  <a
159
159
  href="#"
160
160
  @click.prevent.stop="generatePassword"
161
- style="height: 32px;display: flex;align-items: center;"
162
- ><i class="icon icon-refresh mr-5 pl-5" /> {{ t('changePassword.newGeneratedPassword') }}</a>
161
+ ><i class="icon icon-refresh" /> {{ t('changePassword.newGeneratedPassword') }}</a>
163
162
  </div>
164
163
  </div>
165
164
  </template>
@@ -171,9 +170,6 @@ export default {
171
170
 
172
171
  .labeled-input {
173
172
  .addon {
174
- position: absolute;
175
- top: 6px;
176
- right: 6px;
177
173
  /* display: flex;
178
174
  align-items: center;
179
175
  justify-content: center;
@@ -78,7 +78,7 @@ export default {
78
78
  <div style="width: 400px;">
79
79
  <label>{{ t('resourceQuota.headers.projectResourceAvailability') }}</label>
80
80
  </div>
81
- <div style="width: 500px;">
81
+ <div style="width: 400px;">
82
82
  <label>{{ t('resourceQuota.headers.limit') }}</label>
83
83
  </div>
84
84
  </div>
@@ -190,18 +190,16 @@ export default {
190
190
  :color-stops="{'100': '--primary'}"
191
191
  />
192
192
  </div>
193
- <div style="width: 500px;">
194
- <UnitInput
195
- :value="value.limit[type]"
196
- :mode="mode"
197
- :placeholder="typeOption.placeholder"
198
- :increment="typeOption.increment"
199
- :input-exponent="typeOption.inputExponent"
200
- :base-unit="typeOption.baseUnit"
201
- :output-modifier="true"
202
- @update:value="update"
203
- />
204
- </div>
193
+ <UnitInput
194
+ :value="value.limit[type]"
195
+ :mode="mode"
196
+ :placeholder="typeOption.placeholder"
197
+ :increment="typeOption.increment"
198
+ :input-exponent="typeOption.inputExponent"
199
+ :base-unit="typeOption.baseUnit"
200
+ :output-modifier="true"
201
+ @update:value="update"
202
+ />
205
203
  </div>
206
204
  </template>
207
205
 
@@ -210,7 +208,6 @@ export default {
210
208
  align-self: center;
211
209
  }
212
210
  .rowNew {
213
- margin-bottom: 10px;
214
211
  display: flex;
215
212
  justify-content: space-between;
216
213
 
@@ -70,6 +70,7 @@ export default {
70
70
  <template>
71
71
  <div
72
72
  v-if="typeOption"
73
+ style="justify-content: right;"
73
74
  class="rowNew"
74
75
  >
75
76
  <Select
@@ -372,8 +372,8 @@ export default {
372
372
  }
373
373
 
374
374
  :deep() .labeled-tooltip.error .status-icon {
375
- top: 7px !important;
376
- right: 2px !important;
375
+ top: 7px;
376
+ right: 2px;
377
377
  }
378
378
 
379
379
  :deep() .vs__selected-options {
@@ -44,13 +44,9 @@ export default {
44
44
 
45
45
  <style lang="scss" scoped>
46
46
  .favorite {
47
- display: flex;
48
- align-items: center;
49
47
  position: relative;
50
48
  cursor: pointer;
51
- font-size: 22px;
52
- margin-top: 4px;
53
- margin-left: 10px;
49
+ font-size: 20px;
54
50
  transform: ease-in-out-all 1s;
55
51
 
56
52
  &.icon-star-open {