UNPKG

@xfc/vue3-form-render

Version:

Convert JSON to Vue Form

123 lines (114 loc) 3.62 kB
import { ComponentOptionsMixin } from 'vue'; import { ComponentProvideOptions } from 'vue'; import { ComponentType } from '@xfc/vue3-json-render'; import { DefineComponent } from 'vue'; import { ExtractPropTypes } from 'vue'; import { Field } from '@xfc/vue3-json-render'; import { Hook } from '@xfc/vue3-json-render'; import { PropType } from 'vue'; import { PublicProps } from 'vue'; import { Recordable } from '@xfc/vue3-json-render'; import { Ref } from 'vue'; import { RendererElement } from 'vue'; import { RendererNode } from 'vue'; import { ShallowRef } from 'vue'; import { VNode } from 'vue'; import { WritableComputedRef } from 'vue'; export declare type BeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>; export declare type FieldType = 'formItem' | 'container'; export declare interface FormField extends Field { id: string; type: FieldType; icon?: string; value?: any; label: string; hideLabel?: boolean; readonly?: boolean; required?: boolean; hidden: boolean; rules?: Recordable[]; children?: FormField[]; } export declare interface FormRenderOptions { globalHook?: Hook<FormField>; renders?: Recordable<(field: FormField) => VNode | undefined>; injects?: Recordable; } export declare function useFormRender(options?: BeRef<FormRenderOptions>): { Render: DefineComponent<ExtractPropTypes< { field: { type: PropType<FormField>; required: true; }; modelValue: { type: PropType<any>; required: false; }; readonly: { type: PropType<boolean>; required: false; default: boolean; }; }>, () => VNode<RendererNode, RendererElement, { [key: string]: any; }>, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, { 'update:modelValue': (value: any) => true; input: (value: any) => true; }, string, PublicProps, Readonly<ExtractPropTypes< { field: { type: PropType<FormField>; required: true; }; modelValue: { type: PropType<any>; required: false; }; readonly: { type: PropType<boolean>; required: false; default: boolean; }; }>> & Readonly<{ "onUpdate:modelValue"?: ((value: any) => any) | undefined; onInput?: ((value: any) => any) | undefined; }>, { readonly: boolean; }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>; FormRender: DefineComponent<ExtractPropTypes< { field: { type: PropType<FormField>; required: true; }; formData: { type: PropType<Recordable>; required: true; }; readonly: { type: BooleanConstructor; default: boolean; }; }>, () => VNode<RendererNode, RendererElement, { [key: string]: any; }> | undefined, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes< { field: { type: PropType<FormField>; required: true; }; formData: { type: PropType<Recordable>; required: true; }; readonly: { type: BooleanConstructor; default: boolean; }; }>> & Readonly<{}>, { readonly: boolean; }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>; addComponent: (name: string, component: ComponentType, hook?: Hook<FormField> | undefined) => void; removeComponent: (name: string) => void; components: Recordable<ComponentType>; hooks: Recordable<Hook<FormField>>; }; export * from "@xfc/vue3-json-render"; export { }