UNPKG

@fallen-zero/use

Version:
39 lines (38 loc) 1.43 kB
type LikePromise<T> = Promise<T> | T; import type { Component } from 'vue'; import type { JSX } from 'vue/jsx-runtime'; export type FieldOption<T extends object = object, P extends { [key in keyof T]?: any; } = object> = { [K in keyof T]: { label: string; key: K; value?: P[K] extends undefined ? T[K] : P[K]; render?: (value: T[K], data: T) => () => JSX.Element | Component; fommater?: (value: T[K], data: T) => P[K] extends undefined ? T[K] : P[K]; span?: number; tip?: ((value: T[K], data: T) => boolean) | boolean; color?: ((value: T[K], data: T) => string) | string; visible?: ((value: T[K], data: T) => boolean) | boolean; handler?: (value: T[K], data: T) => LikePromise<void>; }; }[keyof T]; export type FieldConfig<T extends object = object, P extends { [key in keyof T]?: any; } = object> = { [K in keyof T]: { label: string; value: P[K] extends undefined ? T[K] : P[K]; render?: () => JSX.Element | Component; span: number; tip?: boolean; color?: string; visible?: boolean; handler?: () => LikePromise<void>; }; }[keyof T]; export declare function fommaterIndex(value: number): string; export declare function createField<T extends object, P extends { [key in keyof T]?: any; }>(options: FieldOption<T, P>[], data: T): FieldConfig<T, P>[]; export {};