Asynchronous form handling and validation for VueJS forms

Overview

vue-smooth-form

Asynchronous form handling library for VueJS.

Alternatives

This module was inspired by https://github.com/jaredpalmer/formik and https://github.com/blocka/vue-simpleform. Formik is the well-known form handling library for React, and vue-simpleform is its closest counterpart for VueJS. However, it has two problems that prevented me (and possibly you) from using it:

  1. It didn't work with custom form controls such as those in Vuetify, the Material-Design component library for Vue. Many Vuetify form controls pass raw strings in their events, and vue-simpleform is hard-coded to expect HTML DOM Event objects for all event callbacks.

  2. I would have filed a pull request to fix this, but vue-simpleform appears to be no longer actively maintained. There are two open pull requests that have not been addressed and it is still in its 0.0.13 version at this time.

Basic Usage

Login Reset Forgot Password ">
<template>
  <vue-smooth-form v-slot="{form}" :initial-values="initialValues" :validate-form="validate">
    
    <v-text-field
      type="email"
      @blur="form.onBlur"
      @change="form.onChange('email', $event)"
      @input="form.onInput('email', $event)"
      name="email"
      :value="form.values.email"
      :error-messages="form.touched.email && form.errors.email || ''"
      autocomplete="email"
      label="Email address..."/>

    
    <input 
      type="password" 
      @blur="form.onBlur"
      @change="form.onChange"
      @input="form.onInput"
      name="password" 
      :value="form.values.password" />

    <v-btn color="primarylight" :disabled="form.isSubmitting || !form.isValid" @click.prevent="login(form)">Loginv-btn>
    <v-btn color="primarylight" :disabled="form.isSubmitting || !form.isValid" @click.prevent="form.resetForm">Resetv-btn>

    <v-btn flat :disabled="form.submitting">Forgot Passwordv-btn>
  vue-smooth-form>
template>

<script>
    import VueSmoothForm from 'vue-smooth-form';
    import API from './api';
    
    export default {
        components: { VueSmoothForm },
        data () {
            return {
                initialValues: {
                    email: '',
                    password: '',
                }
            }
        },
        methods: {
            // Form action handlers can be whatever we want. 
            async login(form) {
                form.setSubmitting(true);

                try {
                    const result = await API.login(form.values);
                    console.log('login result', result);
                    form.resetForm();
                } catch (e) {
                    alert(e.message);
                }
              
                form.setSubmitting(false);
            },
        
            // The validation routine receivs a reference to the form. We destructure here and pull out the only properties we need.
            // values contains the field values, and setFormErrors is a utility method to set all the error states on the form.
            async validate({ values, setFormErrors }) {
              if (this.validationAbort) {
                this.validationAbort.abort();
                this.validationAbort = null;
              }
        
              this.validationAbort = new AbortController();
        
              try {
                const result = await API.validateForm('login', values, this.validationAbort.signal);
                if (result) {
                  // We can arrive here with a null result if we aborted a request
                  setFormErrors(result.errors);
                }
              } catch (e) {
                console.log('Validation error', e);
              }
        
              this.validationAbort = null;
            },
        },
    }
script>

Details

This library provides a simple wrapper component called vue-smooth-form. It initializes a local values object from a set of initial values provided by the parent component, then passes a reference to itself (with useful methods, properties, and events) to its children via a slot binding. Simply wire each input field to the values, errors, and event handlers via that reference.

Input Field Event Handlers

form.onBlur - Connect this to the @blur event for each input field. Sets the field to "touched". form.onChange - Connect this to the @change event for each input field. Sets the field to "dirty". form.onInput - Connect this to the @input event for each input field. Sets the field to "touched" and "dirty".

Note that all three event handlers may be called with one of two patterns:

form.onChange(fieldName, value) - For cases where you have a raw string or other value to pass form.onChange($event) - For cases where you have an HTML DOM event. The field name will be taken from event.target.name, so ensure that your input field has a name attribute.

Form Properties

