@fallen-zero/use
Version:
39 lines (38 loc) • 1.43 kB
TypeScript
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 {};