UNPKG

@nodestrap/editable-control

Version:

A generic element with valid/invalid state.

115 lines (114 loc) 6.27 kB
import { default as React } from 'react'; import type { PropEx } from '@cssfn/css-types'; import { StyleCollection } from '@cssfn/cssfn'; import { Result as ValResult, ValidationProps } from '@nodestrap/validations'; import { ThemeName } from '@nodestrap/basic'; import { ControlProps } from '@nodestrap/control'; export interface ValidInvalidVars { animValid: any; animInvalid: any; foregStart: any; backgStart: any; } export declare const isValided: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isValidating: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUnvalidating: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUnvalided: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isValid: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUnvalid: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isInvalided: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isInvalidating: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUninvalidating: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUninvalided: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isInvalid: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isUninvalid: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; export declare const isNoValidation: (styles: StyleCollection) => import("@cssfn/cssfn").Rule; /** * Uses valid & invalid states. * @returns A `[Factory<Rule>, ReadonlyRefs, ReadonlyDecls]` represents valid & invalid state definitions. */ export declare const usesValidInvalidState: () => readonly [() => import("@cssfn/cssfn").Rule, import("@cssfn/css-var").ReadonlyRefs<ValidInvalidVars>, import("@cssfn/css-var").ReadonlyDecls<ValidInvalidVars>]; export declare const markValid: () => import("@cssfn/cssfn").Rule; /** * Creates a conditional color definitions at valid state. * @param themeName The name of valid theme. * @returns A `Rule` represents the conditional color definitions at valid state. */ export declare const usesThemeValid: (themeName?: ThemeName) => import("@cssfn/cssfn").Rule; export declare const markInvalid: () => import("@cssfn/cssfn").Rule; /** * Creates a conditional color definitions at invalid state. * @param themeName The name of invalid theme. * @returns A `Rule` represents the conditional color definitions at invalid state. */ export declare const usesThemeInvalid: (themeName?: ThemeName) => import("@cssfn/cssfn").Rule; export declare type EditableControlElement = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement; export declare type ValidatorHandler = () => ValResult; export declare type CustomValidatorHandler = (state: ValidityState, value: string) => ValResult; export declare const useInputValidator: (customValidator?: CustomValidatorHandler | undefined) => { /** * Handles the validation result. * @returns * `null` = uncheck. * `true` = valid. * `false` = invalid. */ validator: ValidatorHandler; handleInit: (target: EditableControlElement) => void; handleChange: (target: EditableControlElement) => void; }; export declare const useValidInvalidState: (props: ValidationProps, validator?: ValidatorHandler | undefined) => { /** * `true` : validating/valided * `false` : invalidating/invalided * `null` : uncheck/unvalidating/uninvalidating */ valid: ValResult; noValidation: boolean; class: string | undefined; handleAnimationEnd: (e: React.AnimationEvent<HTMLElement>) => void; }; export declare const usesEditableControlLayout: () => import("@cssfn/cssfn").Rule; export declare const usesEditableControlVariants: () => import("@cssfn/cssfn").Rule; export declare const usesEditableControlStates: () => import("@cssfn/cssfn").Rule; export declare const useEditableControlSheet: import("@cssfn/types").Factory<import("jss").Classes<"main">>; export declare const cssProps: import("@cssfn/css-config").Refs<{ '@keyframes valid': PropEx.Keyframes; '@keyframes unvalid': PropEx.Keyframes; '@keyframes invalid': PropEx.Keyframes; '@keyframes uninvalid': PropEx.Keyframes; animValid: (string | PropEx.Keyframes)[][]; animUnvalid: (string | PropEx.Keyframes)[][]; animInvalid: (string | PropEx.Keyframes)[][]; animUninvalid: (string | PropEx.Keyframes)[][]; }>, cssDecls: import("@cssfn/css-config").Decls<{ '@keyframes valid': PropEx.Keyframes; '@keyframes unvalid': PropEx.Keyframes; '@keyframes invalid': PropEx.Keyframes; '@keyframes uninvalid': PropEx.Keyframes; animValid: (string | PropEx.Keyframes)[][]; animUnvalid: (string | PropEx.Keyframes)[][]; animInvalid: (string | PropEx.Keyframes)[][]; animUninvalid: (string | PropEx.Keyframes)[][]; }>, cssVals: import("@cssfn/css-config").Vals<{ '@keyframes valid': PropEx.Keyframes; '@keyframes unvalid': PropEx.Keyframes; '@keyframes invalid': PropEx.Keyframes; '@keyframes uninvalid': PropEx.Keyframes; animValid: (string | PropEx.Keyframes)[][]; animUnvalid: (string | PropEx.Keyframes)[][]; animInvalid: (string | PropEx.Keyframes)[][]; animUninvalid: (string | PropEx.Keyframes)[][]; }>, cssConfig: import("@cssfn/css-config").CssConfigSettings; export interface EditableControlProps<TElement extends EditableControlElement = EditableControlElement> extends ControlProps<TElement>, ValidationProps { autoFocus?: boolean; name?: string; form?: string; defaultValue?: string | number | ReadonlyArray<string>; value?: string | number | ReadonlyArray<string>; onChange?: React.ChangeEventHandler<TElement>; customValidator?: CustomValidatorHandler; required?: boolean; } export declare function EditableControl<TElement extends EditableControlElement = EditableControlElement>(props: EditableControlProps<TElement>): JSX.Element; export { EditableControl as default };