dashboard-shell-shell 3.0.5-test.2 → 3.0.5-test.21

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 (145) hide show
  1. package/assets/icons/iconfont.css +4 -1
  2. package/assets/images/pl/dark/logo.png +0 -0
  3. package/assets/styles/all.scss +3 -1
  4. package/assets/styles/base/_variables.scss +5 -5
  5. package/assets/styles/global/_button.scss +8 -8
  6. package/assets/styles/global/_select.scss +1 -1
  7. package/assets/styles/global/_tooltip.scss +9 -5
  8. package/assets/styles/themes/_light.scss +3 -1
  9. package/assets/styles/vendor/vue-select.scss +2 -1
  10. package/assets/translations/zh-hans.yaml +140 -11
  11. package/components/ActionDropdown.vue +1 -1
  12. package/components/ButtonDropdown.vue +3 -1
  13. package/components/CodeMirror.vue +6 -4
  14. package/components/ContainerResourceLimit.vue +2 -2
  15. package/components/CopyToClipboard.vue +15 -0
  16. package/components/Drawer/Chrome.vue +2 -2
  17. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  18. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  19. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  20. package/components/ExplorerMembers.vue +28 -4
  21. package/components/GlobalRoleBindings.vue +48 -112
  22. package/components/PodSecurityAdmission.vue +1 -1
  23. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  24. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  25. package/components/Resource/Detail/Metadata/index.vue +3 -1
  26. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  27. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  28. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  29. package/components/Resource/Detail/TitleBar/index.vue +113 -25
  30. package/components/ResourceDetail/Masthead/index.vue +1 -1
  31. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  32. package/components/ResourceDetail/Masthead/legacy.vue +236 -165
  33. package/components/ResourceDetail/legacy.vue +44 -28
  34. package/components/ResourceList/Masthead.vue +11 -15
  35. package/components/SideNav.vue +1 -1
  36. package/components/SortableTable/index.vue +9 -4
  37. package/components/Tabbed/index.vue +6 -1
  38. package/components/auth/Principal.vue +42 -13
  39. package/components/auth/RoleDetailEdit.vue +11 -7
  40. package/components/breadcrumb/index.vue +124 -0
  41. package/components/form/ArrayList.vue +164 -147
  42. package/components/form/ArrayListGrouped.vue +3 -1
  43. package/components/form/ChangePassword.vue +1 -1
  44. package/components/form/Command.vue +4 -5
  45. package/components/form/Footer.vue +1 -0
  46. package/components/form/HealthCheck.vue +0 -2
  47. package/components/form/HookOption.vue +87 -58
  48. package/components/form/InputWithSelect.vue +8 -7
  49. package/components/form/KeyValue.vue +20 -2
  50. package/components/form/LabeledSelect.vue +6 -3
  51. package/components/form/Labels.vue +2 -2
  52. package/components/form/MatchExpressions.vue +3 -4
  53. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  54. package/components/form/Members/ClusterPermissionsEditor.vue +5 -5
  55. package/components/form/Members/MembershipEditor.vue +2 -2
  56. package/components/form/NameNsDescription.vue +1 -1
  57. package/components/form/Networking.vue +6 -9
  58. package/components/form/NodeAffinity.vue +29 -28
  59. package/components/form/PodAffinity.vue +23 -23
  60. package/components/form/Probe.vue +15 -11
  61. package/components/form/ResourceQuota/Namespace.vue +4 -4
  62. package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
  63. package/components/form/ResourceQuota/Project.vue +4 -4
  64. package/components/form/ResourceQuota/ProjectRow.vue +36 -30
  65. package/components/form/ResourceSelector.vue +1 -1
  66. package/components/form/Security.vue +1 -3
  67. package/components/form/Select.vue +6 -1
  68. package/components/form/ServiceNameSelect.vue +2 -5
  69. package/components/form/ServicePorts.vue +149 -75
  70. package/components/form/Taints.vue +2 -1
  71. package/components/form/Tolerations.vue +12 -9
  72. package/components/form/ValueFromResource.vue +110 -96
  73. package/components/form/WorkloadPorts.vue +143 -123
  74. package/components/nav/Header.vue +3 -4
  75. package/components/nav/NamespaceFilter.vue +15 -21
  76. package/components/nav/TopLevelMenu.vue +99 -125
  77. package/components/nav/Type.vue +3 -3
  78. package/config/product/explorer.js +4 -1
  79. package/config/router/navigation-guards/index.js +52 -3
  80. package/detail/node.vue +28 -23
  81. package/dialog/AddCustomBadgeDialog.vue +17 -9
  82. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  83. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  84. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  85. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  86. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  87. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  88. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  89. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  90. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  91. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  92. package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
  93. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  94. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  95. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  96. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  97. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  98. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  99. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  100. package/edit/persistentvolume/index.vue +3 -1
  101. package/edit/persistentvolumeclaim.vue +2 -0
  102. package/edit/secret/index.vue +2 -2
  103. package/edit/service.vue +4 -1
  104. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  105. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  106. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  107. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  108. package/edit/workload/Job.vue +31 -34
  109. package/edit/workload/Upgrading.vue +5 -5
  110. package/edit/workload/index.vue +21 -17
  111. package/edit/workload/storage/Mount.vue +1 -0
  112. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  113. package/edit/workload/storage/azureDisk.vue +14 -10
  114. package/edit/workload/storage/azureFile.vue +9 -7
  115. package/edit/workload/storage/csi/index.vue +6 -9
  116. package/edit/workload/storage/emptyDir.vue +7 -5
  117. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  118. package/edit/workload/storage/hostPath.vue +7 -5
  119. package/edit/workload/storage/nfs.vue +8 -6
  120. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  121. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  122. package/edit/workload/storage/secret.vue +9 -6
  123. package/edit/workload/storage/vsphereVolume.vue +11 -7
  124. package/initialize/app-extended.js +7 -1
  125. package/package.json +1 -1
  126. package/pages/account/index.vue +95 -115
  127. package/pages/auth/setup.vue +35 -16
  128. package/pages/c/_cluster/auth/roles/index.vue +38 -5
  129. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  130. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  131. package/pages/home.vue +3 -4
  132. package/pkg/tsconfig.json +9 -9
  133. package/pkg/vue.config.js +1 -1
  134. package/plugins/dashboard-store/resource-class.js +28 -27
  135. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  136. package/rancher-components/Banner/Banner.vue +6 -3
  137. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
  138. package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
  139. package/scripts/publish-shell.sh +1 -1
  140. package/store/i18n.js +4 -0
  141. package/store/type-map.js +1 -1
  142. package/types/shell/index.d.ts +4 -30
  143. package/utils/error.js +3 -1
  144. package/utils/errorTranslate.json +247 -2
  145. package/vue.config.js +1 -1
