47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const vue_1 = require("vue");
|
|
const _mixins_1 = require("../../../_mixins");
|
|
const index_cssr_1 = __importDefault(require("./styles/index.cssr"));
|
|
exports.default = (0, vue_1.defineComponent)({
|
|
name: 'BaseMenuMask',
|
|
props: {
|
|
clsPrefix: {
|
|
type: String,
|
|
required: true
|
|
}
|
|
},
|
|
setup(props) {
|
|
(0, _mixins_1.useStyle)('-base-menu-mask', index_cssr_1.default, (0, vue_1.toRef)(props, 'clsPrefix'));
|
|
const messageRef = (0, vue_1.ref)(null);
|
|
let timerId = null;
|
|
const uncontrolledShowRef = (0, vue_1.ref)(false);
|
|
(0, vue_1.onBeforeUnmount)(() => {
|
|
if (timerId !== null) {
|
|
window.clearTimeout(timerId);
|
|
}
|
|
});
|
|
const exposedRef = {
|
|
showOnce(message, duration = 1500) {
|
|
if (timerId)
|
|
window.clearTimeout(timerId);
|
|
uncontrolledShowRef.value = true;
|
|
messageRef.value = message;
|
|
timerId = window.setTimeout(() => {
|
|
uncontrolledShowRef.value = false;
|
|
messageRef.value = null;
|
|
}, duration);
|
|
}
|
|
};
|
|
return Object.assign({ message: messageRef, show: uncontrolledShowRef }, exposedRef);
|
|
},
|
|
render() {
|
|
return ((0, vue_1.h)(vue_1.Transition, { name: "fade-in-transition" }, {
|
|
default: () => this.show ? ((0, vue_1.h)("div", { class: `${this.clsPrefix}-base-menu-mask` }, this.message)) : null
|
|
}));
|
|
}
|
|
});
|