@modular-forms/qwik
Version:
The modular and type-safe form library for Qwik
35 lines (34 loc) • 1.3 kB
JavaScript
import { noSerialize } from '@builder.io/qwik';
/**
* Returns the current input of the element.
*
* @param element The field element.
* @param field The store of the field.
* @param type The data type to capture.
*
* @returns The element input.
*/
export function getElementInput(element, field, type) {
const { checked, files, options, value, valueAsDate, valueAsNumber } = element;
return (!type || type === 'string'
? value
: type === 'string[]'
? options
? [...options]
.filter((e) => e.selected && !e.disabled)
.map((e) => e.value)
: checked
? [...(field.value || []), value]
: (field.value || []).filter((v) => v !== value)
: type === 'number'
? valueAsNumber
: type === 'boolean'
? checked
: type === 'File' && files
? noSerialize(files[0])
: type === 'File[]' && files
? [...files].map((file) => noSerialize(file))
: type === 'Date' && valueAsDate
? valueAsDate
: field.value);
}