@@ -263,174 +263,180 @@ 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 v-if="title" style="width: 100%;" class="col">
318
269
  <div
319
- v-if="showHeader"
320
- class="array-list-header-group"
270
+ class="clearfix"
321
271
  role="group"
322
272
  >
323
- <slot name="column-headers">
324
- <label class="value text-label mb-10">
325
- {{ valueLabel }}
326
- </label>
273
+ <slot name="title">
274
+ <h3>
275
+ {{ title }}
276
+ <span
277
+ v-if="required"
278
+ class="required"
279
+ aria-hidden="true"
280
+ >*</span>
281
+ <i
282
+ v-if="showProtip"
283
+ v-clean-tooltip="{content: protip, triggers: ['hover', 'touch', 'focus'] }"
284
+ class="icon icon-info"
285
+ tabindex="0"
286
+ />
287
+ </h3>
327
288
  </slot>
328
289
  </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">
290
+ </div>
291
+ <div style="width: 100%;" class="col">
292
+ <div>
293
+ <template v-if="rows.length">
294
+ <div
295
+ v-if="showHeader"
296
+ class="array-list-header-group"
297
+ role="group"
298
+ >
299
+ <slot name="column-headers">
300
+ <label class="value text-label mb-10">
301
+ {{ valueLabel }}
302
+ </label>
303
+ </slot>
304
+ </div>
305
+ <div
306
+ v-for="(row, idx) in rows"
307
+ :key="idx"
308
+ :data-testid="`${componentTestid}-box${ idx }`"
309
+ class="box"
310
+ :class="{'hide-remove-is-view': isView}"
311
+ role="group"
312
+ >
347
313
  <slot