form.values - { field: error } map of current field values form.errors - { field: error } map of error strings as set by the validation function

form.isValid - True if the entire form is valid (no fields have errors). Just a shortcut for checking if the errors object is empty. form.isSubmitting - True if the form is being submitted, as set by form.setSubmitting(). Useful for disabling buttons.

form.valid - { field: isValid } map of booleans identifying valid fields (those with no errors) form.invalid - { field: isValid } map of booleans identifying invalid fields form.untouched - { field: isValid } map of booleans identifying untouched fields (those that have never received focus)
form.touched - { field: isValid } map of booleans identifying touched fields form.pristine - { field: isValid } map of booleans identifying pristine fields (those that have not been modified) form.dirty - { field: isValid } map of booleans identifying dirty fields

Support Methods

form.setSubmitting(true|false) - Set the isSubmitting status for the form form.resetForm() - Reset all values{} back to initialValues{}. form.setFieldValue(path, value) - Set field to value. form.setFieldError(path, error) - Set the error status for a field. Set error to null to clear an error. form.setFieldTouched(path, true|false) - Set the touched and untouched statuses for a field form.setFieldDirty(path, true|false) - Set the dirty and pristine statuses for a field form.setFormErrors(errors) - Set all errors on a form. The parameter should be a dictionary of fields with error strings or null.

Validation and Submission

Unlike other form handling libraries, vue-smooth-form does not try to handle submit events for you. Just create whatever buttons, links, or other controls you want to handle this. Typically you would use the form.setSubmitting() method as shown above, but only as a convenience if you want to disable certain controls (like the submit button) during the submit call to the server.

Validation is done automatically whenever a field's value changes, or the field loses focus. Validation may be asynchronous, and vue-smooth-form will wait for it to complete. However, note that rapid data entry by the user may trigger this callback many times. If you want to be kind to your server, consider using a cancelable request using AbortController. An example of this is shown above.

Yup Schema

To reduce boilerplate, you can use the excellent Yup library to define a schema. If you do, VueSmoothForm can handle all of the validation for you with no callbacks:

... ">
<template>
    <vue-smooth-form v-slot="{form}" :initial-values="initialValues" :yup-schema="validationSchema">
        ...
    vue-smooth-form>
template>

<script>
import VueSmoothForm from 'vue-smooth-form';
import * as yup from 'yup';

export default {
  components: { VueSmoothForm },
  props: [],
  data: function() {
    return {
      initialValues: {
        name: '',
        email: '',
      },
      validationSchema: yup.object().shape({
        name: yup.string()
          .min(3, 'Please enter between 3 and 20 characters')
          .max(20, 'Please enter between 3 and 20 characters')
          .required('This field is required'),
        email: yup.string()
          .email('Please enter a valid email address')
          .required('This field is required'),
      })
    }
  },
}
script>

Event Handling

VueSmoothForm needs to know about events occurring in input fields to update its values and other internal state. But sometimes you may also want to know about these changes. A good example is if you need to clear one field when another is changed. In the form below, we show a contact method selector and room to enter an email address or phone number. If we select by-email, we disable the phone number field, and vice versa. But it could be confusing for the user to see a value still in the disabled field (which they cannot clear because of it being disabled). Using the change event we clear this for them:

">
<template>
    <vue-smooth-form v-slot="{form}" :initial-values="initialValues" :yup-schema="validationSchema" v-on:value="onValue">
        <select
            id="contactMethod"
            name="contactMethod"
            @blur="form.onBlur"
            @change="form.onChange"
            @input="form.onInput"
            :value="form.values.contactMethod">
            <option value="email">Emailoption>
            <option value="phone">Phoneoption>
          select>

        <input
          id="email"
          type="text"
          @blur="form.onBlur"
          @change="form.onChange"
          @input="form.onInput"
          name="email"
          :value="form.values.email"
          :disabled="form.values.contactMethod !== 'email"
          :placeholder="Email Address">

        <input
          id="phone"
          type="text"
          @blur="form.onBlur"
          @change="form.onChange"
          @input="form.onInput"
          name="phone"
          :value="form.values.phone"
          :disabled="form.values.contactMethod !== 'phone"
          :placeholder="Phone Number">

    vue-smooth-form>
