dashboard-shell-shell 3.0.5-test.3 → 3.0.5-test.31

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 (153) 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 +21 -1
  4. package/assets/styles/base/_variables.scss +5 -5
  5. package/assets/styles/fonts/_icons.scss +3 -2
  6. package/assets/styles/global/_button.scss +8 -8
  7. package/assets/styles/global/_select.scss +1 -1
  8. package/assets/styles/global/_tooltip.scss +9 -5
  9. package/assets/styles/themes/_light.scss +3 -1
  10. package/assets/styles/vendor/vue-select.scss +2 -1
  11. package/assets/translations/zh-hans.yaml +156 -13
  12. package/components/ActionDropdown.vue +1 -1
  13. package/components/ButtonDropdown.vue +3 -1
  14. package/components/CodeMirror.vue +6 -4
  15. package/components/ContainerResourceLimit.vue +2 -2
  16. package/components/CopyToClipboard.vue +15 -0
  17. package/components/Drawer/Chrome.vue +2 -2
  18. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  19. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  20. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  21. package/components/ExplorerMembers.vue +28 -4
  22. package/components/GlobalRoleBindings.vue +48 -112
  23. package/components/PodSecurityAdmission.vue +2 -2
  24. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  25. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  26. package/components/Resource/Detail/Metadata/index.vue +3 -1
  27. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  28. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  29. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  30. package/components/Resource/Detail/TitleBar/index.vue +123 -25
  31. package/components/ResourceDetail/Masthead/index.vue +1 -1
  32. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  33. package/components/ResourceDetail/Masthead/legacy.vue +239 -167
  34. package/components/ResourceDetail/legacy.vue +44 -28
  35. package/components/ResourceList/Masthead.vue +14 -15
  36. package/components/SideNav.vue +21 -21
  37. package/components/SortableTable/THead.vue +21 -1
  38. package/components/SortableTable/index.vue +23 -6
  39. package/components/Tabbed/index.vue +6 -1
  40. package/components/auth/Principal.vue +42 -13
  41. package/components/auth/RoleDetailEdit.vue +11 -7
  42. package/components/breadcrumb/index.vue +119 -0
  43. package/components/form/ArrayList.vue +164 -147
  44. package/components/form/ArrayListGrouped.vue +3 -1
  45. package/components/form/ChangePassword.vue +1 -1
  46. package/components/form/Command.vue +4 -5
  47. package/components/form/Conditions.vue +15 -1
  48. package/components/form/Footer.vue +1 -0
  49. package/components/form/HealthCheck.vue +0 -2
  50. package/components/form/HookOption.vue +87 -58
  51. package/components/form/InputWithSelect.vue +8 -7
  52. package/components/form/KeyValue.vue +20 -2
  53. package/components/form/LabeledSelect.vue +6 -3
  54. package/components/form/Labels.vue +2 -2
  55. package/components/form/MatchExpressions.vue +3 -4
  56. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  57. package/components/form/Members/ClusterPermissionsEditor.vue +5 -5
  58. package/components/form/Members/MembershipEditor.vue +2 -2
  59. package/components/form/NameNsDescription.vue +1 -1
  60. package/components/form/Networking.vue +6 -9
  61. package/components/form/NodeAffinity.vue +29 -28
  62. package/components/form/PodAffinity.vue +23 -23
  63. package/components/form/Probe.vue +15 -11
  64. package/components/form/ResourceQuota/Namespace.vue +4 -4
  65. package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
  66. package/components/form/ResourceQuota/Project.vue +4 -4
  67. package/components/form/ResourceQuota/ProjectRow.vue +36 -30
  68. package/components/form/ResourceSelector.vue +1 -1
  69. package/components/form/Security.vue +1 -3
  70. package/components/form/Select.vue +6 -1
  71. package/components/form/ServiceNameSelect.vue +2 -5
  72. package/components/form/ServicePorts.vue +149 -75
  73. package/components/form/Taints.vue +2 -1
  74. package/components/form/Tolerations.vue +12 -9
  75. package/components/form/ValueFromResource.vue +110 -96
  76. package/components/form/WorkloadPorts.vue +143 -123
  77. package/components/formatter/WorkloadHealthScale.vue +4 -3
  78. package/components/nav/Group.vue +6 -0
  79. package/components/nav/Header.vue +7 -4
  80. package/components/nav/NamespaceFilter.vue +15 -21
  81. package/components/nav/TopLevelMenu.vue +99 -125
  82. package/components/nav/Type.vue +15 -3
  83. package/config/menuRouteMap.js +10 -0
  84. package/config/product/explorer.js +5 -1
  85. package/config/router/navigation-guards/index.js +61 -3
  86. package/detail/node.vue +28 -23
  87. package/dialog/AddCustomBadgeDialog.vue +17 -9
  88. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  89. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  90. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  91. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  92. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  93. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  94. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  95. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  96. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  97. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  98. package/edit/configmap.vue +4 -0
  99. package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
  100. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  101. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  102. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  103. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  104. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  105. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  106. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  107. package/edit/persistentvolume/index.vue +3 -1
  108. package/edit/persistentvolumeclaim.vue +2 -0
  109. package/edit/secret/index.vue +2 -2
  110. package/edit/service.vue +4 -1
  111. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  112. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  113. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  114. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  115. package/edit/workload/Job.vue +31 -34
  116. package/edit/workload/Upgrading.vue +5 -5
  117. package/edit/workload/index.vue +22 -18
  118. package/edit/workload/storage/Mount.vue +1 -0
  119. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  120. package/edit/workload/storage/azureDisk.vue +14 -10
  121. package/edit/workload/storage/azureFile.vue +9 -7
  122. package/edit/workload/storage/csi/index.vue +6 -9
  123. package/edit/workload/storage/emptyDir.vue +7 -5
  124. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  125. package/edit/workload/storage/hostPath.vue +7 -5
  126. package/edit/workload/storage/nfs.vue +8 -6
  127. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  128. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  129. package/edit/workload/storage/secret.vue +9 -6
  130. package/edit/workload/storage/vsphereVolume.vue +11 -7
  131. package/initialize/app-extended.js +7 -1
  132. package/models/provisioning.cattle.io.cluster.js +19 -18
  133. package/package.json +1 -1
  134. package/pages/account/index.vue +95 -115
  135. package/pages/auth/setup.vue +35 -16
  136. package/pages/c/_cluster/auth/roles/index.vue +38 -5
  137. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  138. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  139. package/pages/home.vue +3 -4
  140. package/pkg/tsconfig.json +9 -9
  141. package/pkg/vue.config.js +1 -1
  142. package/plugins/dashboard-store/resource-class.js +28 -27
  143. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  144. package/rancher-components/Banner/Banner.vue +4 -1
  145. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
  146. package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
  147. package/scripts/publish-shell.sh +1 -1
  148. package/store/i18n.js +4 -0
  149. package/store/type-map.js +1 -1
  150. package/types/shell/index.d.ts +4 -30
  151. package/utils/error.js +3 -1
  152. package/utils/errorTranslate.json +356 -2
  153. package/vue.config.js +1 -1
