dashboard-shell-shell 3.0.5-test.13 → 3.0.5-test.14

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 (67) hide show
  1. package/assets/styles/global/_select.scss +1 -1
  2. package/assets/translations/zh-hans.yaml +4 -3
  3. package/components/Drawer/ResourceDetailDrawer/index.vue +2 -2
  4. package/components/ExplorerMembers.vue +10 -1
  5. package/components/SortableTable/index.vue +2 -2
  6. package/components/Tabbed/index.vue +5 -1
  7. package/components/auth/Principal.vue +1 -0
  8. package/components/form/ArrayList.vue +162 -146
  9. package/components/form/Command.vue +4 -5
  10. package/components/form/Footer.vue +1 -0
  11. package/components/form/HealthCheck.vue +0 -2
  12. package/components/form/HookOption.vue +83 -58
  13. package/components/form/InputWithSelect.vue +8 -7
  14. package/components/form/KeyValue.vue +1 -0
  15. package/components/form/MatchExpressions.vue +1 -2
  16. package/components/form/Networking.vue +0 -1
  17. package/components/form/NodeAffinity.vue +29 -28
  18. package/components/form/PodAffinity.vue +19 -21
  19. package/components/form/Probe.vue +15 -11
  20. package/components/form/ResourceSelector.vue +1 -1
  21. package/components/form/ServiceNameSelect.vue +1 -3
  22. package/components/form/ServicePorts.vue +149 -75
  23. package/components/form/Tolerations.vue +12 -9
  24. package/components/form/ValueFromResource.vue +110 -96
  25. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  26. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  27. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  28. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  29. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  30. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  31. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  32. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  33. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  34. package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
  35. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  36. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  37. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  38. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  39. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  40. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  41. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  42. package/edit/secret/index.vue +2 -2
  43. package/edit/service.vue +4 -1
  44. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  45. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  46. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  47. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  48. package/edit/workload/Job.vue +27 -29
  49. package/edit/workload/Upgrading.vue +3 -3
  50. package/edit/workload/index.vue +2 -2
  51. package/edit/workload/storage/Mount.vue +1 -0
  52. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  53. package/edit/workload/storage/azureDisk.vue +14 -10
  54. package/edit/workload/storage/azureFile.vue +9 -7
  55. package/edit/workload/storage/csi/index.vue +6 -9
  56. package/edit/workload/storage/emptyDir.vue +7 -5
  57. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  58. package/edit/workload/storage/hostPath.vue +7 -5
  59. package/edit/workload/storage/nfs.vue +8 -6
  60. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  61. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +18 -15
  62. package/edit/workload/storage/secret.vue +9 -6
  63. package/edit/workload/storage/vsphereVolume.vue +11 -7
  64. package/package.json +1 -1
  65. package/pages/account/index.vue +10 -0
  66. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
  67. package/store/i18n.js +1 -0
@@ -56,7 +56,7 @@
56
56
 
57
57
  .vs__dropdown-toggle{
58
58
  border: solid var(--border-width) var(--input-border);
59
- height: 32px;
59
+ height: 30px;
60
60
  }
61
61
  // .vs__dropdown-toggle,
