dashboard-shell-shell 1.0.1000000116 → 1.0.1000000117
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.
- package/assets/images/action.svg +6 -0
- package/assets/images/pl/logo.png +0 -0
- package/assets/styles/base/_functions.scss +0 -0
- package/assets/styles/base/_mixins.scss +1 -1
- package/assets/styles/global/_button.scss +17 -10
- package/assets/styles/global/_form.scss +2 -2
- package/assets/styles/global/_labeled-input.scss +6 -2
- package/assets/styles/global/_select.scss +6 -7
- package/assets/styles/global/_table.scss +3 -2
- package/assets/styles/global/_tooltip.scss +8 -1
- package/assets/styles/themes/_dark.scss +2 -0
- package/assets/styles/themes/_light.scss +5 -2
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +1 -3
- package/assets/translations/zh-hans.yaml +51 -28
- package/components/ActionDropdown.vue +1 -0
- package/components/ActionMenuShell.vue +6 -3
- package/components/BrandImage.vue +22 -0
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +1 -0
- package/components/CruResource.vue +1 -1
- package/components/CruResourceFooter.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +4 -24
- package/components/GlobalRoleBindings.vue +112 -48
- package/components/IndentedPanel.vue +4 -10
- package/components/PromptRemove.vue +3 -3
- package/components/ResourceDetail/Masthead.vue +190 -242
- package/components/ResourceDetail/index.vue +20 -5
- package/components/ResourceList/Masthead.vue +146 -84
- package/components/ResourceList/ResourceLoadingIndicator.vue +5 -2
- package/components/ResourceTable.vue +76 -1
- package/components/SideNav.vue +66 -29
- package/components/SortableTable/THead.vue +6 -0
- package/components/SortableTable/index.vue +481 -388
- package/components/Tabbed/index.vue +4 -5
- package/components/auth/Principal.vue +3 -2
- package/components/auth/RoleDetailEdit.vue +58 -5
- package/components/auth/SelectPrincipal.vue +1 -0
- package/components/form/BannerSettings.vue +18 -16
- package/components/form/ChangePassword.vue +4 -4
- package/components/form/ColorInput.vue +32 -8
- package/components/form/Footer.vue +1 -1
- package/components/form/InputWithSelect.vue +2 -0
- package/components/form/KeyValue.vue +31 -7
- package/components/form/LabeledSelect.vue +178 -178
- package/components/form/Members/ClusterPermissionsEditor.vue +1 -2
- package/components/form/Members/MembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +24 -11
- package/components/form/Password.vue +6 -2
- package/components/form/ResourceQuota/Namespace.vue +1 -1
- package/components/form/ResourceQuota/NamespaceRow.vue +13 -10
- package/components/form/ResourceQuota/ProjectRow.vue +0 -1
- package/components/form/Select.vue +2 -2
- package/components/nav/Favorite.vue +5 -1
- package/components/nav/Group.vue +69 -23
- package/components/nav/Header.vue +82 -17
- package/components/nav/HeaderPageActionMenu.vue +1 -0
- package/components/nav/NamespaceFilter.vue +0 -3
- package/components/nav/TopLevelMenu.vue +182 -119
- package/components/nav/Type.vue +48 -11
- package/composables/useClickOutside.ts +1 -1
- package/config/product/auth.js +16 -7
- package/config/product/explorer.js +1 -1
- package/config/product/settings.js +17 -8
- package/config/settings.ts +28 -0
- package/edit/management.cattle.io.user.vue +17 -4
- package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
- package/edit/token.vue +1 -1
- package/list/harvesterhci.io.management.cluster.vue +17 -0
- package/list/management.cattle.io.setting.vue +22 -13
- package/list/management.cattle.io.user.vue +25 -14
- package/list/provisioning.cattle.io.cluster.vue +6 -7
- package/mixins/brand.js +17 -0
- package/package.json +1 -1
- package/pages/auth/login.vue +84 -29
- package/pages/c/_cluster/auth/roles/index.vue +61 -14
- package/pages/c/_cluster/settings/banners.vue +174 -101
- package/pages/c/_cluster/settings/brand.vue +348 -301
- package/pages/c/_cluster/settings/performance.vue +61 -38
- package/pages/home.vue +70 -21
- package/pages/prefs.vue +25 -23
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/promptRemove/mixin/roleDeletionCheck.js +2 -2
- package/scripts/clean +0 -0
- package/scripts/extension/bundle +0 -0
- package/scripts/extension/helm/scripts/package +0 -0
- package/scripts/extension/helm/scripts/patch +0 -0
- package/scripts/extension/helm/scripts/version +0 -0
- package/scripts/extension/helmpatch +0 -0
- package/scripts/extension/parse-tag-name +0 -0
- package/scripts/extension/publish +0 -0
- package/scripts/publish-shell.sh +86 -60
- package/scripts/serve-pkgs +0 -0
- package/scripts/sync-shell-deps +0 -0
- package/scripts/typegen.sh +44 -28
- package/store/i18n.js +5 -5
- package/store/prefs.js +17 -5
- package/store/type-map.js +2 -1
- package/types/shell/index.d.ts +1 -1
- package/utils/error.js +4 -0
- package/utils/router.js +3 -3
- package/vue.config.js +1 -6
- package/components/rancherResourceDetail/Masthead.vue +0 -769
- package/components/rancherResourceDetail/__tests__/Masthead.test.ts +0 -65
- package/components/rancherResourceDetail/index.vue +0 -591
- package/components/rancherResourceList/Masthead.vue +0 -375
- package/components/rancherResourceList/ResourceLoadingIndicator.vue +0 -140
- package/components/rancherResourceList/index.vue +0 -307
- package/components/rancherResourceList/resource-list.config.js +0 -7
- package/components/rancherResourceTable.vue +0 -783
- package/components/rancherSortableTable/THead.vue +0 -561
- package/components/rancherSortableTable/actions.js +0 -153
- package/components/rancherSortableTable/advanced-filtering.js +0 -272
- package/components/rancherSortableTable/debug.js +0 -117
- package/components/rancherSortableTable/filtering.js +0 -290
- package/components/rancherSortableTable/grouping.js +0 -48
- package/components/rancherSortableTable/index.vue +0 -2712
- package/components/rancherSortableTable/paging.js +0 -155
- package/components/rancherSortableTable/selection.js +0 -629
- package/components/rancherSortableTable/sortable-config.ts +0 -4
- package/components/rancherSortableTable/sorting.js +0 -129
- package/types/cloud-shell/index.d.ts +0 -11014
- /package/components/{rancherResourceList → ResourceList}/Masthead-btn.vue +0 -0
|
@@ -290,7 +290,7 @@ export default {
|
|
|
290
290
|
</script>
|
|
291
291
|
|
|
292
292
|
<template>
|
|
293
|
-
|
|
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
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
>
|
|
336
|
-
<!-- <div
|
|
337
|
-
:class="{ 'labeled-container': true, raised, empty, [mode]: true }"
|
|
338
|
-
:style="{ border: 'none' }"
|
|
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"
|
|
339
335
|
>
|
|
340
|
-
<
|
|
341
|
-
|
|
342
|
-
:
|
|
336
|
+
<!-- <div
|
|
337
|
+
:class="{ 'labeled-container': true, raised, empty, [mode]: true }"
|
|
338
|
+
:style="{ border: 'none' }"
|
|
343
339
|
>
|
|
344
|
-
<
|
|
345
|
-
v-if="
|
|
346
|
-
:
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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) }}
|
|
398
424
|
<i
|
|
399
|
-
v-if="option.
|
|
400
|
-
class="icon"
|
|
401
|
-
|
|
425
|
+
v-if="option.error"
|
|
426
|
+
class="icon icon-warning pull-right"
|
|
427
|
+
style="font-size: 20px;"
|
|
402
428
|
/>
|
|
403
|
-
<b>{{ getOptionLabel(option) }}</b>
|
|
404
|
-
<div v-if="option.badge">
|
|
405
|
-
{{ option.badge }}
|
|
406
|
-
</div>
|
|
407
429
|
</div>
|
|
408
430
|
</template>
|
|
409
|
-
<!--
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
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)"
|
|
431
|
+
<!-- Pass down templates provided by the caller -->
|
|
432
|
+
<template
|
|
433
|
+
v-for="(_, slot) of $slots"
|
|
434
|
+
:key="slot"
|
|
435
|
+
#[slot]="scope"
|
|
422
436
|
>
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
v-
|
|
426
|
-
class="icon icon-warning pull-right"
|
|
427
|
-
style="font-size: 20px;"
|
|
437
|
+
<slot
|
|
438
|
+
:name="slot"
|
|
439
|
+
v-bind="scope"
|
|
428
440
|
/>
|
|
429
|
-
</
|
|
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>
|
|
441
|
+
</template>
|
|
442
442
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
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>
|
|
458
459
|
</div>
|
|
459
|
-
</div>
|
|
460
460
|
|
|
461
|
-
|
|
462
|
-
|
|
461
|
+
<div class="count">
|
|
462
|
+
{{ optionCounts }}
|
|
463
|
+
</div>
|
|
463
464
|
</div>
|
|
464
|
-
</
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
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>
|
|
476
483
|
</div>
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
/>
|
|
496
|
-
<LabeledTooltip
|
|
497
|
-
v-if="!!validationMessage"
|
|
498
|
-
:hover="hoverTooltip"
|
|
499
|
-
:value="validationMessage"
|
|
500
|
-
/>
|
|
501
|
-
</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,11 +232,10 @@ export default {
|
|
|
232
232
|
v-else
|
|
233
233
|
class="cluster-permissions-editor"
|
|
234
234
|
>
|
|
235
|
-
<div class="row mt-10">
|
|
235
|
+
<div class="row mt-10 mb-20">
|
|
236
236
|
<div class="col span-12">
|
|
237
237
|
<SelectPrincipal
|
|
238
238
|
v-focus
|
|
239
|
-
class="mb-20"
|
|
240
239
|
:mode="mode"
|
|
241
240
|
:retain-selection="true"
|
|
242
241
|
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">
|
|
173
|
+
<div class="column-headers row" style="width: 95%;">
|
|
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-
|
|
359
|
+
return `span-5`;
|
|
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,12 +430,17 @@ export default {
|
|
|
430
430
|
|
|
431
431
|
<template>
|
|
432
432
|
<div class="row">
|
|
433
|
+
|
|
434
|
+
<!-- 命名空间创建输入框 -->
|
|
433
435
|
<div
|
|
434
436
|
v-if="namespaced && !nameNsHidden && createNamespace"
|
|
435
437
|
:data-testid="componentTestid + '-namespace-create'"
|
|
436
|
-
class="col span-
|
|
437
|
-
:class=" isDialog? 'namespace-item-row mb-20': 'col span-
|
|
438
|
+
class="col span-5"
|
|
439
|
+
:class=" isDialog? 'namespace-item-row mb-20': 'col span-5'"
|
|
440
|
+
style="display: flex;"
|
|
438
441
|
>
|
|
442
|
+
|
|
443
|
+
<!-- 输入命名空间名称 -->
|
|
439
444
|
<LabeledInput
|
|
440
445
|
ref="namespaceInput"
|
|
441
446
|
v-model:value="namespace"
|
|
@@ -447,6 +452,8 @@ export default {
|
|
|
447
452
|
:required="nameRequired"
|
|
448
453
|
:rules="rules.namespace"
|
|
449
454
|
/>
|
|
455
|
+
|
|
456
|
+
<!-- 取消创建命名空间按钮 -->
|
|
450
457
|
<button
|
|
451
458
|
aria="Cancel create"
|
|
452
459
|
@click="cancelCreateNamespace"
|
|
@@ -457,10 +464,12 @@ export default {
|
|
|
457
464
|
/>
|
|
458
465
|
</button>
|
|
459
466
|
</div>
|
|
467
|
+
|
|
468
|
+
<!-- 命名空间选择下拉框 -->
|
|
460
469
|
<div
|
|
461
470
|
v-if="namespaced && !nameNsHidden && !createNamespace"
|
|
462
471
|
:data-testid="componentTestid + '-namespace'"
|
|
463
|
-
:class=" isDialog? 'namespace-item-row mb-20': 'col span-
|
|
472
|
+
:class=" isDialog? 'namespace-item-row mb-20': 'col span-5'"
|
|
464
473
|
>
|
|
465
474
|
<LabeledSelect
|
|
466
475
|
v-show="!createNamespace"
|
|
@@ -479,6 +488,7 @@ export default {
|
|
|
479
488
|
/>
|
|
480
489
|
</div>
|
|
481
490
|
|
|
491
|
+
<!-- 名称输入框 -->
|
|
482
492
|
<div
|
|
483
493
|
v-if="!nameNsHidden"
|
|
484
494
|
:data-testid="componentTestid + '-name'"
|
|
@@ -499,12 +509,15 @@ export default {
|
|
|
499
509
|
/>
|
|
500
510
|
</div>
|
|
501
511
|
|
|
512
|
+
<!-- 自定义插槽,可插入额外内容 -->
|
|
502
513
|
<slot name="customize" />
|
|
503
514
|
<!-- <div
|
|
504
515
|
v-show="!descriptionHidden"
|
|
505
516
|
:data-testid="componentTestid + '-description'"
|
|
506
|
-
:class="['col', extraColumns.length > 0 ? 'span-3' : 'span-
|
|
517
|
+
:class="['col', extraColumns.length > 0 ? 'span-3' : 'span-5']"
|
|
507
518
|
> -->
|
|
519
|
+
|
|
520
|
+
<!-- 额外的动态列 -->
|
|
508
521
|
<div
|
|
509
522
|
v-for="(slot, i) in extraColumns"
|
|
510
523
|
:key="i"
|
|
@@ -512,6 +525,8 @@ export default {
|
|
|
512
525
|
>
|
|
513
526
|
<slot :name="slot" />
|
|
514
527
|
</div>
|
|
528
|
+
|
|
529
|
+
<!-- 描述输入框 -->
|
|
515
530
|
<div
|
|
516
531
|
v-show="!descriptionHidden"
|
|
517
532
|
:data-testid="componentTestid + '-description'"
|
|
@@ -529,12 +544,15 @@ export default {
|
|
|
529
544
|
/>
|
|
530
545
|
</div>
|
|
531
546
|
|
|
547
|
+
<!-- 底部插槽 -->
|
|
532
548
|
<div
|
|
533
549
|
v-if="$slots.bottom"
|
|
534
550
|
style="width: 100%;"
|
|
535
551
|
>
|
|
536
552
|
<slot name="bottom" />
|
|
537
553
|
</div>
|
|
554
|
+
|
|
555
|
+
<!-- 间隔占位符 -->
|
|
538
556
|
<div
|
|
539
557
|
v-if="showSpacer"
|
|
540
558
|
class="spacer"
|
|
@@ -545,13 +563,8 @@ export default {
|
|
|
545
563
|
<style lang="scss" scoped>
|
|
546
564
|
button {
|
|
547
565
|
all: unset;
|
|
548
|
-
height: 0;
|
|
549
|
-
position: relative;
|
|
550
|
-
top: -35px;
|
|
551
|
-
float: right;
|
|
552
|
-
margin-right: 7px;
|
|
553
|
-
|
|
554
566
|
cursor: pointer;
|
|
567
|
+
margin-left: 10px;
|
|
555
568
|
|
|
556
569
|
.align-value {
|
|
557
570
|
padding-top: 7px;
|
|
@@ -153,12 +153,13 @@ export default {
|
|
|
153
153
|
</LabeledInput>
|
|
154
154
|
<div
|
|
155
155
|
v-if="isRandom"
|
|
156
|
-
class="
|
|
156
|
+
class="genPassword"
|
|
157
157
|
>
|
|
158
158
|
<a
|
|
159
159
|
href="#"
|
|
160
160
|
@click.prevent.stop="generatePassword"
|
|
161
|
-
|
|
161
|
+
style="height: 32px;display: flex;align-items: center;"
|
|
162
|
+
><i class="icon icon-refresh mr-5 pl-5" /> {{ t('changePassword.newGeneratedPassword') }}</a>
|
|
162
163
|
</div>
|
|
163
164
|
</div>
|
|
164
165
|
</template>
|
|
@@ -170,6 +171,9 @@ export default {
|
|
|
170
171
|
|
|
171
172
|
.labeled-input {
|
|
172
173
|
.addon {
|
|
174
|
+
position: absolute;
|
|
175
|
+
top: 6px;
|
|
176
|
+
right: 6px;
|
|
173
177
|
/* display: flex;
|
|
174
178
|
align-items: center;
|
|
175
179
|
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:
|
|
81
|
+
<div style="width: 500px;">
|
|
82
82
|
<label>{{ t('resourceQuota.headers.limit') }}</label>
|
|
83
83
|
</div>
|
|
84
84
|
</div>
|
|
@@ -190,16 +190,18 @@ export default {
|
|
|
190
190
|
:color-stops="{'100': '--primary'}"
|
|
191
191
|
/>
|
|
192
192
|
</div>
|
|
193
|
-
<
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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>
|
|
203
205
|
</div>
|
|
204
206
|
</template>
|
|
205
207
|
|
|
@@ -208,6 +210,7 @@ export default {
|
|
|
208
210
|
align-self: center;
|
|
209
211
|
}
|
|
210
212
|
.rowNew {
|
|
213
|
+
margin-bottom: 10px;
|
|
211
214
|
display: flex;
|
|
212
215
|
justify-content: space-between;
|
|
213
216
|
|
|
@@ -44,9 +44,13 @@ export default {
|
|
|
44
44
|
|
|
45
45
|
<style lang="scss" scoped>
|
|
46
46
|
.favorite {
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
47
49
|
position: relative;
|
|
48
50
|
cursor: pointer;
|
|
49
|
-
font-size:
|
|
51
|
+
font-size: 22px;
|
|
52
|
+
margin-top: 4px;
|
|
53
|
+
margin-left: 10px;
|
|
50
54
|
transform: ease-in-out-all 1s;
|
|
51
55
|
|
|
52
56
|
&.icon-star-open {
|