@modular-forms/react
Version:
The modular and type-safe form library for React
34 lines (33 loc) • 1.22 kB
JavaScript
/**
* 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.peek() || []), value]
: (field.value.peek() || []).filter((v) => v !== value)
: type === 'number'
? valueAsNumber
: type === 'boolean'
? checked
: type === 'File' && files
? files[0]
: type === 'File[]' && files
? [...files]
: type === 'Date' && valueAsDate
? valueAsDate
: field.value.peek());
}