(function() { var wrap, backdrop, results, search, submitBtn, selectedFid, editor; function esc(str) { var el = document.createElement('span'); el.textContent = str; return el.innerHTML; } function buildModal() { if (wrap) return; var data = window.accua_forms_shortcode || {}; var forms = data.forms || []; var i18n = data.i18n || {}; var html = '
'; html += ''; document.body.insertAdjacentHTML('beforeend', html); backdrop = document.getElementById('accua-form-backdrop'); wrap = document.getElementById('accua-form-wrap'); results = document.getElementById('accua-form-results'); search = document.getElementById('accua-form-search'); submitBtn = document.getElementById('accua-form-submit'); backdrop.addEventListener('click', close); wrap.querySelector('.accua-form-close').addEventListener('click', close); wrap.querySelector('.cancel button').addEventListener('click', close); submitBtn.addEventListener('click', insert); wrap.addEventListener('keydown', function(e) { if (e.key === 'Escape') close(); }); search.addEventListener('input', function() { var q = this.value.toLowerCase(); var items = results.querySelectorAll('li'); var any = false; for (var j = 0; j < items.length; j++) { var match = items[j].querySelector('.item-title').textContent.toLowerCase().indexOf(q) !== -1 || items[j].getAttribute('data-fid').indexOf(q) !== -1; items[j].style.display = match ? '' : 'none'; if (match) any = true; } results.querySelector('.no-results').style.display = any ? 'none' : ''; }); results.addEventListener('click', function(e) { var li = e.target.closest('li'); if (li) selectItem(li); }); results.addEventListener('dblclick', function(e) { var li = e.target.closest('li'); if (!li) return; selectItem(li); insert(); }); results.addEventListener('keydown', function(e) { if (e.key === 'ArrowDown' || e.key === 'ArrowUp') { e.preventDefault(); var sel = results.querySelector('li.selected'); var visible = []; var items = results.querySelectorAll('li'); for (var j = 0; j < items.length; j++) { if (items[j].style.display !== 'none') visible.push(items[j]); } if (!visible.length) return; var idx = sel ? visible.indexOf(sel) : -1; var next = e.key === 'ArrowDown' ? idx + 1 : idx - 1; if (next >= 0 && next < visible.length) selectItem(visible[next]); } else if (e.key === 'Enter' && selectedFid) { e.preventDefault(); insert(); } }); } function selectItem(li) { var prev = results.querySelector('li.selected'); if (prev) prev.className = ''; li.className = 'selected'; selectedFid = li.getAttribute('data-fid'); submitBtn.disabled = false; } function open(ed) { editor = ed; buildModal(); selectedFid = ''; submitBtn.disabled = true; var items = results.querySelectorAll('li'); for (var j = 0; j < items.length; j++) { items[j].className = ''; items[j].style.display = ''; } results.querySelector('.no-results').style.display = 'none'; search.value = ''; backdrop.style.display = ''; wrap.style.display = ''; search.focus(); } function close() { backdrop.style.display = 'none'; wrap.style.display = 'none'; } function insert() { if (!selectedFid) return; editor.insertContent('[accua-form fid="' + selectedFid + '"]'); close(); } tinymce.PluginManager.add('accua_fancy_button', function(ed, url) { ed.addCommand('mcebutton', function() { open(ed); }); ed.addButton('accua_fancy_button', { title: 'Contact Forms by Cimatti', cmd: 'mcebutton', image: url + '/../../img/accua-contacts-forms.svg' }); }); })();