From 119a83cf3e9443637ff0a90719c5ced7fa4a95d5 Mon Sep 17 00:00:00 2001 From: David Stone Date: Mon, 9 Feb 2026 14:43:37 +0000 Subject: [PATCH 1/2] Apply a joi.array.min to non-optional file upload fields --- src/server/plugins/engine/components/FileUploadField.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/plugins/engine/components/FileUploadField.ts b/src/server/plugins/engine/components/FileUploadField.ts index 4a6ff220c..c1696167f 100644 --- a/src/server/plugins/engine/components/FileUploadField.ts +++ b/src/server/plugins/engine/components/FileUploadField.ts @@ -134,6 +134,8 @@ export class FileUploadField extends FormComponent { if (typeof schema.min === 'number') { formSchema = formSchema.min(schema.min) + } else if (options.required !== false) { + formSchema = formSchema.min(1) } } else { formSchema = formSchema.length(schema.length) From d3ae9b6a5ae49a5a3d45267c036e9a5c8bbe2dc7 Mon Sep 17 00:00:00 2001 From: davidjamesstone Date: Wed, 11 Feb 2026 15:55:18 +0000 Subject: [PATCH 2/2] Add test to assert schema applies a default min items for the file upload --- .../engine/components/FileUploadField.test.ts | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/server/plugins/engine/components/FileUploadField.test.ts b/src/server/plugins/engine/components/FileUploadField.test.ts index 053b5f1ad..870f75160 100644 --- a/src/server/plugins/engine/components/FileUploadField.test.ts +++ b/src/server/plugins/engine/components/FileUploadField.test.ts @@ -648,6 +648,29 @@ describe('FileUploadField', () => { } ] }, + { + description: 'Schema default min', + component: { + title: 'Example file upload field', + name: 'myComponent', + type: ComponentType.FileUploadField, + options: {}, + schema: {} + } satisfies FileUploadFieldComponent, + assertions: [ + { + input: getFormData([]), + output: { + value: getFormData([]), + errors: [ + expect.objectContaining({ + text: 'Example file upload field must contain at least 1 items' + }) + ] + } + } + ] + }, { description: 'Schema length', component: {