@@ -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>
@@ -30,7 +30,7 @@ export default {
30
30
 
31
31
  selectLabel: {
32
32
  type: String,
33
- default: '',
33
+ default: ' ',
34
34
  },
35
35
 
36
36
  selectValue: {
@@ -164,11 +164,12 @@ export default {
164
164
  :v-bind="$attrs"
165
165
  @update:value="change"
166
166
  />
167
+ <div style="width: 100%;height: 24px;"></div>
167
168
  <LabeledInput
168
169
  v-if="textLabel || textRules.length > 0"
169
170
  ref="text"
170
171
  v-model:value="string"
171
- class="input-string col span-8"
172
+ class="input-string span-8"
172
173
  :label="textLabel"
173
174
  :placeholder="placeholder"
174
175
  :disabled="disabled || textDisabled"
@@ -204,7 +205,7 @@ export default {
204
205
 
205
206
  &.select-after {
206
207
  height: 100%;
207
- flex-direction: row-reverse;
208
+ // flex-direction: row-reverse;
208
209
 
209
210
  & .input-string {
210
211
  border-radius: var(--border-radius) 0 0 var(--border-radius);
@@ -270,19 +271,19 @@ export default {
270
271
  margin-right: 0;
271
272
 
272
273
  &:hover:not(.focused):not(.disabled):not(.view) {
273
- border: 0px solid var(--input-hover-border) !important;
274
+ border: 1px solid var(--input-hover-border) !important;
274
275
  }
275
276
 
276
277
  &.focused {
277
- border: 0px solid var(--outline) !important;
278
+ border: 1px solid var(--outline) !important;
278
279
  }
279
280
 
280
281
  &:hover:not(.focused):not(.disabled) {
281
- border: 0px solid var(--input-hover-border) !important;
282
+ border: 1px solid var(--input-hover-border) !important;
282
283
  }
283
284
 
284
285
  &.focused {
285
- border: 0px solid var(--outline) !important;
286
+ border: 1px solid var(--outline) !important;
286
287
  }
287
288
 
288
289
  &.labeled-select.focused :deep(),
@@ -390,6 +390,17 @@ export default {
390
390
  });
391
391
  }
392
392
 
393
+ rows = rows.map((item) => {
394
+ if (item.key.includes('harvester')) {
395
+ item.key = item.key?.replace('harvester', 'cloud');
396
+ }
397
+ if (item.value.includes('harvester')) {
398
+ item.value = item.value?.replace('harvester', 'cloud');
399
+ }
400
+
401
+ return item;
402
+ });
403
+
393
404
  return rows;
394
405
  },
395
406
 
@@ -400,6 +411,8 @@ export default {
400
411
  [this.valueName]: value,
401
412
  };
402
413
 
414
+ obj.key = obj.key?.replace('harvester', 'cloud');
415
+ obj.value = obj.value?.replace('harvester', 'cloud');
403
416
  obj.binary = false;
404
417
  obj.canEncode = this.handleBase64;
405
418
  obj.supported = true;
@@ -481,8 +494,8 @@ export default {
481
494
  // let value = (row[valueName] || '');
482
495
  // const key = (row[keyName] || '').trim();
483
496
 
484
- const key = (row[keyName] || '').trim();
485
- let value = (row[valueName] || '').trim();
497
+ const key = (row[keyName]?.replace('cloud', 'harvester') || '').trim();
498
+ let value = (row[valueName]?.replace('cloud', 'harvester') || '').trim();
486
499
 
487
500
  if (value && typeOf(value) === 'object') {
488
501
  out[key] = JSON.parse(JSON.stringify(value));
@@ -1001,6 +1014,7 @@ export default {
1001
1014
  .remove {
1002
1015
  text-align: center;
1003
1016
  BUTTON {
1017
+ min-width: auto;
1004
1018
  padding: 0px;
1005
1019
  }
1006
1020
  }
@@ -1040,4 +1054,8 @@ export default {
1040
1054
  border-collapse: separate;
1041
1055
  z-index: 0; // Prevent label from cover other elements outside of the input
1042
1056
  }
1057
+
1058
+ h3{
1059
+ font-size: 14px;
1060
+ }
1043
1061
  </style>
@@ -326,6 +326,7 @@ export default {
326
326
  <template>
327
327
  <div style="display: flex;">
328
328
  <div
329
+ v-if="hasLabel"
329
330
  :class="{ 'labeled-container': true, raised, empty, [mode]: true, 'is-lable': isLabel }"
330
331
  :style="{ border: 'none', width: selectWidth===''?'160px':selectWidth,lineHeight: '32px' }"
331
332
  >
@@ -348,7 +349,7 @@ export default {
348
349
  ref="select"
349
350
  class="labeled-select"
350
351
  :class="[
351
- $attrs.class,
352
+ $attrs.class && $attrs.class.replace('mb-20', ''),
352
353
  {
353
354
  disabled: isView || disabled,
354
355
  focused,
@@ -529,9 +530,11 @@ export default {
529
530
  // Prevent namespace field from wiggling or changing
530
531
  // height when it is toggled from a LabeledInput to a
531
532
  // LabeledSelect.
532
- padding-bottom: 1px;
533
+ // padding-bottom: 1px;
533
534
  &:deep() .vs__actions:after {
534
- padding-top: 10px;
535
+ // padding-top: 10px;
536
+ display: flex;
537
+ align-items: center;
535
538
  }
536
539
 
537
540
  &.no-label.compact-input {
@@ -161,8 +161,8 @@ export default {
161
161
  <div :class="containerClass">
162
162
  <div :class="defaultSectionClass">
163
163
  <div class="labels">
164
- <div class="labels__header">
165
- <div v-if="showLabelTitle">
164
+ <div class="labels__header mb-20">
165
+ <div v-if="showLabelTitle" style="font-size: 14px;">
166
166
  <t k="labels.labels.title" />
167
167
  </div>
168
168
  <ToggleSwitch
@@ -330,7 +330,7 @@ export default {
330
330
  :data-testid="`input-match-type-field-${index}`"
331
331
  >
332
332
  <div v-if="isView">
333
- {{ row.matching }}
333
+ {{ row.matching.replace('harvester', 'cloud') }}
334
334
  </div>
335
335
  <LabeledSelect
336
336
  v-else
@@ -345,7 +345,7 @@ export default {
345
345
  :data-testid="`input-match-expression-key-${index}`"
346
346
  >
347
347
  <div v-if="isView" class="view-item-value">
348
- {{ row.key }}
348
+ {{ row.key.replace('harvester', 'cloud') }}
349
349
  </div>
350
350
  <input
351
351
  v-else-if="!hasKeySelectOptions"
@@ -413,7 +413,7 @@ export default {
413
413
  v-if="!isView"
414
414
  type="button"
415
415
  class="btn role-link"
416
- :style="{padding:'0px'}"
416
+ :style="{padding:'0px', minWidth: 'auto'}"
417
417
 
418
418
  :disabled="mode==='view'"
419
419
  :data-testid="`input-match-expression-remove-control-${index}`"
@@ -425,7 +425,6 @@ export default {
425
425
  </div>
426
426
  <div
427
427
  v-if="!isView && showAddButton"
428
- class="mmt-4"
429
428
  >
430
429
  <button
431
430
  type="button"
@@ -56,6 +56,6 @@ export default {
56
56
  :type="NORMAN.CLUSTER_ROLE_TEMPLATE_BINDING"
57
57
  :mode="mode"
58
58
  parent-key="clusterId"
59
- :parent-id="parentId"
59
+ :parent-id="parentId"
60
60
  />
61
61
  </template>
@@ -161,11 +161,11 @@ export default {
161
161
  value: 'member'
162
162
  },
163
163
  ...customRoles,
164
- {
165
- label: this.t('members.clusterPermissions.custom.label'),
166
- description: this.t('members.clusterPermissions.custom.description'),
167
- value: 'custom'
168
- }
164
+ // {
165
+ // label: this.t('members.clusterPermissions.custom.label'),
166
+ // description: this.t('members.clusterPermissions.custom.description'),
167
+ // value: 'custom'
168
+ // }
169
169
  ];
170
170
  },
171
171
  principal() {
@@ -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" style="width: calc(100% - 100px);">
174
174
  <div class="col span-6">
175
175
  <label class="text-label">{{ t('membershipEditor.user') }}</label>
176
176
  </div>
@@ -181,7 +181,7 @@ export default {
181
181
  </div>
182
182
  </template>
183
183
  <template #columns="{row, i}">
184
- <div class="columns row">
184
+ <div style="width: 100%;" class="columns row">
185
185
  <div class="col span-6">
186
186
  <Principal
187
187
  :value="row.value.principalId"
@@ -256,7 +256,7 @@ export default {
256
256
  const options = namespaces
257
257
  .map((namespace) => ({ nameDisplay: namespace, id: namespace }))
258
258
  .map(props.namespaceMapper || ((obj) => ({
259
- label: obj.nameDisplay,
259
+ label: obj.nameDisplay.replace('harvester', 'cloud'),
260
260
  value: obj.id,
261
261
  })));
262
262
 
@@ -160,7 +160,7 @@ export default {
160
160
  <div>
161
161
  <div>
162
162
  <h3>{{ t('workload.container.titles.networkSettings') }}</h3>
163
- <div class="row mb-20">
163
+ <div class="row">
164
164
  <div class="col span-6">
165
165
  <LabeledSelect
166
166
  v-model:value="networkMode"
@@ -205,12 +205,11 @@ export default {
205
205
  </div>
206
206
  </div>
207
207
  </div>
208
- <div class="spacer" />
209
208
 
210
- <div>
209
+ <div class="mt-20">
211
210
  <h3>{{ t('workload.networking.dns') }}</h3>
212
211
  <div class="row">
213
- <div class="col span-6">
212
+ <div class="span-6">
214
213
  <ArrayList
215
214
  key="dnsNameservers"
216
215
  v-model:value="nameservers"
@@ -222,7 +221,7 @@ export default {
222
221
  @update:value="update"
223
222
  />
224
223
  </div>
225
- <div class="col span-6">
224
+ <div class="span-6">
226
225
  <ArrayList
227
226
  key="dnsSearches"
228
227
  v-model:value="searches"
@@ -236,9 +235,8 @@ export default {
236
235
  </div>
237
236
  </div>
238
237
  </div>
239
- <div class="spacer" />
240
238
 
241
- <div class="mt-20">
239
+ <div>
242
240
  <div class="row">
243
241
  <KeyValue
244
242
  v-model:value="options"
@@ -254,9 +252,8 @@ export default {
254
252
  />
255
253
  </div>
256
254
  </div>
257
- <div class="spacer" />
258
255
 
259
- <div class="row mt-20">
256
+ <div class="row mt-40">
260
257
  <div class="col span-12">
261
258
  <KeyValue
262
259
  key="hostAliases"
@@ -210,33 +210,31 @@ export default {
210
210
  @remove="remove"
211
211
  >
212
212
  <template #default="props">
213
- <div class="row">
214
- <div class="col span-9">
215
- <LabeledSelect
216
- :options="affinityOptions"
217
- :value="priorityDisplay(props.row.value)"
218
- :label="t('workload.scheduling.affinity.priority')"
219
- :mode="mode"
220
- :data-testid="`node-affinity-priority-index${props.i}`"
221
- @update:value="(changePriority(props.row.value))"
222
- />
223
- </div>
224
- <div
225
- v-if="'weight' in props.row.value"
226
- class="col span-3"
227
- >
228
- <LabeledInput
229
- v-model:value.number="props.row.value.weight"
230
- :mode="mode"
231
- type="number"
232
- min="1"
233
- max="100"
234
- :label="t('workload.scheduling.affinity.weight.label')"
235
- :placeholder="t('workload.scheduling.affinity.weight.placeholder')"
236
- :data-testid="`node-affinity-weight-index${props.i}`"
237
- @update:value="update"
238
- />
239
- </div>
213
+ <div class="col">
214
+ <LabeledSelect
215
+ :options="affinityOptions"
216
+ :value="priorityDisplay(props.row.value)"
217
+ :label="t('workload.scheduling.affinity.priority')"
218
+ :mode="mode"
219
+ :data-testid="`node-affinity-priority-index${props.i}`"
220
+ @update:value="(changePriority(props.row.value))"
221
+ />
222
+ </div>
223
+ <div
224
+ v-if="'weight' in props.row.value"
225
+ class="col"
226
+ >
227
+ <LabeledInput
228
+ v-model:value.number="props.row.value.weight"
229
+ :mode="mode"
230
+ type="number"
231
+ min="1"
232
+ max="100"
233
+ :label="t('workload.scheduling.affinity.weight.label')"
234
+ :placeholder="t('workload.scheduling.affinity.weight.placeholder')"
235
+ :data-testid="`node-affinity-weight-index${props.i}`"
236
+ @update:value="update"
237
+ />
240
238
  </div>
241
239
  <MatchExpressions
242
240
  :value="matchingSelectorDisplay ? props.row.value : props.row.value.matchExpressions"
@@ -254,5 +252,8 @@ export default {
254
252
  </div>
255
253
  </template>
256
254
 
257
- <style>
255
+ <style lang="scss" scoped>
256
+ .weight_input{
257
+ margin-left: 10px;
258
+ }
258
259
  </style>
@@ -370,27 +370,25 @@ export default {
370
370
  @remove="remove"
371
371
  >
372
372
  <template #default="props">
373
- <div class="row mt-20">
374
- <div class="col span-6">
375
- <LabeledSelect
376
- :mode="mode"
377
- :options="[t('workload.scheduling.affinity.affinityOption'),t('workload.scheduling.affinity.antiAffinityOption')]"
378
- :value="props.row.value._anti ?t('workload.scheduling.affinity.antiAffinityOption') :t('workload.scheduling.affinity.affinityOption') "
379
- :label="t('workload.scheduling.affinity.type')"
380
- :data-testid="`pod-affinity-type-index${props.i}`"
381
- @update:value="props.row.value._anti = !props.row.value._anti"
382
- />
383
- </div>
384
- <div class="col span-6">
385
- <LabeledSelect
386
- :mode="mode"
387
- :options="[t('workload.scheduling.affinity.preferred'),t('workload.scheduling.affinity.required')]"
388
- :value="priorityDisplay(props.row.value)"
389
- :label="t('workload.scheduling.affinity.priority')"
390
- :data-testid="`pod-affinity-priority-index${props.i}`"
391
- @update:value="changePriority(props.row.value, props.i)"
392
- />
393
- </div>
373
+ <div class="col">
374
+ <LabeledSelect
375
+ :mode="mode"
376
+ :options="[t('workload.scheduling.affinity.affinityOption'),t('workload.scheduling.affinity.antiAffinityOption')]"
377
+ :value="props.row.value._anti ?t('workload.scheduling.affinity.antiAffinityOption') :t('workload.scheduling.affinity.affinityOption') "
378
+ :label="t('workload.scheduling.affinity.type')"
379
+ :data-testid="`pod-affinity-type-index${props.i}`"
380
+ @update:value="props.row.value._anti = !props.row.value._anti"
381
+ />
382
+ </div>
383
+ <div class="col">
384
+ <LabeledSelect
385
+ :mode="mode"
386
+ :options="[t('workload.scheduling.affinity.preferred'),t('workload.scheduling.affinity.required')]"
387
+ :value="priorityDisplay(props.row.value)"
388
+ :label="t('workload.scheduling.affinity.priority')"
389
+ :data-testid="`pod-affinity-priority-index${props.i}`"
390
+ @update:value="changePriority(props.row.value, props.i)"
391
+ />
394
392
  </div>
395
393
  <div class="row mb-20">
396
394
  <RadioGroup
@@ -438,7 +436,7 @@ export default {
438
436
  @update:value="e=>updateLabelSelector(e, props)"
439
437
  />
440
438
  <div class="row mt-20">
441
- <div class="col span-6">
439
+ <div class="col">
442
440
  <LabeledSelect
443
441
  v-if="hasNodes"
444
442
  v-model:value="props.row.value.topologyKey"
@@ -466,9 +464,11 @@ export default {
466
464
  @update:value="update"
467
465
  />
468
466
  </div>
467
+ </div>
468
+ <div class="row">
469
469
  <div
470
470
  v-if="'weight' in props.row.value"
471
- class="col span-6"
471
+ class="col"
472
472
  >
473
473
  <LabeledInput
474
474
  v-model:value.number="props.row.value.weight"