2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
|
(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{factory(root.jQuery)}})(this,function($){"use strict";var Imp=function(message,options){var t=this;t.id=Imp.count++;Imp.lifo.push(t);if(message){t.open(message,options)}return t};Imp.defaults={prefix:"jqi",classes:{box:"",fade:"",prompt:"",form:"",close:"",title:"",message:"",buttons:"",button:"",defaultButton:""},title:"",closeText:"×",buttons:{Ok:true},loaded:function(e){},submit:function(e,v,m,f){},close:function(e,v,m,f){},statechanging:function(e,from,to){},statechanged:function(e,to){},opacity:.6,zIndex:999,overlayspeed:"slow",promptspeed:"fast",show:"fadeIn",hide:"fadeOut",focus:0,defaultButton:0,useiframe:false,top:"15%",position:{container:null,x:null,y:null,arrow:null,width:null},persistent:true,timeout:0,states:{},state:{name:null,title:"",html:"",buttons:{Ok:true},focus:0,defaultButton:0,position:{container:null,x:null,y:null,arrow:null,width:null},submit:function(e,v,m,f){return true}}};Imp.setDefaults=function(o){Imp.defaults=$.extend({},Imp.defaults,o)};Imp.setStateDefaults=function(o){Imp.defaults.state=$.extend({},Imp.defaults.state,o)};Imp.count=0;Imp.lifo=[];Imp.getLast=function(){var l=Imp.lifo.length;return l>0?Imp.lifo[l-1]:false};Imp.removeFromStack=function(id){for(var i=Imp.lifo.length-1;i>=0;i--){if(Imp.lifo[i].id===id){return Imp.lifo.splice(i,1)[0]}}};Imp.prototype={id:null,open:function(message,options){var t=this;t.options=$.extend({},Imp.defaults,options);if(t.timeout){clearTimeout(t.timeout)}t.timeout=false;var opts=t.options,$body=$(document.body),$window=$(window);var msgbox='<div class="'+opts.prefix+"box "+opts.classes.box+'">';if(opts.useiframe&&$("object, applet").length>0){msgbox+='<iframe src="javascript:false;" style="display:block;position:absolute;z-index:-1;" class="'+opts.prefix+"fade "+opts.classes.fade+'"></iframe>'}else{msgbox+='<div class="'+opts.prefix+"fade "+opts.classes.fade+'"></div>'}msgbox+='<div class="'+opts.prefix+" "+opts.classes.prompt+'">'+'<form action="javascript:false;" onsubmit="return false;" class="'+opts.prefix+"form "+opts.classes.form+'">'+'<div class="'+opts.prefix+"close "+opts.classes.close+'">'+opts.closeText+"</div>"+'<div class="'+opts.prefix+'states"></div>'+"</form>"+"</div>"+"</div>";t.jqib=$(msgbox).appendTo($body);t.jqi=t.jqib.children("."+opts.prefix);t.jqif=t.jqib.children("."+opts.prefix+"fade");if(message.constructor===String){message={state0:{title:opts.title,html:message,buttons:opts.buttons,position:opts.position,focus:opts.focus,defaultButton:opts.defaultButton,submit:opts.submit}}}t.options.states={};var k,v;for(k in message){v=$.extend({},Imp.defaults.state,{name:k},message[k]);t.addState(v.name,v);if(t.currentStateName===""){t.currentStateName=v.name}}t.jqi.on("click","."+opts.prefix+"buttons button",function(e){var $t=$(this),$state=$t.parents("."+opts.prefix+"state"),stateobj=t.options.states[$state.data("jqi-name")],msg=$state.children("."+opts.prefix+"message"),clicked=stateobj.buttons[$t.text()]||stateobj.buttons[$t.html()],forminputs={};if(clicked===undefined){for(var i in stateobj.buttons){if(stateobj.buttons[i].title===$t.text()||stateobj.buttons[i].title===$t.html()){clicked=stateobj.buttons[i].value}}}$.each(t.jqi.children("form").serializeArray(),function(i,obj){if(forminputs[obj.name]===undefined){forminputs[obj.name]=obj.value}else if(typeof forminputs[obj.name]===Array||typeof forminputs[obj.name]==="object"){forminputs[obj.name].push(obj.value)}else{forminputs[obj.name]=[forminputs[obj.name],obj.value]}});var promptsubmite=new $.Event("impromptu:submit");promptsubmite.stateName=stateobj.name;promptsubmite.state=$state;$state.trigger(promptsubmite,[clicked,msg,forminputs]);if(!promptsubmite.isDefaultPrevented()){t.close(true,clicked,msg,forminputs)}});var fadeClicked=function(){if(opts.persistent){var offset=opts.top.toString().indexOf("%")>=0?$window.height()*(parseInt(opts.top,10)/100):parseInt(opts.top,10),top=parseInt(t.jqi.css("top").replace("px",""),10)-offset;$("html,body").animate({scrollTop:top},"fast",
|
||
|
//# sourceMappingURL=jquery-impromptu.min.map
|