diff --git a/src/app/modal-dialog-alert.js b/src/app/modal-dialog-alert.js index 9ec5b2afe8..dd38caeac4 100644 --- a/src/app/modal-dialog-alert.js +++ b/src/app/modal-dialog-alert.js @@ -1,35 +1,104 @@ -/* global FileReader, confirm, alert */ var yo = require('yo-yo') var csjs = require('csjs-inject') -module.exports = (title, content, ok, cancel) => { +var css = csjs` + .modal { + display: none; /* Hidden by default */ + position: fixed; /* Stay in place */ + z-index: 1000; /* Sit on top of everything including the dragbar */ + left: 0; + top: 0; + width: 100%; /* Full width */ + height: 100%; /* Full height */ + overflow: auto; /* Enable scroll if needed */ + background-color: rgb(0,0,0); /* Fallback color */ + background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ + } + .modalHeader { + padding: 2px 16px; + background-color: orange; + color: white; + } + .modalBody { + padding: 1.5em; + line-height: 1.5em; + } + .modalFooter { + padding: 10px 30px; + background-color: orange; + color: white; + text-align: right; + font-weight: 700; + cursor: pointer; + } + .modalContent { + position: relative; + background-color: #fefefe; + margin: auto; + padding: 0; + line-height: 18px; + font-size: 13px; + border: 1px solid #888; + width: 50%; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); + -webkit-animation-name: animatetop; + -webkit-animation-duration: 0.4s; + animation-name: animatetop; + animation-duration: 0.4s + } + .modalFooterOk { + cursor: pointer; + } + @-webkit-keyframes animatetop { + from {top: -300px; opacity: 0} + to {top: 0; opacity: 1} + } + @keyframes animatetop { + from {top: -300px; opacity: 0} + to {top: 0; opacity: 1} + } +` + +module.exports = (content, title, ok, cancel) => { + var containerOrig = document.querySelector('.modal') + var container + if (!containerOrig) { + container = document.querySelector(`.${css.modal}`) + if (!container) { + document.querySelector('body').appendChild(html()) + container = document.querySelector(`.${css.modal}`) + } + } else { + var parent = document.querySelector('body') + var child = document.getElementById('modaldialog') + parent.removeChild(child) + document.querySelector('body').appendChild(html()) + container = document.querySelector(`.${css.modal}`) + } + var okDiv = document.getElementById('modal-footer-ok') - var cancelDiv = document.getElementById('modal-footer-cancel') okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' - cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : '' - var modal = document.querySelector('.modal-body') - var modaltitle = document.querySelector('.modal-header h2') + var modal = document.querySelector(`.${css.modalBody}`) + var modalTitle = document.querySelector(`.${css.modalHeader} h2`) + var modalFooter = document.querySelector(`.${css.modalFooter}`) - modaltitle.innerHTML = ' - ' - if (title) modaltitle.innerHTML = title + modalTitle.innerHTML = '' + if (title) modalTitle.innerHTML = title modal.innerHTML = '' - // if (content) modal.appendChild(content) if (content) modal.innerHTML = content - var container = document.querySelector('.modal') container.style.display = container.style.display === 'block' ? hide() : show() - function okListenner () { + function clickModalFooterListener (event) { hide() - if (ok && ok.fn) ok.fn() removeEventListener() } - function cancelListenner () { + function okListener () { hide() - if (cancel && cancel.fn) cancel.fn() + // if (ok && ok.fn) ok.fn() - what is ok.fn doing? removeEventListener() } @@ -42,10 +111,25 @@ module.exports = (title, content, ok, cancel) => { } function removeEventListener () { - okDiv.removeEventListener('click', okListenner) - cancelDiv.removeEventListener('click', cancelListenner) + okDiv.removeEventListener('click', okListener) + modal.removeEventListener('click', clickModalFooterListener) } - okDiv.addEventListener('click', okListenner) - cancelDiv.addEventListener('click', cancelListenner) -} \ No newline at end of file + okDiv.addEventListener('click', okListener) + modalFooter.addEventListener('click', clickModalFooterListener) +} + +function html () { + return yo`