import type { Component, HTMLAttributes, VNodeChild } from 'vue';
import type { AutoCompleteInstance } from '../auto-complete';
import type { CascaderInstance } from '../cascader';
import type { CheckboxGroupInstance, CheckboxInstance } from '../checkbox';
import type { DatePickerInstance, RangePickerInstance } from '../date-picker';
import type { FieldRule, FormItemInstance } from '../form';
import type { GridColInstance, GridRowInstance } from '../grid';
import type { InputInstance, InputPasswordInstance, InputSearchInstance } from '../input';
import type { InputNumberInstance } from '../input-number';
import type { InputTagInstance } from '../input-tag';
import type { MentionInstance } from '../mention';
import type { RadioGroupInstance, RadioInstance } from '../radio';
import type { RateInstance } from '../rate';
import type { SelectInstance } from '../select';
import type { SliderInstance } from '../slider';
import type { SwitchInstance } from '../switch';
import type { TextareaInstance } from '../textarea';
import type { TimePickerInstance } from '../time-picker';
import type { TransferInstance } from '../transfer';
import type { TreeSelectInstance } from '../tree-select';
import type { VerificationCodeInstance } from '../verification-code';
export declare const A2UI_0_9_1: "a2ui-0.9.1";
export declare const JSON_FORM_ADAPTERS: {
readonly default: "default";
readonly a2ui_0_9_1: "a2ui-0.9.1";
};
export declare const JSON_FORM_COMPONENT_TYPES: {
readonly autoComplete: "autoComplete";
readonly cascader: "cascader";
readonly checkbox: "checkbox";
readonly checkboxGroup: "checkboxGroup";
readonly datePicker: "datePicker";
readonly input: "input";
readonly inputNumber: "inputNumber";
readonly inputPassword: "inputPassword";
readonly inputSearch: "inputSearch";
readonly inputTag: "inputTag";
readonly mention: "mention";
readonly radio: "radio";
readonly radioGroup: "radioGroup";
readonly rangePicker: "rangePicker";
readonly rate: "rate";
readonly row: "row";
readonly select: "select";
readonly slider: "slider";
readonly switch: "switch";
readonly textarea: "textarea";
readonly timePicker: "timePicker";
readonly transfer: "transfer";
readonly treeSelect: "treeSelect";
readonly verificationCode: "verificationCode";
readonly noFormItem: "noFormItem";
};
export type JsonFormAdapter = (typeof JSON_FORM_ADAPTERS)[keyof typeof JSON_FORM_ADAPTERS];
export type JsonFormBuiltinComponentType = (typeof JSON_FORM_COMPONENT_TYPES)[keyof typeof JSON_FORM_COMPONENT_TYPES];
export type JsonFormExternalComponentMap = Record;
type ComponentPropsOf = T extends new (...args: never[]) => {
$props: infer P;
} ? P : never;
type ComponentEmitOf = T extends new (...args: never[]) => {
$emit: infer E;
} ? E : never;
type JsonFormBuiltInComponentPropsMap = {
autoComplete: AutoCompleteInstance['$props'];
cascader: CascaderInstance['$props'];
checkbox: CheckboxInstance['$props'];
checkboxGroup: CheckboxGroupInstance['$props'];
datePicker: DatePickerInstance['$props'];
input: InputInstance['$props'];
inputNumber: InputNumberInstance['$props'];
inputPassword: InputPasswordInstance['$props'];
inputSearch: InputSearchInstance['$props'];
inputTag: InputTagInstance['$props'];
mention: MentionInstance['$props'];
radio: RadioInstance['$props'];
radioGroup: RadioGroupInstance['$props'];
rangePicker: RangePickerInstance['$props'];
rate: RateInstance['$props'];
row: GridRowInstance['$props'];
select: SelectInstance['$props'];
slider: SliderInstance['$props'];
switch: SwitchInstance['$props'];
textarea: TextareaInstance['$props'];
timePicker: TimePickerInstance['$props'];
transfer: TransferInstance['$props'];
treeSelect: TreeSelectInstance['$props'];
verificationCode: VerificationCodeInstance['$props'];
noFormItem: Record;
};
type JsonFormBuiltInComponentEventsMap = {
autoComplete: AutoCompleteInstance['$emit'];
cascader: CascaderInstance['$emit'];
checkbox: CheckboxInstance['$emit'];
checkboxGroup: CheckboxGroupInstance['$emit'];
datePicker: DatePickerInstance['$emit'];
input: InputInstance['$emit'];
inputNumber: InputNumberInstance['$emit'];
inputPassword: InputPasswordInstance['$emit'];
inputSearch: InputSearchInstance['$emit'];
inputTag: InputTagInstance['$emit'];
mention: MentionInstance['$emit'];
radio: RadioInstance['$emit'];
radioGroup: RadioGroupInstance['$emit'];
rangePicker: RangePickerInstance['$emit'];
rate: RateInstance['$emit'];
row: GridRowInstance['$emit'];
select: SelectInstance['$emit'];
slider: SliderInstance['$emit'];
switch: SwitchInstance['$emit'];
textarea: TextareaInstance['$emit'];
timePicker: TimePickerInstance['$emit'];
transfer: TransferInstance['$emit'];
treeSelect: TreeSelectInstance['$emit'];
verificationCode: VerificationCodeInstance['$emit'];
noFormItem: Record unknown>;
};
type JsonFormBuiltInComponentMap = {
[K in JsonFormBuiltinComponentType]: K extends keyof JsonFormBuiltInComponentPropsMap ? Component : never;
};
type JsonFormKnownComponentMap = JsonFormBuiltInComponentMap & TExternal;
type JsonFormKnownComponentType = Extract, string>;
type JsonFormResolvedComponentProps = TType extends keyof JsonFormBuiltInComponentPropsMap ? JsonFormBuiltInComponentPropsMap[TType] : TType extends keyof TExternal ? ComponentPropsOf : Record;
type JsonFormResolvedComponentEvents = TType extends keyof JsonFormBuiltInComponentEventsMap ? JsonFormBuiltInComponentEventsMap[TType] : TType extends keyof TExternal ? ComponentEmitOf : Record unknown>;
export type JsonFormComponentType = JsonFormKnownComponentType | (string & {});
export type JsonFormComponentProps = string extends TType ? Record & HTMLAttributes : JsonFormResolvedComponentProps & HTMLAttributes;
export type JsonFormComponentEvents = JsonFormResolvedComponentEvents;
export type JsonFormComponentSlotRenderer = Component | ((...args: never[]) => VNodeChild);
export type JsonFormItemSlotProps = {
record?: JsonFormSchema, TExternal>;
value?: unknown;
} & Record;
type JsonFormBaseSchema = {
field: string;
label?: string;
type?: TType;
required?: boolean;
hidden?: boolean;
slotName?: string;
render?: () => VNodeChild;
span?: number;
colProps?: GridColInstance['$props'];
formItemProps?: Omit;
formItemRules?: FieldRule | FieldRule[];
formItemEvents?: ComponentEmitOf;
componentProps?: JsonFormComponentProps;
componentEvents?: JsonFormComponentEvents;
componentSlots?: Record;
children?: JsonFormSchema, TExternal>[];
};
export type JsonFormSchema = JsonFormBaseSchema;
export type JsonFormComponentRegistry = Partial, Component>>;
export type JsonFormProviderConfig = {
adapter?: JsonFormAdapter;
components?: JsonFormComponentRegistry;
};
export type JsonFormModel = Record;
export type JsonFormProps = {
schemas: JsonFormSchema, TExternal>[] | JsonFormA2UI_0_9_1ComponentNode[];
adapter?: JsonFormAdapter;
model?: JsonFormModel;
hideLabel?: boolean;
hideAsterisk?: boolean;
showColon?: boolean;
component?: string | Component;
};
export type JsonFormA2UI_0_9_1DataBinding = {
path: string;
};
export type JsonFormA2UI_0_9_1FunctionCall = {
call: string;
args?: Record;
returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';
};
export type JsonFormA2UI_0_9_1DynamicString = string | JsonFormA2UI_0_9_1DataBinding | (JsonFormA2UI_0_9_1FunctionCall & {
returnType: 'string';
});
export type JsonFormA2UI_0_9_1DynamicNumber = number | JsonFormA2UI_0_9_1DataBinding | (JsonFormA2UI_0_9_1FunctionCall & {
returnType: 'number';
});
export type JsonFormA2UI_0_9_1DynamicBoolean = boolean | JsonFormA2UI_0_9_1DataBinding | (JsonFormA2UI_0_9_1FunctionCall & {
returnType: 'boolean';
});
export type JsonFormA2UI_0_9_1DynamicStringList = string[] | JsonFormA2UI_0_9_1DataBinding | (JsonFormA2UI_0_9_1FunctionCall & {
returnType: 'array';
});
export type JsonFormA2UI_0_9_1CheckRule = {
condition: JsonFormA2UI_0_9_1DynamicBoolean;
message: string;
};
export type JsonFormA2UI_0_9_1ChoiceOption = {
label: JsonFormA2UI_0_9_1DynamicString;
value: string;
};
export type JsonFormA2UI_0_9_1Children = string[] | {
componentId: string;
path: string;
};
type JsonFormA2UI_0_9_1SharedNode = {
id: string;
component: string;
accessibility?: {
label?: JsonFormA2UI_0_9_1DynamicString;
description?: JsonFormA2UI_0_9_1DynamicString;
};
weight?: number;
checks?: JsonFormA2UI_0_9_1CheckRule[];
};
export type JsonFormA2UI_0_9_1ContainerComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'Row' | 'Column' | 'List';
children: JsonFormA2UI_0_9_1Children;
justify?: 'center' | 'end' | 'spaceAround' | 'spaceBetween' | 'spaceEvenly' | 'start' | 'stretch';
align?: 'start' | 'center' | 'end' | 'stretch';
};
export type JsonFormA2UI_0_9_1CardComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'Card';
child: string;
};
export type JsonFormA2UI_0_9_1TextFieldComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'TextField';
label: JsonFormA2UI_0_9_1DynamicString;
value?: JsonFormA2UI_0_9_1DynamicString;
variant?: 'longText' | 'number' | 'shortText' | 'obscured';
validationRegexp?: string;
};
export type JsonFormA2UI_0_9_1CheckBoxComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'CheckBox';
label: JsonFormA2UI_0_9_1DynamicString;
value: JsonFormA2UI_0_9_1DynamicBoolean;
};
export type JsonFormA2UI_0_9_1ChoicePickerComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'ChoicePicker';
label?: JsonFormA2UI_0_9_1DynamicString;
variant?: 'multipleSelection' | 'mutuallyExclusive';
options: JsonFormA2UI_0_9_1ChoiceOption[];
value: JsonFormA2UI_0_9_1DynamicStringList;
displayStyle?: 'checkbox' | 'chips';
filterable?: boolean;
};
export type JsonFormA2UI_0_9_1SliderComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'Slider';
label?: JsonFormA2UI_0_9_1DynamicString;
min?: number;
max: number;
value: JsonFormA2UI_0_9_1DynamicNumber;
};
export type JsonFormA2UI_0_9_1DateTimeInputComponent = JsonFormA2UI_0_9_1SharedNode & {
component: 'DateTimeInput';
value: JsonFormA2UI_0_9_1DynamicString;
enableDate?: boolean;
enableTime?: boolean;
min?: JsonFormA2UI_0_9_1DynamicString;
max?: JsonFormA2UI_0_9_1DynamicString;
label?: JsonFormA2UI_0_9_1DynamicString;
};
export type JsonFormA2UI_0_9_1CustomComponentNode = JsonFormA2UI_0_9_1SharedNode & {
[key: string]: unknown;
};
export type JsonFormA2UI_0_9_1ComponentNode = JsonFormA2UI_0_9_1ContainerComponent | JsonFormA2UI_0_9_1CardComponent | JsonFormA2UI_0_9_1TextFieldComponent | JsonFormA2UI_0_9_1CheckBoxComponent | JsonFormA2UI_0_9_1ChoicePickerComponent | JsonFormA2UI_0_9_1SliderComponent | JsonFormA2UI_0_9_1DateTimeInputComponent | JsonFormA2UI_0_9_1CustomComponentNode;
export declare const defineJsonFormComponents: (components: TExternal) => TExternal;
export declare const defineJsonFormSchemas: () => , TExternal>[]>(schemas: TSchemas) => TSchemas;
export {};