import { GemElement, TemplateResult } from '@mantou/gem/lib/element'; import type { StyleObject } from '@mantou/gem/lib/utils'; import type { DuoyunFormItemElement } from '../elements/form'; import type { ModalOpenOptions, ModalOptions } from '../elements/modal'; import '../elements/button'; import '../elements/form'; import '../elements/sort-box'; import '../elements/space'; type ListOptions = { add?: boolean | string | TemplateResult; remove?: boolean | string | TemplateResult; initItem?: any; sortable?: boolean; }; type FormItemProps = { label: string; type: DuoyunFormItemElement['type']; field: keyof T | string[]; style?: StyleObject; disabled?: boolean; hidden?: boolean; ignore?: boolean; required?: boolean; rules?: DuoyunFormItemElement['rules']; slot?: TemplateResult | HTMLElement | HTMLElement[]; autofocus?: boolean; placeholder?: string; multiple?: boolean; searchable?: boolean; clearable?: boolean; rows?: number; step?: number; min?: number; max?: number; options?: DuoyunFormItemElement['options']; dependencies?: (keyof T | string[])[]; /**dependencies change, text change, text clear select search */ getOptions?: (search: string, data: T) => Promise; /**dependencies change, this.data change */ getInitValue?: (data: T) => any; /**update field setting for any field change */ update?: (data: T) => Partial>; list?: boolean | ListOptions; }; export type FormItem = TemplateResult | FormItemProps | FormItemProps[] | { fieldset: (TemplateResult | FormItemProps | FormItemProps[])[]; label?: string; }; type OptionsRecord = { loading: boolean; options?: DuoyunFormItemElement['options']; }; type State = { data: T; optionsRecord: Partial>; ignoreCache: Partial>; }; export declare class DyPatFormElement> extends GemElement { #private; data?: T; formItems?: FormItem[]; render: () => TemplateResult; state: import("@mantou/gem/lib/utils").Updater>; valid: () => Promise; } type CreateFormOptions = { type?: 'modal' | 'drawer'; style?: StyleObject; query?: [string, any]; } & ModalOptions & ModalOpenOptions & Pick, 'formItems' | 'data'>; /** * !WARNING * * form field not contain `,` */ export declare function createForm>(options: CreateFormOptions): import("../lib/utils").DyPromise & { modal: import("../elements/modal").DuoyunModalElement; }; export {}; //# sourceMappingURL=form.d.ts.map