@fesjs/fes-design
Version:
fes-design for PC
32 lines (31 loc) • 1.62 kB
TypeScript
import type { App, DefineComponent, ExtractPropTypes, InjectionKey, ObjectDirective, Plugin, Ref, SetupContext, SlotsType } from 'vue';
import type { RemoveReadonly } from './types';
export type Emit = SetupContext['emit'];
export type BooleanRef = Ref<boolean>;
export type FObjectDirective = ObjectDirective & {
name: string;
};
export type VModelEvent = 'update:modelValue';
export type ChangeEvent = 'change';
export type UpdateCurrentValue = (val: any) => void;
export type FormValidate = (eventName: string) => void;
export type ComponentInstall = DefineComponent & {
install: (app: App) => void;
} & {
[key: string]: DefineComponent;
};
export type GetContainer = () => HTMLElement;
export type SFCWithInstall<T> = T & Plugin;
export type UnboxInjection<Key extends InjectionKey<unknown>> = Key extends InjectionKey<infer I> ? I : never;
export type ExtractPublicPropTypes<T> = Omit<Partial<RemoveReadonly<ExtractPropTypes<T>>>, Extract<keyof T, `internal${string}`>>;
/** defineComponent 中 setup 函数的 props 参数类型 */
export type ComponentInnerProps<P> = Parameters<DefineComponent<P>['setup']>[0];
/** defineComponent 中 setup 函数的 slots 参数类型 */
export type ComponentSlots<SlotParams extends Record<string, unknown>> = SetupContext<unknown, SlotsType<SlotParams>>['slots'];
/** defineComponent 中 setup 函数的 emit 参数类型 */
export type ComponentEmit<EmitEvents extends readonly string[]> = (event: EmitEvents[number], ...args: any[]) => void;
export interface Option {
value?: string | number | boolean;
label?: string | number;
disabled?: boolean;
}