emodal
Version:
Easy Modal for bootstrap, is a simple way to create modal dialogs using javaScript.
1 lines • 6.14 kB
JavaScript
!function(e){e(["jquery"],function(e,t){var o,a="recycle-bin",n="<div>",r="",l="click",s="hide",i="shown.bs.modal",d="submit",c="eFooter",u=s+".bs.modal",f="input",m="danger",p={OK:"Cancel",True:"False",Yes:"No"},b={},v="modal-body",y=".modal-dialog",h={},g="modal-rec",x={sm:"sm",lg:"lg",xl:"xl"},w="modal-tmp",j={allowContentRecycle:!0,confirmLabel:Object.keys(p)[0],labels:p,loadingHtml:'<h5>Loading...</h5><div class=progress><div class="progress-bar progress-bar-striped active" style="width: 100%"></div></div>',size:r,title:"Attention",autofocus:!1};return(t=t||{}).addLabel=function(e,t){p[e]=t},t.ajax=function(t,a){var n=k();"object"==typeof t&&L(t);var r={async:!0,deferred:n,xhrFields:{withCredentials:!1},loading:!0,title:a||j.title,url:t.url||t,dataType:t.dataType||"text"};t.url&&e.extend(r,t);return e.ajax(r).done(function(e){return o.find("."+v).html(t.success?t.success(e):e),n.resolve(o)}).fail(function(e,a){var l=t.error?t.error(e,a,r):'<div class="alert alert-danger"><strong>XHR Fail: </strong>URL [ '+r.url+"] load fail.</div>";return o.find("."+v).html(l),n.reject(e)}),H(r,a)},t.alert=H,t.close=T,t.confirm=function(t,o){var a=k();"object"==typeof t&&L(t);return H({async:!0,buttons:[{close:!0,click:n,text:p[t.label]?p[t.label]:p[j.confirmLabel],style:t.style&&t.style[0]||m},{close:!0,click:n,text:p[t.label]?t.label:j.confirmLabel,style:t.style&&t.style[1]}],deferred:a,message:t.message||t,onHide:n,size:t.size,title:t.title||o});function n(t){T();var o=e(t.currentTarget).html();return p[o]?a.resolve():a.reject()}},t.emptyBin=function(){return e("#"+a+" > *").remove()},t.iframe=function(t,o){var a=k();"object"==typeof data&&L(data);var n=t.data?Object.keys(t.data).map(function(e){return e+'="'+t.data[e]+'"'}).join(" "):"",r='<div class=modal-body style="position: absolute;width: 100%;background-color: rgba(255,255,255,0.8);height: 100%;">%1%</div><iframe class="embed-responsive-item" frameborder=0 src="%0%" %2% style="width:100%;height:75vh;display:block;"/>'.replace("%0%",t.message||t.url||t).replace("%1%",j.loadingHtml).replace("%2%",n),l=(s="3.0.0",i=e.fn.jquery.split("."),d=s.split("."),c=i[0],u=i[1],f=i[2],m=d[0],p=d[1],b=d[2],m>c||m===c&&p>u||m===c&&p===u&&b>f?e(r).load(v):e(r).on("load",v));var s,i,d,c,u,f,m,p,b;return H({async:!0,buttons:t.buttons||!1,deferred:a,message:l,size:t.size||x.xl,title:t.title||o});function v(){return e(this).parent().find("div."+w).fadeOut(function(){e(this).remove()}),a.resolve()}},t.prompt=function(t,a){var n=k();"object"==typeof t&&L(t);var l,s={deferred:n};"object"==typeof t?e.extend(s,t):(s.message=t,s.title=a);if(s.async=!0,s.buttons)for(var i=0,c=s.buttons.length;i<c;i++)(l=s.buttons[i]).style=(l.style||"default")+" pull-left",l.type=l.type||"button";var u=C([{close:!0,type:"reset",text:p.OK,style:m},{close:!1,type:d,text:j.confirmLabel}].concat(s.buttons||[]));return s.buttons=!1,s.onHide=b,s.message=e('<form role=form style="margin-bottom:0;"><div class=modal-body><label for=prompt-input class=control-label>'+(s.message||r)+'</label><input type=text class=form-control required autocomplete="on" value="'+(s.value||r)+(s.pattern?'" pattern="'+s.pattern:r)+'"></div></form>').append(u).on(d,b),H(s);function b(e){var t=o.find(f).val();return T(),e.type!==d?n.reject(t):n.resolve(t),!1}},t.setId=function(e){z(!0).find(y).prop("id",e)},t.setEModalOptions=L,t.setModalOptions=function(t){return o&&o.remove(),e.extend(h,t)},t.size=x,t.version="1.2.67",t;function k(){var t,o;try{o=require("Q")}catch(e){o=window.Q}return o?t=o.defer():(t=e.Deferred()).promise=t.promise(),t.promise.element=z(!0).find(y),t}function C(t){if(!1===t)return r;var o=e(n).addClass("modal-footer").prop("id",c);if(t)for(var a=0,s=t.length;a<s;a++){var i=t[a],d=e("<button>").addClass("btn btn-"+(i.style||"primary"));for(var u in i)if(i.hasOwnProperty(u))switch(u){case"close":i[u]&&d.attr("data-dismiss","modal").addClass("x");break;case l:var f=i.click.bind(z(!0).find(".modal-content"));d.click(f);break;case"text":d.html(i[u]);break;default:d.attr(u,i[u])}o.append(d)}else o.append('<button class="x btn btn-primary" data-dismiss=modal type=button>Close</button>');return o}function z(t){return o||(e("#"+a).length||e("body").append(e(n).prop("id",a).hide()),o=e('<div class="modal fade" tabindex="-1"><style>.modal-title{display:inline;}.modal-xl{width:96%;}.modal-body{max-height: calc(100vh - 145px);overflow-y: auto;}</style><div class=modal-dialog><div class=modal-content> <div class=modal-header><h5 class=modal-title></h5><button type=button class="x close" data-dismiss=modal aria-label="Close"><span aria-hidden=true>×</span></button></div></div></div></div>').on("hidden.bs.modal",O).on(l,"button.x",function(t){var a=e(t.currentTarget);if(a.prop("type")!==d)return o.modal(s);try{if(a.closest("form")[0].checkValidity())return T()}catch(e){return T()}return o})),t&&o?o:(j.autofocus&&o.on(i,function(){e(this).find(f).first().focus()}),o)}function O(){if(o){var e=o.find("."+g).removeClass(g).appendTo("#"+a);o.off(u).off(i).find(".modal-content > div:not(:first-child)").remove(),j.allowContentRecycle&&!b.clone||e.remove()}}function H(t,a){!function(t,o){if(!t)throw new Error("Invalid parameters!");O(),b=t;var a=z(),n="modal-"+(t.size||j.size);a.find(y).removeClass("modal-sm modal-lg modal-xl").addClass(t.size||j.size?n:null),a.find(".modal-title").html((t.title||o||j.title)+" ").append(e("<small>").html(t.subtitle||r)),a.on(u,t.onHide)}(t,a);var l=t.deferred||k();"object"==typeof t&&L(t);var s,d=e(n).append(function(t){var o,a=t.loading?j.loadingHtml:t.message||t;return a.on||a.onclick?(o=!0===t.clone?e(a).clone():e(a)).addClass(t.useBin&&!t.loading?g:w):o=e(n).attr("style","position:relative;word-wrap:break-word;").addClass(v).html(a),t.css&&t.css!==o.css&&o.css(t.css),o}(t),C(t.buttons));return s=d,o.modal(h).find(".modal-content").append(s),t.async||o.on(i,l.resolve),l.promise}function L(t){return e.extend(j,t)}function T(){return o&&o.off(u).modal(s),o}})}("function"==typeof define&&define.amd?define:function(e,t){this.eModal="undefined"!=typeof module&&module.exports?t(require(e[0],{}),module.exports):t(window.$)});