const defaultText = { info: { defaultTitle: 'Info', defaultMessage: 'Default Info Message', htmlTitle: '
Info
', html: '
Please read the description carefully
', }, success: { defaultTitle: 'Success', defaultMessage: 'Default Success Message', htmlTitle: '
OK
', html: '
Your message has been sent successfully
', }, warning: { defaultTitle: 'Warning', defaultMessage: 'Default Warning Message', htmlTitle: '
Warning
', html: `
Don't forget to save your data, otherwise it may be lost
`, }, error: { defaultTitle: 'Error', defaultMessage: 'An error has occurred', htmlTitle: '
Oops
', html: `
The Page you're looking for isn't here
`, }, dialog: { defaultTitle: 'Confirm', defaultMessage: 'Default Confirm message', htmlTitle: '
Send
', html: `
Your message*:
`, }, }; function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } function validTextarea() { let valid = true; const textarea = document.querySelector('textarea[name="your_mess"]'); if (!textarea) { return valid; } if (textarea.value.trim() === '') { valid = false; textarea.focus(); textarea.classList.add('invalid'); textarea.placeholder = 'This field cannot be empty!'; setTimeout(() => { textarea.classList.remove('invalid'); }, 400); } return valid; } window.addEventListener('DOMContentLoaded', function () { const form = document.querySelector('form'); const titleEl = form.querySelector('#title'); const messageEl = form.querySelector('#message'); const positionEl = form.querySelector('#position'); const durationEl = form.querySelector('#duration'); const typeEl = form.querySelector('#type'); const textOrHtmlEl = form.querySelector('#use-html'); const hidePrevEl = form.querySelector('#hide-prev'); const hideTitleEl = form.querySelector('#hide-title'); const btn = form.querySelector('#show-notification'); // create popup with default option, now we can set it later const popup = Notification(); typeEl.addEventListener('change', () => { titleEl.value = defaultText[typeEl.value].defaultTitle; messageEl.value = defaultText[typeEl.value].defaultMessage; }); // show popup btn.addEventListener('click', function (e) { e.preventDefault(); btn.disabled = true; sleep(500).then(() => (btn.disabled = false)); // Form values let title = titleEl.value; let message = messageEl.value; const type = typeEl.value; // set need property popup.setProperty({ position: positionEl.value, duration: durationEl.value, isHidePrev: hidePrevEl.checked, isHideTitle: hideTitleEl.checked, // maxOpened: 3, }); let callback = null; let validFunc = null; if (textOrHtmlEl.checked) { title = defaultText[type].htmlTitle || title; message = defaultText[type].html || message; if (type === 'dialog') { validFunc = validTextarea; } } if (type === 'dialog') { callback = (result) => { console.log('result = ', result); }; } if (!popup[type]) { popup.error({ title: 'Error', message: `Notification has no such method "${type}"`, }); return; } popup[type]({ title: title, message: message, callback: callback, validFunc: validFunc, }); return false; }); });