template>

<script>
import VueSmoothForm from 'vue-smooth-form';

export default {
  components: { VueSmoothForm },
  props: [],
  data: function() {
    return {
      initialValues: {
        contactMethod: 'email',
        email: '',
        phone: '',
      },
    }
  },
  methods: {
    onValue({ path, value, form }) {
      console.log(`Changed ${path} to ${value}`);
      if (path === 'contactMethod') {
        const unusedField = value === 'email' ? 'phone' : 'email';
        form.setFieldValue(unusedField, '');
      }
    },
  }
}
script>
Comments
  • Bump follow-redirects from 1.7.0 to 1.14.7

    Bump follow-redirects from 1.7.0 to 1.14.7

    Bumps follow-redirects from 1.7.0 to 1.14.7.

    Commits
    • 2ede36d Release version 1.14.7 of the npm package.
    • 8b347cb Drop Cookie header across domains.
    • 6f5029a Release version 1.14.6 of the npm package.
    • af706be Ignore null headers.
    • d01ab7a Release version 1.14.5 of the npm package.
    • 40052ea Make compatible with Node 17.
    • 86f7572 Fix: clear internal timer on request abort to avoid leakage
    • 2e1eaf0 Keep Authorization header on subdomain redirects.
    • 2ad9e82 Carry over Host header on relative redirects (#172)
    • 77e2a58 Release version 1.14.4 of the npm package.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump elliptic from 6.5.0 to 6.5.3

    Bump elliptic from 6.5.0 to 6.5.3

    Bumps elliptic from 6.5.0 to 6.5.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump json5, @vue/cli-plugin-babel, @vue/cli-plugin-eslint and @vue/cli-plugin-unit-mocha

    Bump json5, @vue/cli-plugin-babel, @vue/cli-plugin-eslint and @vue/cli-plugin-unit-mocha

    Bumps json5 to 2.2.2 and updates ancestor dependencies json5, @vue/cli-plugin-babel, @vue/cli-plugin-eslint and @vue/cli-plugin-unit-mocha. These dependencies need to be updated together.

    Updates json5 from 0.5.1 to 2.2.2

    Release notes

    Sourced from json5's releases.

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1

    • New: package.json and package.json5 include a module property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)
    • Fix: stringify outputs \0 as \\x00 when followed by a digit. (#210)
    • Fix: Spelling mistakes have been fixed. (#196)

    v2.1.0

    • New: The index.mjs and index.min.mjs browser builds in the dist directory support ES6 modules. (#187)

    v2.0.1

    • Fix: The browser builds in the dist directory support ES5. (#182)

    v2.0.0

    • Major: JSON5 officially supports Node.js v6 and later. Support for Node.js v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been rewritten in native ES5, and the dependence on Babel has been eliminated.

    • New: Support for Unicode 10 has been added.

    • New: The test framework has been migrated from Mocha to Tap.

    • New: The browser build at dist/index.js is no longer minified by default. A minified version is available at dist/index.min.js. (#181)

    • Fix: The warning has been made clearer when line and paragraph separators are used in strings.

    • Fix: package.json5 has been restored, and it is automatically generated and

    ... (truncated)

    Changelog

    Sourced from json5's changelog.

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1 [code, diff]

    • New: package.json and package.json5 include a module property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)
    • Fix: stringify outputs \0 as \\x00 when followed by a digit. (#210)
    • Fix: Spelling mistakes have been fixed. (#196)

    ... (truncated)

    Commits
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • d720b4f Improve readme (e.g. explain JSON5 better!) (#291)
    • 910ce25 docs: fix spelling of Aseem
    • 2aab4dd test: require tap as t in cli tests
    • 6d42686 test: remove mocha syntax from tests
    • 4798b9d docs: update installation and usage for modules
    • Additional commits viewable in compare view

    Updates @vue/cli-plugin-babel from 3.9.2 to 5.0.8

    Release notes

    Sourced from @​vue/cli-plugin-babel's releases.

    v5.0.8

    :bug: Bug Fix

    v5.0.7

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    v5.0.6

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    v5.0.5

    :bug: Bug Fix

    • @vue/cli
      • #7167 fix(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service
    • @vue/cli-plugin-e2e-cypress
      • [697bb44] fix: should correctly resolve cypress bin path for Cypress 10 (Note that the project is still created with Cypress 9 by default, but you can upgrade to Cypress 10 on your own now)

    Committers: 3

    v5.0.4

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    v5.0.3

    ... (truncated)

    Changelog

    Sourced from @​vue/cli-plugin-babel's changelog.

    5.0.7 (2022-07-05)

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    5.0.6 (2022-06-16)

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    5.0.5 (2022-06-16)

    :bug: Bug Fix

    • @vue/cli
      • #7167 feat(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service

    Committers: 3

    5.0.4 (2022-03-22)

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    ... (truncated)

    Commits

    Updates @vue/cli-plugin-eslint from 3.9.2 to 5.0.8

    Release notes

    Sourced from @​vue/cli-plugin-eslint's releases.

    v5.0.8

    :bug: Bug Fix

    v5.0.7

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    v5.0.6

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    v5.0.5

    :bug: Bug Fix

    • @vue/cli
      • #7167 fix(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service
    • @vue/cli-plugin-e2e-cypress
      • [697bb44] fix: should correctly resolve cypress bin path for Cypress 10 (Note that the project is still created with Cypress 9 by default, but you can upgrade to Cypress 10 on your own now)

    Committers: 3

    v5.0.4

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    v5.0.3

    ... (truncated)

    Changelog

    Sourced from @​vue/cli-plugin-eslint's changelog.

    5.0.7 (2022-07-05)

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    5.0.6 (2022-06-16)

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    5.0.5 (2022-06-16)

    :bug: Bug Fix

    • @vue/cli
      • #7167 feat(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service

    Committers: 3

    5.0.4 (2022-03-22)

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    ... (truncated)

    Commits

    Updates @vue/cli-plugin-unit-mocha from 3.9.0 to 5.0.8

    Release notes

    Sourced from @​vue/cli-plugin-unit-mocha's releases.

    v5.0.8

    :bug: Bug Fix

    v5.0.7

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    v5.0.6

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    v5.0.5

    :bug: Bug Fix

    • @vue/cli
      • #7167 fix(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service
    • @vue/cli-plugin-e2e-cypress
      • [697bb44] fix: should correctly resolve cypress bin path for Cypress 10 (Note that the project is still created with Cypress 9 by default, but you can upgrade to Cypress 10 on your own now)

    Committers: 3

    v5.0.4

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    v5.0.3

    ... (truncated)

    Changelog

    Sourced from @​vue/cli-plugin-unit-mocha's changelog.

    5.0.7 (2022-07-05)

    • @vue/cli-service
    • @vue/cli-ui
      • #7210 chore: upgrade to apollo-server-express 3.x

    Committers: 2

    5.0.6 (2022-06-16)

    Fix compatibility with the upcoming Vue 2.7 (currently in alpha) and Vue Loader 15.10 (currently in beta).

    In Vue 2.7, vue-template-compiler is no longer a required peer dependency. Rather, there's a new export under the main package as vue/compiler-sfc.

    5.0.5 (2022-06-16)

    :bug: Bug Fix

    • @vue/cli
      • #7167 feat(upgrade): prevent changing the structure of package.json file during upgrade (@​blzsaa)
    • @vue/cli-service

    Committers: 3

    5.0.4 (2022-03-22)

    :bug: Bug Fix

    • @vue/cli-service
    • @vue/cli-shared-utils, @vue/cli-ui
      • 75826d6 fix: replace node-ipc with @achrinza/node-ipc to further secure the dependency chain

    Committers: 1

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump express from 4.17.1 to 4.18.2

    Bump express from 4.17.1 to 4.18.2

    Bumps express from 4.17.1 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump loader-utils from 0.2.17 to 1.4.2

    Bump loader-utils from 0.2.17 to 1.4.2

    Bumps loader-utils from 0.2.17 to 1.4.2.

    Release notes

    Sourced from loader-utils's releases.

    v1.4.2

    1.4.2 (2022-11-11)

    Bug Fixes

    v1.4.1

    1.4.1 (2022-11-07)

    Bug Fixes

    v1.4.0

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    v1.3.0

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    v1.2.3

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    v1.2.2

    1.2.2 (2018-12-27)

    Bug Fixes

    ... (truncated)

    Changelog

    Sourced from loader-utils's changelog.

    1.4.2 (2022-11-11)

    Bug Fixes

    1.4.1 (2022-11-07)

    Bug Fixes

    1.4.0 (2020-02-19)

    Features

    • the resourceQuery is passed to the interpolateName method (#163) (cd0e428)

    1.3.0 (2020-02-19)

    Features

    • support the [query] template for the interpolatedName method (#162) (469eeba)

    1.2.3 (2018-12-27)

    Bug Fixes

    • interpolateName: don't interpolated hashType without hash or contenthash (#140) (3528fd9)

    1.2.2 (2018-12-27)

    Bug Fixes

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by evilebottnawi, a new releaser for loader-utils since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump terser from 4.1.2 to 4.8.1

    Bump terser from 4.1.2 to 4.8.1

    Bumps terser from 4.1.2 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)

    v4.8.0

    • Support for numeric separators (million = 1_000_000) was added.
    • Assigning properties to a class is now assumed to be pure.
    • Fixed bug where yield wasn't considered a valid property key in generators.

    v4.7.0

    • A bug was fixed where an arrow function would have the wrong size
    • arguments object is now considered safe to retrieve properties from (useful for length, or 0) even when pure_getters is not set.
    • Fixed erroneous const declarations without value (which is invalid) in some corner cases when using collapse_vars.

    v4.6.13

    • Fixed issue where ES5 object properties were being turned into ES6 object properties due to more lax unicode rules.
    • Fixed parsing of BigInt with lowercase e in them.

    v4.6.12

    • Fixed subtree comparison code, making it see that [1,[2, 3]] is different from [1, 2, [3]]
    • Printing of unicode identifiers has been improved

    v4.6.11

    • Read unused classes' properties and method keys, to figure out if they use other variables.
    • Prevent inlining into block scopes when there are name collisions
    • Functions are no longer inlined into parameter defaults, because they live in their own special scope.
    • When inlining identity functions, take into account the fact they may be used to drop this in function calls.
    • Nullish coalescing operator (x ?? y), plus basic optimization for it.
    • Template literals in binary expressions such as + have been further optimized

    v4.6.10

    • Do not use reduce_vars when classes are present

    v4.6.9

    • Check if block scopes actually exist in blocks

    v4.6.8

    • Take into account "executed bits" of classes like static properties or computed keys, when checking if a class evaluation might throw or have side effects.

    v4.6.7

    • Some new performance gains through a AST_Node.size() method which measures a node's source code length without printing it to a string first.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Chad Robinson
Chad Robinson
Form Validation in Vue3 with TypeScript along with vuelidate for the validation

Vue3 with typescript Form Validation in Vue3 with vuelidate library Node Version Used: v14.17.3 Library Used for the validation: Vuelidate 2 Demo Link

Sandeep Kumar Mandal 4 Oct 10, 2022
A simple vue component that can wrap forms with validation and submit functionality.

vue form component A simple vue component that can wrap forms with validation and submit functionality. installation Using npm: $ npm i -save-dev vue-

Kostas Tourvas 0 Sep 18, 2019
Vue Js Forms with laravel validation

vue-laravel-form Vue Js Forms with laravel validation This package provides a Form class that can validation our forms with laravel backend validation

Ritesh Singh 5 Oct 19, 2022
Vue props validation logic extracted for nested validation in object and arrays.

vue-props-validation Vue props validation logic extracted for nested validation in object and arrays. Install npm install vue-props-validation Usage Y

Rubén Valseca 21 Feb 28, 2022
Sirius Validation - stand-alone JS library for data validation in Node and browsers.

SiriusJS Validation Sirius Validation is stand-alone JS library for data validation in Node and browsers. It offers: 23 build-in validation rules. The

Adrian Miu 1 Mar 24, 2020
Vue data validation rules, very much inspired from Laravel validation

A Vue plugin that provides out-of-the-box data validation rules, very much inspired from Laravel validation system. Installation npm i @primitivesocia

Primitive. 15 Apr 13, 2022
Vue Laravel Validator This plugin handle laravel validation response and simple creating form and posting data

Vue Laravel Validator This plugin handle laravel validation response and simple creating form and posting data. #install npm i vue-laravel-validator -

Metin Seylan 58 Aug 23, 2022
Vue.js 2 form component that integrates jQuery Validation and Axios.

vue-vform Vue.js 2 form component that integrates jQuery Validation and Axios. Install Yarn yarn add vue-vform --dev NPM npm install vue-vform --save-

Jose Quintana 15 Nov 24, 2022
Results of small 30 min online coding challenge + small polishing afterwards. Vue JS login form + Express JS login endpoint with CORS middleware and validation of request

Install dependencies: npm -i install Start FE: npm run serve ./frontend/src/main.js Start BE: node ./backend/controller/index.js ToDo: tests docker-co

Oleksii Dubinin 0 Jan 14, 2022
A Vue.js directive for sending data from form and primitive validation

Vue Form Send A Vue.js directive for sending data from form and primitive validation inputs Installation npm i --save-dev vue-form-send import VueForm

Aleksey Pleshkov 3 Apr 13, 2022
Vue Form with Laravel Inspired Validation and Simply Enjoyable Error Messages Api

Vue Form with Laravel Inspired Validation and Simply Enjoyable Error Messages Api. (Form Api, Validator Api, Rules Api, Error Messages Api)

Zak Horton 41 Jul 10, 2022
Vue.js form validation plugin that depends on the property not the HTML element on validating with no dependency and respect to Vue reactivity.

Vue.js form validation plugin that depends on the property not the HTML element on validating with no dependency and respect to Vue reactivity.

Mohammed Al-Mahdawi 1 May 7, 2019
Simple and easy Vue directive for form validation.

Simple and easy Vue.js directive for form validation.

Edward S. Ramos 0 Feb 15, 2021
✅ Form Validation for Vue.js

vee-validate is a form validation library for Vue.js that allows you to validate inputs and build better form UIs in a familiar declarative style or u

Abdelrahman Awad 9.5k Jan 1, 2023
RawModel.js plugin for Vue.js v2. Form validation has never been easier!

vue-rawmodel RawModel.js plugin for Vue.js v2. Form validation has never been easier! This plugin integrates RawModel.js framework into your Vue.js ap

Kristijan Sedlak 81 Nov 24, 2022
Form validation for Vue.js 2.2+

vue-form Form validation for Vue.js 2.2+ Install Available through npm as vue-form. import VueForm from 'vue-form'; // or var VueForm = require('vue-f

null 617 Dec 18, 2022
Vue form components with server-side validation in mind

Vue form components with server side validation in mind About FormVuelar is a set of predefined vue form components which are designed to automaticall

Janis Kelemen 295 Dec 10, 2022
A light, universal, interchangeable validator for all purposes including form validation with fully control.

vue-universal-validator A light, universal, interchangeable validator for all purposes including form validation with fully control. Usage rules.js //

guAnsunyata 24 Nov 29, 2019
Vue composition function for Form Validation

Form Validation for Vue 3 Vue composition function for Form Validation with async rules. ?? Written in TypeScript ?? Dynamic Form support ?? Light wei

null 18 May 11, 2022