@whitesev/pops
Version:
弹窗库
227 lines (220 loc) • 3.99 kB
TypeScript
import { PopsEventDetails, PopsHandlerEventDetails } from "./event";
import type { PopsIcon } from "./icon";
/**
* 按钮类型
*/
export type PopsButtonType = "close" | "ok" | "cancel" | "other";
/**
* 按钮样式类型
*/
export type PopsButtonStyleType =
| "default"
| "primary"
| "xiaomi-primary"
| "success"
| "info"
| "warning"
| "danger";
/**
* 按钮大小
*/
export type PopsButtonSize = "large" | "small";
/**
* 按钮的点击回调参数event
*/
export interface PopsBtnCallBackEvent {
/**
* 元素
*/
element: HTMLElement;
/**
* 动画元素(包裹着弹窗元素)
*/
animElement: HTMLElement;
/**
* 弹窗元素
*/
popsElement: HTMLElement;
/**
* 遮罩层元素
*/
maskElement: HTMLElement | undefined;
/**
* 按钮调用类型
*/
type: PopsButtonType;
/**
* 调用的方法
*/
mode: PopsMode;
/**
* 唯一id
*/
guid: string;
/**
* 关闭弹窗
*/
close(): void;
/**
* 隐藏弹窗
*/
hide(): void;
/**
* 显示弹窗
*/
show(): void;
}
/**
* 按钮配置
*/
export interface PopsButtonDetails<T = {}> {
/**
* 是否启用按钮
*/
enable: boolean;
/**
* 图标按钮,如果名字为内置的,则使用内置的,否则为自定义的svg
*/
icon: PopsIcon;
/**
* 图标按钮是否放在右边
*/
rightIcon: boolean;
/**
* 图标按钮是否是旋转360°
* @default false
*/
iconIsLoading: boolean;
/**
* 按钮尺寸大小
* @default ""
*/
size: PopsButtonSize | "";
/**
* 按钮样式类型
* @default "default"
*/
type: PopsButtonStyleType;
/**
* 按钮文字,默认为空
*/
text: string;
/**
* 按钮点击的回调
*
* 如果传入该值,那么将不会自动关闭弹窗
*/
callback(
eventDetails: PopsHandlerEventDetails & T,
event: PointerEvent | MouseEvent
): void;
}
/**
* 按钮配置(匹配任意类型)
*/
export interface PopsButtonDetailsAnyType<T = {}> {
/**
* 是否启用按钮
*/
enable: boolean;
/**
* 图标按钮,如果名字为内置的,则使用内置的,否则为自定义的svg
*/
icon: PopsIcon;
/**
* 图标按钮是否放在右边
*/
rightIcon: boolean;
/**
* 图标按钮是否是旋转360°
* @default false
*/
iconIsLoading: boolean;
/**
* 按钮尺寸大小
* @default ""
*/
size: PopsButtonSize;
/**
* 按钮样式类型
*/
type: string;
/**
* 按钮文字
* @default ""
*/
text: string;
/**
* 按钮点击的回调
*
* 如果传入该值,那么将不会自动关闭弹窗
*/
callback(
eventDetails: PopsHandlerEventDetails & T,
event: PointerEvent | MouseEvent
): void;
}
/** prompt的点击回调 */
export interface PopsPromptButtonDetails extends PopsButtonDetails {
callback(
eventDetails: PopsHandlerEventDetails & {
text: string;
},
event: PointerEvent | MouseEvent
): void;
}
/**
* 右上角关闭按钮点击回调的配置
*/
export interface PopsHeaderCloseButtonClickCallBackEvent {
/**
* 动画元素(包裹着弹窗元素)
*/
animElement: HTMLElement;
/**
* 遮罩层元素,如果未设置,那么不存在
*/
maskElement?: HTMLElement;
/**
* 按钮调用类型
*/
type: string;
/**
* 唯一id
*/
guid: string;
/**
* 关闭弹窗
*/
close(): void;
/**
* 隐藏弹窗
*/
hide(): void;
/**
* 显示弹窗
*/
show(): void;
/**
* 输入的内容
*/
text: string;
}
/**
* 顶部关闭按钮配置
*/
export interface PopsHeaderCloseButtonDetails {
/**
* 是否启用按钮
*/
enable?: boolean;
/**
* 按钮点击的回调
*
* 如果传入该值,那么将不会自动关闭弹窗
*/
callback?: (
details: PopsEventDetails,
event: PointerEvent | MouseEvent
) => void;
}