/** * These are available widgets for use in forms. * * @module FormWidgets */ /** * The StringWidgetType is how you display a text string. */ export declare const StringWidgetType: { readonly Text: "Text"; readonly Dropdown: "Dropdown"; }; export declare const NumberWidgetType: { readonly Number: "Number"; }; export declare const BooleanWidgetType: { readonly Toggle: "Toggle"; readonly Checkbox: "Checkbox"; }; export declare const CheckboxGroupWidgetType: { readonly CheckboxGroup: "CheckboxGroup"; }; export declare const RadioGroupWidgetType: { readonly RadioGroup: "RadioGroup"; }; export declare const DateWidgetType: { readonly Date: "Date"; }; export declare const TimeWidgetType: { readonly Time: "Time"; }; export declare const WidgetType: { readonly Time: "Time"; readonly Date: "Date"; readonly RadioGroup: "RadioGroup"; readonly CheckboxGroup: "CheckboxGroup"; readonly Toggle: "Toggle"; readonly Checkbox: "Checkbox"; readonly Number: "Number"; readonly Text: "Text"; readonly Dropdown: "Dropdown"; }; /** * All available widgets. */ export type Widget = StringWidget | NumberWidget | BooleanWidget | CheckboxGroupWidget | RadioGroupWidget | DateWidget; export interface BaseWidgetSpec { /** * The type of widget to be used. Widgets can only be used with matching specific data types. * For example the `Text` widget can be used with the `string` field type. */ type: T; } /** * A simple text field input widget. */ export interface TextWidgetSpec extends BaseWidgetSpec { placeholder?: string; multiline?: boolean; rows?: number; } /** * String field input widget. */ export type StringWidget = TextWidgetSpec | DropdownWidgetSpec; export interface NumberWidgetSpec extends BaseWidgetSpec { placeholder?: string; min?: number; max?: number; currencyChar?: string; decimalPlaces?: number; step?: number; } export interface CheckboxGroupWidgetSpec extends BaseWidgetSpec { group: Array<{ value: string; label: string; }>; } export type CheckboxGroupWidget = CheckboxGroupWidgetSpec; export interface RadioGroupWidgetSpec extends BaseWidgetSpec { group: Array<{ value: string; label: string; }>; } export type RadioGroupWidget = RadioGroupWidgetSpec; export interface DateWidgetSpec extends BaseWidgetSpec { minDate?: Date | null; maxDate?: Date | null; } export type TimeWidgetSpec = BaseWidgetSpec; export type DateWidget = DateWidgetSpec; export type TimeWidget = TimeWidgetSpec; export interface DropdownWidgetSpec extends BaseWidgetSpec { placeholder?: string; options: Array<{ value: string; label: string; }>; } export type DropdownWidget = DropdownWidgetSpec; /** * Number field input widget. */ export type NumberWidget = NumberWidgetSpec; export type ToggleWidgetSpec = BaseWidgetSpec; export type CheckboxWidgetSpec = BaseWidgetSpec; export type BooleanWidget = ToggleWidgetSpec | CheckboxWidgetSpec;