55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
var notificationOpen = false;
|
|
var notificationTimeout: NodeJS.Timeout;
|
|
|
|
var UndeckedNotification: (message: string, type?: 'info' | 'error', time?: number) => void;
|
|
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
UndeckedNotification = (message: string, type: 'info' | 'error' = 'info', time: number = 2000) => {
|
|
_UndeckedNotification.open(message, type, time);
|
|
};
|
|
|
|
var _UndeckedNotification = {
|
|
isOpen: false,
|
|
timeout: null as NodeJS.Timeout,
|
|
transitionDuration: 200,
|
|
|
|
elements: {
|
|
container: document.querySelector('.feedback').querySelector('.notificationcontainer') as HTMLDivElement,
|
|
box: document.querySelector('.feedback').querySelector('.notification') as HTMLDivElement
|
|
},
|
|
|
|
open: (message: string, type: 'info' | 'error' = 'info', time: number) => {
|
|
var open = () => {
|
|
_UndeckedNotification.elements.box.classList.remove('info', 'error');
|
|
_UndeckedNotification.elements.box.classList.add(type);
|
|
_UndeckedNotification.elements.box.innerText = message;
|
|
_UndeckedNotification.elements.container.style.transitionTimingFunction = 'ease-out';
|
|
_UndeckedNotification.elements.container.style.transitionDuration = `${_UndeckedNotification.transitionDuration}ms`;
|
|
_UndeckedNotification.elements.container.style.bottom = '50px';
|
|
|
|
_UndeckedNotification.isOpen = true;
|
|
|
|
_UndeckedNotification.timeout = setTimeout(_UndeckedNotification.close, time);
|
|
|
|
_UndeckedNotification.elements.box.onclick = () => _UndeckedNotification.close();
|
|
};
|
|
|
|
if (_UndeckedNotification.isOpen == true) {
|
|
_UndeckedNotification.close(open);
|
|
} else open();
|
|
},
|
|
|
|
close: (callback?: Function) => {
|
|
clearTimeout(_UndeckedNotification.timeout);
|
|
_UndeckedNotification.elements.container.style.transitionTimingFunction = 'ease-in';
|
|
_UndeckedNotification.elements.container.style.bottom = '-50px';
|
|
setTimeout(() => {
|
|
if (callback) callback();
|
|
_UndeckedNotification.isOpen = false;
|
|
}, _UndeckedNotification.transitionDuration + 100);
|
|
}
|
|
};
|
|
});
|
|
|
|
// declare var UndeckedNotification: (message:string, type?:'info'|"error", time?:number) => void;
|