348
- name="value"
314
+ name="columns"
315
+ :queueUpdate="queueUpdate"
316
+ :i="idx"
317
+ :rows="rows"
349
318
  :row="row"
350
319
  :mode="mode"
351
320
  :isView="isView"
352
- :queue-update="queueUpdate"
353
321
  >
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
- >
322
+ <div class="value">
323
+ <slot
324
+ name="value"
325
+ :row="row"
326
+ :mode="mode"
327
+ :isView="isView"
328
+ :queue-update="queueUpdate"
329
+ >
330
+ <TextAreaAutoGrow
331
+ v-if="valueMultiline"
332
+ ref="value"
333
+ v-model:value="row.value"
334
+ :data-testid="`${componentTestid}-textarea-${idx}`"
335
+ :placeholder="valuePlaceholder"
336
+ :mode="mode"
337
+ :disabled="disabled"
338
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
339
+ @paste="onPaste(idx, $event)"
340
+ @update:value="queueUpdate"
341
+ />
342
+ <LabeledInput
343
+ v-else-if="rules.length > 0"
344
+ ref="value"
345
+ v-model:value="row.value"
346
+ :data-testid="`${componentTestid}-labeled-input-${idx}`"
347
+ :placeholder="valuePlaceholder"
348
+ :disabled="isView || disabled"
349
+ :rules="rules"
350
+ :compact="false"
351
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
352
+ @paste="onPaste(idx, $event)"
353
+ @update:value="queueUpdate"
354
+ />
355
+ <input
356
+ v-else
357
+ ref="value"
358
+ v-model="row.value"
359
+ :data-testid="`${componentTestid}-input-${idx}`"
360
+ :placeholder="valuePlaceholder"
361
+ :disabled="isView || disabled"
362
+ :aria-label="a11yLabel ? `${a11yLabel} ${t('generic.ariaLabel.genericRow', {index: idx+1})}` : undefined"
363
+ @paste="onPaste(idx, $event)"
364
+ >
365
+ </slot>
366
+ </div>
389
367
  </slot>
368
+ <div
369
+ v-if="showRemove && !isView"
370
+ class="remove"
371
+ >
372
+ <slot
373
+ name="remove-button"
374
+ :remove="() => remove(row, idx)"
375
+ :i="idx"
376
+ :row="row"
377
+ >
378
+ <button
379
+ type="button"
380
+ :disabled="isView"
381
+ class="btn role-link"
382
+ :data-testid="`${componentTestid}-remove-item-${idx}`"
383
+ :aria-label="t('generic.ariaLabel.remove', {index: idx+1})"
384
+ role="button"
385
+ @click="remove(row, idx)"
386
+ >
387
+ {{ _removeLabel }}
388
+ </button>
389
+ </slot>
390
+ </div>
391
+ <slot
392
+ name="value-sub-row"
393
+ :row="row"
394
+ :mode="mode"
395
+ :isView="isView"
396
+ />
390
397
  </div>
391
- </slot>
398
+ </template>
399
+ <div v-else>
400
+ <slot name="empty">
401
+ <div
402
+ v-if="mode==='view'"
403
+ class="text-muted"
404
+ >
405
+ &mdash;
406
+ </div>
407
+ </slot>
408
+ </div>
392
409
  <div
