diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte
index 3aa15b98f8..b63d3798e5 100644
--- a/frontend/src/lib/components/ArgInput.svelte
+++ b/frontend/src/lib/components/ArgInput.svelte
@@ -400,6 +400,7 @@
const UUID_PATTERN = '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
const IPV6_PATTERN =
'^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$'
+
function validateInput(pattern: string | undefined, v: any, required: boolean): void {
if (nullable && emptyString(v)) {
error = ''
@@ -407,6 +408,18 @@
} else if (required && (v == undefined || v == null || v === '') && inputCat != 'object') {
error = 'Required'
valid && (valid = false)
+ } else if (
+ required &&
+ inputCat == 'list' &&
+ extra?.['nonEmpty'] == true &&
+ Array.isArray(v) &&
+ v.length === 0
+ ) {
+ error = 'Required'
+ valid && (valid = false)
+ } else if (inputCat == 'list' && !Array.isArray(v)) {
+ error = 'Expected an array, got ' + typeof v + ' instead'
+ valid && (valid = false)
} else {
if (inputCat == 'number' && typeof v === 'number') {
let min = extra['min']
@@ -523,6 +536,7 @@
})
$effect(() => {
+ extra?.['nonEmpty']
let args = [pattern, value, required] as const
untrack(() => validateInput(...args))
})
diff --git a/frontend/src/lib/components/ArrayTypeNarrowing.svelte b/frontend/src/lib/components/ArrayTypeNarrowing.svelte
index 064faa6950..7feec29713 100644
--- a/frontend/src/lib/components/ArrayTypeNarrowing.svelte
+++ b/frontend/src/lib/components/ArrayTypeNarrowing.svelte
@@ -24,12 +24,14 @@
properties?: { [name: string]: SchemaProperty }
}
| undefined
+ nonEmpty?: boolean | undefined
}
let {
canEditResourceType = false,
originalType = undefined,
- itemsType = $bindable()
+ itemsType = $bindable(),
+ nonEmpty = $bindable()
}: Props = $props()
let selected:
@@ -143,6 +145,12 @@
{/each}
+