mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-07-18 11:01:48 +08:00
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import { Component, VNodeProps } from 'vue';
|
|
|
|
export interface IUIControllerConfig<Element, UI> {
|
|
/**
|
|
* 将一个ui挂载至目标元素时的操作
|
|
* @param element 要挂载至的目标元素
|
|
* @param ui 要挂载的ui对象
|
|
*/
|
|
insert(element: Element, ui: UI): void;
|
|
|
|
/**
|
|
* 将一个ui从目标元素上移除时的操作
|
|
* @param element 被移除ui的父元素
|
|
* @param ui 要被移除的ui元素
|
|
*/
|
|
remove(element: Element, ui: UI): void;
|
|
|
|
/**
|
|
* 创建一个新UI
|
|
* @param component UI组件
|
|
* @param props UI传递的props
|
|
*/
|
|
createUI(
|
|
component: Component,
|
|
props?: (VNodeProps & { [key: string]: any }) | null
|
|
): UI;
|
|
}
|
|
|
|
export const enum OpenOption {
|
|
Push,
|
|
Unshift
|
|
}
|
|
|
|
export const enum CloseOption {
|
|
Splice,
|
|
Pop,
|
|
Shift
|
|
}
|
|
|
|
export class UIController<Element, UI> {
|
|
constructor(config: IUIControllerConfig<Element, UI>) {}
|
|
|
|
/**
|
|
* 设置当ui改变时控制器的行为
|
|
* @param open 打开时的行为
|
|
* @param close 关闭时的行为
|
|
*/
|
|
setChangeMode(open: OpenOption, close: CloseOption) {}
|
|
|
|
/**
|
|
* 将这个UI控制器挂载至容器上
|
|
* @param container 要挂载至的容器
|
|
*/
|
|
mount(container: Element) {}
|
|
}
|