@gavant/ember-validations
Version:
A form validator library using ember-changeset and ember-changeset-validations
92 lines (91 loc) • 3.13 kB
TypeScript
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 };