@modular-forms/qwik
Version:
The modular and type-safe form library for Qwik
29 lines (28 loc) • 1.47 kB
JavaScript
import { getFieldStore, getFilteredNames, getOptions } from '../utils';
export function getValues(form, arg2, arg3) {
// Destructure options and set default values
const { shouldActive = true, shouldTouched = false, shouldDirty = false, shouldValid = false, } = getOptions(arg2, arg3);
// Create and return values of form or field array
return getFilteredNames(form, arg2)[0].reduce((values, name) => {
// Get store of specified field
const field = getFieldStore(form, name);
// Add value if field corresponds to filter options
if ((!shouldActive || field.active) &&
(!shouldTouched || field.touched) &&
(!shouldDirty || field.dirty) &&
(!shouldValid || !field.error)) {
// Split name into keys to be able to add values of nested fields
(typeof arg2 === 'string' ? name.replace(`${arg2}.`, '') : name)
.split('.')
.reduce((object, key, index, keys) => (object[key] =
index === keys.length - 1
? // If it is last key, add value
field.value
: // Otherwise return object or array
(typeof object[key] === 'object' && object[key]) ||
(isNaN(+keys[index + 1]) ? {} : [])), values);
}
// Return modified values object
return values;
}, typeof arg2 === 'string' ? [] : {});
}