UNPKG

@thi.ng/rdom-forms

Version:

Data-driven declarative & extensible HTML form generation

57 lines 4.74 kB
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