UNPKG

@gavant/ember-validations

Version:

A form validator library using ember-changeset and ember-changeset-validations

92 lines (91 loc) 3.13 kB
import Component from '@glimmer/component'; import { BufferedChangeset } from 'ember-changeset/types'; import { WithBoundArgs } from '@glint/template'; import { GenericChangeset } from "../../utilities/create-changeset"; import InputValidator from "../input-validator/index"; import FormValidatorChild from "./child/index"; interface FormValidatorArgs<C extends GenericChangeset<V>, V = ValueForChangeset<C>> { changeset: C; submit: (parent: C, children?: GenericChangeset<any>[]) => void; } type BoundInputValidator<C extends GenericChangeset<V>, V = ValueForChangeset<C>> = WithBoundArgs<typeof InputValidator<C>, 'parent'>; interface FormValidatorSignature<C extends GenericChangeset<V>, V = ValueForChangeset<C>> { Args: FormValidatorArgs<C, V>; Element: HTMLFormElement; Blocks: { default: [ C, { submit: FormValidator<C, V>['submitForm']; input: WithBoundArgs<typeof InputValidator<C>, 'parent'>; child: typeof FormValidatorChild; showAllValidationFields: boolean; } ]; }; } type ValueForChangeset<V> = V extends GenericChangeset<infer T> ? T : never; declare class FormValidator<C extends GenericChangeset<V>, V = ValueForChangeset<C>> extends Component<FormValidatorSignature<C, V>> { childValidators: FormValidatorChild<C, V>[]; didInvokeValidate: boolean; showAllValidationFields: boolean; /** * Register a new child * * @param {FormValidatorChild<T>} child * @memberof FormValidator */ /** * Register a new child * * @param {FormValidatorChild<T>} child * @memberof FormValidator */ registerChild(child: FormValidatorChild<C, V>): void; /** * Deregister child * * @param {FormValidatorChild<T>} child * @memberof FormValidator */ /** * Deregister child * * @param {FormValidatorChild<T>} child * @memberof FormValidator */ deregisterChild(child: FormValidatorChild<C, V>): void; /** * Validate a changeset * * @param {BufferedChangeset} changeset * @return {*} * @memberof FormValidator */ /** * Validate a changeset * * @param {BufferedChangeset} changeset * @return {*} * @memberof FormValidator */ validateChangeset(changeset: BufferedChangeset): Promise<unknown>; /** * Submit the form. Check parent changeset and all child changesets to see if they validate * If they do validate, try to invoke `submit`. Otherwise show all validation field errors * * @param {Event} event * @return {*} * @memberof FormValidator */ /** * Submit the form. Check parent changeset and all child changesets to see if they validate * If they do validate, try to invoke `submit`. Otherwise show all validation field errors * * @param {Event} event * @return {*} * @memberof FormValidator */ submitForm(event: Event): Promise<void>; } export { BoundInputValidator, ValueForChangeset, FormValidator as default };