393
- v-if="showRemove && !isView"
394
- class="remove"
410
+ v-if="showAdd && !isView"
411
+ class="footer"
395
412
  >
396
413
  <slot
397
- name="remove-button"
398
- :remove="() => remove(row, idx)"
399
- :i="idx"
400
- :row="row"
414
+ v-if="showAdd"
415
+ name="add"
416
+ :add="add"
401
417
  >
402
418
  <button
403
419
  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})"
420
+ class="btn role-tertiary add"
421
+ :class="[addClass]"
422
+ :disabled="loading || disableAdd"
423
+ :data-testid="`${componentTestid}-button`"
424
+ :aria-label="_addLabel"
408
425
  role="button"
409
- @click="remove(row, idx)"
426
+ @click="add()"
410
427
  >
411
- {{ _removeLabel }}
428
+ <i
429
+ class="mr-5 icon"
430
+ :class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
431
+ />
432
+ {{ _addLabel }}
412
433
  </button>
413
434
  </slot>
414
435
  </div>
415
- <slot
416
- name="value-sub-row"
417
- :row="row"
418
- :mode="mode"
419
- :isView="isView"
420
- />
421
436
  </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
437
  </div>
433
438
  </div>
439
+
434
440
  </div>
435
441
  </template>
436
442
 
@@ -444,13 +450,15 @@ export default {
444
450
  }
445
451
 
446
452
  .box {
447
- display: grid;
448
- grid-template-columns: auto $array-list-remove-margin;
449
- align-items: center;
450
- margin-bottom: 10px;
453
+ // display: grid;
454
+ // grid-template-columns: auto $array-list-remove-margin;
455
+ // align-items: center;
456
+ // margin-bottom: 10px;
457
+ display: flex;
451
458
  .value {
452
- flex: 1;
459
+ // flex: 1;
453
460
  INPUT {
461
+ width: $input-width;
454
462
  height: $input-height;
455
463
  border: solid var(--border-width) var(--input-border);
456
464
  padding: 4px 11px;
@@ -462,9 +470,15 @@ export default {
462
470
  }
463
471
  .remove {
464
472
  text-align: right;
473
+ display: flex;
474
+ align-items: center;
475
+
476
+ button{
477
+ min-width: auto;
478
+ }
465
479
  }
466
480
  .footer {
467
- margin-bottom: 24px;
481
+ margin-bottom: 20px;
468
482
  .protip {
469
483
  float: right;
470
484
  padding: 5px 0;
@@ -481,4 +495,7 @@ export default {
481
495
  margin-bottom: 10px;
482
496
  }
483
497
 
498
+ H3{
499
+ width: 160px;
500
+ }
484
501
  </style>
@@ -120,7 +120,8 @@ export default {
120
120
 
121
121
  <style lang="scss">
122
122
  .array-list-grouped {
123
- & > .box {
123
+ .box {
124
+ border: 1px solid var(--tabbed-border);
124
125
  position: relative;
125
126
  display: block;
126
127
 
@@ -140,6 +141,7 @@ export default {
140
141
  }
141
142
 
142
143
  & > .info-box {
144
+ border: 0px solid #fff;
143
145
  margin-bottom: 0;
144
146
  padding-right: 25px;
145
147
  }
@@ -432,7 +432,7 @@ export default {
432
432
  }
433
433
 
434
434
  &.create, &.edit {
435
- height: 185px;
435
+ height: 160px;
436
436
  .form {
437
437
  .fields {
438
438
  display: flex;
@@ -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
@@ -128,7 +128,7 @@ export default {
128
128
  </div>
129
129
 
130
130
  <template v-if="selectHook === 'exec'">
131
- <div class="mb-20 single-value">
131
+ <div class="col single-value mt-20">
132
132
  <h4>{{ t('workload.container.lifecycleHook.exec.title') }}</h4>
133
133
  <div>
134
134
  <ShellInput
@@ -143,65 +143,61 @@ export default {
143
143
  </template>
144
144
 
145
145
  <template v-if="selectHook === 'httpGet'">
146
- <h4>{{ t('workload.container.lifecycleHook.httpGet.title') }}</h4>
146
+ <div class="mt-20"></div>
147
+ <h4 class="mb-10">{{ t('workload.container.lifecycleHook.httpGet.title') }}</h4>
147
148
  <div class="var-row">
148
- <LabeledInput
149
- v-model:value="value.httpGet.host"
150
- :label="t('workload.container.lifecycleHook.httpGet.host.label')"
151
- :placeholder="t('workload.container.lifecycleHook.httpGet.host.placeholder')"
152
- :mode="mode"
153
- @update:value="update"
154
- />
155
- <LabeledInput
156
- v-model:value="value.httpGet.path"
157
- :label="t('workload.container.lifecycleHook.httpGet.path.label')"
158
- :placeholder="t('workload.container.lifecycleHook.httpGet.path.placeholder')"
159
- :mode="mode"
160
- @update:value="update"
161
- />
162
- <LabeledInput
163
- v-model:value.number="value.httpGet.port"
164
- type="number"
165
- :label="t('workload.container.lifecycleHook.httpGet.port.label')"
166
- :placeholder="t('workload.container.lifecycleHook.httpGet.port.placeholder')"
167
- :mode="mode"
168
- required
169
- @update:value="update"
170
- />
171
- <LabeledSelect
172
- v-model:value="value.httpGet.scheme"
173
- :label="t('workload.container.lifecycleHook.httpGet.scheme.label')"
174
- :placeholder="t('workload.container.lifecycleHook.httpGet.scheme.placeholder')"
175
- :options="schemeOptions"
176
- :mode="mode"
177
- @update:value="update"
178
- />
149
+ <div class="row">
150
+ <div class="col span-6">
151
+ <LabeledInput
152
+ v-model:value="value.httpGet.host"
153
+ :label="t('workload.container.lifecycleHook.httpGet.host.label')"
154
+ :placeholder="t('workload.container.lifecycleHook.httpGet.host.placeholder')"
155
+ :mode="mode"
156
+ @update:value="update"
157
+ />
158
+ </div>
159
+ <div class="col span-6">
160
+ <LabeledInput
161
+ v-model:value="value.httpGet.path"
162
+ :label="t('workload.container.lifecycleHook.httpGet.path.label')"
163
+ :placeholder="t('workload.container.lifecycleHook.httpGet.path.placeholder')"
164
+ :mode="mode"
165
+ @update:value="update"
166
+ />
167
+ </div>
168
+ </div>
169
+ <div class="row">
170
+ <div class="col span-6">
171
+ <LabeledInput
172
+ v-model:value.number="value.httpGet.port"
173
+ type="number"
174
+ :label="t('workload.container.lifecycleHook.httpGet.port.label')"
175
+ :placeholder="t('workload.container.lifecycleHook.httpGet.port.placeholder')"
176
+ :mode="mode"
177
+ required
178
+ @update:value="update"
179
+ />
180
+ </div>
181
+ <div class="col span-6">
182
+ <LabeledSelect
183
+ v-model:value="value.httpGet.scheme"
184
+ :label="t('workload.container.lifecycleHook.httpGet.scheme.label')"
185
+ :placeholder="t('workload.container.lifecycleHook.httpGet.scheme.placeholder')"
186
+ :options="schemeOptions"
187
+ :mode="mode"
188
+ @update:value="update"
189
+ />
190
+ </div>
191
+ </div>
179
192
  </div>
180
193
 
181
- <h4>{{ t('workload.container.lifecycleHook.httpHeaders.title') }}</h4>
194
+ <h4 class="mb-10">{{ t('workload.container.lifecycleHook.httpHeaders.title') }}</h4>
182
195
  <div
183
196
  v-for="(header, index) in value.httpGet.httpHeaders"
184
197
  :key="index"
185
198
  class="var-row"
186
199
  data-testid="hookoption-header-row"
187
200
  >
188
- <LabeledInput
189
- v-model:value="value.httpGet.httpHeaders[index].name"
190
- :label="t('workload.container.lifecycleHook.httpHeaders.name.label')"
191
- :placeholder="t('workload.container.lifecycleHook.httpHeaders.name.placeholder')"
192
- class="single-value"
193
- :mode="mode"
194
- required
195
- @update:value="update"
196
- />
197
- <LabeledInput
198
- v-model:value="value.httpGet.httpHeaders[index].value"
199
- :label="t('workload.container.lifecycleHook.httpHeaders.value.label')"
200
- :placeholder="t('workload.container.lifecycleHook.httpHeaders.value.placeholder')"
201
- class="single-value"
202
- :mode="mode"
203
- @update:value="update"
204
- />
205
201
  <div class="remove">
206
202
  <button
207
203
  v-if="!isView"
@@ -213,18 +209,41 @@ export default {
213
209
  <t k="generic.remove" />
214
210
  </button>
215
211
  </div>
212
+ <div class="row">
213
+ <div class="col span-6">
214
+ <LabeledInput
215
+ v-model:value="value.httpGet.httpHeaders[index].name"
216
+ :label="t('workload.container.lifecycleHook.httpHeaders.name.label')"
217
+ :placeholder="t('workload.container.lifecycleHook.httpHeaders.name.placeholder')"
218
+ class="single-value"
219
+ :mode="mode"
220
+ required
221
+ @update:value="update"
222
+ />
223
+ </div>
224
+ <div class="col span-6">
225
+ <LabeledInput
226
+ v-model:value="value.httpGet.httpHeaders[index].value"
227
+ :label="t('workload.container.lifecycleHook.httpHeaders.value.label')"
228
+ :placeholder="t('workload.container.lifecycleHook.httpHeaders.value.placeholder')"
229
+ class="single-value"
230
+ :mode="mode"
231
+ @update:value="update"
232
+ />
233
+ </div>
234
+ </div>
216
235
  </div>
217
236
 
218
237
  <div>
219
238
  <button
220
239
  v-if="!isView"
221
240
  type="button"
222
- class="btn role-link mb-20"
241
+ class="btn role-link mb-20 httpAdd"
223
242
  :disabled="mode === 'view'"
224
243
  data-testid="hookoption-add-header-button"
225
244
  @click.stop="addHeader"
226
245
  >
227
- Add Header
246
+ 添加HTTP头
228
247
  </button>
229
248
  </div>
230
249
  </template>
@@ -233,11 +252,11 @@ export default {
233
252
 
234
253
  <style lang='scss' scoped>
235
254
  .var-row{
236
- display: grid;
237
- grid-template-columns: 1fr 1fr 1fr 1fr 100px;
238
- grid-column-gap: 20px;
239
- margin-bottom: 20px;
240
- align-items: center;
255
+ // display: grid;
256
+ // grid-template-columns: 1fr 1fr 1fr 1fr 100px;
257
+ // grid-column-gap: 20px;
258
+ // margin-bottom: 20px;
259
+ // align-items: center;
241
260
 
242
261
  .single-value {
243
262
  grid-column: span 2;
@@ -248,6 +267,16 @@ export default {
248
267
  }
249
268
  .remove BUTTON {
250
269
  padding: 0px;
270
+ min-width: auto;
251
271
  }
252
272
  }
273
+ .httpAdd{
274
+ background: var(--accent-btn);
275
+ border: solid 1px var(--primary);
276
+ color: var(--primary);
277
+ }
278
+
279
+ H4{
280
+ font-size: 14px;
281
+ }
253
282
  </style>