UNPKG

@modular-forms/qwik

Version:

The modular and type-safe form library for Qwik

29 lines (28 loc) 1.47 kB
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' ? [] : {}); }