@thi.ng/rdom-forms
Version:
Data-driven declarative & extensible HTML form generation
57 lines • 4.74 kB
TypeScript
import type { MultiFn2 } from "@thi.ng/defmulti";
import type { Attribs, FormAttribs } from "@thi.ng/hiccup-html";
import { type ComponentLike } from "@thi.ng/rdom";
import type { ISubscribable } from "@thi.ng/rstream";
import type { Color, Container, Custom, DateTime, DateVal, Email, FileVal, Form, FormItem, FormOpts, Group, HiddenValue, Month, MultiFileVal, MultiSelectNum, MultiSelectStr, Num, Password, RadioNum, RadioStr, Range, Reset, SelectNum, SelectStr, Str, Submit, Text, Time, Toggle, Trigger, UrlVal, Value, Week } from "./api.js";
export declare const form: (attribs: Partial<FormAttribs>, ...items: FormItem[]) => Form;
export declare const container: (attribs: Partial<Attribs>, ...items: FormItem[]) => Container;
export declare const group: (spec: Omit<Group, "type" | "id" | "items"> & {
id?: string;
}, ...items: FormItem[]) => Group;
export declare const custom: (body: ComponentLike) => Custom;
export declare const hidden: (spec: Omit<HiddenValue, "type">) => HiddenValue;
export type PartialSpec<T extends Value> = Omit<T, "type" | "id"> & {
id?: string;
};
export type ReadonlyPartialSpec<T extends Value, V = string> = Omit<T, "type" | "id" | "readonly" | "value"> & {
id?: string;
readonly: true;
value?: ISubscribable<V>;
};
export declare const color: (spec: PartialSpec<Color> | ReadonlyPartialSpec<Color, string>) => Color;
export declare const date: (spec: PartialSpec<DateVal> | ReadonlyPartialSpec<DateVal, string>) => DateVal;
export declare const dateTime: (spec: PartialSpec<DateTime> | ReadonlyPartialSpec<DateTime, string>) => DateTime;
export declare const email: (spec: PartialSpec<Email> | ReadonlyPartialSpec<Email, string>) => Email;
export declare const file: (spec: PartialSpec<FileVal> | ReadonlyPartialSpec<FileVal, never>) => FileVal;
export declare const month: (spec: PartialSpec<Month> | ReadonlyPartialSpec<Month, string>) => Month;
export declare const multiFile: (spec: PartialSpec<MultiFileVal> | ReadonlyPartialSpec<MultiFileVal, never>) => MultiFileVal;
export declare const num: (spec: PartialSpec<Num> | ReadonlyPartialSpec<Num, number>) => Num;
export declare const password: (spec: PartialSpec<Password> | ReadonlyPartialSpec<Password, string>) => Password;
export declare const phone: (spec: PartialSpec<Email> | ReadonlyPartialSpec<Email, string>) => Email;
export declare const radioNum: (spec: PartialSpec<RadioNum> | ReadonlyPartialSpec<RadioNum, number>) => RadioNum;
export declare const radioStr: (spec: PartialSpec<RadioStr> | ReadonlyPartialSpec<RadioStr, string>) => RadioStr;
export declare const range: (spec: PartialSpec<Range> | ReadonlyPartialSpec<Range, number>) => Range;
export declare const reset: (spec: PartialSpec<Reset> | ReadonlyPartialSpec<Reset, string>) => Reset;
export declare const search: (spec: PartialSpec<Str> | ReadonlyPartialSpec<Str, string>) => Str;
export declare const str: (spec: PartialSpec<Str> | ReadonlyPartialSpec<Str, string>) => Str;
export declare const submit: (spec: PartialSpec<Submit> | ReadonlyPartialSpec<Submit, string>) => Submit;
export declare const text: (spec: PartialSpec<Text> | ReadonlyPartialSpec<Text, string>) => Text;
export declare const time: (spec: PartialSpec<Time> | ReadonlyPartialSpec<Time, string>) => Time;
export declare const toggle: (spec: PartialSpec<Toggle> | ReadonlyPartialSpec<Toggle, boolean>) => Toggle;
export declare const trigger: (spec: PartialSpec<Trigger> | ReadonlyPartialSpec<Trigger, string>) => Trigger;
export declare const url: (spec: PartialSpec<UrlVal> | ReadonlyPartialSpec<UrlVal, string>) => UrlVal;
export declare const week: (spec: PartialSpec<Week> | ReadonlyPartialSpec<Week, string>) => Week;
export declare const selectNum: <T extends number = number>(spec: PartialSpec<SelectNum<T>> | ReadonlyPartialSpec<SelectNum<T>>) => SelectNum<T>;
export declare const selectStr: <T extends string = string>(spec: PartialSpec<SelectStr<T>> | ReadonlyPartialSpec<SelectStr<T>>) => SelectStr<T>;
export declare const multiSelectNum: <T extends number = number>(spec: PartialSpec<MultiSelectNum<T>> | ReadonlyPartialSpec<MultiSelectNum<T>>) => MultiSelectNum<T>;
export declare const multiSelectStr: <T extends string = string>(spec: PartialSpec<MultiSelectStr<T>> | ReadonlyPartialSpec<MultiSelectStr<T>>) => MultiSelectStr<T>;
/**
* Compiles given {@link FormItem} spec into a hiccup/rdom component, using
* provided options to customize attributes and behaviors.
*
* @remarks
* This function is polymorphic and dynamically extensible for new/custom form
* element types. See thi.ng/defmulti readme for instructions.
*/
export declare const compileForm: MultiFn2<FormItem, Partial<FormOpts>, ComponentLike>;
//# sourceMappingURL=compile.d.ts.map