Sha256: 09f7d582b4e95c333807eecc7119a73fabd3bf14c9f675825219cae44ddc79b6
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
ActiveAdmin.modal_dialog = function(message, inputs, callback){ let html = `<form id="dialog_confirm" title="${message}"><ul>`; for (let name in inputs) { var elem, opts, wrapper; let type = inputs[name]; if (/^(datepicker|checkbox|text|number)$/.test(type)) { wrapper = 'input'; } else if (type === 'textarea') { wrapper = 'textarea'; } else if ($.isArray(type)) { [wrapper, elem, opts, type] = ['select', 'option', type, '']; } else { throw new Error(`Unsupported input type: {${name}: ${type}}`); } let klass = type === 'datepicker' ? type : ''; html += `<li> <label>${name.charAt(0).toUpperCase() + name.slice(1)}</label> <${wrapper} name="${name}" class="${klass}" type="${type}">` + (opts ? ((() => { const result = []; for (let v of opts) { const $elem = $(`<${elem}/>`); if ($.isArray(v)) { $elem.text(v[0]).val(v[1]); } else { $elem.text(v); } result.push($elem.wrap('<div>').parent().html()); } return result; })()).join('') : '') + `</${wrapper}>` + "</li>"; [wrapper, elem, opts, type, klass] = []; // unset any temporary variables } html += "</ul></form>"; const form = $(html).appendTo('body'); $('body').trigger('modal_dialog:before_open', [form]); form.dialog({ modal: true, open(event, ui) { $('body').trigger('modal_dialog:after_open', [form]); }, dialogClass: 'active_admin_dialog', buttons: { OK() { callback($(this).serializeObject()); $(this).dialog('close'); }, Cancel() { $(this).dialog('close').remove(); } } }); };
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
activeadmin-rails-1.7.1 | app/assets/javascripts/active_admin/lib/modal_dialog.es6 |
activeadmin-rails-1.7.0 | app/assets/javascripts/active_admin/lib/modal_dialog.es6 |