Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import { ComponentType } from "react"; import { Translatable } from "../i18n"; export interface BaseWidgetType { widget: string; name: string; size: "normal" | "small" | "large"; width?: string; } export interface WidgetType extends BaseWidgetType { heading_i18n?: Translatable; checkbox_label_i18n?: Translatable; addon_label_i18n?: Translatable; } export interface MultiWidgetType extends BaseWidgetType { widget: "checkboxes" | "select"; choices?: [string, Translatable][]; } export interface Field { name: string; type: WidgetType; default: string | null; description_i18n: Translatable; label_i18n: Translatable; hide_label: boolean; alts_enabled: boolean | null; } export type WidgetProps<V = string, W = WidgetType> = { value?: V; type: W; placeholder?: V; onChange: (value: V, uiChange?: boolean) => void; disabled?: boolean; }; interface SerializableWidget { deserializeValue: (value: string | undefined, type: WidgetType) => string; serializeValue: (value: string | undefined, type: WidgetType) => string; } type FakeWidget = ComponentType<{ field: Field }> & SerializableWidget & { isFakeWidget: true; }; type RealWidget = ComponentType<WidgetProps> & SerializableWidget & { isFakeWidget: undefined; }; export type WidgetComponent = FakeWidget | RealWidget; export function getInputClass(type: WidgetType) { let rv = "form-control"; if (type.size === "small") { rv = "input-sm " + rv; } else if (type.size === "large") { rv = "input-lg " + rv; } return rv; } |