rabbit-simple-ui
Version:
A simple UI component library based on JavaScript
72 lines (64 loc) • 1.8 kB
text/typescript
import { warn, CssTransition } from '../mixins';
interface Options {
key?: string | number;
prefixKey?: string;
fadeOut?: boolean;
clsLeave?: string;
clsEnter?: string;
destroy?: boolean;
duration?: number;
transitionTime?: number;
}
export function destroyElem(
elem: any,
{
fadeOut = false,
clsLeave,
clsEnter,
duration = 3,
transitionTime = 250,
destroy = true
}: Options
): void {
let timer = null;
// 方式一:是否只用淡出效果
if (fadeOut) {
isDismiss();
CssTransition(elem, {
inOrOut: 'out',
enterCls: 'rab-fade-in',
leaveCls: 'rab-fade-out',
timeout: 250
});
return;
}
// 方式二:手动配置过渡效果和过渡时间
timer = setTimeout(() => {
isDismiss();
CssTransition(elem, {
inOrOut: 'out',
enterCls: clsEnter,
leaveCls: clsLeave,
timeout: transitionTime
});
}, duration * 1000);
// 自动关闭的延时为 0 则不关闭
duration <= 0 ? clearTimeout(timer) : timer;
// 判断需要销毁或者是仅隐藏元素
function isDismiss() {
setTimeout(() => {
if (destroy) {
elem.remove();
elem = null; // 释放内存
}
}, transitionTime);
}
}
export function destroyElemByKey(options: Options): void {
const { prefixKey, key } = options;
const target = document.querySelector(`[${prefixKey}-key="${key}"]`);
// 传入的key是否选取得到对应的元素
if (target) {
destroyElem(target, options);
}
}