Extract mapper

This commit is contained in:
Adria Navarro 2024-03-27 10:04:12 +01:00
parent 21597a44c9
commit 5df68cfca7
2 changed files with 18 additions and 15 deletions

View File

@ -16,18 +16,14 @@
export let span export let span
export let helpText = null export let helpText = null
export let type = FieldType.ATTACHMENT export let type = FieldType.ATTACHMENT
export let fieldApiMapper = {
get: value => value,
set: value => value,
}
let fieldState let fieldState
let fieldApi let fieldApi
$: isSingle = type === FieldType.ATTACHMENT_SINGLE
$: value =
isSingle && !Array.isArray(fieldState?.value)
? fieldState?.value
? [fieldState.value]
: []
: fieldState?.value
const { API, notificationStore } = getContext("sdk") const { API, notificationStore } = getContext("sdk")
const formContext = getContext("form") const formContext = getContext("form")
const BYTES_IN_MB = 1000000 const BYTES_IN_MB = 1000000
@ -73,10 +69,7 @@
} }
const handleChange = e => { const handleChange = e => {
let value = e.detail const value = fieldApiMapper.set(e.detail)
if (isSingle) {
value = value[0] || null
}
const changed = fieldApi.setValue(value) const changed = fieldApi.setValue(value)
if (onChange && changed) { if (onChange && changed) {
onChange({ value }) onChange({ value })
@ -99,7 +92,7 @@
> >
{#if fieldState} {#if fieldState}
<CoreDropzone <CoreDropzone
{value} value={fieldApiMapper.get(fieldState.value)}
disabled={fieldState.disabled || fieldState.readonly} disabled={fieldState.disabled || fieldState.readonly}
error={fieldState.error} error={fieldState.error}
on:change={handleChange} on:change={handleChange}
@ -107,7 +100,7 @@
{deleteAttachments} {deleteAttachments}
{handleFileTooLarge} {handleFileTooLarge}
{handleTooManyFiles} {handleTooManyFiles}
maximum={isSingle ? 1 : maximum} {maximum}
{extensions} {extensions}
{compact} {compact}
/> />

View File

@ -1,6 +1,16 @@
<script> <script>
import { FieldType } from "@budibase/types" import { FieldType } from "@budibase/types"
import AttachmentField from "./AttachmentField.svelte" import AttachmentField from "./AttachmentField.svelte"
const fieldApiMapper = {
get: value => (!Array.isArray(value) && value ? [value] : value) || [],
set: value => value[0] || null,
}
</script> </script>
<AttachmentField {...$$restProps} type={FieldType.ATTACHMENT_SINGLE} /> <AttachmentField
{...$$restProps}
type={FieldType.ATTACHMENT_SINGLE}
maximum={1}
{fieldApiMapper}
/>