From 2d6ac51356458c0fb967504ffa9a4cbc3e17626d Mon Sep 17 00:00:00 2001 From: jlukic Date: Mon, 22 Dec 2014 12:57:15 -0500 Subject: [PATCH] Rebuild source --- dist/components/api.js | 2 +- dist/components/api.min.js | 2 +- dist/components/popup.js | 6 +++++- dist/components/popup.min.js | 2 +- dist/semantic.js | 8 ++++++-- dist/semantic.min.js | 4 ++-- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/dist/components/api.js b/dist/components/api.js index 360000db5..e15db9db8 100644 --- a/dist/components/api.js +++ b/dist/components/api.js @@ -751,7 +751,7 @@ $.api.settings = { name : 'API', namespace : 'api', - debug : false, + debug : true, verbose : true, performance : true, diff --git a/dist/components/api.min.js b/dist/components/api.min.js index c6c500060..a06e5b0aa 100644 --- a/dist/components/api.min.js +++ b/dist/components/api.min.js @@ -8,4 +8,4 @@ * http://opensource.org/licenses/MIT * */ -!function(e,r,t,n){e.api=e.fn.api=function(t){var o,a=e(e.isFunction(this)?r:this),i=a.selector||"",s=(new Date).getTime(),u=[],c=arguments[0],l="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var r,a,f,g,m,p=e.isPlainObject(t)?e.extend(!0,{},e.fn.api.settings,t):e.extend({},e.fn.api.settings),b=p.namespace,v=(p.metadata,p.selector),h=p.error,y=p.className,q="."+b,x="module-"+b,D=e(this),T=D.closest(v.form),A=p.stateContext?e(p.stateContext):D,P=this,S=A.get(),R=D.data(x);m={initialize:function(){var e=m.get.event();l||(e?(m.debug("Attaching API events to element",e),D.on(e+q,m.event.trigger)):m.query()),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),R=m,D.data(x,R)},destroy:function(){m.verbose("Destroying previous module for",P),D.removeData(x).off(q)},query:function(){if(m.is.disabled())return void m.debug("Element is disabled API request aborted");if(m.is.loading()&&0===p.throttle)return void m.debug("Cancelling request, previous request is still pending");if(p.defaultData&&e.extend(!0,p.urlData,m.get.defaultData()),(p.serializeForm!==!1||A.is("form"))&&("json"==p.serializeForm?e.extend(!0,p.data,m.get.formData()):p.data=m.get.formData()),a=m.get.settings(),a===!1)return void m.error(h.beforeSend);if(p.url?(m.debug("Using specified url",f),f=m.add.urlData(p.url)):(f=m.add.urlData(m.get.templateURL()),m.debug("Added URL Data to url",f)),!f){if(!D.is("form"))return void m.error(h.missingURL,p.action);m.debug("No url or action specified, defaulting to form action"),f=D.attr("action")}m.set.loading(),r=e.extend(!0,{},p,{type:p.method||p.type,data:g,url:p.base+f,beforeSend:p.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),m.verbose("Creating AJAX request with settings",r),m.is.loading()?m.timer=setTimeout(function(){m.request=m.create.request(),m.xhr=m.create.xhr()},p.throttle):(m.request=m.create.request(),m.xhr=m.create.xhr())},is:{disabled:function(){return D.filter(p.filter).size()>0},loading:function(){return m.request&&"pending"==m.request.state()}},was:{succesful:function(){return m.request&&"resolved"==m.request.state()},failure:function(){return m.request&&"rejected"==m.request.state()},complete:function(){return m.request&&("resolved"==m.request.state()||"rejected"==m.request.state())}},add:{urlData:function(r,t){var o,a;return r&&(o=r.match(p.regExp.required),a=r.match(p.regExp.optional),t=t||p.urlData,o&&(m.debug("Looking for required URL variables",o),e.each(o,function(o,a){var i=-1!==a.indexOf("$")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(t)&&t[i]!==n?t[i]:D.data(i)!==n?D.data(i):A.data(i)!==n?A.data(i):t[i];return s===n?(m.error(h.requiredParameter,i,r),r=!1,!1):(m.verbose("Found required variable",i,s),void(r=r.replace(a,s)))})),a&&(m.debug("Looking for optional URL variables",o),e.each(a,function(o,a){var i=-1!==a.indexOf("$")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(t)&&t[i]!==n?t[i]:D.data(i)!==n?D.data(i):A.data(i)!==n?A.data(i):t[i];s!==n?(m.verbose("Optional variable Found",i,s),r=r.replace(a,s)):(m.verbose("Optional variable not found",i),r=-1!==r.indexOf("/"+a)?r.replace("/"+a,""):r.replace(a,""))}))),r}},event:{trigger:function(e){m.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(e){var r=this,t=(new Date).getTime()-s,n=p.loadingDuration-t;n=n>0?n:0,setTimeout(function(){m.request.resolveWith(r,[e])},n)},fail:function(e,r,t){var n=this,o=(new Date).getTime()-s,a=p.loadingDuration-o;a=a>0?a:0,setTimeout(function(){"abort"!==r?m.request.rejectWith(n,[e,r,t]):m.reset()},a)}},request:{complete:function(r){m.remove.loading(),e.proxy(p.onComplete,S)(r,D)},done:function(r){m.debug("API Response Received",r),"json"==p.dataType&&e.isFunction(p.successTest)?(m.debug("Checking JSON returned success",p.successTest,r),p.successTest(r)?e.proxy(p.onSuccess,S)(r,D):(m.debug("JSON test specified by user and response failed",r),e.proxy(p.onFailure,S)(r,D))):e.proxy(p.onSuccess,S)(r,D)},error:function(r,t,o){var a,i=p.error[t]!==n?p.error[t]:o;if(r!==n)if(r.readyState!==n&&4==r.readyState){if(200!=r.status&&o!==n&&""!==o)m.error(h.statusMessage+o);else if("error"==t&&"json"==p.dataType)try{a=e.parseJSON(r.responseText),a&&a.error!==n&&(i=a.error)}catch(s){m.error(h.JSONParse)}m.remove.loading(),m.set.error(),p.errorDuration&&setTimeout(m.remove.error,p.errorDuration),m.debug("API Request error:",i),e.proxy(p.onError,S)(i,S)}else e.proxy(p.onAbort,S)(i,S),m.debug("Request Aborted (Most likely caused by page change or CORS Policy)",t,o)}}},create:{request:function(){return e.Deferred().always(m.event.request.complete).done(m.event.request.done).fail(m.event.request.error)},xhr:function(){e.ajax(r).always(m.event.xhr.always).done(m.event.xhr.done).fail(m.event.xhr.fail)}},set:{error:function(){m.verbose("Adding error state to element",A),A.addClass(y.error)},loading:function(){m.verbose("Adding loading state to element",A),A.addClass(y.loading)}},remove:{error:function(){m.verbose("Removing error state from element",A),A.removeClass(y.error)},loading:function(){m.verbose("Removing loading state from element",A),A.removeClass(y.loading)}},get:{request:function(){return m.request||!1},xhr:function(){return m.xhr||!1},settings:function(){var r;return r=e.proxy(p.beforeSend,D)(p),r&&(r.success!==n&&(m.debug("Legacy success callback detected",r),m.error(h.legacyParameters,r.success),r.onSuccess=r.success),r.failure!==n&&(m.debug("Legacy failure callback detected",r),m.error(h.legacyParameters,r.failure),r.onFailure=r.failure),r.complete!==n&&(m.debug("Legacy complete callback detected",r),m.error(h.legacyParameters,r.complete),r.onComplete=r.complete)),r===n&&m.error(h.noReturnedValue),r!==n?r:p},defaultData:function(){var r={};return e.isWindow(P)||(D.is("input")?r.value=D.val():D.is("form")||(r.text=D.text())),r},event:function(){return e.isWindow(P)||"now"==p.on?(m.debug("API called without element, no events attached"),!1):"auto"==p.on?D.is("input")?P.oninput!==n?"input":P.onpropertychange!==n?"propertychange":"keyup":D.is("form")?"submit":"click":p.on},formData:function(){var r;return e(this).serializeObject()!==n?r=T.serializeObject():(m.error(h.missingSerialize),r=T.serialize()),m.debug("Retrieved form data",r),r},templateURL:function(e){var r;return e=e||D.data(p.metadata.action)||p.action||!1,e&&(m.debug("Looking up url for action",e,p.api),p.api[e]!==n?(r=p.api[e],m.debug("Found template url",r)):m.error(h.missingAction,p.action,p.api)),r}},reset:function(){m.remove.error(),m.remove.loading()},setting:function(r,t){if(m.debug("Changing setting",r,t),e.isPlainObject(r))e.extend(!0,p,r);else{if(t===n)return p[r];p[r]=t}},internal:function(r,t){if(e.isPlainObject(r))e.extend(!0,m,r);else{if(t===n)return m[r];m[r]=t}},debug:function(){p.debug&&(p.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,p.name+":"),m.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),m.verbose.apply(console,arguments)))},error:function(){m.error=Function.prototype.bind.call(console.error,console,p.name+":"),m.error.apply(console,arguments)},performance:{log:function(e){var r,t,n;p.performance&&(r=(new Date).getTime(),n=s||r,t=r-n,s=r,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":t})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,100)},display:function(){var r=p.name+":",t=0;s=!1,clearTimeout(m.performance.timer),e.each(u,function(e,r){t+=r["Execution Time"]}),r+=" "+t+"ms",i&&(r+=" '"+i+"'"),(console.group!==n||console.table!==n)&&u.length>0&&(console.groupCollapsed(r),console.table?console.table(u):e.each(u,function(e,r){console.log(r.Name+": "+r["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(r,t,a){var i,s,u,c=R;return t=t||d,a=P||a,"string"==typeof r&&c!==n&&(r=r.split(/[\. ]/),i=r.length-1,e.each(r,function(t,o){var a=t!=i?o+r[t+1].charAt(0).toUpperCase()+r[t+1].slice(1):r;if(e.isPlainObject(c[a])&&t!=i)c=c[a];else{if(c[a]!==n)return s=c[a],!1;if(!e.isPlainObject(c[o])||t==i)return c[o]!==n?(s=c[o],!1):(m.error(h.method,r),!1);c=c[o]}})),e.isFunction(s)?u=s.apply(a,t):s!==n&&(u=s),e.isArray(o)?o.push(u):o!==n?o=[o,u]:u!==n&&(o=u),s}},l?(R===n&&m.initialize(),m.invoke(c)):(R!==n&&m.destroy(),m.initialize())}),o!==n?o:this},e.api.settings={name:"API",namespace:"api",debug:!1,verbose:!0,performance:!0,on:"auto",filter:".disabled",stateContext:!1,loadingDuration:0,errorDuration:2e3,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,method:"get",data:{},dataType:"json",beforeSend:function(e){return e},beforeXHR:function(){},onSuccess:function(){},onComplete:function(){},onFailure:function(){},onError:function(){},onAbort:function(){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingSerialize:"Required dependency jquery-serialize-object missing, using basic serialize",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{form:"form"},metadata:{action:"action",request:"request",xhr:"xhr"}},e.api.settings.api={}}(jQuery,window,document); \ No newline at end of file +!function(e,r,t,n){e.api=e.fn.api=function(t){var o,a=e(e.isFunction(this)?r:this),i=a.selector||"",s=(new Date).getTime(),u=[],c=arguments[0],l="string"==typeof c,d=[].slice.call(arguments,1);return a.each(function(){var r,a,f,g,m,p=e.isPlainObject(t)?e.extend(!0,{},e.fn.api.settings,t):e.extend({},e.fn.api.settings),b=p.namespace,v=(p.metadata,p.selector),h=p.error,y=p.className,q="."+b,x="module-"+b,D=e(this),T=D.closest(v.form),A=p.stateContext?e(p.stateContext):D,P=this,S=A.get(),R=D.data(x);m={initialize:function(){var e=m.get.event();l||(e?(m.debug("Attaching API events to element",e),D.on(e+q,m.event.trigger)):m.query()),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),R=m,D.data(x,R)},destroy:function(){m.verbose("Destroying previous module for",P),D.removeData(x).off(q)},query:function(){if(m.is.disabled())return void m.debug("Element is disabled API request aborted");if(m.is.loading()&&0===p.throttle)return void m.debug("Cancelling request, previous request is still pending");if(p.defaultData&&e.extend(!0,p.urlData,m.get.defaultData()),(p.serializeForm!==!1||A.is("form"))&&("json"==p.serializeForm?e.extend(!0,p.data,m.get.formData()):p.data=m.get.formData()),a=m.get.settings(),a===!1)return void m.error(h.beforeSend);if(p.url?(m.debug("Using specified url",f),f=m.add.urlData(p.url)):(f=m.add.urlData(m.get.templateURL()),m.debug("Added URL Data to url",f)),!f){if(!D.is("form"))return void m.error(h.missingURL,p.action);m.debug("No url or action specified, defaulting to form action"),f=D.attr("action")}m.set.loading(),r=e.extend(!0,{},p,{type:p.method||p.type,data:g,url:p.base+f,beforeSend:p.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),m.verbose("Creating AJAX request with settings",r),m.is.loading()?m.timer=setTimeout(function(){m.request=m.create.request(),m.xhr=m.create.xhr()},p.throttle):(m.request=m.create.request(),m.xhr=m.create.xhr())},is:{disabled:function(){return D.filter(p.filter).size()>0},loading:function(){return m.request&&"pending"==m.request.state()}},was:{succesful:function(){return m.request&&"resolved"==m.request.state()},failure:function(){return m.request&&"rejected"==m.request.state()},complete:function(){return m.request&&("resolved"==m.request.state()||"rejected"==m.request.state())}},add:{urlData:function(r,t){var o,a;return r&&(o=r.match(p.regExp.required),a=r.match(p.regExp.optional),t=t||p.urlData,o&&(m.debug("Looking for required URL variables",o),e.each(o,function(o,a){var i=-1!==a.indexOf("$")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(t)&&t[i]!==n?t[i]:D.data(i)!==n?D.data(i):A.data(i)!==n?A.data(i):t[i];return s===n?(m.error(h.requiredParameter,i,r),r=!1,!1):(m.verbose("Found required variable",i,s),void(r=r.replace(a,s)))})),a&&(m.debug("Looking for optional URL variables",o),e.each(a,function(o,a){var i=-1!==a.indexOf("$")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(t)&&t[i]!==n?t[i]:D.data(i)!==n?D.data(i):A.data(i)!==n?A.data(i):t[i];s!==n?(m.verbose("Optional variable Found",i,s),r=r.replace(a,s)):(m.verbose("Optional variable not found",i),r=-1!==r.indexOf("/"+a)?r.replace("/"+a,""):r.replace(a,""))}))),r}},event:{trigger:function(e){m.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(e){var r=this,t=(new Date).getTime()-s,n=p.loadingDuration-t;n=n>0?n:0,setTimeout(function(){m.request.resolveWith(r,[e])},n)},fail:function(e,r,t){var n=this,o=(new Date).getTime()-s,a=p.loadingDuration-o;a=a>0?a:0,setTimeout(function(){"abort"!==r?m.request.rejectWith(n,[e,r,t]):m.reset()},a)}},request:{complete:function(r){m.remove.loading(),e.proxy(p.onComplete,S)(r,D)},done:function(r){m.debug("API Response Received",r),"json"==p.dataType&&e.isFunction(p.successTest)?(m.debug("Checking JSON returned success",p.successTest,r),p.successTest(r)?e.proxy(p.onSuccess,S)(r,D):(m.debug("JSON test specified by user and response failed",r),e.proxy(p.onFailure,S)(r,D))):e.proxy(p.onSuccess,S)(r,D)},error:function(r,t,o){var a,i=p.error[t]!==n?p.error[t]:o;if(r!==n)if(r.readyState!==n&&4==r.readyState){if(200!=r.status&&o!==n&&""!==o)m.error(h.statusMessage+o);else if("error"==t&&"json"==p.dataType)try{a=e.parseJSON(r.responseText),a&&a.error!==n&&(i=a.error)}catch(s){m.error(h.JSONParse)}m.remove.loading(),m.set.error(),p.errorDuration&&setTimeout(m.remove.error,p.errorDuration),m.debug("API Request error:",i),e.proxy(p.onError,S)(i,S)}else e.proxy(p.onAbort,S)(i,S),m.debug("Request Aborted (Most likely caused by page change or CORS Policy)",t,o)}}},create:{request:function(){return e.Deferred().always(m.event.request.complete).done(m.event.request.done).fail(m.event.request.error)},xhr:function(){e.ajax(r).always(m.event.xhr.always).done(m.event.xhr.done).fail(m.event.xhr.fail)}},set:{error:function(){m.verbose("Adding error state to element",A),A.addClass(y.error)},loading:function(){m.verbose("Adding loading state to element",A),A.addClass(y.loading)}},remove:{error:function(){m.verbose("Removing error state from element",A),A.removeClass(y.error)},loading:function(){m.verbose("Removing loading state from element",A),A.removeClass(y.loading)}},get:{request:function(){return m.request||!1},xhr:function(){return m.xhr||!1},settings:function(){var r;return r=e.proxy(p.beforeSend,D)(p),r&&(r.success!==n&&(m.debug("Legacy success callback detected",r),m.error(h.legacyParameters,r.success),r.onSuccess=r.success),r.failure!==n&&(m.debug("Legacy failure callback detected",r),m.error(h.legacyParameters,r.failure),r.onFailure=r.failure),r.complete!==n&&(m.debug("Legacy complete callback detected",r),m.error(h.legacyParameters,r.complete),r.onComplete=r.complete)),r===n&&m.error(h.noReturnedValue),r!==n?r:p},defaultData:function(){var r={};return e.isWindow(P)||(D.is("input")?r.value=D.val():D.is("form")||(r.text=D.text())),r},event:function(){return e.isWindow(P)||"now"==p.on?(m.debug("API called without element, no events attached"),!1):"auto"==p.on?D.is("input")?P.oninput!==n?"input":P.onpropertychange!==n?"propertychange":"keyup":D.is("form")?"submit":"click":p.on},formData:function(){var r;return e(this).serializeObject()!==n?r=T.serializeObject():(m.error(h.missingSerialize),r=T.serialize()),m.debug("Retrieved form data",r),r},templateURL:function(e){var r;return e=e||D.data(p.metadata.action)||p.action||!1,e&&(m.debug("Looking up url for action",e,p.api),p.api[e]!==n?(r=p.api[e],m.debug("Found template url",r)):m.error(h.missingAction,p.action,p.api)),r}},reset:function(){m.remove.error(),m.remove.loading()},setting:function(r,t){if(m.debug("Changing setting",r,t),e.isPlainObject(r))e.extend(!0,p,r);else{if(t===n)return p[r];p[r]=t}},internal:function(r,t){if(e.isPlainObject(r))e.extend(!0,m,r);else{if(t===n)return m[r];m[r]=t}},debug:function(){p.debug&&(p.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,p.name+":"),m.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),m.verbose.apply(console,arguments)))},error:function(){m.error=Function.prototype.bind.call(console.error,console,p.name+":"),m.error.apply(console,arguments)},performance:{log:function(e){var r,t,n;p.performance&&(r=(new Date).getTime(),n=s||r,t=r-n,s=r,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":t})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,100)},display:function(){var r=p.name+":",t=0;s=!1,clearTimeout(m.performance.timer),e.each(u,function(e,r){t+=r["Execution Time"]}),r+=" "+t+"ms",i&&(r+=" '"+i+"'"),(console.group!==n||console.table!==n)&&u.length>0&&(console.groupCollapsed(r),console.table?console.table(u):e.each(u,function(e,r){console.log(r.Name+": "+r["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(r,t,a){var i,s,u,c=R;return t=t||d,a=P||a,"string"==typeof r&&c!==n&&(r=r.split(/[\. ]/),i=r.length-1,e.each(r,function(t,o){var a=t!=i?o+r[t+1].charAt(0).toUpperCase()+r[t+1].slice(1):r;if(e.isPlainObject(c[a])&&t!=i)c=c[a];else{if(c[a]!==n)return s=c[a],!1;if(!e.isPlainObject(c[o])||t==i)return c[o]!==n?(s=c[o],!1):(m.error(h.method,r),!1);c=c[o]}})),e.isFunction(s)?u=s.apply(a,t):s!==n&&(u=s),e.isArray(o)?o.push(u):o!==n?o=[o,u]:u!==n&&(o=u),s}},l?(R===n&&m.initialize(),m.invoke(c)):(R!==n&&m.destroy(),m.initialize())}),o!==n?o:this},e.api.settings={name:"API",namespace:"api",debug:!0,verbose:!0,performance:!0,on:"auto",filter:".disabled",stateContext:!1,loadingDuration:0,errorDuration:2e3,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,method:"get",data:{},dataType:"json",beforeSend:function(e){return e},beforeXHR:function(){},onSuccess:function(){},onComplete:function(){},onFailure:function(){},onError:function(){},onAbort:function(){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingSerialize:"Required dependency jquery-serialize-object missing, using basic serialize",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{form:"form"},metadata:{action:"action",request:"request",xhr:"xhr"}},e.api.settings.api={}}(jQuery,window,document); \ No newline at end of file diff --git a/dist/components/popup.js b/dist/components/popup.js index 7e410e3ce..a591dc4fb 100644 --- a/dist/components/popup.js +++ b/dist/components/popup.js @@ -311,7 +311,9 @@ $.fn.popup = function(parameters) { removePopup: function() { module.debug('Removing popup'); $.proxy(settings.onRemove, $popup)(element); - $popup.remove(); + if($popup.size() > 0) { + $popup.remove(); + } }, save: { @@ -653,6 +655,8 @@ $.fn.popup = function(parameters) { module.error(error.invalidPosition, position); } + module.debug('Calculated popup positioning values', positioning); + // tentatively place on stage $popup .css(positioning) diff --git a/dist/components/popup.min.js b/dist/components/popup.min.js index 5864e988e..8c5c09c3f 100644 --- a/dist/components/popup.min.js +++ b/dist/components/popup.min.js @@ -8,4 +8,4 @@ * http://opensource.org/licenses/MIT * */ -!function(e,t,o,i){"use strict";e.fn.popup=function(n){var r,s=e(this),a=e(o),p=s.selector||"",l=("ontouchstart"in o.documentElement,(new Date).getTime()),u=[],c=arguments[0],d="string"==typeof c,f=[].slice.call(arguments,1);return s.each(function(){var o,s,g,h=e.isPlainObject(n)?e.extend(!0,{},e.fn.popup.settings,n):e.extend({},e.fn.popup.settings),m=h.selector,b=h.className,v=h.error,y=h.metadata,w=h.namespace,x="."+h.namespace,P="module-"+w,C=e(this),T=e(h.context),k=h.target?e(h.target):C,O=e(t),S=e("body"),j=0,A=!1,z=this,R=C.data(P);g={initialize:function(){g.debug("Initializing module",C),g.refresh(),"click"==h.on?C.on("click"+x,g.toggle):g.get.startEvent()&&C.on(g.get.startEvent()+x,g.event.start).on(g.get.endEvent()+x,g.event.end),h.target&&g.debug("Target set to element",k),O.on("resize"+x,g.event.resize),g.exists()?h.hoverable&&g.bind.popup():g.create(),g.instantiate()},instantiate:function(){g.verbose("Storing instance of module",g),R=g,C.data(P,R)},refresh:function(){h.popup?o=e(h.popup):h.inline&&(o=k.next(h.selector.popup)),h.popup?(o.addClass(b.loading),s=o.offsetParent(),o.removeClass(b.loading)):s=h.inline?k.offsetParent():S,s.is("html")&&(g.debug("Page is popups offset parent"),s=S)},reposition:function(){g.refresh(),g.set.position()},destroy:function(){g.debug("Destroying previous module"),o&&!h.preserve&&g.removePopup(),C.off(x).removeData(P)},event:{start:function(){var t=e.isPlainObject(h.delay)?h.delay.show:h.delay;clearTimeout(g.hideTimer),g.showTimer=setTimeout(function(){!g.is.hidden()||g.is.active()&&g.is.dropdown()||g.show()},t)},end:function(){var t=e.isPlainObject(h.delay)?h.delay.hide:h.delay;clearTimeout(g.showTimer),g.hideTimer=setTimeout(function(){g.is.visible()&&g.hide()},t)},resize:function(){g.is.visible()&&g.set.position()}},create:function(){var t=C.data(y.html)||h.html,i=C.data(y.variation)||h.variation,n=C.data(y.title)||h.title,r=C.data(y.content)||C.attr("title")||h.content;t||r||n?(g.debug("Creating pop-up html"),t||(t=h.templates.popup({title:n,content:r})),o=e("
").addClass(b.popup).addClass(i).html(t),i&&o.addClass(i),h.inline?(g.verbose("Inserting popup element inline",o),o.insertAfter(C)):(g.verbose("Appending popup element to body",o),o.appendTo(T)),h.hoverable&&g.bind.popup(),e.proxy(h.onCreate,o)(z)):0!==k.next(h.selector.popup).size()?(g.verbose("Pre-existing popup found, reverting to inline"),h.inline=!0,g.refresh(),h.hoverable&&g.bind.popup()):g.debug("No content specified skipping display",z)},toggle:function(){g.debug("Toggling pop-up"),g.is.hidden()?(g.debug("Popup is hidden, showing pop-up"),g.unbind.close(),g.hideAll(),g.show()):(g.debug("Popup is visible, hiding pop-up"),g.hide())},show:function(t){t=e.isFunction(t)?t:function(){},g.debug("Showing pop-up",h.transition),h.preserve||h.popup||g.refresh(),g.exists()||g.create(),o&&g.set.position()&&(g.save.conditions(),g.animate.show(t))},hide:function(t){t=e.isFunction(t)?t:function(){},g.remove.visible(),g.unbind.close(),g.is.visible()&&(g.restore.conditions(),g.animate.hide(t))},hideAll:function(){e(m.popup).filter(":visible").popup("hide")},hideGracefully:function(t){t&&0===e(t.target).closest(m.popup).size()?(g.debug("Click occurred outside popup hiding popup"),g.hide()):g.debug("Click was inside popup, keeping popup open")},exists:function(){return o?h.inline||h.popup?0!==o.size():o.closest(T).size():!1},removePopup:function(){g.debug("Removing popup"),e.proxy(h.onRemove,o)(z),o.remove()},save:{conditions:function(){g.cache={title:C.attr("title")},g.cache.title&&C.removeAttr("title"),g.verbose("Saving original attributes",g.cache.title)}},restore:{conditions:function(){return z.blur(),g.cache&&g.cache.title&&(C.attr("title",g.cache.title),g.verbose("Restoring original attributes",g.cache.title)),!0}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},h.transition&&e.fn.transition!==i&&C.transition("is supported")?(g.set.visible(),o.transition({animation:h.transition+" in",queue:!1,debug:h.debug,verbose:h.verbose,duration:h.duration,onComplete:function(){g.bind.close(),e.proxy(t,o)(z),e.proxy(h.onVisible,o)(z)}})):(g.set.visible(),o.stop().fadeIn(h.duration,h.easing,function(){g.bind.close(),e.proxy(t,z)()})),e.proxy(h.onShow,o)(z)},hide:function(t){t=e.isFunction(t)?t:function(){},g.debug("Hiding pop-up"),h.transition&&e.fn.transition!==i&&C.transition("is supported")?o.transition({animation:h.transition+" out",queue:!1,duration:h.duration,debug:h.debug,verbose:h.verbose,onComplete:function(){g.reset(),e.proxy(t,o)(z),e.proxy(h.onHidden,o)(z)}}):o.stop().fadeOut(h.duration,h.easing,function(){g.reset(),t()}),e.proxy(h.onHide,o)(z)}},get:{startEvent:function(){return"hover"==h.on?"mouseenter":"focus"==h.on?"focus":!1},endEvent:function(){return"hover"==h.on?"mouseleave":"focus"==h.on?"blur":!1},offstagePosition:function(i){var i=i||!1,n={top:e(t).scrollTop(),bottom:e(t).scrollTop()+e(t).height(),left:0,right:e(t).width()},r={width:o.width(),height:o.height(),offset:o.offset()},s={},a=[];return r.offset&&i&&(g.verbose("Checking if outside viewable area",r.offset),s={top:r.offset.topn.bottom,right:r.offset.left+r.width>n.right,left:r.offset.left0?a.join(" "):!1},positions:function(){return{"top left":!1,"top center":!1,"top right":!1,"bottom left":!1,"bottom center":!1,"bottom right":!1,"left center":!1,"right center":!1}},nextPosition:function(e){var t=e.split(" "),o=t[0],i=t[1],n={top:"bottom",bottom:"top",left:"right",right:"left"},r={left:"center",center:"right",right:"left"},s={"top left":"top center","top center":"top right","top right":"right center","right center":"bottom right","bottom right":"bottom center","bottom center":"bottom left","bottom left":"left center","left center":"top left"},a="top"==o||"bottom"==o,p=!1,l=!1,u=!1;return A||(g.verbose("All available positions available"),A=g.get.positions()),g.debug("Recording last position tried",e),A[e]=!0,"opposite"===h.prefer&&(u=[n[o],i],u=u.join(" "),p=A[u]===!0,g.debug("Trying opposite strategy",u)),"adjacent"===h.prefer&&a&&(u=[o,r[i]],u=u.join(" "),l=A[u]===!0,g.debug("Trying adjacent strategy",u)),(l||p)&&(g.debug("Using backup position",u),u=s[e]),u}},set:{position:function(n,r){var a,p,l=(e(t).width(),e(t).height(),k.outerWidth()),u=k.outerHeight(),c=o.outerWidth(),d=o.outerHeight(),f=s.outerWidth(),m=s.outerHeight(),w=h.distanceAway,x=k[0],P=h.inline?parseInt(t.getComputedStyle(x).getPropertyValue("margin-top"),10):0,T=h.inline?parseInt(t.getComputedStyle(x).getPropertyValue("margin-left"),10):0,O=h.inline||h.popup?k.position():k.offset();switch(n=n||C.data(y.position)||h.position,r=r||C.data(y.offset)||h.offset,j==h.maxSearchDepth&&h.lastResort&&(g.debug("Using last resort position to display",h.lastResort),n=h.lastResort),h.inline&&(g.debug("Adding targets margin to calculation"),"left center"==n||"right center"==n?(r+=P,w+=-T):"top left"==n||"top center"==n||"top right"==n?(r+=T,w-=P):(r+=T,w+=P)),g.debug("Calculating popup positioning",n),n){case"top left":a={top:"auto",bottom:m-O.top+w,left:O.left+r,right:"auto"};break;case"top center":a={bottom:m-O.top+w,left:O.left+l/2-c/2+r,top:"auto",right:"auto"};break;case"top right":a={bottom:m-O.top+w,right:f-O.left-l-r,top:"auto",left:"auto"};break;case"left center":a={top:O.top+u/2-d/2+r,right:f-O.left+w,left:"auto",bottom:"auto"};break;case"right center":a={top:O.top+u/2-d/2+r,left:O.left+l+w,bottom:"auto",right:"auto"};break;case"bottom left":a={top:O.top+u+w,left:O.left+r,bottom:"auto",right:"auto"};break;case"bottom center":a={top:O.top+u+w,left:O.left+l/2-c/2+r,bottom:"auto",right:"auto"};break;case"bottom right":a={top:O.top+u+w,right:f-O.left-l-r,left:"auto",bottom:"auto"}}if(a===i&&g.error(v.invalidPosition,n),o.css(a).removeClass(b.position).addClass(n).addClass(b.loading),p=g.get.offstagePosition(n)){if(g.debug("Popup cant fit into viewport",p),j0&&o.on("mouseenter"+x,g.event.start).on("mouseleave"+x,g.event.end)},close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.one("touchmove"+x,g.hideGracefully).one("scroll"+x,g.hideGracefully),T.one("touchmove"+x,g.hideGracefully).one("scroll"+x,g.hideGracefully)),"click"==h.on&&h.closable&&(g.verbose("Binding popup close event to document"),a.on("click"+x,function(t){g.verbose("Pop-up clickaway intent detected"),e.proxy(g.hideGracefully,z)(t)}))}},unbind:{close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.off("scroll"+x,g.hide),T.off("scroll"+x,g.hide)),"click"==h.on&&h.closable&&(g.verbose("Removing close event from document"),a.off("click"+x))}},is:{active:function(){return C.hasClass(b.active)},animating:function(){return o&&o.is(":animated")||o.hasClass(b.animating)},visible:function(){return o&&o.is(":visible")},dropdown:function(){return C.hasClass(b.dropdown)},hidden:function(){return!g.is.visible()}},reset:function(){g.remove.visible(),h.preserve||h.popup?e.fn.transition!==i&&o.transition("remove transition"):g.removePopup()},setting:function(t,o){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(o===i)return h[t];h[t]=o}},internal:function(t,o){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(o===i)return g[t];g[t]=o}},debug:function(){h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+":"),g.debug.apply(console,arguments)))},verbose:function(){h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,h.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,o,i;h.performance&&(t=(new Date).getTime(),i=l||t,o=t-i,l=t,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:z,"Execution Time":o})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,100)},display:function(){var t=h.name+":",o=0;l=!1,clearTimeout(g.performance.timer),e.each(u,function(e,t){o+=t["Execution Time"]}),t+=" "+o+"ms",p&&(t+=" '"+p+"'"),(console.group!==i||console.table!==i)&&u.length>0&&(console.groupCollapsed(t),console.table?console.table(u):e.each(u,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(t,o,n){var s,a,p,l=R;return o=o||f,n=z||n,"string"==typeof t&&l!==i&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(o,n){var r=o!=s?n+t[o+1].charAt(0).toUpperCase()+t[o+1].slice(1):t;if(e.isPlainObject(l[r])&&o!=s)l=l[r];else{if(l[r]!==i)return a=l[r],!1;if(!e.isPlainObject(l[n])||o==s)return l[n]!==i?(a=l[n],!1):!1;l=l[n]}})),e.isFunction(a)?p=a.apply(n,o):a!==i&&(p=a),e.isArray(r)?r.push(p):r!==i?r=[r,p]:p!==i&&(r=p),a}},d?(R===i&&g.initialize(),g.invoke(c)):(R!==i&&g.destroy(),g.initialize())}),r!==i?r:this},e.fn.popup.settings={name:"Popup",debug:!1,verbose:!0,performance:!0,namespace:"popup",onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onHidden:function(){},variation:"",content:!1,html:!1,title:!1,on:"hover",closable:!0,hideOnScroll:"auto",context:"body",position:"top left",prefer:"opposite",lastResort:!1,delay:{show:30,hide:0},setFluidWidth:!0,target:!1,popup:!1,inline:!1,preserve:!0,hoverable:!1,duration:200,easing:"easeOutQuint",transition:"scale",distanceAway:0,offset:0,maxSearchDepth:20,error:{invalidPosition:"The position you specified is not a valid position",cannotPlace:"No visible position could be found for the popup",method:"The method you called is not defined."},metadata:{content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{active:"active",animating:"animating",dropdown:"dropdown",fluid:"fluid",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible"},selector:{popup:".ui.popup"},templates:{escape:function(e){var t=/[&<>"'`]/g,o=/[&<>"'`]/,i={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},n=function(e){return i[e]};return o.test(e)?e.replace(t,n):e},popup:function(t){var o="",n=e.fn.popup.settings.templates.escape;return typeof t!==i&&(typeof t.title!==i&&t.title&&(t.title=n(t.title),o+='
'+t.title+"
"),typeof t.content!==i&&t.content&&(t.content=n(t.content),o+='
'+t.content+"
")),o}}},e.extend(e.easing,{easeOutQuad:function(e,t,o,i,n){return-i*(t/=n)*(t-2)+o}})}(jQuery,window,document); \ No newline at end of file +!function(e,t,o,i){"use strict";e.fn.popup=function(n){var r,s=e(this),a=e(o),p=s.selector||"",l=("ontouchstart"in o.documentElement,(new Date).getTime()),u=[],c=arguments[0],d="string"==typeof c,f=[].slice.call(arguments,1);return s.each(function(){var o,s,g,h=e.isPlainObject(n)?e.extend(!0,{},e.fn.popup.settings,n):e.extend({},e.fn.popup.settings),m=h.selector,b=h.className,v=h.error,y=h.metadata,w=h.namespace,x="."+h.namespace,P="module-"+w,C=e(this),T=e(h.context),k=h.target?e(h.target):C,O=e(t),S=e("body"),j=0,z=!1,A=this,R=C.data(P);g={initialize:function(){g.debug("Initializing module",C),g.refresh(),"click"==h.on?C.on("click"+x,g.toggle):g.get.startEvent()&&C.on(g.get.startEvent()+x,g.event.start).on(g.get.endEvent()+x,g.event.end),h.target&&g.debug("Target set to element",k),O.on("resize"+x,g.event.resize),g.exists()?h.hoverable&&g.bind.popup():g.create(),g.instantiate()},instantiate:function(){g.verbose("Storing instance of module",g),R=g,C.data(P,R)},refresh:function(){h.popup?o=e(h.popup):h.inline&&(o=k.next(h.selector.popup)),h.popup?(o.addClass(b.loading),s=o.offsetParent(),o.removeClass(b.loading)):s=h.inline?k.offsetParent():S,s.is("html")&&(g.debug("Page is popups offset parent"),s=S)},reposition:function(){g.refresh(),g.set.position()},destroy:function(){g.debug("Destroying previous module"),o&&!h.preserve&&g.removePopup(),C.off(x).removeData(P)},event:{start:function(){var t=e.isPlainObject(h.delay)?h.delay.show:h.delay;clearTimeout(g.hideTimer),g.showTimer=setTimeout(function(){!g.is.hidden()||g.is.active()&&g.is.dropdown()||g.show()},t)},end:function(){var t=e.isPlainObject(h.delay)?h.delay.hide:h.delay;clearTimeout(g.showTimer),g.hideTimer=setTimeout(function(){g.is.visible()&&g.hide()},t)},resize:function(){g.is.visible()&&g.set.position()}},create:function(){var t=C.data(y.html)||h.html,i=C.data(y.variation)||h.variation,n=C.data(y.title)||h.title,r=C.data(y.content)||C.attr("title")||h.content;t||r||n?(g.debug("Creating pop-up html"),t||(t=h.templates.popup({title:n,content:r})),o=e("
").addClass(b.popup).addClass(i).html(t),i&&o.addClass(i),h.inline?(g.verbose("Inserting popup element inline",o),o.insertAfter(C)):(g.verbose("Appending popup element to body",o),o.appendTo(T)),h.hoverable&&g.bind.popup(),e.proxy(h.onCreate,o)(A)):0!==k.next(h.selector.popup).size()?(g.verbose("Pre-existing popup found, reverting to inline"),h.inline=!0,g.refresh(),h.hoverable&&g.bind.popup()):g.debug("No content specified skipping display",A)},toggle:function(){g.debug("Toggling pop-up"),g.is.hidden()?(g.debug("Popup is hidden, showing pop-up"),g.unbind.close(),g.hideAll(),g.show()):(g.debug("Popup is visible, hiding pop-up"),g.hide())},show:function(t){t=e.isFunction(t)?t:function(){},g.debug("Showing pop-up",h.transition),h.preserve||h.popup||g.refresh(),g.exists()||g.create(),o&&g.set.position()&&(g.save.conditions(),g.animate.show(t))},hide:function(t){t=e.isFunction(t)?t:function(){},g.remove.visible(),g.unbind.close(),g.is.visible()&&(g.restore.conditions(),g.animate.hide(t))},hideAll:function(){e(m.popup).filter(":visible").popup("hide")},hideGracefully:function(t){t&&0===e(t.target).closest(m.popup).size()?(g.debug("Click occurred outside popup hiding popup"),g.hide()):g.debug("Click was inside popup, keeping popup open")},exists:function(){return o?h.inline||h.popup?0!==o.size():o.closest(T).size():!1},removePopup:function(){g.debug("Removing popup"),e.proxy(h.onRemove,o)(A),o.size()>0&&o.remove()},save:{conditions:function(){g.cache={title:C.attr("title")},g.cache.title&&C.removeAttr("title"),g.verbose("Saving original attributes",g.cache.title)}},restore:{conditions:function(){return A.blur(),g.cache&&g.cache.title&&(C.attr("title",g.cache.title),g.verbose("Restoring original attributes",g.cache.title)),!0}},animate:{show:function(t){t=e.isFunction(t)?t:function(){},h.transition&&e.fn.transition!==i&&C.transition("is supported")?(g.set.visible(),o.transition({animation:h.transition+" in",queue:!1,debug:h.debug,verbose:h.verbose,duration:h.duration,onComplete:function(){g.bind.close(),e.proxy(t,o)(A),e.proxy(h.onVisible,o)(A)}})):(g.set.visible(),o.stop().fadeIn(h.duration,h.easing,function(){g.bind.close(),e.proxy(t,A)()})),e.proxy(h.onShow,o)(A)},hide:function(t){t=e.isFunction(t)?t:function(){},g.debug("Hiding pop-up"),h.transition&&e.fn.transition!==i&&C.transition("is supported")?o.transition({animation:h.transition+" out",queue:!1,duration:h.duration,debug:h.debug,verbose:h.verbose,onComplete:function(){g.reset(),e.proxy(t,o)(A),e.proxy(h.onHidden,o)(A)}}):o.stop().fadeOut(h.duration,h.easing,function(){g.reset(),t()}),e.proxy(h.onHide,o)(A)}},get:{startEvent:function(){return"hover"==h.on?"mouseenter":"focus"==h.on?"focus":!1},endEvent:function(){return"hover"==h.on?"mouseleave":"focus"==h.on?"blur":!1},offstagePosition:function(i){var i=i||!1,n={top:e(t).scrollTop(),bottom:e(t).scrollTop()+e(t).height(),left:0,right:e(t).width()},r={width:o.width(),height:o.height(),offset:o.offset()},s={},a=[];return r.offset&&i&&(g.verbose("Checking if outside viewable area",r.offset),s={top:r.offset.topn.bottom,right:r.offset.left+r.width>n.right,left:r.offset.left0?a.join(" "):!1},positions:function(){return{"top left":!1,"top center":!1,"top right":!1,"bottom left":!1,"bottom center":!1,"bottom right":!1,"left center":!1,"right center":!1}},nextPosition:function(e){var t=e.split(" "),o=t[0],i=t[1],n={top:"bottom",bottom:"top",left:"right",right:"left"},r={left:"center",center:"right",right:"left"},s={"top left":"top center","top center":"top right","top right":"right center","right center":"bottom right","bottom right":"bottom center","bottom center":"bottom left","bottom left":"left center","left center":"top left"},a="top"==o||"bottom"==o,p=!1,l=!1,u=!1;return z||(g.verbose("All available positions available"),z=g.get.positions()),g.debug("Recording last position tried",e),z[e]=!0,"opposite"===h.prefer&&(u=[n[o],i],u=u.join(" "),p=z[u]===!0,g.debug("Trying opposite strategy",u)),"adjacent"===h.prefer&&a&&(u=[o,r[i]],u=u.join(" "),l=z[u]===!0,g.debug("Trying adjacent strategy",u)),(l||p)&&(g.debug("Using backup position",u),u=s[e]),u}},set:{position:function(n,r){var a,p,l=(e(t).width(),e(t).height(),k.outerWidth()),u=k.outerHeight(),c=o.outerWidth(),d=o.outerHeight(),f=s.outerWidth(),m=s.outerHeight(),w=h.distanceAway,x=k[0],P=h.inline?parseInt(t.getComputedStyle(x).getPropertyValue("margin-top"),10):0,T=h.inline?parseInt(t.getComputedStyle(x).getPropertyValue("margin-left"),10):0,O=h.inline||h.popup?k.position():k.offset();switch(n=n||C.data(y.position)||h.position,r=r||C.data(y.offset)||h.offset,j==h.maxSearchDepth&&h.lastResort&&(g.debug("Using last resort position to display",h.lastResort),n=h.lastResort),h.inline&&(g.debug("Adding targets margin to calculation"),"left center"==n||"right center"==n?(r+=P,w+=-T):"top left"==n||"top center"==n||"top right"==n?(r+=T,w-=P):(r+=T,w+=P)),g.debug("Calculating popup positioning",n),n){case"top left":a={top:"auto",bottom:m-O.top+w,left:O.left+r,right:"auto"};break;case"top center":a={bottom:m-O.top+w,left:O.left+l/2-c/2+r,top:"auto",right:"auto"};break;case"top right":a={bottom:m-O.top+w,right:f-O.left-l-r,top:"auto",left:"auto"};break;case"left center":a={top:O.top+u/2-d/2+r,right:f-O.left+w,left:"auto",bottom:"auto"};break;case"right center":a={top:O.top+u/2-d/2+r,left:O.left+l+w,bottom:"auto",right:"auto"};break;case"bottom left":a={top:O.top+u+w,left:O.left+r,bottom:"auto",right:"auto"};break;case"bottom center":a={top:O.top+u+w,left:O.left+l/2-c/2+r,bottom:"auto",right:"auto"};break;case"bottom right":a={top:O.top+u+w,right:f-O.left-l-r,left:"auto",bottom:"auto"}}if(a===i&&g.error(v.invalidPosition,n),g.debug("Calculated popup positioning values",a),o.css(a).removeClass(b.position).addClass(n).addClass(b.loading),p=g.get.offstagePosition(n)){if(g.debug("Popup cant fit into viewport",p),j0&&o.on("mouseenter"+x,g.event.start).on("mouseleave"+x,g.event.end)},close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.one("touchmove"+x,g.hideGracefully).one("scroll"+x,g.hideGracefully),T.one("touchmove"+x,g.hideGracefully).one("scroll"+x,g.hideGracefully)),"click"==h.on&&h.closable&&(g.verbose("Binding popup close event to document"),a.on("click"+x,function(t){g.verbose("Pop-up clickaway intent detected"),e.proxy(g.hideGracefully,A)(t)}))}},unbind:{close:function(){(h.hideOnScroll===!0||"auto"==h.hideOnScroll&&"click"!=h.on)&&(a.off("scroll"+x,g.hide),T.off("scroll"+x,g.hide)),"click"==h.on&&h.closable&&(g.verbose("Removing close event from document"),a.off("click"+x))}},is:{active:function(){return C.hasClass(b.active)},animating:function(){return o&&o.is(":animated")||o.hasClass(b.animating)},visible:function(){return o&&o.is(":visible")},dropdown:function(){return C.hasClass(b.dropdown)},hidden:function(){return!g.is.visible()}},reset:function(){g.remove.visible(),h.preserve||h.popup?e.fn.transition!==i&&o.transition("remove transition"):g.removePopup()},setting:function(t,o){if(e.isPlainObject(t))e.extend(!0,h,t);else{if(o===i)return h[t];h[t]=o}},internal:function(t,o){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(o===i)return g[t];g[t]=o}},debug:function(){h.debug&&(h.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,h.name+":"),g.debug.apply(console,arguments)))},verbose:function(){h.verbose&&h.debug&&(h.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,h.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,h.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,o,i;h.performance&&(t=(new Date).getTime(),i=l||t,o=t-i,l=t,u.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:A,"Execution Time":o})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,100)},display:function(){var t=h.name+":",o=0;l=!1,clearTimeout(g.performance.timer),e.each(u,function(e,t){o+=t["Execution Time"]}),t+=" "+o+"ms",p&&(t+=" '"+p+"'"),(console.group!==i||console.table!==i)&&u.length>0&&(console.groupCollapsed(t),console.table?console.table(u):e.each(u,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),u=[]}},invoke:function(t,o,n){var s,a,p,l=R;return o=o||f,n=A||n,"string"==typeof t&&l!==i&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(o,n){var r=o!=s?n+t[o+1].charAt(0).toUpperCase()+t[o+1].slice(1):t;if(e.isPlainObject(l[r])&&o!=s)l=l[r];else{if(l[r]!==i)return a=l[r],!1;if(!e.isPlainObject(l[n])||o==s)return l[n]!==i?(a=l[n],!1):!1;l=l[n]}})),e.isFunction(a)?p=a.apply(n,o):a!==i&&(p=a),e.isArray(r)?r.push(p):r!==i?r=[r,p]:p!==i&&(r=p),a}},d?(R===i&&g.initialize(),g.invoke(c)):(R!==i&&g.destroy(),g.initialize())}),r!==i?r:this},e.fn.popup.settings={name:"Popup",debug:!1,verbose:!0,performance:!0,namespace:"popup",onCreate:function(){},onRemove:function(){},onShow:function(){},onVisible:function(){},onHide:function(){},onHidden:function(){},variation:"",content:!1,html:!1,title:!1,on:"hover",closable:!0,hideOnScroll:"auto",context:"body",position:"top left",prefer:"opposite",lastResort:!1,delay:{show:30,hide:0},setFluidWidth:!0,target:!1,popup:!1,inline:!1,preserve:!0,hoverable:!1,duration:200,easing:"easeOutQuint",transition:"scale",distanceAway:0,offset:0,maxSearchDepth:20,error:{invalidPosition:"The position you specified is not a valid position",cannotPlace:"No visible position could be found for the popup",method:"The method you called is not defined."},metadata:{content:"content",html:"html",offset:"offset",position:"position",title:"title",variation:"variation"},className:{active:"active",animating:"animating",dropdown:"dropdown",fluid:"fluid",loading:"loading",popup:"ui popup",position:"top left center bottom right",visible:"visible"},selector:{popup:".ui.popup"},templates:{escape:function(e){var t=/[&<>"'`]/g,o=/[&<>"'`]/,i={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},n=function(e){return i[e]};return o.test(e)?e.replace(t,n):e},popup:function(t){var o="",n=e.fn.popup.settings.templates.escape;return typeof t!==i&&(typeof t.title!==i&&t.title&&(t.title=n(t.title),o+='
'+t.title+"
"),typeof t.content!==i&&t.content&&(t.content=n(t.content),o+='
'+t.content+"
")),o}}},e.extend(e.easing,{easeOutQuad:function(e,t,o,i,n){return-i*(t/=n)*(t-2)+o}})}(jQuery,window,document); \ No newline at end of file diff --git a/dist/semantic.js b/dist/semantic.js index e719c52dc..da512a31f 100644 --- a/dist/semantic.js +++ b/dist/semantic.js @@ -1267,7 +1267,7 @@ $.api.settings = { name : 'API', namespace : 'api', - debug : false, + debug : true, verbose : true, performance : true, @@ -6815,7 +6815,9 @@ $.fn.popup = function(parameters) { removePopup: function() { module.debug('Removing popup'); $.proxy(settings.onRemove, $popup)(element); - $popup.remove(); + if($popup.size() > 0) { + $popup.remove(); + } }, save: { @@ -7157,6 +7159,8 @@ $.fn.popup = function(parameters) { module.error(error.invalidPosition, position); } + module.debug('Calculated popup positioning values', positioning); + // tentatively place on stage $popup .css(positioning) diff --git a/dist/semantic.min.js b/dist/semantic.min.js index 266aedc39..5e1f8eacf 100644 --- a/dist/semantic.min.js +++ b/dist/semantic.min.js @@ -8,9 +8,9 @@ * http://opensource.org/licenses/MIT * */ -!function(e,t,n,i){"use strict";e.fn.accordion=function(n){{var o,a=e(this),r=(new Date).getTime(),s=[],c=arguments[0],l="string"==typeof c,u=[].slice.call(arguments,1);t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)}}return a.each(function(){var d,m,f=e.isPlainObject(n)?e.extend(!0,{},e.fn.accordion.settings,n):e.extend({},e.fn.accordion.settings),g=f.className,p=f.namespace,b=f.selector,v=f.error,h="."+p,y="module-"+p,x=a.selector||"",w=e(this),C=w.find(b.title),T=w.find(b.content),k=this,S=w.data(y);m={initialize:function(){m.debug("Initializing accordion with bound events",w),w.on("click"+h,b.title,m.event.click),m.observeChanges(),m.instantiate()},instantiate:function(){S=m,w.data(y,m)},destroy:function(){m.debug("Destroying previous accordion for",w),w.removeData(y),C.off(h)},refresh:function(){C=w.find(b.title),T=w.find(b.content)},observeChanges:function(){"MutationObserver"in t&&(d=new MutationObserver(function(){m.debug("DOM tree modified, updating selector cache"),m.refresh()}),d.observe(k,{childList:!0,subtree:!0}),m.debug("Setting up mutation observer",d))},event:{click:function(){e.proxy(m.toggle,this)()}},toggle:function(t){var n=t!==i?"number"==typeof t?C.eq(t):e(t):e(this),o=n.next(T),a=o.is(":visible");m.debug("Toggling visibility of content",n),a?f.collapsible?e.proxy(m.close,n)():m.debug("Cannot close accordion content collapsing is disabled"):e.proxy(m.open,n)()},open:function(t){var n=t!==i?"number"==typeof t?C.eq(t):e(t):e(this),o=n.next(T),a=o.is(":animated"),r=o.hasClass(g.active);a||r||(m.debug("Opening accordion content",n),f.exclusive&&e.proxy(m.closeOthers,n)(),n.addClass(g.active),o.stop().children().stop().animate({opacity:1},f.duration,m.reset.display).end().slideDown(f.duration,f.easing,function(){o.addClass(g.active),e.proxy(m.reset.display,this)(),e.proxy(f.onOpen,this)(),e.proxy(f.onChange,this)()}))},close:function(t){var n=t!==i?"number"==typeof t?C.eq(t):e(t):e(this),o=n.next(T),a=o.hasClass(g.active);a&&(m.debug("Closing accordion content",o),n.removeClass(g.active),o.removeClass(g.active).show().stop().children().stop().animate({opacity:0},f.duration,m.reset.opacity).end().slideUp(f.duration,f.easing,function(){e.proxy(m.reset.display,this)(),e.proxy(f.onClose,this)(),e.proxy(f.onChange,this)()}))},closeOthers:function(t){var n,o,a,r=t!==i?C.eq(t):e(this),s=r.parents(b.content).prev(b.title),c=r.closest(b.accordion),l=b.title+"."+g.active+":visible",u=b.content+"."+g.active+":visible";f.closeNested?(n=c.find(l).not(s),a=n.next(T)):(n=c.find(l).not(s),o=c.find(u).find(l).not(s),n=n.not(o),a=n.next(T)),n.size()>0&&(m.debug("Exclusive enabled, closing other content",n),n.removeClass(g.active),a.stop().children().stop().animate({opacity:0},f.duration,m.resetOpacity).end().slideUp(f.duration,f.easing,function(){e(this).removeClass(g.active),e.proxy(m.reset.display,this)()}))},reset:{display:function(){m.verbose("Removing inline display from element",this),e(this).css("display",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")},opacity:function(){m.verbose("Removing inline opacity from element",this),e(this).css("opacity",""),""===e(this).attr("style")&&e(this).attr("style","").removeAttr("style")}},setting:function(t,n){if(m.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,f,t);else{if(n===i)return f[t];f[t]=n}},internal:function(t,n){return m.debug("Changing internal",t,n),n===i?m[t]:void(e.isPlainObject(t)?e.extend(!0,m,t):m[t]=n)},debug:function(){f.debug&&(f.performance?m.performance.log(arguments):(m.debug=Function.prototype.bind.call(console.info,console,f.name+":"),m.debug.apply(console,arguments)))},verbose:function(){f.verbose&&f.debug&&(f.performance?m.performance.log(arguments):(m.verbose=Function.prototype.bind.call(console.info,console,f.name+":"),m.verbose.apply(console,arguments)))},error:function(){m.error=Function.prototype.bind.call(console.error,console,f.name+":"),m.error.apply(console,arguments)},performance:{log:function(e){var t,n,i;f.performance&&(t=(new Date).getTime(),i=r||t,n=t-i,r=t,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:k,"Execution Time":n})),clearTimeout(m.performance.timer),m.performance.timer=setTimeout(m.performance.display,100)},display:function(){var t=f.name+":",n=0;r=!1,clearTimeout(m.performance.timer),e.each(s,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",x&&(t+=" '"+x+"'"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(t),console.table?console.table(s):e.each(s,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(t,n,a){var r,s,c,l=S;return n=n||u,a=k||a,"string"==typeof t&&l!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(l[a])&&n!=r)l=l[a];else{if(l[a]!==i)return s=l[a],!1;if(!e.isPlainObject(l[o])||n==r)return l[o]!==i?(s=l[o],!1):(m.error(v.method,t),!1);l=l[o]}})),e.isFunction(s)?c=s.apply(a,n):s!==i&&(c=s),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),s}},l?(S===i&&m.initialize(),m.invoke(c)):(S!==i&&m.destroy(),m.initialize())}),o!==i?o:this},e.fn.accordion.settings={name:"Accordion",namespace:"accordion",debug:!1,verbose:!0,performance:!0,exclusive:!0,collapsible:!0,closeNested:!1,duration:500,easing:"easeInOutQuint",onOpen:function(){},onClose:function(){},onChange:function(){},error:{method:"The method you called is not defined"},className:{active:"active"},selector:{accordion:".accordion",title:".title",content:".content"}},e.extend(e.easing,{easeInOutQuint:function(e,t,n,i,o){return(t/=o/2)<1?i/2*t*t*t*t*t+n:i/2*((t-=2)*t*t*t*t+2)+n}})}(jQuery,window,document),function(e,t,n,i){e.api=e.fn.api=function(n){var o,a=e(e.isFunction(this)?t:this),r=a.selector||"",s=(new Date).getTime(),c=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1);return a.each(function(){var t,a,m,f,g,p=e.isPlainObject(n)?e.extend(!0,{},e.fn.api.settings,n):e.extend({},e.fn.api.settings),b=p.namespace,v=(p.metadata,p.selector),h=p.error,y=p.className,x="."+b,w="module-"+b,C=e(this),T=C.closest(v.form),k=p.stateContext?e(p.stateContext):C,S=this,A=k.get(),z=C.data(w);g={initialize:function(){var e=g.get.event();u||(e?(g.debug("Attaching API events to element",e),C.on(e+x,g.event.trigger)):g.query()),g.instantiate()},instantiate:function(){g.verbose("Storing instance of module",g),z=g,C.data(w,z)},destroy:function(){g.verbose("Destroying previous module for",S),C.removeData(w).off(x)},query:function(){if(g.is.disabled())return void g.debug("Element is disabled API request aborted");if(g.is.loading()&&0===p.throttle)return void g.debug("Cancelling request, previous request is still pending");if(p.defaultData&&e.extend(!0,p.urlData,g.get.defaultData()),(p.serializeForm!==!1||k.is("form"))&&("json"==p.serializeForm?e.extend(!0,p.data,g.get.formData()):p.data=g.get.formData()),a=g.get.settings(),a===!1)return void g.error(h.beforeSend);if(p.url?(g.debug("Using specified url",m),m=g.add.urlData(p.url)):(m=g.add.urlData(g.get.templateURL()),g.debug("Added URL Data to url",m)),!m){if(!C.is("form"))return void g.error(h.missingURL,p.action);g.debug("No url or action specified, defaulting to form action"),m=C.attr("action")}g.set.loading(),t=e.extend(!0,{},p,{type:p.method||p.type,data:f,url:p.base+m,beforeSend:p.beforeXHR,success:function(){},failure:function(){},complete:function(){}}),g.verbose("Creating AJAX request with settings",t),g.is.loading()?g.timer=setTimeout(function(){g.request=g.create.request(),g.xhr=g.create.xhr()},p.throttle):(g.request=g.create.request(),g.xhr=g.create.xhr())},is:{disabled:function(){return C.filter(p.filter).size()>0},loading:function(){return g.request&&"pending"==g.request.state()}},was:{succesful:function(){return g.request&&"resolved"==g.request.state()},failure:function(){return g.request&&"rejected"==g.request.state()},complete:function(){return g.request&&("resolved"==g.request.state()||"rejected"==g.request.state())}},add:{urlData:function(t,n){var o,a;return t&&(o=t.match(p.regExp.required),a=t.match(p.regExp.optional),n=n||p.urlData,o&&(g.debug("Looking for required URL variables",o),e.each(o,function(o,a){var r=-1!==a.indexOf("$")?a.substr(2,a.length-3):a.substr(1,a.length-2),s=e.isPlainObject(n)&&n[r]!==i?n[r]:C.data(r)!==i?C.data(r):k.data(r)!==i?k.data(r):n[r];return s===i?(g.error(h.requiredParameter,r,t),t=!1,!1):(g.verbose("Found required variable",r,s),void(t=t.replace(a,s)))})),a&&(g.debug("Looking for optional URL variables",o),e.each(a,function(o,a){var r=-1!==a.indexOf("$")?a.substr(3,a.length-4):a.substr(2,a.length-3),s=e.isPlainObject(n)&&n[r]!==i?n[r]:C.data(r)!==i?C.data(r):k.data(r)!==i?k.data(r):n[r];s!==i?(g.verbose("Optional variable Found",r,s),t=t.replace(a,s)):(g.verbose("Optional variable not found",r),t=-1!==t.indexOf("/"+a)?t.replace("/"+a,""):t.replace(a,""))}))),t}},event:{trigger:function(e){g.query(),("submit"==e.type||"click"==e.type)&&e.preventDefault()},xhr:{always:function(){},done:function(e){var t=this,n=(new Date).getTime()-s,i=p.loadingDuration-n;i=i>0?i:0,setTimeout(function(){g.request.resolveWith(t,[e])},i)},fail:function(e,t,n){var i=this,o=(new Date).getTime()-s,a=p.loadingDuration-o;a=a>0?a:0,setTimeout(function(){"abort"!==t?g.request.rejectWith(i,[e,t,n]):g.reset()},a)}},request:{complete:function(t){g.remove.loading(),e.proxy(p.onComplete,A)(t,C)},done:function(t){g.debug("API Response Received",t),"json"==p.dataType&&e.isFunction(p.successTest)?(g.debug("Checking JSON returned success",p.successTest,t),p.successTest(t)?e.proxy(p.onSuccess,A)(t,C):(g.debug("JSON test specified by user and response failed",t),e.proxy(p.onFailure,A)(t,C))):e.proxy(p.onSuccess,A)(t,C)},error:function(t,n,o){var a,r=p.error[n]!==i?p.error[n]:o;if(t!==i)if(t.readyState!==i&&4==t.readyState){if(200!=t.status&&o!==i&&""!==o)g.error(h.statusMessage+o);else if("error"==n&&"json"==p.dataType)try{a=e.parseJSON(t.responseText),a&&a.error!==i&&(r=a.error)}catch(s){g.error(h.JSONParse)}g.remove.loading(),g.set.error(),p.errorDuration&&setTimeout(g.remove.error,p.errorDuration),g.debug("API Request error:",r),e.proxy(p.onError,A)(r,A)}else e.proxy(p.onAbort,A)(r,A),g.debug("Request Aborted (Most likely caused by page change or CORS Policy)",n,o)}}},create:{request:function(){return e.Deferred().always(g.event.request.complete).done(g.event.request.done).fail(g.event.request.error)},xhr:function(){e.ajax(t).always(g.event.xhr.always).done(g.event.xhr.done).fail(g.event.xhr.fail)}},set:{error:function(){g.verbose("Adding error state to element",k),k.addClass(y.error)},loading:function(){g.verbose("Adding loading state to element",k),k.addClass(y.loading)}},remove:{error:function(){g.verbose("Removing error state from element",k),k.removeClass(y.error)},loading:function(){g.verbose("Removing loading state from element",k),k.removeClass(y.loading)}},get:{request:function(){return g.request||!1},xhr:function(){return g.xhr||!1},settings:function(){var t;return t=e.proxy(p.beforeSend,C)(p),t&&(t.success!==i&&(g.debug("Legacy success callback detected",t),g.error(h.legacyParameters,t.success),t.onSuccess=t.success),t.failure!==i&&(g.debug("Legacy failure callback detected",t),g.error(h.legacyParameters,t.failure),t.onFailure=t.failure),t.complete!==i&&(g.debug("Legacy complete callback detected",t),g.error(h.legacyParameters,t.complete),t.onComplete=t.complete)),t===i&&g.error(h.noReturnedValue),t!==i?t:p},defaultData:function(){var t={};return e.isWindow(S)||(C.is("input")?t.value=C.val():C.is("form")||(t.text=C.text())),t},event:function(){return e.isWindow(S)||"now"==p.on?(g.debug("API called without element, no events attached"),!1):"auto"==p.on?C.is("input")?S.oninput!==i?"input":S.onpropertychange!==i?"propertychange":"keyup":C.is("form")?"submit":"click":p.on},formData:function(){var t;return e(this).serializeObject()!==i?t=T.serializeObject():(g.error(h.missingSerialize),t=T.serialize()),g.debug("Retrieved form data",t),t},templateURL:function(e){var t;return e=e||C.data(p.metadata.action)||p.action||!1,e&&(g.debug("Looking up url for action",e,p.api),p.api[e]!==i?(t=p.api[e],g.debug("Found template url",t)):g.error(h.missingAction,p.action,p.api)),t}},reset:function(){g.remove.error(),g.remove.loading()},setting:function(t,n){if(g.debug("Changing setting",t,n),e.isPlainObject(t))e.extend(!0,p,t);else{if(n===i)return p[t];p[t]=n}},internal:function(t,n){if(e.isPlainObject(t))e.extend(!0,g,t);else{if(n===i)return g[t];g[t]=n}},debug:function(){p.debug&&(p.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,p.name+":"),g.debug.apply(console,arguments)))},verbose:function(){p.verbose&&p.debug&&(p.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,p.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,p.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,n,i;p.performance&&(t=(new Date).getTime(),i=s||t,n=t-i,s=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"","Execution Time":n})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,100)},display:function(){var t=p.name+":",n=0;s=!1,clearTimeout(g.performance.timer),e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",r&&(t+=" '"+r+"'"),(console.group!==i||console.table!==i)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,n,a){var r,s,c,l=z;return n=n||d,a=S||a,"string"==typeof t&&l!==i&&(t=t.split(/[\. ]/),r=t.length-1,e.each(t,function(n,o){var a=n!=r?o+t[n+1].charAt(0).toUpperCase()+t[n+1].slice(1):t;if(e.isPlainObject(l[a])&&n!=r)l=l[a];else{if(l[a]!==i)return s=l[a],!1;if(!e.isPlainObject(l[o])||n==r)return l[o]!==i?(s=l[o],!1):(g.error(h.method,t),!1);l=l[o]}})),e.isFunction(s)?c=s.apply(a,n):s!==i&&(c=s),e.isArray(o)?o.push(c):o!==i?o=[o,c]:c!==i&&(o=c),s}},u?(z===i&&g.initialize(),g.invoke(l)):(z!==i&&g.destroy(),g.initialize())}),o!==i?o:this},e.api.settings={name:"API",namespace:"api",debug:!1,verbose:!0,performance:!0,on:"auto",filter:".disabled",stateContext:!1,loadingDuration:0,errorDuration:2e3,action:!1,url:!1,base:"",urlData:{},defaultData:!0,serializeForm:!1,throttle:0,method:"get",data:{},dataType:"json",beforeSend:function(e){return e},beforeXHR:function(){},onSuccess:function(){},onComplete:function(){},onFailure:function(){},onError:function(){},onAbort:function(){},successTest:!1,error:{beforeSend:"The before send function has aborted the request",error:"There was an error with your request",exitConditions:"API Request Aborted. Exit conditions met",JSONParse:"JSON could not be parsed during error handling",legacyParameters:"You are using legacy API success callback names",method:"The method you called is not defined",missingAction:"API action used but no url was defined",missingSerialize:"Required dependency jquery-serialize-object missing, using basic serialize",missingURL:"No URL specified for api event",noReturnedValue:"The beforeSend callback must return a settings object, beforeSend ignored.",parseError:"There was an error parsing your request",requiredParameter:"Missing a required URL parameter: ",statusMessage:"Server gave an error: ",timeout:"Your request timed out"},regExp:{required:/\{\$*[A-z0-9]+\}/g,optional:/\{\/\$*[A-z0-9]+\}/g},className:{loading:"loading",error:"error"},selector:{form:"form"},metadata:{action:"action",request:"request",xhr:"xhr"}},e.api.settings.api={}}(jQuery,window,document),function(e,t,n,i){"use strict";e.fn.checkbox=function(n){var o,a=e(this),r=a.selector||"",s=(new Date).getTime(),c=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1);return a.each(function(){var a,m,f=e.extend(!0,{},e.fn.checkbox.settings,n),g=f.className,p=f.namespace,b=f.selector,v=f.error,h="."+p,y="module-"+p,x=e(this),w=e(this).find(b.label).first(),C=e(this).find(b.input),T=x.data(y),k=this;m={initialize:function(){m.verbose("Initializing checkbox",f),m.create.label(),m.add.events(),m.is.checked()?(m.set.checked(),f.fireOnInit&&e.proxy(f.onChecked,C.get())()):(m.remove.checked(),f.fireOnInit&&e.proxy(f.onUnchecked,C.get())()),m.observeChanges(),m.instantiate()},instantiate:function(){m.verbose("Storing instance of module",m),T=m,x.data(y,m)},destroy:function(){m.verbose("Destroying module"),m.remove.events(),x.removeData(y)},refresh:function(){x=e(this),w=e(this).find(b.label).first(),C=e(this).find(b.input)},observeChanges:function(){"MutationObserver"in t&&(a=new MutationObserver(function(){m.debug("DOM tree modified, updating selector cache"),m.refresh()}),a.observe(k,{childList:!0,subtree:!0}),m.debug("Setting up mutation observer",a))},attachEvents:function(t,n){var i=e(t);n=e.isFunction(m[n])?m[n]:m.toggle,i.size()>0?(m.debug("Attaching checkbox events to element",t,n),i.on("click"+h,n)):m.error(v.notFound)},event:{keydown:function(t){var n=t.which,i={enter:13,escape:27};n==i.escape&&(m.verbose("Escape key pressed blurring field"),x.blur()),t.ctrlKey||n!=i.enter||(m.verbose("Enter key pressed, toggling checkbox"),e.proxy(m.toggle,this)(),t.preventDefault())}},is:{radio:function(){return x.hasClass(g.radio)},checked:function(){return C.prop("checked")!==i&&C.prop("checked")},unchecked:function(){return!m.is.checked()}},can:{change:function(){return!(x.hasClass(g.disabled)||x.hasClass(g.readOnly)||C.prop("disabled"))},uncheck:function(){return"boolean"==typeof f.uncheckable?f.uncheckable:!m.is.radio()}},set:{checked:function(){x.addClass(g.checked)},tab:function(){C.attr("tabindex")===i&&C.attr("tabindex",0)}},create:{label:function(){C.prevAll(b.label).size()>0?(C.prev(b.label).detach().insertAfter(C),m.debug("Moving existing label",w)):m.has.label()||(w=e("