3.11.4 • Published 3 months ago

@baloise/web-app-validators-vue v3.11.4

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 months ago

@baloise/web-app-validators-vue

Continuous Release npm npm bundle size npm GitHub GitHub issues

Installation

For Vue we use the libary VeeValidate togehter with the Composition API.

First install VeeValidate (Version >= 4.x.x).

npm install @baloise/web-app-validators-vue vee-validate@next

Define i18n validators

In this section we change the return type of our BalValidators into the the translated texts. Pass your i18n translation function to the useValidator helper and then use the returned helper function createValidator to map the BalValidators with your translations.

import { BalValidators } from '@baloise/design-system-components'
import { useValidator, ValidatorFn } from '@baloise/design-system-components-vue'
import { i18n } from '../../plugins/i18n.plugin'

export { rules } from '@baloise/design-system-components-vue'

const { createValidator } = useValidator(i18n.global.t)

export const isRequired = (): ValidatorFn => createValidator(BalValidators.isRequired(), 'validator.required')

Create form

First we define our template like this.

<form @submit.prevent="submit">
  <BalField expanded :disabled="isFirstNameDisabled">
    <BalFieldLabel required> {{ $t('form.firstName.label') }} </BalFieldLabel>
    <BalFieldControl>
      <BalInput
        v-model="firstName"
        :name="firstNameName"
        :placeholder="$t('form.firstName.placeholder')"
        :disabled="isFirstNameDisabled"
      ></BalInput>
    </BalFieldControl>
    <BalFieldMessage color="danger" v-if="!isFirstNameDisabled"> {{ firstNameErrorMessage }} </BalFieldMessage>
  </BalField>
</form>

Now we have to define the logic of our form with the help of VeeValidate.

The helper function validators helps us to combine validators and to use the possibility to dynamically disable fields and their validation rules.

import { defineComponent, ref } from 'vue'
import { rules } from '@baloise/design-system-components-vue'
import { useField, useForm, useIsFormValid } from 'vee-validate'
import { isRequired } from '../helpers/validators'

export default defineComponent({
  setup() {
    const { validate } = useForm()
    const isFormValid = useIsFormValid()

    const isFirstNameDisabled = ref(false)
    const firstnameField = useField('firstname', rules(isFirstNameDisabled, [
      isRequired(),
    ]))

    async function submit() {
      const { valid, errors } = await validate()
      ...
    }

    function disable() {
      isFirstNameDisabled.value = !isFirstNameDisabled.value
    }

    return {
      firstname: firstnameField.value,
      firstNameName: firstnameField.name,
      firstnameErrorMessage: firstnameField.errorMessage,
      isFirstNameDisabled,
      isFormValid, disable, submit,
    }
  },
})
3.11.4

3 months ago

3.11.3

4 months ago

3.11.2

8 months ago

3.10.1

1 year ago

3.10.0

1 year ago

3.11.0

1 year ago

3.11.1

1 year ago

3.9.0

1 year ago

3.7.1-beta.302

1 year ago

3.7.1-beta.304

1 year ago

3.7.1-beta.303

1 year ago

3.7.1-beta.305

1 year ago

3.7.3

1 year ago

3.7.2

1 year ago

3.8.0

1 year ago

3.6.4

2 years ago

3.6.3

2 years ago

3.7.2-beta.1

1 year ago

3.7.1

1 year ago

3.7.0

1 year ago

3.3.2-beta.4

2 years ago

3.3.2-beta.7

2 years ago

3.3.2-beta.8

2 years ago

3.3.2-beta.5

2 years ago

3.3.2-beta.6

2 years ago

3.3.2-beta.9

2 years ago

3.3.2-beta.20

2 years ago

3.3.2-beta.22

2 years ago

3.3.2-beta.24

2 years ago

3.3.2-beta.23

2 years ago

3.6.2

2 years ago

3.6.1

2 years ago

3.6.0

2 years ago

3.3.2-beta.14

2 years ago

3.3.2-beta.17

2 years ago

3.3.2-beta.16

2 years ago

3.3.2-beta.19

2 years ago

3.3.2-beta.18

2 years ago

3.3.2-beta.13

2 years ago

3.5.0

2 years ago

3.4.0

2 years ago

3.3.1

2 years ago

3.3.0

2 years ago

3.2.1

2 years ago

3.3.3

2 years ago

3.3.2

2 years ago

3.1.0

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.15

2 years ago

2.0.16

2 years ago

2.0.13

2 years ago

2.0.14

2 years ago

2.0.11

2 years ago

2.0.12

2 years ago

2.0.9

2 years ago

2.0.10

2 years ago

2.0.8

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.2-beta.3

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago