diff --git a/packages/bbui/src/Form/Core/Multiselect.svelte b/packages/bbui/src/Form/Core/Multiselect.svelte index 784cee70dc..d6c4dc23ac 100644 --- a/packages/bbui/src/Form/Core/Multiselect.svelte +++ b/packages/bbui/src/Form/Core/Multiselect.svelte @@ -1,6 +1,6 @@ get(field).name === name) } + const getDefault = (defaultValue, schema, type) => { + // Remove any values not present in the field schema + // Convert any values supplied to string + if (Array.isArray(defaultValue) && type == "array") { + return defaultValue.reduce((acc, entry) => { + let processedOption = String(entry) + let schemaOptions = schema.constraints.inclusion + if (schemaOptions.indexOf(processedOption) > -1) { + acc.push(processedOption) + } + return acc + }, []) + } else { + return defaultValue + } + } + const formApi = { registerField: ( field, @@ -153,8 +170,10 @@ table ) + const parsedDefault = getDefault(defaultValue, schema?.[field], type) + // If we've already registered this field then keep some existing state - let initialValue = Helpers.deepGet(initialValues, field) ?? defaultValue + let initialValue = Helpers.deepGet(initialValues, field) ?? parsedDefault let initialError = null let fieldId = `id-${Helpers.uuid()}` const existingField = getField(field) @@ -187,11 +206,11 @@ error: initialError, disabled: disabled || fieldDisabled || (isAutoColumn && !editAutoColumns), - defaultValue, + defaultValue: parsedDefault, validator, lastUpdate: Date.now(), }, - fieldApi: makeFieldApi(field, defaultValue), + fieldApi: makeFieldApi(field, parsedDefault), fieldSchema: schema?.[field] ?? {}, })