Skip to content

Working with values

This page contains all the methods and properties that you will need to work with the state of the form.

Set value

The main task of forms is to maintain the current state (value). To change it, use the setValues method:

ts
form.setValues({
     name: "Jack",
     age: 24
})
form.values // { name: "Jack", age: 24 }
form.setValues({
     name: "Jack",
     age: 24
})
form.values // { name: "Jack", age: 24 }

Options

values Required

The values when will be set for the form.

options Optional

An optional parameter, an object with the following properties:

_

changed Optional

Boolean value whether the given values are changes. If true then values will be projected onto changes.

target Optional

The name of the target on which setValues was called. You can look at this property as if the method was called from the child element whose name was passed to target.

clean Optional

Whether to completely overwrite the previous value. By default, setValues mixes in the value, but if set clean: true, the previous value will be completely overwritten by the new one.

Examples of using

Set value

ts
form.setValues({
     username: "Jack"
})
form.values // { username: "Jack" }
form.setValues({
     username: "Jack"
})
form.values // { username: "Jack" }

Set value with target parameter

ts
form.setValues({
     city: "Emerald City"
}, { target: "address" })
form.values // { address: { city: "Emerald City" } }
form.setValues({
     city: "Emerald City"
}, { target: "address" })
form.values // { address: { city: "Emerald City" } }

Using the clean parameter

ts
// Values: { username: "Jenesius", age: 24 }
form.setValues({ username: "Jenesius", age: 24 })

form.setValues({
     name: "Jask"
}, { clean: true })
form.values // { name: "Jack" }
// Values: { username: "Jenesius", age: 24 }
form.setValues({ username: "Jenesius", age: 24 })

form.setValues({
     name: "Jask"
}, { clean: true })
form.values // { name: "Jack" }

Using target and clean together

ts
form.setValues({
    name: "Jack",
    address: {
        city: "Emerald City"
     }
})

form.setValues({
     code: "00"
}, { target: "address", clean: true })
form.values // { name: "Jack", address: { code: "00" } }
form.setValues({
    name: "Jack",
    address: {
        city: "Emerald City"
     }
})

form.setValues({
     code: "00"
}, { target: "address", clean: true })
form.values // { name: "Jack", address: { code: "00" } }

Mixing in the value

ts
form.setValues({
    address: {
        city: "Emerald City"
    }
})
// { address: { city: "Emerald City" } }

form.setValues({
    address: {
        code: "00"
    }
})
form.values // { address: { city: "Emerald City", code: "00" } }
form.setValues({
    address: {
        city: "Emerald City"
    }
})
// { address: { city: "Emerald City" } }

form.setValues({
    address: {
        code: "00"
    }
})
form.values // { address: { city: "Emerald City", code: "00" } }

Changing values

As is already clear from setValues, if we pass change: true, then the work is done with the changes state forms. For convenient work, alias change was created, which automatically sets the changed parameter.

ts
form.change(data) // form.setValues(data, { changed: true })
form.change(data) // form.setValues(data, { changed: true })

Undo changes

To undo changes (work with changes) use the revert method:

ts
form.setValues({username: "Jenesius", age: 24});
form.change({age: 23, father: true});
// Values: { username: "Jenesius", age: 23, father: true }

form.revert();
// Values: { username: "Jenesius", age: 24}
form.setValues({username: "Jenesius", age: 24});
form.change({age: 23, father: true});
// Values: { username: "Jenesius", age: 23, father: true }

form.revert();
// Values: { username: "Jenesius", age: 24}

Clear values

To completely clear the form, use the cleanValues method:

ts
form.setValues({name: "Jack"})
form.cleanValues(); // Values: {}
form.setValues({name: "Jack"})
form.cleanValues(); // Values: {}

This method also accepts values that will be set instead of the current one:

ts
form.setValues({name: "Jack"})
form.cleanValues({age: 24}); // Values: { age: 24 }
form.setValues({name: "Jack"})
form.cleanValues({age: 24}); // Values: { age: 24 }

Form Values (Values)

From the previous examples, you can see that the final value of the form is in form.values:

ts
form.setValues({age: 24});
form.values // { age: 24 }
form.setValues({age: 24});
form.values // { age: 24 }

Form changes (Changes)

To get only the changes, you need to use form.changes:

ts
form.setValues({ name: "Jack" })
form.change({ age: 24 })
form.values; // { name: "Jack", name: 24 }
form.changes; // { age: 24 }
form.setValues({ name: "Jack" })
form.change({ age: 24 })
form.values; // { name: "Jack", name: 24 }
form.changes; // { age: 24 }

Get value by name

In some situations, there is a need to get the value of a field by name. For this case, you need to use namely the getValueByName method.

Options

name Optional

The string name of the field to get the value for.

ts
form.setValues({ login: "Jack" });
form.getValueByName('login') // Jack
form.setValues({ login: "Jack" });
form.getValueByName('login') // Jack

WARNING

Getting a value by property name is erroneous:

ts
form.values['login'] // Wrong
form.getValueByName('login') // Correct
form.values['login'] // Wrong
form.getValueByName('login') // Correct

If we are talking about simple fields, this will work, but in the case of compound fields (address.country) this method will not be able to find the required field value.

Accept changes

To accept all changes or only for a specific field, use the acceptChanges method. The method clears changes (whole or single field) and sets the cleared value to values.

Parameter

name Optional

If not passed, all changes will be first projected onto values and then cleared. If the value passed it must be a string field name.

Example

ts
const form = new Form();
form.change({ username: "Jack", age: 24, id: 1 })

form.acceptChanges('username');
form.pureValues; // { username: "Jack" }
form.changes // { age: 24, id: 1 }

form.acceptChanges();
form.pureValues; // { username: "Jack", age: 24, id: 1 }
form.changes; // {}
const form = new Form();
form.change({ username: "Jack", age: 24, id: 1 })

form.acceptChanges('username');
form.pureValues; // { username: "Jack" }
form.changes // { age: 24, id: 1 }

form.acceptChanges();
form.pureValues; // { username: "Jack", age: 24, id: 1 }
form.changes; // {}

Clear field changes

The cleanChangesByField method undoes the changes for the passed field. This function only works on the changes object and does not affects the values object. If the object's child property changes is an object, but the number child keys is 0, this property is completely removed from the changes object.

ts
form.setValues({age: 24})
form.change({name: "Jack", age: 25}); // { name: "Jack", age: 25 }
form.cleanChangesByField('name');
// Changes: { age: 25 }
// Values: { age: 25 }
form.setValues({age: 24})
form.change({name: "Jack", age: 25}); // { name: "Jack", age: 25 }
form.cleanChangesByField('name');
// Changes: { age: 25 }
// Values: { age: 25 }

Check field for change

The checkFieldChange method checks for changes to the passed field name. If the field has been changed will return true, false otherwise.

ts
form.change({name: "Jack"});
form.checkFieldChange('name') // true
form.checkFieldChange('age') // false
form.change({name: "Jack"});
form.checkFieldChange('name') // true
form.checkFieldChange('age') // false

Form Status (Changed)

To understand that the form is in a changed state, you need to get the value of the changed property;

ts
form.changed // false
form.change({ name: "Jack" })
form.changed // true
form.revert();
form.changed // false
form.changed // false
form.change({ name: "Jack" })
form.changed // true
form.revert();
form.changed // false

Released under the MIT License.