@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
54 lines (53 loc) • 1.55 kB
TypeScript
import { InjectionKey, MaybeRef } from 'vue';
import { MaybeElement, MaybeInstance, Placement } from '@vexip-ui/hooks';
import { BubbleType } from '../bubble';
export type TourType = BubbleType;
export type TourSignType = 'dot' | 'bar' | 'count';
export interface TourVirtual {
getBoundingClientRect(): {
top: number;
left: number;
width: number;
height: number;
};
}
export type TourTarget = MaybeRef<string | MaybeInstance | TourVirtual> | (() => string | MaybeElement | TourVirtual);
export interface TourPayload {
start(): void;
prev(): void;
next(autoClose?: boolean): void;
close(): void;
}
export type TourStepRenderFn = (payload: TourPayload) => any;
export interface TourStepOptions {
target?: TourTarget;
placement?: Placement;
title?: string;
content?: string;
order?: number;
type?: TourType;
renderer?: TourStepRenderFn;
}
export type TourSlotParams = TourPayload & {
step: TourStepOptions;
index: number;
};
export type TourCommonSLot = (params: TourSlotParams) => any;
export interface TourState {
increaseStep(step: TourStepOptions): void;
decreaseStep(step: TourStepOptions): void;
}
export interface TourSlots {
/**
* @internal
*/
default?: () => any;
header?: TourCommonSLot;
title?: TourCommonSLot;
close?: TourCommonSLot;
body?: TourCommonSLot;
footer?: TourCommonSLot;
sign?: TourCommonSLot;
actions?: TourCommonSLot;
}
export declare const TOUR_STATE: InjectionKey<TourState>;