dashboard-shell-shell 1.0.113 → 1.0.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ActionDropdown.vue +1 -1
- package/components/ActionMenu.vue +2 -2
- package/components/ActionMenuShell.vue +0 -1
- package/components/AppModal.vue +6 -78
- package/components/AssignTo.vue +11 -25
- package/components/AsyncButton.vue +7 -24
- package/components/BannerGraphic.vue +0 -1
- package/components/ButtonDropdown.vue +4 -26
- package/components/ButtonGroup.vue +0 -4
- package/components/ButtonMultiAction.vue +0 -1
- package/components/CommunityLinks.vue +3 -3
- package/components/ConsumptionGauge.vue +5 -24
- package/components/CopyToClipboardText.vue +1 -2
- package/components/CruResource.vue +7 -12
- package/components/CruResourceFooter.vue +2 -2
- package/components/DashboardOptions.vue +15 -21
- package/components/DetailText.vue +0 -5
- package/components/DisableAuthProviderModal.vue +0 -1
- package/components/ExplorerMembers.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +14 -56
- package/components/FixedBanner.vue +12 -19
- package/components/GlobalRoleBindings.vue +1 -5
- package/components/GrafanaDashboard.vue +4 -4
- package/components/GrowlManager.vue +1 -4
- package/components/HardwareResourceGauge.vue +3 -39
- package/components/InfoBox.vue +3 -3
- package/components/InputOrDisplay.vue +2 -28
- package/components/LabelValue.vue +1 -16
- package/components/LandingPagePreference.vue +3 -5
- package/components/LocaleSelector.vue +93 -39
- package/components/ModalWithCard.vue +0 -2
- package/components/MoveModal.vue +0 -1
- package/components/PromptChangePassword.vue +1 -1
- package/components/PromptModal.vue +2 -15
- package/components/PromptRemove.vue +8 -28
- package/components/PromptRestore.vue +0 -1
- package/components/ResourceCancelModal.vue +0 -1
- package/components/ResourceDetail/Masthead.vue +43 -188
- package/components/ResourceDetail/__tests__/Masthead.test.ts +1 -5
- package/components/ResourceDetail/index.vue +14 -49
- package/components/ResourceList/Masthead.vue +18 -80
- package/components/ResourceTable.vue +19 -60
- package/components/SideNav.vue +12 -32
- package/components/SortableTable/THead.vue +5 -34
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +142 -649
- package/components/SortableTable/paging.js +28 -36
- package/components/SortableTable/selection.js +11 -0
- package/components/Tabbed/Tab.vue +3 -3
- package/components/Tabbed/index.vue +26 -44
- package/components/Wizard.vue +2 -2
- package/components/__tests__/AsyncButton.test.ts +2 -2
- package/components/__tests__/FixedBanner.test.ts +3 -3
- package/components/auth/Principal.vue +3 -10
- package/components/auth/__tests__/RoleDetailEdit.test.ts +2 -3
- package/components/form/ArrayList.vue +85 -123
- package/components/form/ArrayListGrouped.vue +2 -10
- package/components/form/Command.vue +15 -6
- package/components/form/EnvVars.vue +8 -16
- package/components/form/Footer.vue +5 -8
- package/components/form/HealthCheck.vue +3 -3
- package/components/form/HookOption.vue +16 -11
- package/components/form/KeyValue.vue +7 -16
- package/components/form/LabeledSelect.vue +76 -59
- package/components/form/LifecycleHooks.vue +3 -3
- package/components/form/MatchExpressions.vue +12 -35
- package/components/form/NameNsDescription.vue +115 -147
- package/components/form/Networking.vue +12 -20
- package/components/form/NodeAffinity.vue +23 -31
- package/components/form/NodeScheduling.vue +3 -13
- package/components/form/Password.vue +5 -11
- package/components/form/PodAffinity.vue +44 -43
- package/components/form/Probe.vue +66 -68
- package/components/form/ResourceQuota/Project.vue +1 -5
- package/components/form/ResourceSelector.vue +9 -7
- package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +3 -6
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +1 -12
- package/components/form/SSHKnownHosts/index.vue +2 -16
- package/components/form/Security.vue +56 -54
- package/components/form/Select.vue +7 -41
- package/components/form/ShellInput.vue +1 -5
- package/components/form/Tolerations.vue +1 -5
- package/components/form/UnitInput.vue +2 -2
- package/components/form/ValueFromResource.vue +121 -134
- package/components/form/WorkloadPorts.vue +18 -18
- package/components/form/__tests__/ArrayList.test.ts +2 -5
- package/components/form/__tests__/MatchExpressions.test.ts +12 -12
- package/components/form/__tests__/NameNsDescription.test.ts +14 -115
- package/components/form/__tests__/Probe.test.ts +8 -12
- package/components/form/__tests__/SSHKnownHosts.test.ts +0 -11
- package/components/form/__tests__/Select.test.ts +0 -37
- package/components/form/__tests__/UnitInput.test.ts +5 -4
- package/components/formatter/BadgeStateFormatter.vue +5 -8
- package/components/formatter/ExtensionCache.vue +74 -0
- package/components/formatter/InternalExternalIP.vue +0 -2
- package/components/formatter/Port.vue +24 -0
- package/components/formatter/SecretData.vue +7 -20
- package/components/formatter/SecretType.vue +41 -0
- package/components/nav/Favorite.vue +1 -5
- package/components/nav/Group.vue +27 -60
- package/components/nav/Header.vue +13 -39
- package/components/nav/Jump.vue +0 -7
- package/components/nav/NamespaceFilter.vue +8 -14
- package/components/nav/Pinned.vue +1 -1
- package/components/nav/TopLevelMenu.vue +17 -5
- package/components/nav/Type.vue +35 -32
- package/components/nav/__tests__/TopLevelMenu.test.ts +40 -0
- package/components/templates/blank.vue +1 -4
- package/components/templates/default.vue +0 -8
- package/components/templates/home.vue +1 -10
- package/components/templates/plain.vue +1 -10
- package/package.json +1 -1
- package/components/ActionDropdownShell.vue +0 -71
- package/components/DotState.vue +0 -84
- package/components/ModalManager.vue +0 -55
- package/components/SlideInPanelManager.vue +0 -126
- package/components/StatusBadge.vue +0 -77
- package/components/__tests__/ModalManager.spec.ts +0 -176
- package/components/__tests__/SlideInPanelManager.spec.ts +0 -166
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { ref, watch, computed } from 'vue';
|
|
3
2
|
import debounce from 'lodash/debounce';
|
|
4
3
|
import { _EDIT, _VIEW } from '@shell/config/query-params';
|
|
5
4
|
import { removeAt } from '@shell/utils/array';
|
|
@@ -95,87 +94,22 @@ export default {
|
|
|
95
94
|
// we only want functions in the rules array
|
|
96
95
|
validator: (rules) => rules.every((rule) => ['function'].includes(typeof rule))
|
|
97
96
|
},
|
|
98
|
-
a11yLabel: {
|
|
99
|
-
type: String,
|
|
100
|
-
default: '',
|
|
101
|
-
},
|
|
102
|
-
componentTestid: {
|
|
103
|
-
type: String,
|
|
104
|
-
default: 'array-list',
|
|
105
|
-
}
|
|
106
97
|
},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
const rows = ref([]);
|
|
98
|
+
data() {
|
|
99
|
+
const input = (Array.isArray(this.value) ? this.value : []).slice();
|
|
100
|
+
const rows = [];
|
|
111
101
|
|
|
112
102
|
for ( const value of input ) {
|
|
113
|
-
rows.
|
|
103
|
+
rows.push({ value });
|
|
114
104
|
}
|
|
115
|
-
if ( !rows.
|
|
116
|
-
const value =
|
|
105
|
+
if ( !rows.length && this.initialEmptyRow ) {
|
|
106
|
+
const value = this.defaultAddValue ? clone(this.defaultAddValue) : '';
|
|
117
107
|
|
|
118
|
-
rows.
|
|
108
|
+
rows.push({ value });
|
|
119
109
|
}
|
|
120
110
|
|
|
121
|
-
|
|
122
|
-
return props.mode === _VIEW;
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Cleanup rows and emit input
|
|
127
|
-
*/
|
|
128
|
-
const update = () => {
|
|
129
|
-
if ( isView.value ) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
const out = [];
|
|
133
|
-
|
|
134
|
-
for ( const row of rows.value ) {
|
|
135
|
-
const trim = !props.valueMultiline && (typeof row.value === 'string');
|
|
136
|
-
const value = trim ? row.value.trim() : row.value;
|
|
137
|
-
|
|
138
|
-
if ( typeof value !== 'undefined' ) {
|
|
139
|
-
out.push(value);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
emit('update:value', out);
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
const lastUpdateWasFromValue = ref(false);
|
|
146
|
-
const queueUpdate = debounce(update, 50);
|
|
147
|
-
|
|
148
|
-
watch(
|
|
149
|
-
rows,
|
|
150
|
-
() => {
|
|
151
|
-
// lastUpdateWasFromValue is used to break a cycle where when rows are updated
|
|
152
|
-
// this was called which then forced rows to updated again
|
|
153
|
-
if (!lastUpdateWasFromValue.value) {
|
|
154
|
-
queueUpdate();
|
|
155
|
-
}
|
|
156
|
-
lastUpdateWasFromValue.value = false;
|
|
157
|
-
},
|
|
158
|
-
{ deep: true }
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
watch(
|
|
162
|
-
() => props.value,
|
|
163
|
-
() => {
|
|
164
|
-
lastUpdateWasFromValue.value = true;
|
|
165
|
-
rows.value = (props.value || []).map((v) => ({ value: v }));
|
|
166
|
-
},
|
|
167
|
-
{ deep: true }
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
return {
|
|
171
|
-
rows,
|
|
172
|
-
lastUpdateWasFromValue,
|
|
173
|
-
queueUpdate,
|
|
174
|
-
isView,
|
|
175
|
-
update,
|
|
176
|
-
};
|
|
111
|
+
return { rows, lastUpdateWasFromValue: false };
|
|
177
112
|
},
|
|
178
|
-
|
|
179
113
|
computed: {
|
|
180
114
|
_addLabel() {
|
|
181
115
|
return this.addLabel || this.t('generic.add');
|
|
@@ -183,6 +117,10 @@ export default {
|
|
|
183
117
|
_removeLabel() {
|
|
184
118
|
return this.removeLabel || this.t('generic.remove');
|
|
185
119
|
},
|
|
120
|
+
|
|
121
|
+
isView() {
|
|
122
|
+
return this.mode === _VIEW;
|
|
123
|
+
},
|
|
186
124
|
showAdd() {
|
|
187
125
|
return this.addAllowed;
|
|
188
126
|
},
|
|
@@ -203,7 +141,29 @@ export default {
|
|
|
203
141
|
return !this.valueMultiline && this.protip;
|
|
204
142
|
}
|
|
205
143
|
},
|
|
144
|
+
watch: {
|
|
145
|
+
value: {
|
|
146
|
+
deep: true,
|
|
147
|
+
handler() {
|
|
148
|
+
this.lastUpdateWasFromValue = true;
|
|
149
|
+
this.rows = (this.value || []).map((v) => ({ value: v }));
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
|
|
153
|
+
rows: {
|
|
154
|
+
deep: true,
|
|
155
|
+
handler(newValue, oldValue) {
|
|
156
|
+
// lastUpdateWasFromValue is used to break a cycle where when rows are updated
|
|
157
|
+
// this was called which then forced rows to updated again
|
|
158
|
+
if (!this.lastUpdateWasFromValue) {
|
|
159
|
+
this.queueUpdate();
|
|
160
|
+
}
|
|
161
|
+
this.lastUpdateWasFromValue = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
206
165
|
created() {
|
|
166
|
+
this.queueUpdate = debounce(this.update, 50);
|
|
207
167
|
},
|
|
208
168
|
methods: {
|
|
209
169
|
add() {
|
|
@@ -229,6 +189,26 @@ export default {
|
|
|
229
189
|
this.queueUpdate();
|
|
230
190
|
},
|
|
231
191
|
|
|
192
|
+
/**
|
|
193
|
+
* Cleanup rows and emit input
|
|
194
|
+
*/
|
|
195
|
+
update() {
|
|
196
|
+
if ( this.isView ) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const out = [];
|
|
200
|
+
|
|
201
|
+
for ( const row of this.rows ) {
|
|
202
|
+
const trim = !this.valueMultiline && (typeof row.value === 'string');
|
|
203
|
+
const value = trim ? row.value.trim() : row.value;
|
|
204
|
+
|
|
205
|
+
if ( typeof value !== 'undefined' ) {
|
|
206
|
+
out.push(value);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
this.$emit('update:value', out);
|
|
210
|
+
},
|
|
211
|
+
|
|
232
212
|
/**
|
|
233
213
|
* Handle paste event, e.g. split multiple lines in rows
|
|
234
214
|
*/
|
|
@@ -274,32 +254,7 @@ export default {
|
|
|
274
254
|
</h3>
|
|
275
255
|
</slot>
|
|
276
256
|
</div>
|
|
277
|
-
|
|
278
|
-
v-if="showAdd && !isView"
|
|
279
|
-
class="footer"
|
|
280
|
-
>
|
|
281
|
-
<slot
|
|
282
|
-
v-if="showAdd"
|
|
283
|
-
name="add"
|
|
284
|
-
:add="add"
|
|
285
|
-
>
|
|
286
|
-
<button
|
|
287
|
-
type="button"
|
|
288
|
-
class="btn role-primary add"
|
|
289
|
-
:disabled="loading || disableAdd"
|
|
290
|
-
:data-testid="`${componentTestid}-button`"
|
|
291
|
-
:aria-label="_addLabel"
|
|
292
|
-
role="button"
|
|
293
|
-
@click="add()"
|
|
294
|
-
>
|
|
295
|
-
<i
|
|
296
|
-
class="mr-5 icon"
|
|
297
|
-
:class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
|
|
298
|
-
/>
|
|
299
|
-
{{ _addLabel }}
|
|
300
|
-
</button>
|
|
301
|
-
</slot>
|
|
302
|
-
</div>
|
|
257
|
+
|
|
303
258
|
<template v-if="rows.length">
|
|
304
259
|
<div v-if="showHeader">
|
|
305
260
|
<slot name="column-headers">
|
|
@@ -311,7 +266,7 @@ export default {
|
|
|
311
266
|
<div
|
|
312
267
|
v-for="(row, idx) in rows"
|
|
313
268
|
:key="idx"
|
|
314
|
-
:data-testid="
|
|
269
|
+
:data-testid="`array-list-box${ idx }`"
|
|
315
270
|
class="box"
|
|
316
271
|
>
|
|
317
272
|
<slot
|
|
@@ -335,7 +290,7 @@ export default {
|
|
|
335
290
|
v-if="valueMultiline"
|
|
336
291
|
ref="value"
|
|
337
292
|
v-model:value="row.value"
|
|
338
|
-
:data-testid="
|
|
293
|
+
:data-testid="`textarea-${idx}`"
|
|
339
294
|
:placeholder="valuePlaceholder"
|
|
340
295
|
:mode="mode"
|
|
341
296
|
:disabled="disabled"
|
|
@@ -346,7 +301,7 @@ export default {
|
|
|
346
301
|
v-else-if="rules.length > 0"
|
|
347
302
|
ref="value"
|
|
348
303
|
v-model:value="row.value"
|
|
349
|
-
:data-testid="
|
|
304
|
+
:data-testid="`labeled-input-${idx}`"
|
|
350
305
|
:placeholder="valuePlaceholder"
|
|
351
306
|
:disabled="isView || disabled"
|
|
352
307
|
:rules="rules"
|
|
@@ -358,10 +313,9 @@ export default {
|
|
|
358
313
|
v-else
|
|
359
314
|
ref="value"
|
|
360
315
|
v-model="row.value"
|
|
361
|
-
:data-testid="
|
|
316
|
+
:data-testid="`input-${idx}`"
|
|
362
317
|
:placeholder="valuePlaceholder"
|
|
363
318
|
:disabled="isView || disabled"
|
|
364
|
-
:aria-label="a11yLabel ? a11yLabel : undefined"
|
|
365
319
|
@paste="onPaste(idx, $event)"
|
|
366
320
|
>
|
|
367
321
|
</slot>
|
|
@@ -381,9 +335,7 @@ export default {
|
|
|
381
335
|
type="button"
|
|
382
336
|
:disabled="isView"
|
|
383
337
|
class="btn role-link"
|
|
384
|
-
:data-testid="
|
|
385
|
-
:aria-label="`${_removeLabel} ${idx + 1}`"
|
|
386
|
-
role="button"
|
|
338
|
+
:data-testid="`remove-item-${idx}`"
|
|
387
339
|
@click="remove(row, idx)"
|
|
388
340
|
>
|
|
389
341
|
{{ _removeLabel }}
|
|
@@ -402,7 +354,30 @@ export default {
|
|
|
402
354
|
</div>
|
|
403
355
|
</slot>
|
|
404
356
|
</div>
|
|
405
|
-
|
|
357
|
+
<div
|
|
358
|
+
v-if="showAdd && !isView"
|
|
359
|
+
class="footer mt-20"
|
|
360
|
+
>
|
|
361
|
+
<slot
|
|
362
|
+
v-if="showAdd"
|
|
363
|
+
name="add"
|
|
364
|
+
:add="add"
|
|
365
|
+
>
|
|
366
|
+
<button
|
|
367
|
+
type="button"
|
|
368
|
+
class="btn role-tertiary add"
|
|
369
|
+
:disabled="loading || disableAdd"
|
|
370
|
+
data-testid="array-list-button"
|
|
371
|
+
@click="add()"
|
|
372
|
+
>
|
|
373
|
+
<i
|
|
374
|
+
class="mr-5 icon"
|
|
375
|
+
:class="loading ? ['icon-lg', 'icon-spinner','icon-spin']: [addIcon]"
|
|
376
|
+
/>
|
|
377
|
+
{{ _addLabel }}
|
|
378
|
+
</button>
|
|
379
|
+
</slot>
|
|
380
|
+
</div>
|
|
406
381
|
</div>
|
|
407
382
|
</template>
|
|
408
383
|
|
|
@@ -423,12 +398,7 @@ export default {
|
|
|
423
398
|
.value {
|
|
424
399
|
flex: 1;
|
|
425
400
|
INPUT {
|
|
426
|
-
height: $input-height;
|
|
427
|
-
border: solid var(--border-width) var(--input-border);
|
|
428
|
-
padding: 4px 11px;
|
|
429
|
-
&:hover{
|
|
430
|
-
box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
|
|
431
|
-
}
|
|
401
|
+
height: $unlabeled-input-height;
|
|
432
402
|
}
|
|
433
403
|
}
|
|
434
404
|
}
|
|
@@ -436,7 +406,6 @@ export default {
|
|
|
436
406
|
text-align: right;
|
|
437
407
|
}
|
|
438
408
|
.footer {
|
|
439
|
-
margin-bottom: 24px;
|
|
440
409
|
.protip {
|
|
441
410
|
float: right;
|
|
442
411
|
padding: 5px 0;
|
|
@@ -446,11 +415,4 @@ export default {
|
|
|
446
415
|
.required {
|
|
447
416
|
color: var(--error);
|
|
448
417
|
}
|
|
449
|
-
:deep() .labeled-input.compact-input{
|
|
450
|
-
padding: 0px;
|
|
451
|
-
}
|
|
452
|
-
:deep() .box{
|
|
453
|
-
margin-bottom: 10px;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
418
|
</style>
|
|
@@ -127,16 +127,8 @@ export default {
|
|
|
127
127
|
& > .remove {
|
|
128
128
|
position: absolute;
|
|
129
129
|
|
|
130
|
-
top:
|
|
131
|
-
right:
|
|
132
|
-
& > .close{
|
|
133
|
-
width: 32px;
|
|
134
|
-
min-width: 32px !important;
|
|
135
|
-
color: var(--body-text);
|
|
136
|
-
&:hover{
|
|
137
|
-
color: var(--link);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
130
|
+
top: 0;
|
|
131
|
+
right: 0;
|
|
140
132
|
}
|
|
141
133
|
|
|
142
134
|
& > .info-box {
|
|
@@ -43,14 +43,23 @@ export default {
|
|
|
43
43
|
},
|
|
44
44
|
|
|
45
45
|
data() {
|
|
46
|
+
const {
|
|
47
|
+
command,
|
|
48
|
+
args,
|
|
49
|
+
workingDir,
|
|
50
|
+
stdin = false,
|
|
51
|
+
stdinOnce = false,
|
|
52
|
+
tty = false,
|
|
53
|
+
} = this.value;
|
|
54
|
+
|
|
46
55
|
return {
|
|
47
|
-
args
|
|
48
|
-
command
|
|
56
|
+
args,
|
|
57
|
+
command,
|
|
49
58
|
commandOptions: ['No', 'Once', 'Yes'],
|
|
50
|
-
stdin
|
|
51
|
-
stdinOnce
|
|
52
|
-
tty
|
|
53
|
-
workingDir
|
|
59
|
+
stdin,
|
|
60
|
+
stdinOnce,
|
|
61
|
+
tty,
|
|
62
|
+
workingDir,
|
|
54
63
|
};
|
|
55
64
|
},
|
|
56
65
|
|
|
@@ -39,10 +39,14 @@ export default {
|
|
|
39
39
|
},
|
|
40
40
|
|
|
41
41
|
data() {
|
|
42
|
+
const { env = [], envFrom = [] } = this.value;
|
|
43
|
+
|
|
44
|
+
const allEnv = [...env, ...envFrom].map((row) => {
|
|
45
|
+
return { value: row, id: randomStr(4) };
|
|
46
|
+
});
|
|
47
|
+
|
|
42
48
|
return {
|
|
43
|
-
env
|
|
44
|
-
envFrom: [],
|
|
45
|
-
allEnv: [],
|
|
49
|
+
env, envFrom, allEnv
|
|
46
50
|
};
|
|
47
51
|
},
|
|
48
52
|
|
|
@@ -59,18 +63,7 @@ export default {
|
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
},
|
|
62
|
-
|
|
63
66
|
created() {
|
|
64
|
-
const { env = [], envFrom = [] } = this.value;
|
|
65
|
-
|
|
66
|
-
const allEnv = [...env, ...envFrom].map((row) => {
|
|
67
|
-
return { value: row, id: randomStr(4) };
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
this.env = env;
|
|
71
|
-
this.envFrom = envFrom;
|
|
72
|
-
this.allEnv = allEnv;
|
|
73
|
-
|
|
74
67
|
this.queueUpdate = debounce(this.update, 500);
|
|
75
68
|
},
|
|
76
69
|
|
|
@@ -114,8 +107,7 @@ export default {
|
|
|
114
107
|
<div :style="{'width':'100%'}">
|
|
115
108
|
<div
|
|
116
109
|
v-for="(row, i) in allEnv"
|
|
117
|
-
:key="
|
|
118
|
-
:data-testid="`env-var-row-${i}`"
|
|
110
|
+
:key="i"
|
|
119
111
|
>
|
|
120
112
|
<ValueFromResource
|
|
121
113
|
v-model:value="row.value"
|
|
@@ -91,10 +91,9 @@ export default defineComponent({
|
|
|
91
91
|
|
|
92
92
|
<style lang='scss'>
|
|
93
93
|
.buttons {
|
|
94
|
-
|
|
94
|
+
display: grid;
|
|
95
95
|
grid-template-areas: "left right";
|
|
96
|
-
grid-template-columns: "min-content auto";
|
|
97
|
-
display: flex;
|
|
96
|
+
grid-template-columns: "min-content auto";
|
|
98
97
|
|
|
99
98
|
.left {
|
|
100
99
|
grid-area: left;
|
|
@@ -106,13 +105,11 @@ export default defineComponent({
|
|
|
106
105
|
}
|
|
107
106
|
|
|
108
107
|
.right {
|
|
109
|
-
|
|
110
|
-
text-align: right;
|
|
111
|
-
display: flex;
|
|
108
|
+
grid-area: right;
|
|
109
|
+
text-align: right;
|
|
112
110
|
|
|
113
111
|
.btn, button {
|
|
114
|
-
|
|
115
|
-
margin: 0 10px 0 0px;
|
|
112
|
+
margin: 0 0 0 $column-gutter;
|
|
116
113
|
}
|
|
117
114
|
}
|
|
118
115
|
}
|
|
@@ -18,10 +18,10 @@ export default {
|
|
|
18
18
|
},
|
|
19
19
|
|
|
20
20
|
data() {
|
|
21
|
+
const { readinessProbe, livenessProbe, startupProbe } = this.value;
|
|
22
|
+
|
|
21
23
|
return {
|
|
22
|
-
readinessProbe
|
|
23
|
-
livenessProbe: this.value.livenessProbe,
|
|
24
|
-
startupProbe: this.value.startupProbe,
|
|
24
|
+
readinessProbe, livenessProbe, startupProbe
|
|
25
25
|
};
|
|
26
26
|
},
|
|
27
27
|
|
|
@@ -28,18 +28,23 @@ export default {
|
|
|
28
28
|
},
|
|
29
29
|
|
|
30
30
|
data() {
|
|
31
|
+
const selectHook = null;
|
|
32
|
+
|
|
33
|
+
const defaultExec = { exec: { command: [] } };
|
|
34
|
+
const defaultHttpGet = {
|
|
35
|
+
httpGet: {
|
|
36
|
+
host: '',
|
|
37
|
+
path: '',
|
|
38
|
+
port: null,
|
|
39
|
+
scheme: '',
|
|
40
|
+
httpHeaders: null
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
31
44
|
return {
|
|
32
|
-
selectHook
|
|
33
|
-
defaultExec
|
|
34
|
-
defaultHttpGet
|
|
35
|
-
httpGet: {
|
|
36
|
-
host: '',
|
|
37
|
-
path: '',
|
|
38
|
-
port: null,
|
|
39
|
-
scheme: '',
|
|
40
|
-
httpHeaders: null
|
|
41
|
-
}
|
|
42
|
-
},
|
|
45
|
+
selectHook,
|
|
46
|
+
defaultExec,
|
|
47
|
+
defaultHttpGet,
|
|
43
48
|
schemeOptions: ['HTTP', 'HTTPS']
|
|
44
49
|
};
|
|
45
50
|
},
|
|
@@ -277,7 +277,7 @@ export default {
|
|
|
277
277
|
const gap = this.canRemove ? ' 50px' : '';
|
|
278
278
|
const size = 2 + this.extraColumns.length;
|
|
279
279
|
|
|
280
|
-
return `grid-template-columns: repeat(${ size },
|
|
280
|
+
return `grid-template-columns: repeat(${ size }, 1fr)${ gap };`;
|
|
281
281
|
},
|
|
282
282
|
usedKeyOptions() {
|
|
283
283
|
return this.rows.map((row) => row[this.keyName]);
|
|
@@ -760,7 +760,7 @@ export default {
|
|
|
760
760
|
:disabled="disabled || isProtected(row.key)"
|
|
761
761
|
:mode="mode"
|
|
762
762
|
:placeholder="_valuePlaceholder"
|
|
763
|
-
:min-height="
|
|
763
|
+
:min-height="40"
|
|
764
764
|
:spellcheck="false"
|
|
765
765
|
:aria-label="t('generic.ariaLabel.value', {index: i})"
|
|
766
766
|
@update:value="queueUpdate"
|
|
@@ -823,7 +823,7 @@ export default {
|
|
|
823
823
|
type="button"
|
|
824
824
|
role="button"
|
|
825
825
|
:disabled="isView || isProtected(row.key) || disabled"
|
|
826
|
-
:aria-label="
|
|
826
|
+
:aria-label="removeLabel || t('generic.remove')"
|
|
827
827
|
class="btn role-link"
|
|
828
828
|
@click="remove(i)"
|
|
829
829
|
>
|
|
@@ -837,7 +837,7 @@ export default {
|
|
|
837
837
|
</div>
|
|
838
838
|
<div
|
|
839
839
|
v-if="(addAllowed || readAllowed) && !isView"
|
|
840
|
-
class="footer mt-
|
|
840
|
+
class="footer mt-20"
|
|
841
841
|
>
|
|
842
842
|
<slot
|
|
843
843
|
name="add"
|
|
@@ -880,8 +880,8 @@ export default {
|
|
|
880
880
|
}
|
|
881
881
|
.kv-container {
|
|
882
882
|
display: grid;
|
|
883
|
-
|
|
884
|
-
column-gap:
|
|
883
|
+
align-items: center;
|
|
884
|
+
column-gap: 20px;
|
|
885
885
|
label {
|
|
886
886
|
margin-bottom: 0;
|
|
887
887
|
}
|
|
@@ -905,9 +905,6 @@ export default {
|
|
|
905
905
|
}
|
|
906
906
|
&.value textarea {
|
|
907
907
|
padding: 10px 10px 10px 10px;
|
|
908
|
-
min-height:32px;
|
|
909
|
-
line-height: 12px;
|
|
910
|
-
border: solid var(--border-width) var(--input-border);
|
|
911
908
|
}
|
|
912
909
|
|
|
913
910
|
.text-monospace:not(.conceal) {
|
|
@@ -946,14 +943,8 @@ export default {
|
|
|
946
943
|
}
|
|
947
944
|
}
|
|
948
945
|
input {
|
|
949
|
-
height:
|
|
946
|
+
height: 40px;
|
|
950
947
|
line-height: 1;
|
|
951
|
-
border: solid var(--border-width) var(--input-border);
|
|
952
|
-
padding: 4px 11px;
|
|
953
|
-
&:hover{
|
|
954
|
-
border: solid var(--border-width) var(--input-border);
|
|
955
|
-
box-shadow: 0 4px 6px 0 var(--input-border-box-shadow);
|
|
956
|
-
}
|
|
957
948
|
}
|
|
958
949
|
.footer {
|
|
959
950
|
.protip {
|