define(['dialogHelper', 'layoutManager', 'globalize', 'html!./../icons/nav.html', 'css!./style.css', 'paper-button', 'paper-icon-button-light', 'emby-input'], function (dialogHelper, layoutManager, globalize) { function getIcon(icon, cssClass, canFocus, autoFocus) { var tabIndex = canFocus ? '' : ' tabindex="-1"'; autoFocus = autoFocus ? ' autofocus' : ''; return ''; } return function (options) { if (typeof options === 'string') { options = { title: '', text: options }; } var dialogOptions = { removeOnClose: true }; var backButton = false; var raisedButtons = false; if (layoutManager.tv) { dialogOptions.size = 'fullscreen'; backButton = true; raisedButtons = true; } else { dialogOptions.modal = false; dialogOptions.entryAnimationDuration = 160; dialogOptions.exitAnimationDuration = 200; } var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add('promptDialog'); var html = ''; var submitValue = ''; html += '
'; if (backButton) { html += getIcon('dialog:arrow-back', 'btnPromptExit', false); } if (options.title) { html += '

'; html += options.title; html += '

'; } html += '
'; html += '
'; html += ''; if (options.description) { html += '
'; html += options.description; html += '
'; } html += '
'; html += '
'; if (raisedButtons) { html += '' + globalize.translate('sharedcomponents#ButtonOk') + ''; } else { html += '
'; html += '' + globalize.translate('sharedcomponents#ButtonOk') + ''; html += '' + globalize.translate('sharedcomponents#ButtonCancel') + ''; html += '
'; } html += '
'; html += '
'; dlg.innerHTML = html; document.body.appendChild(dlg); dlg.querySelector('form').addEventListener('submit', function (e) { submitValue = dlg.querySelector('.txtPromptValue').value; e.preventDefault(); e.stopPropagation(); // Important, don't close the dialog until after the form has completed submitting, or it will cause an error in Chrome setTimeout(function () { dialogHelper.close(dlg); }, 300); return false; }); dlg.querySelector('.btnSubmit').addEventListener('click', function (e) { // Do a fake form submit this the button isn't a real submit button var fakeSubmit = document.createElement('input'); fakeSubmit.setAttribute('type', 'submit'); fakeSubmit.style.display = 'none'; var form = dlg.querySelector('form'); form.appendChild(fakeSubmit); fakeSubmit.click(); form.removeChild(fakeSubmit); }); dlg.querySelector('.btnPromptExit').addEventListener('click', function (e) { dialogHelper.close(dlg); }); return dialogHelper.open(dlg).then(function () { var value = submitValue; if (value) { return value; } else { return Promise.reject(); } }); }; });