UNPKG

duoyun-ui

Version:

A lightweight desktop UI component library, implemented using Gem

94 lines 3.15 kB
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<T = unknown> = { 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<DuoyunFormItemElement['options']>; /**dependencies change, this.data change */ getInitValue?: (data: T) => any; /**update field setting for any field change */ update?: (data: T) => Partial<FormItemProps<T>>; list?: boolean | ListOptions; }; export type FormItem<T = unknown> = TemplateResult | FormItemProps<T> | FormItemProps<T>[] | { fieldset: (TemplateResult | FormItemProps<T> | FormItemProps<T>[])[]; label?: string; }; type OptionsRecord = { loading: boolean; options?: DuoyunFormItemElement['options']; }; type State<T> = { data: T; optionsRecord: Partial<Record<string, OptionsRecord>>; ignoreCache: Partial<Record<string, any>>; }; export declare class DyPatFormElement<T = Record<string, unknown>> extends GemElement { #private; data?: T; formItems?: FormItem<T>[]; render: () => TemplateResult; state: ((payload?: Partial<State<T>> | undefined) => any) & Omit<{ name: never; apply: never; call: never; bind: never; toString: never; prototype: never; length: never; arguments: never; caller: never; [Symbol.hasInstance]: never; [Symbol.metadata]: never; }, keyof State<T>> & State<T>; valid: () => Promise<boolean>; } type CreateFormOptions<T> = { type?: 'modal' | 'drawer'; style?: StyleObject; query?: [string, any]; } & ModalOptions & ModalOpenOptions<T> & Pick<DyPatFormElement<T>, 'formItems' | 'data'>; /** * !WARNING * * form field not contain `,` */ export declare function createForm<T = Record<string, unknown>>(options: CreateFormOptions<T>): import("../lib/utils").DyPromise<T, { modal: import("../elements/modal").DuoyunModalElement; }> & { modal: import("../elements/modal").DuoyunModalElement; }; export {}; //# sourceMappingURL=form.d.ts.map