@sparkstone/solid-validation
Version:
A lightweight form validation library for Solid.js with PocketBase integration.
31 lines (30 loc) • 1.49 kB
TypeScript
type Falsy = false | 0 | '' | null | undefined | void;
type MaybePromise<T> = T | Promise<T>;
type ValidatorResponse = MaybePromise<string | Falsy>;
export type Validator<Element> = Falsy | ((el: Element) => ValidatorResponse);
type ValidatedElement = HTMLElement & {
name: string;
};
type OnFormSubmit<ErrorFields extends Object, Payload> = (el: Payload) => MaybePromise<void | Partial<ErrorFields>>;
declare module 'solid-js' {
namespace JSX {
interface Directives {
formSubmit: (callback: HTMLFormElement) => any;
validate: boolean | Validator<any>[];
}
}
}
export declare function useForm<ErrorFields extends Object>({ errorClass }?: {
errorClass?: string;
}): {
validate: <Element_1 extends ValidatedElement>(ref: Element_1, accessor?: () => Falsy | Validator<Element_1>[]) => void;
formSubmit: (ref: HTMLFormElement, accessor: () => OnFormSubmit<ErrorFields, HTMLFormElement>) => void;
submit: <Payload>(callback: OnFormSubmit<ErrorFields, Payload>, ref?: Payload) => Promise<void>;
errors: Partial<ErrorFields>;
isSubmitting: import("solid-js").Accessor<boolean>;
isSubmitted: import("solid-js").Accessor<boolean>;
validateField: (fieldName: keyof ErrorFields) => Promise<boolean>;
getFieldValue: (fieldName: keyof ErrorFields) => string;
validateRef: <Element_2 extends ValidatedElement>(...args: Validator<Element_2>[]) => (ref: Element_2) => void;
};
export {};