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
@@ -72,41 +72,47 @@ export default {
72
72
  v-if="typeOption"
73
73
  class="rowNew"
74
74
  >
75
- <Select
76
- :value="type"
77
- :mode="mode"
78
- :options="types"
79
- data-testid="projectrow-type-input"
80
- @update:value="updateType($event)"
81
- />
82
- <UnitInput
83
- :value="resourceQuotaLimit[type]"
84
- :mode="mode"
85
- :placeholder="typeOption.placeholder"
86
- :increment="typeOption.increment"
87
- :input-exponent="typeOption.inputExponent"
88
- :base-unit="typeOption.baseUnit"
89
- :output-modifier="true"
90
- data-testid="projectrow-project-quota-input"
91
- @update:value="updateQuotaLimit('resourceQuota', type, $event)"
92
- />
93
- <UnitInput
94
- :value="namespaceDefaultResourceQuotaLimit[type]"
95
- :mode="mode"
96
- :placeholder="typeOption.placeholder"
97
- :increment="typeOption.increment"
98
- :input-exponent="typeOption.inputExponent"
99
- :base-unit="typeOption.baseUnit"
100
- :output-modifier="true"
101
- data-testid="projectrow-namespace-quota-input"
102
- @update:value="updateQuotaLimit('namespaceDefaultResourceQuota', type, $event)"
103
- />
75
+ <div style="width: 450px;">
76
+ <Select
77
+ :value="type"
78
+ :mode="mode"
79
+ :options="types"
80
+ data-testid="projectrow-type-input"
81
+ @update:value="updateType($event)"
82
+ />
83
+ </div>
84
+ <div style="width: 450px;">
85
+ <UnitInput
86
+ :value="resourceQuotaLimit[type]"
87
+ :mode="mode"
88
+ :placeholder="typeOption.placeholder"
89
+ :increment="typeOption.increment"
90
+ :input-exponent="typeOption.inputExponent"
91
+ :base-unit="typeOption.baseUnit"
92
+ :output-modifier="true"
93
+ data-testid="projectrow-project-quota-input"
94
+ @update:value="updateQuotaLimit('resourceQuota', type, $event)"
95
+ />
96
+ </div>
97
+ <div style="width: 450px;">
98
+ <UnitInput
99
+ :value="namespaceDefaultResourceQuotaLimit[type]"
100
+ :mode="mode"
101
+ :placeholder="typeOption.placeholder"
102
+ :increment="typeOption.increment"
103
+ :input-exponent="typeOption.inputExponent"
104
+ :base-unit="typeOption.baseUnit"
105
+ :output-modifier="true"
106
+ data-testid="projectrow-namespace-quota-input"
107
+ @update:value="updateQuotaLimit('namespaceDefaultResourceQuota', type, $event)"
108
+ />
109
+ </div>
104
110
  </div>
105
111
  </template>
106
112
 
107
113
  <style lang='scss' scoped>
108
114
  .rowNew {
109
115
  display: flex;
110
- justify-content: space-between;
116
+ justify-content: left;
111
117
  }
112
118
  </style>
@@ -125,7 +125,7 @@ export default {
125
125
  </div>
126
126
  </div>
127
127
  <div class="row">
128
- <div class="col span-12">
128
+ <div class="span-12">
129
129
  <Banner :color="(matchingResources.none ? 'warning' : 'success')">
130
130
  <span v-clean-html="t('generic.selectors.matchingResources.matchesSome', matchingResources)" />
131
131
  </Banner>
@@ -157,7 +157,6 @@ export default {
157
157
  </div>
158
158
  </div>
159
159
  </div>
160
- <div class="spacer" />
161
160
 
162
161
  <div>
163
162
  <div class="row">
@@ -191,11 +190,10 @@ export default {
191
190
  </div>
192
191
  </div>
193
192
  </div>
194
- <div class="spacer" />
195
193
 
196
194
  <div
197
195
  data-testid="input-security-runAsUser"
198
- class="row mb-10"
196
+ class="row"
199
197
  >
200
198
  <div class="col span-6">
201
199
  <LabeledInput
@@ -392,6 +392,10 @@ export default {
392
392
  .unlabeled-select {
393
393
  position: relative;
394
394
 
395
+ :deep() .vs__actions:after {
396
+ padding-top: 2px;
397
+ }
398
+
395
399
  :deep() .v-select.select-input-view {
396
400
  .vs__actions {
397
401
  visibility: hidden;
@@ -409,7 +413,8 @@ export default {
409
413
 
410
414
  :deep() .vs__selected-options {
411
415
  display: flex;
412
- margin: 3px;
416
+ align-items: center;
417
+ margin: 0px;
413
418
 
414
419
  .vs__selected {
415
420
  width: initial;
@@ -120,11 +120,8 @@ export default {
120
120
 
121
121
  <template>
122
122
  <div>
123
- <div class="spacer" />
124
- <div class="row mb-10">
125
- <h3 class="col span-6">
126
- {{ t('workload.serviceAccountName.label') }}
127
- </h3>
123
+ <div class="row mb-10 mt-40">
124
+ <h3>{{ t('workload.serviceAccountName.label') }}</h3>
128
125
  </div>
129
126
  <div class="row span-6">
130
127
  <LabeledSelect
@@ -125,7 +125,7 @@ export default {
125
125
  <template>
126
126
  <div>
127
127
  <div v-if="rows.length">
128
- <div
128
+ <!-- <div
129
129
  class="ports-headers"
130
130
  :class="{'show-protocol':showProtocol, 'show-node-port':showNodePort}"
131
131
  >
@@ -169,77 +169,13 @@ export default {
169
169
  v-if="showRemove"
170
170
  class="remove"
171
171
  />
172
- </div>
172
+ </div> -->
173
173
  <div
174
174
  v-for="(row, idx) in rows"
175
175
  :key="idx"
176
176
  class="ports-row"
177
177
  :class="{'show-protocol':showProtocol, 'show-node-port':showNodePort}"
178
178
  >
179
- <div
180
- v-if="padLeft"
181
- class="left"
182
- />
183
- <div class="port-name">
184
- <span v-if="isView">{{ row.name }}</span>
185
- <input
186
- v-else
187
- ref="port-name"
188
- v-model.number="row.name"
189
- type="text"
190
- :placeholder="t('servicePorts.rules.name.placeholder')"
191
- @input="queueUpdate"
192
- >
193
- </div>
194
- <div class="port">
195
- <span v-if="isView">{{ row.port }}</span>
196
- <input
197
- v-else
198
- ref="port"
199
- v-model.number="row.port"
200
- type="number"
201
- min="1"
202
- max="65535"
203
- :placeholder="t('servicePorts.rules.listening.placeholder')"
204
- @input="queueUpdate"
205
- >
206
- </div>
207
- <div
208
- v-if="showProtocol"
209
- class="port-protocol"
210
- >
211
- <span v-if="isView">{{ row.protocol }}</span>
212
- <Select
213
- v-else
214
- v-model:value="row.protocol"
215
- :options="protocolOptions"
216
- @update:value="queueUpdate"
217
- />
218
- </div>
219
- <div class="target-port">
220
- <span v-if="isView">{{ row.targetPort }}</span>
221
- <input
222
- v-else
223
- v-model="row.targetPort"
224
- :placeholder="t('servicePorts.rules.target.placeholder')"
225
- @input="queueUpdate"
226
- >
227
- </div>
228
- <div
229
- v-if="showNodePort"
230
- class="node-port"
231
- >
232
- <span v-if="isView">{{ row.nodePort }}</span>
233
- <input
234
- v-else
235
- v-model.number="row.nodePort"
236
- type="number"
237
- min="1"
238
- max="65535"
239
- :placeholder="t('servicePorts.rules.node.placeholder')"
240
- @input="queueUpdate"
241
- >
242
- </div>
243
179
  <div
244
180
  v-if="showRemove"
245
181
  class="remove"
@@ -252,7 +188,106 @@ export default {
252
188
  <t k="generic.remove" />
253
189
  </button>
254
190
  </div>
191
+ <div class="flex">
192
+ <span class="port-name">
193
+ <t k="servicePorts.rules.name.label" />
194
+ </span>
195
+ <div class="port-name">
196
+ <span v-if="isView">{{ row.name }}</span>
197
+ <input
198
+ v-else
199
+ ref="port-name"
200
+ v-model.number="row.name"
201
+ type="text"
202
+ :placeholder="t('servicePorts.rules.name.placeholder')"
203
+ @input="queueUpdate"
204
+ >
205
+ </div>
206
+ </div>
207
+ <div class="flex">
208
+ <span class="port">
209
+ <t k="servicePorts.rules.listening.label" />
210
+ <i
211
+ v-clean-tooltip="t('servicesPage.listeningPorts')"
212
+ class="icon icon-info flex"
213
+ />
214
+ <span class="text-error">*</span>
215
+ </span>
216
+ <div class="port">
217
+ <span v-if="isView">{{ row.port }}</span>
218
+ <input
219
+ v-else
220
+ ref="port"
221
+ v-model.number="row.port"
222
+ type="number"
223
+ min="1"
224
+ max="65535"
225
+ :placeholder="t('servicePorts.rules.listening.placeholder')"
226
+ @input="queueUpdate"
227
+ >
228
+ </div>
229
+ </div>
230
+ <div class="flex" v-if="showProtocol">
231
+ <span
232
+ class="port-protocol"
233
+ >
234
+ <t k="servicePorts.rules.protocol.label" />
235
+ </span>
236
+ <div
237
+ class="port-protocol"
238
+ >
239
+ <span v-if="isView">{{ row.protocol }}</span>
240
+ <Select
241
+ v-else
242
+ v-model:value="row.protocol"
243
+ :options="protocolOptions"
244
+ @update:value="queueUpdate"
245
+ />
246
+ </div>
247
+ </div>
248
+ <div class="flex">
249
+ <span class="target-port">
250
+ <t k="servicePorts.rules.target.label" />
251
+ <i
252
+ v-clean-tooltip="t('servicesPage.targetPorts')"
253
+ class="icon icon-info flex"
254
+ />
255
+ <span class="text-error">*</span>
256
+
257
+ </span>
258
+ <div class="target-port">
259
+ <span v-if="isView">{{ row.targetPort }}</span>
260
+ <input
261
+ v-else
262
+ v-model="row.targetPort"
263
+ :placeholder="t('servicePorts.rules.target.placeholder')"
264
+ @input="queueUpdate"
265
+ >
266
+ </div>
267
+ </div>
268
+ <div class="flex" v-if="showNodePort">
269
+ <span
270
+ class="node-port"
271
+ >
272
+ <t k="servicePorts.rules.node.label" />
273
+ </span>
274
+ <div
275
+ class="node-port"
276
+ >
277
+ <span v-if="isView">{{ row.nodePort }}</span>
278
+ <input
279
+ v-else
280
+ v-model.number="row.nodePort"
281
+ type="number"
282
+ min="1"
283
+ max="65535"
284
+ :placeholder="t('servicePorts.rules.node.placeholder')"
285
+ @input="queueUpdate"
286
+ >
287
+ </div>
288
+ </div>
255
289
  <Error
290
+ style="margin-bottom: 24px;"
256
291
  :value="{...row, idx}"
257
292
  :rules="rules"
258
293
  />
@@ -286,22 +321,60 @@ export default {
286
321
  }
287
322
 
288
323
  .ports-headers, .ports-row{
289
- display: grid;
290
- grid-column-gap: $column-gutter;
291
- margin-bottom: 10px;
324
+ // display: grid;
325
+ // grid-column-gap: $column-gutter;
326
+ // margin-bottom: 10px;
327
+ // align-items: center;
328
+ display: flex;
329
+ flex-direction: column;
330
+
331
+ // &.show-protocol{
332
+ // grid-template-columns: 23% 23% 10% 15% 15% 10%;
333
+ // &:not(.show-node-port){
334
+ // grid-template-columns: 31% 31% 10% 15% 10%;
335
+ // }
336
+ // }
337
+ // &.show-node-port:not(.show-protocol){
338
+ // grid-template-columns: 28% 28% 15% 15% 10%;
339
+ // }
340
+ }
341
+ .flex{
342
+ display: flex;
292
343
  align-items: center;
344
+ margin-bottom: 24px;
345
+ >span:nth-child(1){
346
+ min-width: 160px;
347
+ height: 32px;
348
+ display: flex;
349
+ align-items: center;
350
+ }
293
351
 
294
- &.show-protocol{
295
- grid-template-columns: 23% 23% 10% 15% 15% 10%;
296
- &:not(.show-node-port){
297
- grid-template-columns: 31% 31% 10% 15% 10%;
352
+ .port-name:not(span){
353
+ width: 400px;
354
+
355
+ }
356
+ .port:not(span){
357
+ width: 400px;
358
+ INPUT{
359
+ height: 32px;
360
+ padding-left: 11px;
298
361
  }
299
362
  }
300
- &.show-node-port:not(.show-protocol){
301
- grid-template-columns: 28% 28% 15% 15% 10%;
363
+ .target-port:not(span){
364
+ width: 400px;
365
+ }
366
+ .node-port:not(span){
367
+ width: 400px;
368
+ INPUT{
369
+ height: 32px;
370
+ padding-left: 11px;
371
+ }
302
372
  }
303
373
  }
304
374
 
375
+ .flex:nth-last-child{
376
+ margin-bottom: 0px;
377
+ }
305
378
  .ports-headers {
306
379
  color: var(--input-label);
307
380
  }
@@ -312,6 +385,7 @@ export default {
312
385
 
313
386
  .remove BUTTON {
314
387
  padding: 0px;
388
+ min-width: auto;
315
389
  }
316
390
 
317
391
  .ports-row {
@@ -112,6 +112,7 @@ export default {
112
112
 
113
113
  <style lang="scss" scoped>
114
114
  .compact-select {
115
- height: 40px;
115
+ height: 32px;
116
+ overflow: hidden;
116
117
  }
117
118
  </style>
@@ -202,7 +202,7 @@ export default {
202
202
  :key="index"
203
203
  class="rule"
204
204
  >
205
- <div class="col">
205
+ <div>
206
206
  <LabeledInput
207
207
  v-model:value="rule.key"
208
208
  :mode="mode"
@@ -211,7 +211,7 @@ export default {
211
211
  @update:value="update"
212
212
  />
213
213
  </div>
214
- <div class="col">
214
+ <div>
215
215
  <Select
216
216
  id="operator"
217
217
  v-model:value="rule.operator"
@@ -222,7 +222,7 @@ export default {
222
222
  />
223
223
  </div>
224
224
  <template v-if="rule.operator==='Exists'">
225
- <div class="col">
225
+ <div>
226
226
  <LabeledInput
227
227
  value="n/a"
228
228
  :mode="mode"
@@ -232,7 +232,7 @@ export default {
232
232
  </div>
233
233
  </template>
234
234
  <template v-else>
235
- <div class="col">
235
+ <div>
236
236
  <LabeledInput
237
237
  v-model:value="rule.value"
238
238
  :mode="mode"
@@ -242,7 +242,7 @@ export default {
242
242
  />
243
243
  </div>
244
244
  </template>
245
- <div class="col">
245
+ <div>
246
246
  <Select
247
247
  v-model:value="rule.effect"
248
248
  :options="effectOpts"
@@ -251,7 +251,7 @@ export default {
251
251
  @update:value="e=>updateEffect(e, rule)"
252
252
  />
253
253
  </div>
254
- <div class="col">
254
+ <div>
255
255
  <UnitInput
256
256
  v-model:value="rule.tolerationSeconds"
257
257
  :disabled="rule.effect !== 'NoExecute'"
@@ -262,7 +262,7 @@ export default {
262
262
  @update:value="update"
263
263
  />
264
264
  </div>
265
- <div class="col remove">
265
+ <div class="remove">
266
266
  <button
267
267
  v-if="!isView"
268
268
  type="button"
@@ -294,9 +294,12 @@ export default {
294
294
 
295
295
  .rule, .toleration-headers{
296
296
  display: grid;
297
- grid-template-columns: 20% 10% 20% 15% 20% 15%;
297
+ grid-template-columns: 13% 13% 13% 13% 13% 13%;
298
298
  grid-gap: 10px;
299
299
  align-items: center;
300
+ .unlabeled-select{
301
+ width: auto;
302
+ }
300
303
  }
301
304
 
302
305
  .rule {
@@ -308,10 +311,10 @@ export default {
308
311
 
309
312
  .toleration-headers SPAN {
310
313
  color: var(--input-label);
311
- margin-bottom: 10px;
312
314
  }
313
315
  .remove BUTTON {
314
316
  padding: 0px;
317
+ min-width: auto;
315
318
  }
316
319
  .height-adjust-input {
317
320
  min-height: 42px;