62
62
  .vs__dropdown-toggle > * {
@@ -216,7 +216,7 @@ product:
216
216
  backup: Rancher 备份
217
217
  cis: CIS Benchmark
218
218
  ecm: Cluster Manager
219
- explorer: 集群浏览器
219
+ explorer: 控制台
220
220
  fleet: 持续交付
221
221
  longhorn: Longhorn
222
222
  manager: 集群管理
@@ -5642,6 +5642,7 @@ tableHeaders:
5642
5642
  volume: 卷
5643
5643
  volumeMode: 卷模式
5644
5644
  weight: 权重
5645
+ action: 操作
5645
5646
  target:
5646
5647
  router:
5647
5648
  label: 路由
@@ -6161,7 +6162,7 @@ workload:
6161
6162
  replicas: 副本数量
6162
6163
  showTabs: '显示高级选项'
6163
6164
  scheduling:
6164
- activeDeadlineSeconds: 判定 Pod 是否活跃的截止时间
6165
+ activeDeadlineSeconds: 判定Pod是否活跃的截止时间
6165
6166
  activeDeadlineSecondsTip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
6166
6167
  affinity:
6167
6168
  addNodeSelector: 添加节点选择器
@@ -6331,7 +6332,7 @@ workload:
6331
6332
  pod: Pod 是你可以在 Kubernetes 中创建和管理的最小可部署计算单元。Pod 是一个或多个容器,具有共享的存储和网络资源以及运行容器的规范。
6332
6333
  upgrading:
6333
6334
  activeDeadlineSeconds:
6334
- label: 判定 Pod 是否活跃的截止时间
6335
+ label: 判定Pod是否活跃的截止时间
6335
6336
  tip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
6336
6337
  concurrencyPolicy:
6337
6338
  label: 并发
@@ -87,10 +87,10 @@ const canEdit = computed(() => {
87
87
  v-if="configTabProps"
88
88
  v-bind="configTabProps"
89
89
  />
90
- <!-- <YamlTab
90
+ <YamlTab
91
91
  v-if="yamlTabProps"
92
92
  v-bind="yamlTabProps"
93
- /> -->
93
+ />
94
94
  </Tabbed>
95
95
  </template>
96
96
  <template #additional-actions>
@@ -115,6 +115,10 @@ export default {
115
115
  labelKey: 'tableHeaders.role',
116
116
  value: 'roleTemplate.nameDisplay'
117
117
  },
118
+ {
119
+ name: '操作',
120
+ labelKey: 'tableHeaders.action',
121
+ },
118
122
  ],
119
123
  loadingProjectBindings: true,
120
124
  loadingClusterBindings: true
@@ -361,12 +365,13 @@ export default {
361
365
  v-trim-whitespace
362
366
  class="group-tab"
363
367
  >
368
+
364
369
  <div
365
370
  v-clean-html="getProjectLabel(group)"
366
371
  class="project-name"
367
372
  />
368
373
  </div>
369
- <div class="right">
374
+ <div class="right" style="margin-right: 80px;">
370
375
  <button
371
376
  v-if="canEditProjectMembers"
372
377
  type="button"
@@ -460,8 +465,12 @@ export default {
460
465
  & :deep() .group-bar{
461
466
  display: flex;
462
467
  justify-content: space-between;
468
+ align-items: center;
463
469
  }
464
470
  }
471
+ .role-secondary.btn-sm:focus, .role-secondary.btn-sm.focused{
472
+ border: 1px solid #d7d7d7;
473
+ }
465
474
  .cluster-add {
466
475
  justify-content: flex-end;
467
476
  }
@@ -1841,7 +1841,7 @@ export default {
1841
1841
  class="paging"
1842
1842
  >
1843
1843
  <div style="height: 100%; align-content: center;">
1844
- 共 {{ filteredRows?.length }} 条
1844
+ 共 {{ filteredRows ? filteredRows.length : 0 }} 条
1845
1845
  </div>
1846
1846
 
1847
1847
  <button
@@ -2217,7 +2217,7 @@ export default {
2217
2217
 
2218
2218
  tbody {
2219
2219
  tr {
2220
- border-bottom: 1px solid var(--sortable-table-top-divider);
2220
+ border-bottom: 1px solid var(--sortable-table-top-divider) !important;
2221
2221
  background-color: var(--sortable-table-row-bg);
2222
2222
 
2223
2223
  &.main-row.has-sub-row {
@@ -384,7 +384,7 @@ export default {
384
384
 
385
385
  &.horizontal {
386
386
  border: solid thin var(--border);
387
- border-bottom: 0;
387
+ // border-bottom: 0;
388
388
  display: flex;
389
389
  flex-direction: row;
390
390
 
@@ -504,6 +504,8 @@ margin: 0px -20px;
504
504
  display: flex;
505
505
  border-bottom:1px solid #d7d7d7;
506
506
  padding: 0 0 0 20px;
507
+ overflow: auto;
508
+ overflow-y: hidden;
507
509
  /* flex: 1 0; */
508
510
  /* flex-direction: column; */
509
511
 
@@ -571,6 +573,8 @@ margin: 0px -20px;
571
573
  li {
572
574
  display: flex;
573
575
  flex: 1;
576
+ border-left: 1px solid var(--border);
577
+ border-right: 1px solid var(--border);
574
578
 
575
579
  .btn {
576
580
  flex: 1 1;
@@ -214,6 +214,7 @@ export default {
214
214
  .avatar {
215
215
  /* grid-area: avatar;
216
216
  text-align: center; */
217
+ // width: 287px;
217
218
  display: flex;
218
219
  justify-content: center;
219
220
  align-items: center;
@@ -263,174 +263,181 @@ export default {
263
263
  role="group"
264
264
  :aria-label="title || t('generic.ariaLabel.arrayList')"
265
265
  >
266
- <div
267
- v-if="title"
268
- class="clearfix"
269
- role="group"
270
- >
271
- <slot name="title">
272
- <h3>
273
- {{ title }}
274
- <span
275
- v-if="required"
276
- class="required"
277
- aria-hidden="true"
278
- >*</span>
279
- <i
280
- v-if="showProtip"
281
- v-clean-tooltip="{content: protip, triggers: ['hover', 'touch', 'focus'] }"
282
- class="icon icon-info"
283
- tabindex="0"
284
- />
285
- </h3>
286
- </slot>
287
- </div>
288
266
 
289
- <div>
290
- <div
291
- v-if="showAdd && !isView"
292
- class="footer mmt-6"
293
- >
294
- <slot
295
- v-if="showAdd"
296
- name="add"
297
- :add="add"
298
- >
299
- <button
300
- type="button"
301
- class="btn role-tertiary add"
302
- :class="[addClass]"
303
- :disabled="loading || disableAdd"
304
- :data-testid="`${componentTestid}-button`"
305
- :aria-label="_addLabel"
306
- role="button"
307
- @click="add()"
308
- >
309
- <i
310
- class="mr-5 icon"
311
- :class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
312
- />
313
- {{ _addLabel }}
314
- </button>
315
- </slot>
316
- </div>
317
- <template v-if="rows.length">
267
+ <div class="row">
268
+ <div class="col">
318
269
  <div
319
- v-if="showHeader"
320
- class="array-list-header-group"
270
+ v-if="title"
271
+ class="clearfix"
321
272
  role="group"
322
273
  >
323
- <slot name="column-headers">
324
- <label class="value text-label mb-10">
325
- {{ valueLabel }}
326
- </label>
274
+ <slot name="title">
275
+ <h3>
276
+ {{ title }}
277
+ <span
278
+ v-if="required"
279
+ class="required"
280
+ aria-hidden="true"
281
+ >*</span>
282
+ <i
283
+ v-if="showProtip"
284
+ v-clean-tooltip="{content: protip, triggers: ['hover', 'touch', 'focus'] }"
285
+ class="icon icon-info"
286
+ tabindex="0"
287
+ />
288
+ </h3>
327
289
  </slot>
328
290
  </div>
329
- <div
330
- v-for="(row, idx) in rows"
331
- :key="idx"
332
- :data-testid="`${componentTestid}-box${ idx }`"
333
- class="box"
334
- :class="{'hide-remove-is-view': isView}"
335
- role="group"
336
- >
337
- <slot
338
- name="columns"
339
- :queueUpdate="queueUpdate"
340
- :i="idx"
341
- :rows="rows"
342
- :row="row"
343
- :mode="mode"
344
- :isView="isView"
345
- >
346
- <div class="value">
291
+ </div>
292
+ <div class="col">
293
+ <div>
294
+ <template v-if="rows.length">
295
+ <div
296
+ v-if="showHeader"
297
+ class="array-list-header-group"
298
+ role="group"
299
+ >
300
+ <slot name="column-headers">
301
+ <label class="value text-label mb-10">
302
+ {{ valueLabel }}
303
+ </label>
304
+ </slot>
305
+ </div>
306
+ <div
307
+ v-for="(row, idx) in rows"
308
+ :key="idx"
309
+ :data-testid="`${componentTestid}-box${ idx }`"
310
+ class="box"
311
+ :class="{'hide-remove-is-view': isView}"
312
+ role="group"
313
+ >
347
314
  <slot
348
- name="value"
315
+ name="columns"
316
+ :queueUpdate="queueUpdate"
317
+ :i="idx"
318
+ :rows="rows"
349
319
  :row="row"
350
320
  :mode="mode"
351
321
  :isView="isView"
352
- :queue-update="queueUpdate"
353
322
  >
354
- <TextAreaAutoGrow
355
- v-if="valueMultiline"
356
- ref="value"
357
- v-model:value="row.value"
358
- :data-testid="`${componentTestid}-textarea-${idx}`"
359
- :placeholder="valuePlaceholder"
360
- :mode="mode"
361
- :disabled="disabled"
362
- :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
363
- @paste="onPaste(idx, $event)"
364
- @update:value="queueUpdate"
365
- />
366
- <LabeledInput
367
- v-else-if="rules.length > 0"
368
- ref="value"
369
- v-model:value="row.value"
370
- :data-testid="`${componentTestid}-labeled-input-${idx}`"
371
- :placeholder="valuePlaceholder"
372
- :disabled="isView || disabled"
373
- :rules="rules"
374
- :compact="false"
375
- :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
376
- @paste="onPaste(idx, $event)"
377
- @update:value="queueUpdate"
378
- />
379
- <input
380
- v-else
381
- ref="value"
382
- v-model="row.value"
383
- :data-testid="`${componentTestid}-input-${idx}`"
384
- :placeholder="valuePlaceholder"
385
- :disabled="isView || disabled"
386
- :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
387
- @paste="onPaste(idx, $event)"
388
- >
323
+ <div class="value">
324
+ <slot
325
+ name="value"
326
+ :row="row"
327
+ :mode="mode"
328
+ :isView="isView"
329
+ :queue-update="queueUpdate"
330
+ >
331
+ <TextAreaAutoGrow
332
+ v-if="valueMultiline"
333
+ ref="value"
334
+ v-model:value="row.value"
335
+ :data-testid="`${componentTestid}-textarea-${idx}`"
336
+ :placeholder="valuePlaceholder"
337
+ :mode="mode"
338
+ :disabled="disabled"
339
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
340
+ @paste="onPaste(idx, $event)"
341
+ @update:value="queueUpdate"
342
+ />
343
+ <LabeledInput
344
+ v-else-if="rules.length > 0"
345
+ ref="value"
346
+ v-model:value="row.value"
347
+ :data-testid="`${componentTestid}-labeled-input-${idx}`"
348
+ :placeholder="valuePlaceholder"
349
+ :disabled="isView || disabled"
350
+ :rules="rules"
351
+ :compact="false"
352
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
353
+ @paste="onPaste(idx, $event)"
354
+ @update:value="queueUpdate"
355
+ />
356
+ <input
357
+ v-else
358
+ ref="value"
359
+ v-model="row.value"
360
+ :data-testid="`${componentTestid}-input-${idx}`"
361
+ :placeholder="valuePlaceholder"
362
+ :disabled="isView || disabled"
363
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
364
+ @paste="onPaste(idx, $event)"
365
+ >
366
+ </slot>
367
+ </div>
389
368
  </slot>
369
+ <div
370
+ v-if="showRemove && !isView"
371
+ class="remove"
372
+ >
373
+ <slot
374
+ name="remove-button"
375
+ :remove="() => remove(row, idx)"
376
+ :i="idx"
377
+ :row="row"
378
+ >
379
+ <button
380
+ type="button"
381
+ :disabled="isView"
382
+ class="btn role-link"
383
+ :data-testid="`${componentTestid}-remove-item-${idx}`"
384
+ :aria-label="t('generic.ariaLabel.remove', {index: idx+1})"
385
+ role="button"
386
+ @click="remove(row, idx)"
387
+ >
388
+ {{ _removeLabel }}
389
+ </button>
390
+ </slot>
391
+ </div>
392
+ <slot
393
+ name="value-sub-row"
394
+ :row="row"
395
+ :mode="mode"
396
+ :isView="isView"
397
+ />
390
398
  </div>
391
- </slot>
399
+ </template>
400
+ <div v-else>
401
+ <slot name="empty">
402
+ <div
403
+ v-if="mode==='view'"
404
+ class="text-muted"
405
+ >
406
+ &mdash;
407
+ </div>
408
+ </slot>
409
+ </div>
392
410
  <div
393
- v-if="showRemove && !isView"
394
- class="remove"
411
+ v-if="showAdd && !isView"
412
+ class="footer"
395
413
  >
396
414
  <slot
397
- name="remove-button"
398
- :remove="() => remove(row, idx)"
399
- :i="idx"
400
- :row="row"
415
+ v-if="showAdd"
416
+ name="add"
417
+ :add="add"
401
418
  >
402
419
  <button
403
420
  type="button"
404
- :disabled="isView"
405
- class="btn role-link"
406
- :data-testid="`${componentTestid}-remove-item-${idx}`"
407
- :aria-label="t('generic.ariaLabel.remove', {index: idx+1})"
421
+ class="btn role-tertiary add"
422
+ :class="[addClass]"
423
+ :disabled="loading || disableAdd"
424
+ :data-testid="`${componentTestid}-button`"
425
+ :aria-label="_addLabel"
408
426
  role="button"
409
- @click="remove(row, idx)"
427
+ @click="add()"
410
428
  >
411
- {{ _removeLabel }}
429
+ <i
430
+ class="mr-5 icon"
431
+ :class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
432
+ />
433
+ {{ _addLabel }}
412
434
  </button>
413
435
  </slot>
414
436
  </div>
415
- <slot
416
- name="value-sub-row"
417
- :row="row"
418
- :mode="mode"
419
- :isView="isView"
420
- />
421
437
  </div>
422
- </template>
423
- <div v-else>
424
- <slot name="empty">
425
- <div
426
- v-if="mode==='view'"
427
- class="text-muted"
428
- >
429
- &mdash;
430
- </div>
431
- </slot>
432
438
  </div>
433
439
  </div>
440
+
434
441
  </div>
435
442
  </template>
436
443
 
@@ -444,13 +451,15 @@ export default {
444
451
  }
445
452
 
446
453
  .box {
447
- display: grid;
448
- grid-template-columns: auto $array-list-remove-margin;
449
- align-items: center;
450
- margin-bottom: 10px;
454
+ // display: grid;
455
+ // grid-template-columns: auto $array-list-remove-margin;
456
+ // align-items: center;
457
+ // margin-bottom: 10px;
458
+ display: flex;
451
459
  .value {
452
- flex: 1;
460
+ // flex: 1;
453
461
  INPUT {
462
+ width: $input-width;
454
463
  height: $input-height;
455
464
  border: solid var(--border-width) var(--input-border);
456
465
  padding: 4px 11px;
@@ -462,6 +471,10 @@ export default {
462
471
  }
463
472
  .remove {
464
473
  text-align: right;
474
+
475
+ button{
476
+ min-width: auto;
477
+ }
465
478
  }
466
479
  .footer {
467
480
  margin-bottom: 20px;
@@ -481,4 +494,7 @@ export default {
481
494
  margin-bottom: 10px;
482
495
  }
483
496
 
497
+ H3{
498
+ width: 160px;
499
+ }
484
500
  </style>
@@ -146,9 +146,9 @@ export default {
146
146
  </div>
147
147
  </div>
148
148
 
149
- <div class="row mt-20">
149
+ <div class="row">
150
150
  <div
151
- class="col span-6"
151
+ class="span-6"
152
152
  data-testid="input-command-workingDir"
153
153
  >
154
154
  <LabeledInput
@@ -159,13 +159,13 @@ export default {
159
159
  @update:value="update"
160
160
  />
161
161
  </div>
162
- <div class="col span-6">
162
+ <div class="span-6">
163
163
  <div
164
164
  :style="{ 'align-items': 'center' }"
165
165
  class="row"
166
166
  >
167
167
  <div
168
- class="col span-6"
168
+ class="col"
169
169
  data-testid="input-command-stdin"
170
170
  >
171
171
  <LabeledSelect
@@ -191,7 +191,6 @@ export default {
191
191
  </div>
192
192
  </div>
193
193
  </div>
194
- <div class="spacer" />
195
194
  <h3>{{ t('workload.container.titles.env') }}</h3>
196
195
  <EnvVars
197
196
  :mode="mode"
@@ -105,6 +105,7 @@ export default defineComponent({
105
105
  .left {
106
106
  grid-area: left;
107
107
  text-align: left;
108
+ margin-right: 10px;
108
109
 
109
110
  .btn, button {
110
111
  margin: 0 $column-gutter 0 0;
@@ -56,7 +56,6 @@ export default {
56
56
  />
57
57
  </div>
58
58
  </div>
59
- <div class="spacer" />
60
59
 
61
60
  <div>
62
61
  <div class="row">
@@ -70,7 +69,6 @@ export default {
70
69
  />
71
70
  </div>
72
71
  </div>
73
- <div class="spacer" />
74
72
 
75
73
  <div class="row">
76
74
  <Probe