diff --git a/build/minified/elements/progress.min.css b/build/minified/elements/progress.min.css index e0c904e92..6e6c76fc1 100644 --- a/build/minified/elements/progress.min.css +++ b/build/minified/elements/progress.min.css @@ -1 +1 @@ -.ui.progress{border:1px solid rgba(0,0,0,.1);width:100%;height:35px;background-color:#FAFAFA;padding:5px;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.progress .bar{display:inline-block;height:100%;background-color:#CCC;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:width 1s ease-in-out,background-color 1s ease-out;-moz-transition:width 1s ease-in-out,background-color 1s ease-out;-ms-transition:width 1s ease-in-out,background-color 1s ease-out;-o-transition:width 1s ease-in-out,background-color 1s ease-out;transition:width 1s ease-in-out,background-color 1s ease-out}.ui.successful.progress .bar{background-color:#73E064!important}.ui.successful.progress .bar,.ui.successful.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important}.ui.failed.progress .bar{background-color:#DF9BA4!important}.ui.failed.progress .bar,.ui.failed.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important}.ui.active.progress .bar{position:relative}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#FFF;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-animation:animate-emphasis 2s ease-out infinite;-moz-animation:animate-emphasis 2s ease-out infinite;animation:animate-emphasis 2s ease-out infinite}@-webkit-keyframes animate-emphasis{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:95%}}@-moz-keyframes animate-emphasis{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}@keyframes animate-emphasis{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important}.ui.blue.progress .bar{background-color:#6ECFF5}.ui.black.progress .bar{background-color:#5C6166}.ui.green.progress .bar{background-color:#A1CF64}.ui.red.progress .bar{background-color:#EF4D6D}.ui.purple.progress .bar{background-color:#564F8A}.ui.teal.progress .bar{background-color:#00B5AD}.ui.progress.striped .bar{-webkit-background-size:30px 30px;-moz-background-size:30px 30px;background-size:30px 30px;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.ui.progress.active.striped .bar{-webkit-animation:animate-striped 3s linear infinite;-moz-animation:animate-striped 3s linear infinite}@-webkit-keyframes animate-striped{0%{background-position:0 0}100%{background-position:60px 0}}@-moz-keyframes animate-striped{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes animate-striped{0%{background-position:0 0}100%{background-position:60px 0}} \ No newline at end of file +.ui.progress{border:1px solid rgba(0,0,0,.1);width:100%;height:35px;background-color:#FAFAFA;padding:5px;-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui.progress .bar{display:inline-block;height:100%;background-color:#CCC;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:width 1s ease-in-out,background-color 1s ease-out;-moz-transition:width 1s ease-in-out,background-color 1s ease-out;-ms-transition:width 1s ease-in-out,background-color 1s ease-out;-o-transition:width 1s ease-in-out,background-color 1s ease-out;transition:width 1s ease-in-out,background-color 1s ease-out}.ui.successful.progress .bar{background-color:#73E064!important}.ui.successful.progress .bar,.ui.successful.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.failed.progress .bar{background-color:#DF9BA4!important}.ui.failed.progress .bar,.ui.failed.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.active.progress .bar{position:relative}.ui.active.progress .bar::after{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#FFF;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-animation:progress-active 2s ease-out infinite;-moz-animation:progress-active 2s ease-out infinite;animation:progress-active 2s ease-out infinite}@-webkit-keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:95%}}@-moz-keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}@keyframes progress-active{0%{opacity:0;width:0}50%{opacity:.3}100%{opacity:0;width:100%}}.ui.disabled.progress{opacity:.35}.ui.disabled.progress .bar,.ui.disabled.progress .bar::after{-webkit-animation:none!important;-moz-animation:none!important;animation:none!important}.ui.blue.progress .bar{background-color:#6ECFF5}.ui.black.progress .bar{background-color:#5C6166}.ui.green.progress .bar{background-color:#A1CF64}.ui.red.progress .bar{background-color:#EF4D6D}.ui.purple.progress .bar{background-color:#564F8A}.ui.teal.progress .bar{background-color:#00B5AD}.ui.progress.striped .bar{-webkit-background-size:30px 30px;-moz-background-size:30px 30px;background-size:30px 30px;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(135deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.ui.progress.active.striped .bar{-webkit-animation:progress-striped 3s linear infinite;-moz-animation:progress-striped 3s linear infinite;animation:progress-striped 3s linear infinite}@-webkit-keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}}@-moz-keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}}@keyframes progress-striped{0%{background-position:0 0}100%{background-position:60px 0}} \ No newline at end of file diff --git a/build/minified/modules/behavior/form.js b/build/minified/modules/behavior/form.js index 72b7e5447..5997acd85 100644 --- a/build/minified/modules/behavior/form.js +++ b/build/minified/modules/behavior/form.js @@ -443,18 +443,17 @@ $.fn.form = function(fields, parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/minified/modules/behavior/form.min.js b/build/minified/modules/behavior/form.min.js index a12db0bb6..f0c1ef560 100644 --- a/build/minified/modules/behavior/form.min.js +++ b/build/minified/modules/behavior/form.min.js @@ -1 +1 @@ -(function(e,t,n,i){e.fn.form=function(t,n){var a,o=e(this),r=e.extend(!0,{},e.fn.form.settings,n),s=e.extend({},e.fn.form.settings.defaults,t),l="."+r.namespace,c=("module-"+r.namespace,o.selector||""),u=(new Date).getTime(),d=[],f=arguments[0],m="string"==typeof f,p=[].slice.call(arguments,1);return o.each(function(){var t,n=e(this),g=e(this).find(r.selector.field),h=e(this).find(r.selector.group),v=e(this).find(r.selector.message),y=(e(this).find(r.selector.prompt),e(this).find(r.selector.submit)),b=[],x=this,w=n.data("module-"+r.namespace),C=r.namespace,z=r.metadata,k=r.className,T=r.error;t={initialize:function(){t.verbose("Initializing form validation",n,s,r),r.keyboardShortcuts&&g.on("keydown"+l,t.event.field.keydown),n.on("submit"+l,t.validate.form),g.on("blur"+l,t.event.field.change),y.on("click"+l,t.submit)},destroy:function(){n.off(C)},refresh:function(){g=n.find(r.selector.field)},submit:function(){t.verbose("Submitting form",n),n.submit()},event:{field:{keydown:function(n){var a=e(this),o=n.which,s={enter:13,escape:27};return o==s.escape&&(t.verbose("Escape key pressed blurring field"),a.blur()),o==s.enter&&a.is(r.selector.input)?(t.debug("Enter key pressed, submitting form"),y.addClass(k.down),a.one("keyup"+l,t.event.field.keyup),n.preventDefault(),!1):i},keyup:function(){t.verbose("Doing keyboard shortcut form submit"),y.removeClass(k.down),t.submit()},change:function(){var n=e(this),i=n.closest(h);console.log("here",r.on),i.hasClass(k.error)?(t.debug("Revalidating field",n,t.get.validation(n)),t.validate.field(t.get.validation(n))):"change"==r.on&&t.validate.field(t.get.validation(n))}}},get:{field:function(n){return t.verbose("Finding field with identifier",n),g.filter("#"+n).size()>0?g.filter("#"+n):g.filter('[name="'+n+'"]').size()>0?g.filter('[name="'+n+'"]'):g.filter("[data-"+z.validate+'="'+n+'"]').size()>0?g.filter("[data-"+z.validate+'="'+n+'"]'):e("")},validation:function(n){var i;return e.each(s,function(e,a){t.get.field(a.identifier).get(0)==n.get(0)&&(i=a)}),i||!1}},has:{field:function(e){return t.verbose("Checking for existence of a field with identifier",e),g.filter("#"+e).size()>0?!0:g.filter('[name="'+e+'"]').size()>0?!0:g.filter("[data-"+z.validate+'="'+e+'"]').size()>0?!0:!1}},add:{prompt:function(e,n){var i=t.get.field(e.identifier),a=i.closest(h),o=a.find(r.selector.prompt),s=0!==o.size();t.verbose("Adding inline validation prompt"),a.addClass(k.error),r.inlineError&&(s||(o=r.templates.prompt(n),o.appendTo(a).hide()),o.html(n[0]),o.is(":not(:visible)")&&o.fadeIn(r.animateSpeed))},errors:function(e){t.debug("Adding form error messages",e),v.html(r.templates.error(e))}},remove:{prompt:function(e){var n=t.get.field(e.identifier),i=n.closest(h),a=i.find(r.selector.prompt);i.removeClass(k.error),r.inlineError&&a.hide()}},validate:{form:function(i){var a=!0;b=[],e.each(s,function(e,n){t.validate.field(n)||(a=!1)}),a?(n.removeClass(k.error).addClass(k.success),e.proxy(r.onSuccess,this)(i)):(n.addClass(k.error),r.inlineError||t.add.errors(b),e.proxy(r.onFailure,this)(b))},field:function(n){var a=t.get.field(n.identifier),o=!0,s=[];return n.rules!==i&&e.each(n.rules,function(e,i){t.has.field(n.identifier)&&!t.validate.rule(n,i)&&(t.debug("Field is invalid",n.identifier,i.type),s.push(i.prompt),o=!1)}),o?(t.remove.prompt(n,s),e.proxy(r.onValid,a)(),!0):(b=b.concat(s),t.add.prompt(n,s),e.proxy(r.onInvalid,a)(s),!1)},rule:function(a,o){var s,l,c=t.get.field(a.identifier),u=o.type,d=c.val(),f=/\[(.*?)\]/i,m=f.exec(u),p=!0;return m!==i&&null!=m?(s=m[1],l=u.replace(m[0],""),p=e.proxy(r.rules[l],n)(d,s)):p="checked"==u?c.filter(":checked").size()>0:r.rules[u](d),p}},setting:function(t,n){return n===i?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,i)},internal:function(n,a){return a===i?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=a,i)},debug:function(){r.debug&&(r.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(r.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":")},performance:{log:function(e){var n,i,a;r.performance&&(n=(new Date).getTime(),a=u||n,i=n-a,u=n,d.push({Element:x,Name:e[0],Arguments:e[1]||"None","Execution Time":i}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+c+"("+o.size()+" elements)",0);c&&(t+=" Performance ("+c+")"),(console.group!==i||console.table!==i)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,a,o){var r,s;return a=a||p,o=x||o,"string"==typeof n&&w!==i&&(n=n.split("."),r=n.length-1,e.each(n,function(n,a){return e.isPlainObject(w[a])&&n!=r?(w=w[a],!0):w[a]!==i?(s=w[a],!0):(t.error(T.method),!1)})),e.isFunction(s)?(t.verbose("Executing invoked function",s),s.apply(o,a)):s||!1}},m?(w===i&&t.initialize(),a=t.invoke(f)):(w!==i&&t.destroy(),t.initialize())}),a?a:this},e.fn.form.settings={moduleName:"Form",debug:!0,verbose:!0,performance:!1,namespace:"validate",keyboardShortcuts:!0,on:"submit",animateSpeed:150,inlineError:!1,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{validate:"validate"},selector:{message:".error.message",field:"input, textarea, select",group:".field",input:"input",prompt:".prompt",submit:".submit"},className:{error:"error",success:"success",down:"down",label:"ui label prompt"},error:{method:"The method you called is not defined."},templates:{error:function(t){var n='",e(n)},prompt:function(t){return e("
").addClass("ui red pointing prompt label").html(t[0])}},rules:{empty:function(e){return!(e===i||""===e)},email:function(e){var t=RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");return t.test(e)},length:function(e,t){return e!==i?e.length>=t:!1},not:function(e,t){return e!=t},is:function(e,t){return e==t},maxLength:function(e,t){return e!==i?t>=e.length:!1},match:function(t,n){var a,o=e(this);return o.find("#"+n).size()>0?a=o.find("#"+n).val():o.find("[name="+n+"]").size()>0?a=o.find("[name="+n+"]").val():o.find('[data-validate="'+n+'"]').size()>0&&(a=o.find('[data-validate="'+n+'"]').val()),a!==i?""+t==""+a:!1},url:function(e){var t=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return t.test(e)}}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,i){e.fn.form=function(t,n){var a,o=e(this),r=e.extend(!0,{},e.fn.form.settings,n),s=e.extend({},e.fn.form.settings.defaults,t),l="."+r.namespace,c=("module-"+r.namespace,o.selector||""),u=(new Date).getTime(),d=[],f=arguments[0],m="string"==typeof f,p=[].slice.call(arguments,1);return o.each(function(){var t,n=e(this),g=e(this).find(r.selector.field),h=e(this).find(r.selector.group),v=e(this).find(r.selector.message),y=(e(this).find(r.selector.prompt),e(this).find(r.selector.submit)),b=[],x=this,w=n.data("module-"+r.namespace),C=r.namespace,z=r.metadata,k=r.className,T=r.error;t={initialize:function(){t.verbose("Initializing form validation",n,s,r),r.keyboardShortcuts&&g.on("keydown"+l,t.event.field.keydown),n.on("submit"+l,t.validate.form),g.on("blur"+l,t.event.field.change),y.on("click"+l,t.submit)},destroy:function(){n.off(C)},refresh:function(){g=n.find(r.selector.field)},submit:function(){t.verbose("Submitting form",n),n.submit()},event:{field:{keydown:function(n){var a=e(this),o=n.which,s={enter:13,escape:27};return o==s.escape&&(t.verbose("Escape key pressed blurring field"),a.blur()),o==s.enter&&a.is(r.selector.input)?(t.debug("Enter key pressed, submitting form"),y.addClass(k.down),a.one("keyup"+l,t.event.field.keyup),n.preventDefault(),!1):i},keyup:function(){t.verbose("Doing keyboard shortcut form submit"),y.removeClass(k.down),t.submit()},change:function(){var n=e(this),i=n.closest(h);console.log("here",r.on),i.hasClass(k.error)?(t.debug("Revalidating field",n,t.get.validation(n)),t.validate.field(t.get.validation(n))):"change"==r.on&&t.validate.field(t.get.validation(n))}}},get:{field:function(n){return t.verbose("Finding field with identifier",n),g.filter("#"+n).size()>0?g.filter("#"+n):g.filter('[name="'+n+'"]').size()>0?g.filter('[name="'+n+'"]'):g.filter("[data-"+z.validate+'="'+n+'"]').size()>0?g.filter("[data-"+z.validate+'="'+n+'"]'):e("")},validation:function(n){var i;return e.each(s,function(e,a){t.get.field(a.identifier).get(0)==n.get(0)&&(i=a)}),i||!1}},has:{field:function(e){return t.verbose("Checking for existence of a field with identifier",e),g.filter("#"+e).size()>0?!0:g.filter('[name="'+e+'"]').size()>0?!0:g.filter("[data-"+z.validate+'="'+e+'"]').size()>0?!0:!1}},add:{prompt:function(e,n){var i=t.get.field(e.identifier),a=i.closest(h),o=a.find(r.selector.prompt),s=0!==o.size();t.verbose("Adding inline validation prompt"),a.addClass(k.error),r.inlineError&&(s||(o=r.templates.prompt(n),o.appendTo(a).hide()),o.html(n[0]),o.is(":not(:visible)")&&o.fadeIn(r.animateSpeed))},errors:function(e){t.debug("Adding form error messages",e),v.html(r.templates.error(e))}},remove:{prompt:function(e){var n=t.get.field(e.identifier),i=n.closest(h),a=i.find(r.selector.prompt);i.removeClass(k.error),r.inlineError&&a.hide()}},validate:{form:function(i){var a=!0;b=[],e.each(s,function(e,n){t.validate.field(n)||(a=!1)}),a?(n.removeClass(k.error).addClass(k.success),e.proxy(r.onSuccess,this)(i)):(n.addClass(k.error),r.inlineError||t.add.errors(b),e.proxy(r.onFailure,this)(b))},field:function(n){var a=t.get.field(n.identifier),o=!0,s=[];return n.rules!==i&&e.each(n.rules,function(e,i){t.has.field(n.identifier)&&!t.validate.rule(n,i)&&(t.debug("Field is invalid",n.identifier,i.type),s.push(i.prompt),o=!1)}),o?(t.remove.prompt(n,s),e.proxy(r.onValid,a)(),!0):(b=b.concat(s),t.add.prompt(n,s),e.proxy(r.onInvalid,a)(s),!1)},rule:function(a,o){var s,l,c=t.get.field(a.identifier),u=o.type,d=c.val(),f=/\[(.*?)\]/i,m=f.exec(u),p=!0;return m!==i&&null!=m?(s=m[1],l=u.replace(m[0],""),p=e.proxy(r.rules[l],n)(d,s)):p="checked"==u?c.filter(":checked").size()>0:r.rules[u](d),p}},setting:function(t,n){return n===i?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,i)},internal:function(n,a){return a===i?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=a,i)},debug:function(){r.debug&&(r.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(r.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":")},performance:{log:function(e){var n,i,a;r.performance&&(n=(new Date).getTime(),a=u||n,i=n-a,u=n,d.push({Element:x,Name:e[0],Arguments:e[1]||"None","Execution Time":i}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+c+"("+o.size()+" elements)",0);c&&(t+=" Performance ("+c+")"),(console.group!==i||console.table!==i)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,a,o){var r,s;return a=a||p,o=x||o,"string"==typeof n&&w!==i&&(n=n.split("."),r=n.length-1,e.each(n,function(n,a){e.isPlainObject(w[a])&&n!=r?w=w[a]:w[a]!==i?s=w[a]:t.error(T.method)})),e.isFunction(s)?(w.verbose("Executing invoked function",s),s.apply(o,a)):s||!1}},m?(w===i&&t.initialize(),a=t.invoke(f)):(w!==i&&t.destroy(),t.initialize())}),a?a:this},e.fn.form.settings={moduleName:"Form",debug:!0,verbose:!0,performance:!1,namespace:"validate",keyboardShortcuts:!0,on:"submit",animateSpeed:150,inlineError:!1,onValid:function(){},onInvalid:function(){},onSuccess:function(){return!0},onFailure:function(){return!1},metadata:{validate:"validate"},selector:{message:".error.message",field:"input, textarea, select",group:".field",input:"input",prompt:".prompt",submit:".submit"},className:{error:"error",success:"success",down:"down",label:"ui label prompt"},error:{method:"The method you called is not defined."},templates:{error:function(t){var n='",e(n)},prompt:function(t){return e("
").addClass("ui red pointing prompt label").html(t[0])}},rules:{empty:function(e){return!(e===i||""===e)},email:function(e){var t=RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");return t.test(e)},length:function(e,t){return e!==i?e.length>=t:!1},not:function(e,t){return e!=t},is:function(e,t){return e==t},maxLength:function(e,t){return e!==i?t>=e.length:!1},match:function(t,n){var a,o=e(this);return o.find("#"+n).size()>0?a=o.find("#"+n).val():o.find("[name="+n+"]").size()>0?a=o.find("[name="+n+"]").val():o.find('[data-validate="'+n+'"]').size()>0&&(a=o.find('[data-validate="'+n+'"]').val()),a!==i?""+t==""+a:!1},url:function(e){var t=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return t.test(e)}}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/carousel.js b/build/minified/modules/carousel.js index e95867e0f..6f3eb8c66 100644 --- a/build/minified/modules/carousel.js +++ b/build/minified/modules/carousel.js @@ -264,7 +264,7 @@ $.fn.carousel = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/minified/modules/carousel.min.js b/build/minified/modules/carousel.min.js index 7cd2fe4d5..fe2f4f1a5 100644 --- a/build/minified/modules/carousel.min.js +++ b/build/minified/modules/carousel.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.carousel=function(t){var n,i=e(this),a=e.extend(!0,{},e.fn.carousel.settings,t),r=("."+a.namespace,"module-"+a.namespace,i.selector||""),s=(new Date).getTime(),c=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1);return i.each(function(){var t,f=e(this),m=(e(a.selector.arrows),e(a.selector.leftArrow)),g=e(a.selector.rightArrow),p=e(a.selector.content),v=(e(a.selector.navigation),e(a.selector.navItem)),h=(f.selector||"",this),b=f.data("module-"+a.namespace),x=a.className,y=a.namespace,w=a.errors;t={initialize:function(){t.openingAnimation(),t.marquee.autoAdvance(),m.on("click",t.marquee.left),g.on("click",t.marquee.right),v.on("click",t.marquee.change)},destroy:function(){t.verbose("Destroying previous module for",f),f.off(y)},left:function(){var e=p.filter("."+x.active),t=p.index(e),n=p.size(),o=-1!=t-1?t-1:n-1;v.eq(o).trigger("click")},right:function(){var e=p.filter("."+x.active),t=p.index(e),n=p.size(),o=t+1!=n?t+1:0;v.eq(o).trigger("click")},change:function(){var n=e(this),o=v.index(n),i=p.eq(o);t.marquee.autoAdvance(),n.addClass("active").siblings().removeClass("active"),i.addClass("active animated fadeIn").siblings("."+x.active).removeClass("animated fadeIn scaleIn").animate({opacity:0},500,function(){e(this).removeClass("active").removeAttr("style")})},autoAdvance:function(){clearInterval(t.timer),t.timer=setInterval(t.marquee.right,a.duration)},setting:function(n,i){return i===o?a[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,i),e.extend(!0,a,n)):(t.verbose("Modifying setting",n,i),a[n]=i),o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,i),e.extend(!0,t,n)):(t.verbose("Changing internal method to",i),t[n]=i),o)},debug:function(){a.debug&&(a.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},verbose:function(){a.verbose&&a.debug&&(a.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,a.moduleName+":")},performance:{log:function(e){var n,o,i;a.performance&&(n=(new Date).getTime(),i=s||n,o=n-i,s=n,c.push({Element:h,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=a.moduleName,n=(a.moduleName+": "+r+"("+i.size()+" elements)",0);r&&(t+=" Performance ("+r+")"),(console.group!==o||console.table!==o)&&c.length>0&&(console.groupCollapsed(t),console.table?(e.each(c,function(e,t){n+=t["Execution Time"]}),console.table(c)):e.each(c,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],s=!1)}},invoke:function(n,i,a){var r,s;return i=i||d,a=h||a,"string"==typeof n&&b!==o&&(n=n.split("."),r=n.length-1,e.each(n,function(n,i){return e.isPlainObject(b[i])&&n!=r?(b=b[i],!0):b[i]!==o?(s=b[i],!0):(t.error(w.method),!1)})),e.isFunction(s)?(t.verbose("Executing invoked function",s),s.apply(a,i)):s||!1}},u?(b===o&&t.initialize(),n=t.invoke(l)):(b!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.carousel.settings={moduleName:"Carousel Module",namespace:"carousel",verbose:!0,debug:!0,performance:!0,duration:5e3,errors:{method:"The method you called is not defined."},selector:{arrows:".arrow",leftArrow:".left.arrow",rightArrow:".right.arrow",content:".content",navigation:".navigation",navItem:".navigation .icon"},className:{active:"active"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.carousel=function(t){var n,i=e(this),a=e.extend(!0,{},e.fn.carousel.settings,t),r=("."+a.namespace,"module-"+a.namespace,i.selector||""),s=(new Date).getTime(),c=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1);return i.each(function(){var t,f=e(this),m=(e(a.selector.arrows),e(a.selector.leftArrow)),g=e(a.selector.rightArrow),p=e(a.selector.content),v=(e(a.selector.navigation),e(a.selector.navItem)),h=(f.selector||"",this),b=f.data("module-"+a.namespace),x=a.className,y=a.namespace,w=a.errors;t={initialize:function(){t.openingAnimation(),t.marquee.autoAdvance(),m.on("click",t.marquee.left),g.on("click",t.marquee.right),v.on("click",t.marquee.change)},destroy:function(){t.verbose("Destroying previous module for",f),f.off(y)},left:function(){var e=p.filter("."+x.active),t=p.index(e),n=p.size(),o=-1!=t-1?t-1:n-1;v.eq(o).trigger("click")},right:function(){var e=p.filter("."+x.active),t=p.index(e),n=p.size(),o=t+1!=n?t+1:0;v.eq(o).trigger("click")},change:function(){var n=e(this),o=v.index(n),i=p.eq(o);t.marquee.autoAdvance(),n.addClass("active").siblings().removeClass("active"),i.addClass("active animated fadeIn").siblings("."+x.active).removeClass("animated fadeIn scaleIn").animate({opacity:0},500,function(){e(this).removeClass("active").removeAttr("style")})},autoAdvance:function(){clearInterval(t.timer),t.timer=setInterval(t.marquee.right,a.duration)},setting:function(n,i){return i===o?a[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,i),e.extend(!0,a,n)):(t.verbose("Modifying setting",n,i),a[n]=i),o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,i),e.extend(!0,t,n)):(t.verbose("Changing internal method to",i),t[n]=i),o)},debug:function(){a.debug&&(a.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},verbose:function(){a.verbose&&a.debug&&(a.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,a.moduleName+":")},performance:{log:function(e){var n,o,i;a.performance&&(n=(new Date).getTime(),i=s||n,o=n-i,s=n,c.push({Element:h,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=a.moduleName,n=(a.moduleName+": "+r+"("+i.size()+" elements)",0);r&&(t+=" Performance ("+r+")"),(console.group!==o||console.table!==o)&&c.length>0&&(console.groupCollapsed(t),console.table?(e.each(c,function(e,t){n+=t["Execution Time"]}),console.table(c)):e.each(c,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],s=!1)}},invoke:function(n,i,a){var r,s;return i=i||d,a=h||a,"string"==typeof n&&b!==o&&(n=n.split("."),r=n.length-1,e.each(n,function(n,i){return e.isPlainObject(b[i])&&n!=r?(b=b[i],!0):b[i]!==o?(s=b[i],!0):(t.error(w.method),!1)})),e.isFunction(s)?(b.verbose("Executing invoked function",s),s.apply(a,i)):s||!1}},u?(b===o&&t.initialize(),n=t.invoke(l)):(b!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.carousel.settings={moduleName:"Carousel Module",namespace:"carousel",verbose:!0,debug:!0,performance:!0,duration:5e3,errors:{method:"The method you called is not defined."},selector:{arrows:".arrow",leftArrow:".left.arrow",rightArrow:".right.arrow",content:".content",navigation:".navigation",navItem:".navigation .icon"},className:{active:"active"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/checkbox.js b/build/minified/modules/checkbox.js index 3895f5168..fafb03065 100644 --- a/build/minified/modules/checkbox.js +++ b/build/minified/modules/checkbox.js @@ -253,7 +253,7 @@ $.fn.checkbox = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/minified/modules/checkbox.min.js b/build/minified/modules/checkbox.min.js index fe113ad1e..7be03ac51 100644 --- a/build/minified/modules/checkbox.min.js +++ b/build/minified/modules/checkbox.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.checkbox=function(t){var n,a=e(this),i=e.extend(!0,{},e.fn.checkbox.settings,t),s="."+i.namespace,r="module-"+i.namespace,c=a.selector||"",l=(new Date).getTime(),u=[],d=arguments[0],f="string"==typeof d,m=[].slice.call(arguments,1);return a.each(function(){var t,p=e(this),g=e(this).find(i.selector.input),h=p.selector||"",v=this,b=p.data("module-"+i.namespace),y=i.className,x=i.namespace,C=i.errors;t={initialize:function(){i.context&&""!==h?(t.verbose("Initializing checkbox with delegated events",p),e(v,i.context).on(h,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",p),p.on("click"+s,t.toggle).data(r,t))},destroy:function(){t.verbose("Destroying previous module for",p),p.off(x)},is:{radio:function(){return p.hasClass(y.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},enable:function(){t.debug("Enabling checkbox"),p.addClass(y.active),g.prop("checked",!0),e.proxy(i.onChange,g.get())(),e.proxy(i.onEnable,g.get())()},disable:function(){t.debug("Disabling checkbox"),p.removeClass(y.active),g.prop("checked",!1),e.proxy(i.onChange,g.get())(),e.proxy(i.onDisable,g.get())()},toggle:function(){t.verbose("Toggling checkbox state"),g.prop("checked")!==o&&g.prop("checked")?t.can.disable()&&t.disable():t.enable()},setting:function(n,a){return a===o?i[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,a),e.extend(!0,i,n)):(t.verbose("Modifying setting",n,a),i[n]=a),o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,a),e.extend(!0,t,n)):(t.verbose("Changing internal method to",a),t[n]=a),o)},debug:function(){i.debug&&(i.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},verbose:function(){i.verbose&&i.debug&&(i.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,i.moduleName+":")},performance:{log:function(e){var n,o,a;i.performance&&(n=(new Date).getTime(),a=l||n,o=n-a,l=n,u.push({Element:v,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=i.moduleName,n=(i.moduleName+": "+c+"("+a.size()+" elements)",0);c&&(t+=" Performance ("+c+")"),(console.group!==o||console.table!==o)&&u.length>0&&(console.groupCollapsed(t),console.table?(e.each(u,function(e,t){n+=t["Execution Time"]}),console.table(u)):e.each(u,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),u=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||m,i=v||i,"string"==typeof n&&b!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(b[a])&&n!=s?(b=b[a],!0):b[a]!==o?(r=b[a],!0):(t.error(C.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},f?(b===o&&t.initialize(),n=t.invoke(d)):(b!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.checkbox.settings={moduleName:"Checkbox Module",namespace:"checkbox",verbose:!0,debug:!0,performance:!0,context:!1,required:"auto",onChange:function(){},onEnable:function(){},onDisable:function(){},errors:{method:"The method you called is not defined."},selector:{input:"input"},className:{active:"active",radio:"radio"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.checkbox=function(t){var n,a=e(this),i=e.extend(!0,{},e.fn.checkbox.settings,t),s="."+i.namespace,r="module-"+i.namespace,c=a.selector||"",l=(new Date).getTime(),u=[],d=arguments[0],f="string"==typeof d,m=[].slice.call(arguments,1);return a.each(function(){var t,p=e(this),g=e(this).find(i.selector.input),h=p.selector||"",v=this,b=p.data("module-"+i.namespace),y=i.className,x=i.namespace,C=i.errors;t={initialize:function(){i.context&&""!==h?(t.verbose("Initializing checkbox with delegated events",p),e(v,i.context).on(h,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",p),p.on("click"+s,t.toggle).data(r,t))},destroy:function(){t.verbose("Destroying previous module for",p),p.off(x)},is:{radio:function(){return p.hasClass(y.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},enable:function(){t.debug("Enabling checkbox"),p.addClass(y.active),g.prop("checked",!0),e.proxy(i.onChange,g.get())(),e.proxy(i.onEnable,g.get())()},disable:function(){t.debug("Disabling checkbox"),p.removeClass(y.active),g.prop("checked",!1),e.proxy(i.onChange,g.get())(),e.proxy(i.onDisable,g.get())()},toggle:function(){t.verbose("Toggling checkbox state"),g.prop("checked")!==o&&g.prop("checked")?t.can.disable()&&t.disable():t.enable()},setting:function(n,a){return a===o?i[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,a),e.extend(!0,i,n)):(t.verbose("Modifying setting",n,a),i[n]=a),o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,a),e.extend(!0,t,n)):(t.verbose("Changing internal method to",a),t[n]=a),o)},debug:function(){i.debug&&(i.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},verbose:function(){i.verbose&&i.debug&&(i.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,i.moduleName+":")},performance:{log:function(e){var n,o,a;i.performance&&(n=(new Date).getTime(),a=l||n,o=n-a,l=n,u.push({Element:v,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=i.moduleName,n=(i.moduleName+": "+c+"("+a.size()+" elements)",0);c&&(t+=" Performance ("+c+")"),(console.group!==o||console.table!==o)&&u.length>0&&(console.groupCollapsed(t),console.table?(e.each(u,function(e,t){n+=t["Execution Time"]}),console.table(u)):e.each(u,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),u=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||m,i=v||i,"string"==typeof n&&b!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(b[a])&&n!=s?(b=b[a],!0):b[a]!==o?(r=b[a],!0):(t.error(C.method),!1)})),e.isFunction(r)?(b.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},f?(b===o&&t.initialize(),n=t.invoke(d)):(b!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.checkbox.settings={moduleName:"Checkbox Module",namespace:"checkbox",verbose:!0,debug:!0,performance:!0,context:!1,required:"auto",onChange:function(){},onEnable:function(){},onDisable:function(){},errors:{method:"The method you called is not defined."},selector:{input:"input"},className:{active:"active",radio:"radio"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/dimmer.js b/build/minified/modules/dimmer.js index 4adf71fb7..9f9539dd1 100644 --- a/build/minified/modules/dimmer.js +++ b/build/minified/modules/dimmer.js @@ -12,53 +12,84 @@ $.fn.dimmer = function(parameters) { var $allModules = $(this), - $document = $(document), - settings = $.extend(true, {}, $.fn.dimmer.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dimmer.settings, parameters) + : $.fn.dimmer.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), - selector = $allModules.selector || '', time = new Date().getTime(), performance = [], - namespace = settings.namespace, - className = settings.className, - errors = settings.errors, - query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - invokedResponse, - allModules + + selector = settings.selector, + namespace = settings.namespace, + className = settings.className, + error = settings.error, + + invokedResponse ; $allModules .each(function() { var - $module = $(this), - $dimmer = $module.children(selector.dimmer), + $module = $(this), + $dimmer = $module.children(selector.dimmer).first(), + + animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd', - element = this, - instance = $module.data('module-' + namespace), + element = this, + instance = $dimmer.data('module-' + namespace), module ; module = { initialize: function() { - if( $module.is(settings.selector.dimmer) ) { + if( module.is.dimmer() ) { $dimmer = $module; + $module = $dimmer.parent(); + module.debug('Module initialized as dimmer', $dimmer); + } + else if( module.is.pageDimmer() ) { + $dimmer = $module; + $module = $('body'); + module.debug('Initializing page dimmer', $dimmer); } else { - if($dimmer.size() === 0) { - module.create(); + if( module.has.dimmer() ) { + $dimmer = $module.find(selector.dimmer); + module.debug('Module initialized with found dimmer', $dimmer); } - $dimmer = $module.find(selector.dimmer); + else { + $dimmer = settings.template.dimmer(); + $dimmer + .appendTo($module) + ; + module.debug('Module initialized with created dimmer', $dimmer); + } + } + if(settings.closable) { + $dimmer + .on('click', module.event.click) + ; } - module.debug('Module initialized with dimmer', $dimmer); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; + $dimmer + .data('module-' + namespace, instance) + ; }, destroy: function() { @@ -68,28 +99,63 @@ $.fn.dimmer = function(parameters) { ; }, + event: { + + click: function(event) { + module.verbose('Determining if event occured on dimmer', event); + if( event.target == element ) { + module.hide(); + } + } + + }, + animate: { show: function() { + module.set.dimmed(); if(settings.animation.show == 'css') { + module.verbose('Showing dimmer animation with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function() { + $dimmer.removeClass(className.show); + module.set.active(); + }) + .addClass(className.show) ; } else if(settings.animation.show == 'fade') { + module.verbose('Showing dimmer animation with javascript'); $dimmer - .fadeTo(settings.duration, settings.opacity) + .stop() + .css({ + opacity : 0, + width : '100%', + height : '100%' + }) + .fadeTo(settings.duration, 1, module.set.active) ; } }, hide: function() { - if(settings.animation.show == 'css') { + module.remove.dimmed(); + if(settings.animation.hide == 'css') { + module.verbose('Hiding dimmer with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function(){ + module.remove.active(); + $dimmer.removeClass(className.hide); + }) + .addClass(className.hide) ; } - else if(settings.animation.show == 'fade') { + else if(settings.animation.hide == 'fade') { + module.verbose('Hiding dimmer with javascript'); $dimmer - .fadeOut(settings.duration) + .stop() + .fadeOut(settings.duration, function() { + $dimmer.removeAttr('style'); + module.remove.active(); + }) ; } else if( $.isFunction(settings.animation.hide) ) { @@ -98,18 +164,34 @@ $.fn.dimmer = function(parameters) { } }, + has: { + dimmer: function() { + return ( $module.children(selector.dimmer).size() > 0 ); + } + }, + is: { + animating: function() { + return ( $dimmer.hasClass(className.show) || $dimmer.hasClass(className.hide) || $dimmer.is(':animated') ); + }, + dimmer: function() { + return $module.is(selector.dimmer); + }, + + dimmable: function() { + return $module.is(selector.dimmable); + }, enabled: function() { return !$module.hasClass(className.disabled); }, disabled: function() { return $module.hasClass(className.disabled); }, - visible: function() { - return $dimmer.is(':visible'); + active: function() { + return $dimmer.hasClass(className.active); }, - hidden: function() { - return $dimmer.is(':not(:visible)'); + pageDimmer: function() { + return $dimmer.is(selector.pageDimmer); } }, @@ -119,21 +201,51 @@ $.fn.dimmer = function(parameters) { } }, + set: { + active: function() { + $dimmer.addClass(className.active); + }, + dimmed: function() { + $module.addClass(className.dimmed); + }, + disabled: function() { + $dimmer.addClass(className.disabled); + } + }, + + remove: { + active: function() { + $dimmer.removeClass(className.active); + }, + dimmed: function() { + $module.removeClass(className.dimmed); + }, + disabled: function() { + $dimmer.removeClass(className.disabled); + } + }, + show: function() { module.debug('Showing dimmer', $dimmer); - if( !module.is.visible() && module.is.enabled() ) { + if( !module.is.active() && module.is.enabled() ) { module.animate.show(); - $.proxy(settings.onShow, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onShow, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is already shown or disabled'); } }, hide: function() { - if( !module.is.hidden() ) { + if( module.is.active() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(); - $.proxy(settings.onHide, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onHide, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is not visible'); } }, @@ -146,7 +258,7 @@ $.fn.dimmer = function(parameters) { module.hide(); } }, - + setting: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { @@ -211,41 +323,39 @@ $.fn.dimmer = function(parameters) { performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -261,18 +371,17 @@ $.fn.dimmer = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(errors.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -293,6 +402,7 @@ $.fn.dimmer = function(parameters) { } }) ; + return (invokedResponse) ? invokedResponse : this @@ -301,37 +411,48 @@ $.fn.dimmer = function(parameters) { $.fn.dimmer.settings = { - moduleName : 'Dimmer Module', + moduleName : 'Dimmer', namespace : 'dimmer', verbose : true, debug : true, - performance : false, + performance : true, animation : { - show: 'css', - hide: 'css' + show: 'fade', + hide: 'fade' }, + closable : true, duration : 500, - opacity : 0.85, onChange : function(){}, onShow : function(){}, onHide : function(){}, - errors : { + error : { method : 'The method you called is not defined.' }, selector: { - dimmer : '.ui.dimmer' + dimmable : '.ui.dimmable', + dimmer : '.ui.dimmer', + pageDimmer : '.ui.page.dimmer' + }, + + template: { + dimmer: function() { + return $('
').attr('class', 'ui dimmer'); + } }, className : { - dimmed : 'dimmed', - active : 'active', - disabled : 'disabled' + active : 'active', + dimmed : 'dimmed', + disabled : 'disabled', + animating : 'animating', + hide : 'hide', + show : 'show' } }; diff --git a/build/minified/modules/dimmer.min.css b/build/minified/modules/dimmer.min.css index 1a1d96e0b..ff50cb40d 100644 --- a/build/minified/modules/dimmer.min.css +++ b/build/minified/modules/dimmer.min.css @@ -1 +1 @@ -.ui.dimmer{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;opacity:0;line-height:1;-webkit-transition:background-color .5s ease;-moz-transition:background-color .5s ease;-o-transition:background-color .5s ease;-ms-transition:background-color .5s ease;transition:background-color .5s ease;z-index:100}body>.ui.dimmer{position:fixed}.ui.dimmer.active{opacity:.85;display:block}.ui.disabled.dimmer{display:none!important}.ui.page.dimmer{position:fixed}.ui.inverted.dimmer{background-color:#FFF}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;height:0;width:0;background-color:rgba(0,0,0,0)}.dimmed>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85)}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)} \ No newline at end of file +.ui.dimmable{position:relative}.ui.dimmer{position:absolute;top:0!important;left:0!important;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;-o-animation-fill-mode:forwards;-ms-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-transition:background-color .5s ease;-moz-transition:background-color .5s ease;-o-transition:background-color .5s ease;-ms-transition:background-color .5s ease;transition:background-color .5s ease;z-index:100}body.dimmable>.ui.dimmer{position:fixed}.ui.segment>.ui.dimmer{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.ui.horizontal.segment>.ui.dimmer,.ui.vertical.segment>.ui.dimmer{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.ui.dimmable.dimmed :not(.dimmer){-webkit-filter:blur(10px) grayscale(0.7);-moz-filter:blur(10px) grayscale(0.7);filter:blur(10px) grayscale(0.7)}.ui.dimmable.dimmed>.ui.dimmer,.ui.dimmer.active{width:100%;height:100%;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;height:0;width:0;background-color:rgba(0,0,0,0)}.ui.dimmable.dimmed>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85)}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.ui.dimmable.dimmed>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.dimmer.show{width:100%;height:100%;-webkit-animation:dimmer-show .5s;-moz-animation:dimmer-show .5s;animation:dimmer-show .5s}@-webkit-keyframes dimmer-show{0%{opacity:0}100%{opacity:1}}@-moz-keyframes dimmer-show{0%{opacity:0}100%{opacity:1}}@keyframes dimmer-show{0%{opacity:0}100%{opacity:1}}.ui.dimmer.hide{-webkit-animation:dimmer-hide .5s;-moz-animation:dimmer-hide .5s;animation:dimmer-hide .5s}@-webkit-keyframes dimmer-hide{0%{opacity:1}99%{width:100%;height:100%;opacity:0}100%{opacity:0;height:0;width:0}}@-moz-keyframes dimmer-hide{0%{opacity:1}99%{width:100%;height:100%;opacity:0}100%{opacity:0;height:0;width:0}}@keyframes dimmer-hide{0%{opacity:1}99%{width:100%;height:100%;opacity:0}100%{opacity:0;height:0;width:0}} \ No newline at end of file diff --git a/build/minified/modules/dimmer.min.js b/build/minified/modules/dimmer.min.js index 854f507d2..061ac79f5 100644 --- a/build/minified/modules/dimmer.min.js +++ b/build/minified/modules/dimmer.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.dimmer=function(t){var i,a=e(this),s=(e(n),e.extend(!0,{},e.fn.dimmer.settings,t)),r=("."+s.namespace,"module-"+s.namespace,a.selector||""),c=a.selector||"",l=(new Date).getTime(),u=[],d=s.namespace,m=s.className,f=s.errors,p=arguments[0],g="string"==typeof p,h=[].slice.call(arguments,1);return a.each(function(){var t,n=e(this),v=n.children(c.dimmer),b=this,y=n.data("module-"+d);t={initialize:function(){n.is(s.selector.dimmer)?v=n:(0===v.size()&&t.create(),v=n.find(c.dimmer)),t.debug("Module initialized with dimmer",v)},destroy:function(){t.verbose("Destroying previous module for",n),n.off(d)},animate:{show:function(){"css"==s.animation.show?v.addClass(m.active):"fade"==s.animation.show&&v.fadeTo(s.duration,s.opacity)},hide:function(){"css"==s.animation.show?v.addClass(m.active):"fade"==s.animation.show?v.fadeOut(s.duration):e.isFunction(s.animation.hide)&&e.proxy(s.animation.hide,v)()}},is:{enabled:function(){return!n.hasClass(m.disabled)},disabled:function(){return n.hasClass(m.disabled)},visible:function(){return v.is(":visible")},hidden:function(){return v.is(":not(:visible)")}},can:{show:function(){return!v.hasClass(m.disabled)}},show:function(){t.debug("Showing dimmer",v),!t.is.visible()&&t.is.enabled()&&(t.animate.show(),e.proxy(s.onShow,n.get())(),e.proxy(s.onChange,n.get())())},hide:function(){t.is.hidden()||(t.debug("Hiding dimmer",v),t.animate.hide(),e.proxy(s.onHide,n.get())(),e.proxy(s.onChange,n.get())())},toggle:function(){t.verbose("Toggling dimmer visibility",v),t.is.hidden()?t.show():t.hide()},setting:function(t,n){return n===o?s[t]:(e.isPlainObject(t)?e.extend(!0,s,t):s[t]=n,o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=i,o)},debug:function(){s.debug&&(s.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},verbose:function(){s.verbose&&s.debug&&(s.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,s.moduleName+":")},performance:{log:function(e){var n,o,i;s.performance&&(n=(new Date).getTime(),i=l||n,o=n-i,l=n,u.push({Element:b,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=s.moduleName,n=(s.moduleName+": "+r+"("+a.size()+" elements)",0);r&&(t+=" Performance ("+r+")"),(console.group!==o||console.table!==o)&&u.length>0&&(console.groupCollapsed(t),console.table?(e.each(u,function(e,t){n+=t["Execution Time"]}),console.table(u)):e.each(u,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),u=[],l=!1)}},invoke:function(n,i,a){var s,r;return i=i||h,a=b||a,"string"==typeof n&&y!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,i){return e.isPlainObject(y[i])&&n!=s?(y=y[i],!0):y[i]!==o?(r=y[i],!0):(t.error(f.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(a,i)):r||!1}},g?(y===o&&t.initialize(),i=t.invoke(p)):(y===o&&t.destroy(),t.initialize())}),i?i:this},e.fn.dimmer.settings={moduleName:"Dimmer Module",namespace:"dimmer",verbose:!0,debug:!0,performance:!1,animation:{show:"css",hide:"css"},duration:500,opacity:.85,onChange:function(){},onShow:function(){},onHide:function(){},errors:{method:"The method you called is not defined."},selector:{dimmer:".ui.dimmer"},className:{dimmed:"dimmed",active:"active",disabled:"disabled"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.dimmer=function(t){var n,i=e(this),a=e.isPlainObject(t)?e.extend(!0,{},e.fn.dimmer.settings,t):e.fn.dimmer.settings,s=("."+a.namespace,"module-"+a.namespace,i.selector||""),r=(i.size(),(new Date).getTime()),c=[],l=arguments[0],u="string"==typeof l,d=[].slice.call(arguments,1),m=a.selector,f=a.namespace,g=a.className,p=a.error;return i.each(function(){var t,i=e(this),h=i.children(m.dimmer).first(),v="animationend msAnimationEnd oAnimationEnd webkitAnimationEnd",b=this,y=h.data("module-"+f);t={initialize:function(){t.is.dimmer()?(h=i,i=h.parent(),t.debug("Module initialized as dimmer",h)):t.is.pageDimmer()?(h=i,i=e("body"),t.debug("Initializing page dimmer",h)):t.has.dimmer()?(h=i.find(m.dimmer),t.debug("Module initialized with found dimmer",h)):(h=a.template.dimmer(),h.appendTo(i),t.debug("Module initialized with created dimmer",h)),a.closable&&h.on("click",t.event.click),t.instantiate()},instantiate:function(){t.verbose("Storing instance of module"),y=t,h.data("module-"+f,y)},destroy:function(){t.verbose("Destroying previous module for",i),i.off(f)},event:{click:function(e){t.verbose("Determining if event occured on dimmer",e),e.target==b&&t.hide()}},animate:{show:function(){t.set.dimmed(),"css"==a.animation.show?(t.verbose("Showing dimmer animation with css"),h.one(v,function(){h.removeClass(g.show),t.set.active()}).addClass(g.show)):"fade"==a.animation.show&&(t.verbose("Showing dimmer animation with javascript"),h.stop().css({opacity:0,width:"100%",height:"100%"}).fadeTo(a.duration,1,t.set.active))},hide:function(){t.remove.dimmed(),"css"==a.animation.hide?(t.verbose("Hiding dimmer with css"),h.one(v,function(){t.remove.active(),h.removeClass(g.hide)}).addClass(g.hide)):"fade"==a.animation.hide?(t.verbose("Hiding dimmer with javascript"),h.stop().fadeOut(a.duration,function(){h.removeAttr("style"),t.remove.active()})):e.isFunction(a.animation.hide)&&e.proxy(a.animation.hide,h)()}},has:{dimmer:function(){return i.children(m.dimmer).size()>0}},is:{animating:function(){return h.hasClass(g.show)||h.hasClass(g.hide)||h.is(":animated")},dimmer:function(){return i.is(m.dimmer)},dimmable:function(){return i.is(m.dimmable)},enabled:function(){return!i.hasClass(g.disabled)},disabled:function(){return i.hasClass(g.disabled)},active:function(){return h.hasClass(g.active)},pageDimmer:function(){return h.is(m.pageDimmer)}},can:{show:function(){return!h.hasClass(g.disabled)}},set:{active:function(){h.addClass(g.active)},dimmed:function(){i.addClass(g.dimmed)},disabled:function(){h.addClass(g.disabled)}},remove:{active:function(){h.removeClass(g.active)},dimmed:function(){i.removeClass(g.dimmed)},disabled:function(){h.removeClass(g.disabled)}},show:function(){t.debug("Showing dimmer",h),!t.is.active()&&t.is.enabled()?(t.animate.show(),e.proxy(a.onShow,b)(),e.proxy(a.onChange,b)()):t.debug("Dimmer is already shown or disabled")},hide:function(){t.is.active()?(t.debug("Hiding dimmer",h),t.animate.hide(),e.proxy(a.onHide,b)(),e.proxy(a.onChange,b)()):t.debug("Dimmer is not visible")},toggle:function(){t.verbose("Toggling dimmer visibility",h),t.is.hidden()?t.show():t.hide()},setting:function(t,n){return n===o?a[t]:(e.isPlainObject(t)?e.extend(!0,a,t):a[t]=n,o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=i,o)},debug:function(){a.debug&&(a.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},verbose:function(){a.verbose&&a.debug&&(a.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,a.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,a.moduleName+":")},performance:{log:function(e){var n,o,i;a.performance&&(n=(new Date).getTime(),i=r||n,o=n-i,r=n,c.push({Element:b,Name:e[0],Arguments:e[1]||"","Execution Time":o})),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100)},display:function(){var t=a.moduleName+":",n=0;r=!1,e.each(c,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",s&&(t+=" '"+s+"'"),(console.group!==o||console.table!==o)&&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(n,i,a){var s,r;return i=i||d,a=b||a,"string"==typeof n&&y!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,i){e.isPlainObject(y[i])&&n!=s?y=y[i]:y[i]!==o?r=y[i]:t.error(p.method)})),e.isFunction(r)?(y.verbose("Executing invoked function",r),r.apply(a,i)):r||!1}},u?(y===o&&t.initialize(),n=t.invoke(l)):(y===o&&t.destroy(),t.initialize())}),n?n:this},e.fn.dimmer.settings={moduleName:"Dimmer",namespace:"dimmer",verbose:!0,debug:!0,performance:!0,animation:{show:"fade",hide:"fade"},closable:!0,duration:500,onChange:function(){},onShow:function(){},onHide:function(){},error:{method:"The method you called is not defined."},selector:{dimmable:".ui.dimmable",dimmer:".ui.dimmer",pageDimmer:".ui.page.dimmer"},template:{dimmer:function(){return e("
").attr("class","ui dimmer")}},className:{active:"active",dimmed:"dimmed",disabled:"disabled",animating:"animating",hide:"hide",show:"show"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/dropdown.js b/build/minified/modules/dropdown.js index 6d99c4d5c..cb544e4ef 100644 --- a/build/minified/modules/dropdown.js +++ b/build/minified/modules/dropdown.js @@ -14,7 +14,9 @@ $.fn.dropdown = function(parameters) { $allModules = $(this), $document = $(document), - settings = $.extend(true, {}, $.fn.dropdown.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.fn.dropdown.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, @@ -506,7 +508,7 @@ $.fn.dropdown = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/minified/modules/dropdown.min.js b/build/minified/modules/dropdown.min.js index 2e2234dfa..8ad07e03b 100644 --- a/build/minified/modules/dropdown.min.js +++ b/build/minified/modules/dropdown.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.dropdown=function(t){var i,a=e(this),s=e(n),r=e.extend(!0,{},e.fn.dropdown.settings,t),c="."+r.namespace,l="module-"+r.namespace,u=(a.selector||"",(new Date).getTime()),d=[],m=arguments[0],f="string"==typeof m,g=[].slice.call(arguments,1);return a.each(function(){var t,p=e(this),h=e(this).find(r.selector.menu),v=e(this).find(r.selector.item),b=e(this).find(r.selector.text),y=e(this).find(r.selector.input),x="ontouchstart"in n.documentElement,w=p.selector||"",C=this,T=p.data("module-"+r.namespace),k=r.className,N=r.metadata,z=r.namespace,E=r.animation,P=r.errors;t={initialize:function(){t.verbose("Initializing dropdown with bound events",p),x?p.on("touchstart"+c,t.event.test.toggle):"click"==r.on?p.on("click"+c,t.event.test.toggle):"hover"==r.on?p.on("mouseenter"+c,t.show).on("mouseleave"+c,t.delayedHide):p.on(r.on+c,t.toggle),"form"==r.action&&t.set.selected(),v.on(t.get.selectEvent()+c,t.event.item.click),p.data(l,t)},destroy:function(){t.verbose("Destroying previous module for",p),p.off(z)},event:{stopPropagation:function(e){e.stopPropagation()},test:{toggle:function(e){t.intent.test(e,t.toggle),e.stopPropagation()},hide:function(e){t.intent.test(e,t.hide),e.stopPropagation()}},item:{click:function(n){var o=e(this),i=o.data(N.text)||o.text(),a=o.data(N.value)||i;t.verbose("Adding active state to selected item"),v.removeClass(k.active),o.addClass(k.active),t.action.determine(i,a),e.proxy(r.onChange,h.get())(i,a),n.stopPropagation()}}},intent:{test:function(n,o){t.debug("Determining whether event occurred in dropdown",n.target),o=o||function(){},0===e(n.target).closest(h).size()?(t.verbose("Triggering event",o),o()):t.verbose("Event occurred in dropdown, canceling callback")},bind:function(){t.verbose("Binding hide intent event to document"),s.on(t.get.selectEvent(),t.event.test.hide)},unbind:function(){t.verbose("Removing hide intent event from document"),s.off(t.get.selectEvent())}},action:{determine:function(n,o){e.isFunction(t.action[r.action])?(t.verbose("Triggering preset action",r.action),t.action[r.action](n,o)):e.isFunction(r.action)?(t.verbose("Triggering user action",r.action),r.action(n,o)):t.error(P.action)},nothing:function(){},hide:function(){t.hide()},changeText:function(e){t.set.text(e),t.hide()},form:function(e,n){t.set.text(e),t.set.value(n),t.hide()}},get:{selectEvent:function(){return x?"touchstart":"click"},text:function(){return b.text()},value:function(){return y.val()},item:function(t){var n;return t=t||y.val(),v.each(function(){e(this).data(N.value)==t&&(n=e(this))}),n||!1}},set:{text:function(e){t.debug("Changing text",e),b.text(e)},value:function(e){t.debug("Adding selected value to hidden input",e),y.val(e)},selected:function(e){var n,o=(e||y.val(),t.get.item(e));o&&(t.debug("Setting selected menu item to",o),n=o.data(N.text)||o.text(),v.removeClass(k.active),o.addClass(k.active),t.set.text(n))}},is:{visible:function(){return h.is(":visible")},hidden:function(){return h.is(":not(:visible)")}},can:{click:function(){return x||"click"==r.on},show:function(){return!p.hasClass(k.disabled)}},animate:{show:function(){t.verbose("Doing menu showing animation"),"show"==E.show?h.show():"slide"==E.show&&h.clearQueue().children().clearQueue().css("opacity",0).delay(100).animate({opacity:1},300,"easeOutQuad").end().slideDown(200,"easeOutQuad")},hide:function(){t.verbose("Doing menu hiding animation"),"hide"==E.hide?h.hide():"slide"==E.hide&&h.clearQueue().children().clearQueue().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){t.debug("Checking if dropdown can show"),clearTimeout(t.graceTimer),t.is.visible()||(t.hideOthers(),p.addClass(k.visible),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onShow,h.get())())},hide:function(){t.is.hidden()||(t.debug("Hiding dropdown"),p.removeClass(k.visible),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onHide,h.get())())},delayedHide:function(){t.verbose("User moused away setting timer to hide dropdown"),t.graceTimer=setTimeout(t.hide,r.gracePeriod)},hideOthers:function(){t.verbose("Finding other dropdowns to hide"),a.not(p).has(r.selector.menu+":visible").dropdown("hide"),console.log(a.not(p).has(r.selector.menu+":visible"))},toggle:function(){t.verbose("Toggling menu visibility"),t.is.hidden()?t.show():t.hide()},setting:function(t,n){return n===o?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=i,o)},debug:function(){r.debug&&(r.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(r.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":")},performance:{log:function(e){var n,o,i;r.performance&&(n=(new Date).getTime(),i=u||n,o=n-i,u=n,d.push({Element:C,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+w+"("+a.size()+" elements)",0);w&&(t+=" Performance ("+w+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,i,a){var s,r;return i=i||g,a=C||a,"string"==typeof n&&T!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,i){return e.isPlainObject(T[i])&&n!=s?(T=T[i],!0):T[i]!==o?(r=T[i],!0):(t.error(P.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(a,i)):r||!1}},f?(T===o&&t.initialize(),i=t.invoke(m)):(T!==o&&t.destroy(),t.initialize())}),i?i:this},e.fn.dropdown.settings={moduleName:"Dropdown Module",namespace:"dropdown",verbose:!0,debug:!0,performance:!1,on:"click",gracePeriod:300,action:"hide",animation:{show:"slide",hide:"slide"},onChange:function(){},onShow:function(){},onHide:function(){},errors:{action:"You called a dropdown action that was not defined",method:"The method you called is not defined."},metadata:{text:"text",value:"value"},selector:{menu:".menu",item:".menu > .item",text:"> .text",input:'> input[type="hidden"]'},className:{active:"active",disabled:"disabled",visible:"visible"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.dropdown=function(t){var i,a=e(this),s=e(n),r=e.isPlainObject(t)?e.extend(!0,{},e.fn.dropdown.settings,t):e.fn.dropdown.settings,c="."+r.namespace,l="module-"+r.namespace,u=(a.selector||"",(new Date).getTime()),d=[],m=arguments[0],f="string"==typeof m,g=[].slice.call(arguments,1);return a.each(function(){var t,p=e(this),h=e(this).find(r.selector.menu),v=e(this).find(r.selector.item),b=e(this).find(r.selector.text),y=e(this).find(r.selector.input),x="ontouchstart"in n.documentElement,w=p.selector||"",C=this,T=p.data("module-"+r.namespace),k=r.className,N=r.metadata,z=r.namespace,E=r.animation,D=r.errors;t={initialize:function(){t.verbose("Initializing dropdown with bound events",p),x?p.on("touchstart"+c,t.event.test.toggle):"click"==r.on?p.on("click"+c,t.event.test.toggle):"hover"==r.on?p.on("mouseenter"+c,t.show).on("mouseleave"+c,t.delayedHide):p.on(r.on+c,t.toggle),"form"==r.action&&t.set.selected(),v.on(t.get.selectEvent()+c,t.event.item.click),p.data(l,t)},destroy:function(){t.verbose("Destroying previous module for",p),p.off(z)},event:{stopPropagation:function(e){e.stopPropagation()},test:{toggle:function(e){t.intent.test(e,t.toggle),e.stopPropagation()},hide:function(e){t.intent.test(e,t.hide),e.stopPropagation()}},item:{click:function(n){var o=e(this),i=o.data(N.text)||o.text(),a=o.data(N.value)||i;t.verbose("Adding active state to selected item"),v.removeClass(k.active),o.addClass(k.active),t.action.determine(i,a),e.proxy(r.onChange,h.get())(i,a),n.stopPropagation()}}},intent:{test:function(n,o){t.debug("Determining whether event occurred in dropdown",n.target),o=o||function(){},0===e(n.target).closest(h).size()?(t.verbose("Triggering event",o),o()):t.verbose("Event occurred in dropdown, canceling callback")},bind:function(){t.verbose("Binding hide intent event to document"),s.on(t.get.selectEvent(),t.event.test.hide)},unbind:function(){t.verbose("Removing hide intent event from document"),s.off(t.get.selectEvent())}},action:{determine:function(n,o){e.isFunction(t.action[r.action])?(t.verbose("Triggering preset action",r.action),t.action[r.action](n,o)):e.isFunction(r.action)?(t.verbose("Triggering user action",r.action),r.action(n,o)):t.error(D.action)},nothing:function(){},hide:function(){t.hide()},changeText:function(e){t.set.text(e),t.hide()},form:function(e,n){t.set.text(e),t.set.value(n),t.hide()}},get:{selectEvent:function(){return x?"touchstart":"click"},text:function(){return b.text()},value:function(){return y.val()},item:function(t){var n;return t=t||y.val(),v.each(function(){e(this).data(N.value)==t&&(n=e(this))}),n||!1}},set:{text:function(e){t.debug("Changing text",e),b.text(e)},value:function(e){t.debug("Adding selected value to hidden input",e),y.val(e)},selected:function(e){var n,o=(e||y.val(),t.get.item(e));o&&(t.debug("Setting selected menu item to",o),n=o.data(N.text)||o.text(),v.removeClass(k.active),o.addClass(k.active),t.set.text(n))}},is:{visible:function(){return h.is(":visible")},hidden:function(){return h.is(":not(:visible)")}},can:{click:function(){return x||"click"==r.on},show:function(){return!p.hasClass(k.disabled)}},animate:{show:function(){t.verbose("Doing menu showing animation"),"show"==E.show?h.show():"slide"==E.show&&h.clearQueue().children().clearQueue().css("opacity",0).delay(100).animate({opacity:1},300,"easeOutQuad").end().slideDown(200,"easeOutQuad")},hide:function(){t.verbose("Doing menu hiding animation"),"hide"==E.hide?h.hide():"slide"==E.hide&&h.clearQueue().children().clearQueue().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){t.debug("Checking if dropdown can show"),clearTimeout(t.graceTimer),t.is.visible()||(t.hideOthers(),p.addClass(k.visible),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onShow,h.get())())},hide:function(){t.is.hidden()||(t.debug("Hiding dropdown"),p.removeClass(k.visible),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onHide,h.get())())},delayedHide:function(){t.verbose("User moused away setting timer to hide dropdown"),t.graceTimer=setTimeout(t.hide,r.gracePeriod)},hideOthers:function(){t.verbose("Finding other dropdowns to hide"),a.not(p).has(r.selector.menu+":visible").dropdown("hide"),console.log(a.not(p).has(r.selector.menu+":visible"))},toggle:function(){t.verbose("Toggling menu visibility"),t.is.hidden()?t.show():t.hide()},setting:function(t,n){return n===o?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,o)},internal:function(n,i){return i===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=i,o)},debug:function(){r.debug&&(r.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(r.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":")},performance:{log:function(e){var n,o,i;r.performance&&(n=(new Date).getTime(),i=u||n,o=n-i,u=n,d.push({Element:C,Name:e[0],Arguments:e[1]||"None","Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+w+"("+a.size()+" elements)",0);w&&(t+=" Performance ("+w+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,i,a){var s,r;return i=i||g,a=C||a,"string"==typeof n&&T!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,i){return e.isPlainObject(T[i])&&n!=s?(T=T[i],!0):T[i]!==o?(r=T[i],!0):(t.error(D.method),!1)})),e.isFunction(r)?(T.verbose("Executing invoked function",r),r.apply(a,i)):r||!1}},f?(T===o&&t.initialize(),i=t.invoke(m)):(T!==o&&t.destroy(),t.initialize())}),i?i:this},e.fn.dropdown.settings={moduleName:"Dropdown Module",namespace:"dropdown",verbose:!0,debug:!0,performance:!1,on:"click",gracePeriod:300,action:"hide",animation:{show:"slide",hide:"slide"},onChange:function(){},onShow:function(){},onHide:function(){},errors:{action:"You called a dropdown action that was not defined",method:"The method you called is not defined."},metadata:{text:"text",value:"value"},selector:{menu:".menu",item:".menu > .item",text:"> .text",input:'> input[type="hidden"]'},className:{active:"active",disabled:"disabled",visible:"visible"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/modal.min.css b/build/minified/modules/modal.min.css index 7e32d7546..cecd9bfee 100644 --- a/build/minified/modules/modal.min.css +++ b/build/minified/modules/modal.min.css @@ -1 +1 @@ -#dimmer{position:absolute;visibility:hidden;top:0;left:0;z-index:999;margin:0;width:100%;height:100%;padding:0}#dimmer .content{position:fixed;top:0;left:0;margin:0;width:100%;height:100%;padding:0;visibility:hidden;background-color:#000;opacity:0}.dimmer{display:none;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#000;z-index:999}.white.dimmer{background-color:#FFF}.loading .dimmer{display:block;opacity:.8;-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-o-transition:opacity .5s linear;-ms-transition:opacity .5s linear;transition:opacity .5s linear}.modal{display:none;position:fixed;z-index:1000;top:50%;left:50%;margin-left:-400px;width:800px;-webkit-box-shadow:5px 5px 15px rgba(0,0,0,.8);-moz-box-shadow:5px 5px 15px rgba(0,0,0,.8);box-shadow:5px 5px 15px rgba(0,0,0,.8);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.modal.absolute{position:absolute}.modal.fixed{position:fixed}.modal>.close{cursor:pointer;position:absolute;font-size:14px;color:#FFF;top:-18px;right:-18px;opacity:.8}.modal>.close:hover{opacity:1}.modal>hgroup{background-color:#442359;padding:15px 20px;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0}.modal>hgroup h2{margin:0;font-size:22px;font-weight:700;color:#FFF;text-shadow:0 1px 0 rgba(0,0,0,.75)}.modal>hgroup h3{font-size:18px;color:#FFF}.modal>.content{position:relative;overflow:hidden;padding:20px 20px 40px;background-color:#FAFAFA;-webkit-border-radius:0 0 10px 10px;-moz-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}.modal>.content .left{float:left;width:50%}.modal>.content .right{float:right;width:50%}.modal.static{display:block;position:relative;overflow:hidden;top:0;left:0;border:1px solid #CCC;width:auto;height:auto;margin:0 auto;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;color:#555;z-index:2;-moz-box-shadow:0 0 2px rgba(0,0,0,.2);-webkit-box-shadow:0 0 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.2)}.modal.static>hgroup,.modal.static>.content{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} \ No newline at end of file +.modal{display:none;position:fixed;z-index:1000;top:50%;left:50%;margin-left:-400px;width:800px;-webkit-box-shadow:5px 5px 15px rgba(0,0,0,.8);-moz-box-shadow:5px 5px 15px rgba(0,0,0,.8);box-shadow:5px 5px 15px rgba(0,0,0,.8);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.modal.absolute{position:absolute}.modal.fixed{position:fixed}.modal>.close{cursor:pointer;position:absolute;font-size:14px;color:#FFF;top:-18px;right:-18px;opacity:.8}.modal>.close:hover{opacity:1}.modal>hgroup{background-color:#442359;padding:15px 20px;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0}.modal>hgroup h2{margin:0;font-size:22px;font-weight:700;color:#FFF;text-shadow:0 1px 0 rgba(0,0,0,.75)}.modal>hgroup h3{font-size:18px;color:#FFF}.modal>.content{position:relative;overflow:hidden;padding:20px 20px 40px;background-color:#FAFAFA;-webkit-border-radius:0 0 10px 10px;-moz-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}.modal>.content .left{float:left;width:50%}.modal>.content .right{float:right;width:50%}.modal.static{display:block;position:relative;overflow:hidden;top:0;left:0;border:1px solid #CCC;width:auto;height:auto;margin:0 auto;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;color:#555;z-index:2;-moz-box-shadow:0 0 2px rgba(0,0,0,.2);-webkit-box-shadow:0 0 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.2)}.modal.static>hgroup,.modal.static>.content{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} \ No newline at end of file diff --git a/build/minified/modules/modal.min.js b/build/minified/modules/modal.min.js index abf6a2f53..92ca84f11 100644 --- a/build/minified/modules/modal.min.js +++ b/build/minified/modules/modal.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.dimScreen=function(t){var n="function"==typeof t?e.extend({},e.fn.modal.settings,{dim:t}):e.extend({},e.fn.modal.settings,t),o=e(n.context),i=o.children(n.selector.dimmer),a=i.size()>0,r=i.css("opacity");return a||(i=e("
").attr("id","dimmer").html('
'),o.append(i)),r!=n.opacity&&(i.one("click",function(){n.unDim(),e.unDimScreen()}),0===n.duration?i.css({visibility:"visible"}).find(".content").css({opacity:n.opacity,visibility:"visible"}):i.css({visibility:"visible"}).find(".content").css({opacity:0,visibility:"visible"}).fadeTo(n.duration,n.opacity,n.dim)),this},e.unDimScreen=function(t){var n="function"==typeof t?e.extend({},e.fn.modal.settings,{unDim:t}):e.extend({},e.fn.modal.settings,t),o=e(n.context),i=o.children(n.selector.dimmer),a=i.size()>0;return a&&(n.unDim(),0===n.duration?i.css({visibility:"hidden"}).remove():i.find(".content").fadeTo(n.duration,0,function(){i.remove()})),this},e.fn.modal=function(i){var a,r=e.extend(!0,{},e.fn.modal.settings,i),s=arguments[0],c=[].slice.call(arguments,1);return e(this).each(function(){var i,l=e(this),u=l.find(r.selector.closeButton),d=(e(r.context).find(r.selector.dimmer),e(r.context).children(r.selector.modal)),m=d.not(l),f=l.data("module-"+r.namespace),p="string"==typeof s,g=(r.className,r.namespace);i={initialize:function(){l.on("modalShow."+g,i.show).on("modalHide."+g,i.hide).data("module-"+g,i)},show:function(){var i=l.outerHeight(),a=e(t).height(),s=i>a,c=s?"absolute":"fixed",d=s?"0":"50%",f=s?a/8:-((i-r.closeSpacing)/2),p="absolute"==l.css("position")?f+e(t).prop("pageYOffset"):f,h=p+r.animationOffset;e.fn.popIn!==o?l.addClass(c).css({display:"block",opacity:0,top:d,marginTop:p+"px"}).popIn():l.addClass(c).css({display:"block",opacity:0,top:d,marginTop:h+"px"}).animate({opacity:1,marginTop:p+"px"},r.duration+300,r.easing),m.is(":visible")&&m.filter(":visible").hide(),e.dimScreen({context:r.context,duration:0,dim:function(){e(n).on("keyup."+g,function(e){var t=e.which,n=27;switch(t){case n:l.trigger("modalHide"),e.preventDefault()}}),u.one("click",function(){l.trigger("modalHide")}),r.dim()},unDim:function(){l.trigger("modalHide"),u.unbind("click")}})},hide:function(){e(n).off("keyup."+g),e.unDimScreen({duration:0,unDim:function(){l.popOut(200),r.unDim()}})},setting:function(e,t){return t===o?r[e]:(r[e]=t,o)},debug:function(){var e=[],t=r.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};r.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=r.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};r.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,a){var s,c;return a=a||[].slice.call(arguments,2),"string"==typeof t&&f!==o&&(t=t.split("."),s=t.length-1,e.each(t,function(t,n){return e.isPlainObject(f[n])&&t!=s?(f=f[n],!0):f[n]!==o?(c=f[n],!0):(i.error(r.errors.method),!1)})),e.isFunction(c)?c.apply(n,a):c}},p?a=i.invoke(s,this,c):i.initialize()}),a!==o?a:this},e.fn.modal.settings={moduleName:"Modal",debug:!1,namespace:"modal",errors:{method:"The method you called is not defined"},dim:function(){},unDim:function(){},hide:function(){},show:function(){},context:"body",opacity:.8,closeSpacing:25,animationOffset:15,duration:400,easing:"easeOutExpo",selector:{dimmer:"#dimmer",modal:".modal",closeButton:".close"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.dimScreen=function(t){var n="function"==typeof t?e.extend({},e.fn.modal.settings,{dim:t}):e.extend({},e.fn.modal.settings,t),o=e(n.context),i=o.children(n.selector.dimmer),a=i.size()>0,r=i.css("opacity");return a||(i=e("
").attr("id","dimmer").html('
'),o.append(i)),r!=n.opacity&&(i.one("click",function(){n.unDim(),e.unDimScreen()}),0===n.duration?i.css({visibility:"visible"}).find(".content").css({opacity:n.opacity,visibility:"visible"}):i.css({visibility:"visible"}).find(".content").css({opacity:0,visibility:"visible"}).fadeTo(n.duration,n.opacity,n.dim)),this},e.unDimScreen=function(t){var n="function"==typeof t?e.extend({},e.fn.modal.settings,{unDim:t}):e.extend({},e.fn.modal.settings,t),o=e(n.context),i=o.children(n.selector.dimmer),a=i.size()>0;return a&&(n.unDim(),0===n.duration?i.css({visibility:"hidden"}).remove():i.find(".content").fadeTo(n.duration,0,function(){i.remove()})),this},e.fn.modal=function(i){var a,r=e.extend(!0,{},e.fn.modal.settings,i),s=arguments[0],c=[].slice.call(arguments,1);return e(this).each(function(){var i,l=e(this),d=l.find(r.selector.closeButton),u=(e(r.context).find(r.selector.dimmer),e(r.context).children(r.selector.modal)),m=u.not(l),f=l.data("module-"+r.namespace),p="string"==typeof s,g=(r.className,r.namespace);i={initialize:function(){l.on("modalShow."+g,i.show).on("modalHide."+g,i.hide).data("module-"+g,i)},show:function(){var i=l.outerHeight(),a=e(t).height(),s=i>a,c=s?"absolute":"fixed",u=s?"0":"50%",f=s?a/8:-((i-r.closeSpacing)/2),p="absolute"==l.css("position")?f+e(t).prop("pageYOffset"):f,h=p+r.animationOffset;e.fn.popIn!==o?l.addClass(c).css({display:"block",opacity:0,top:u,marginTop:p+"px"}).popIn():l.addClass(c).css({display:"block",opacity:0,top:u,marginTop:h+"px"}).animate({opacity:1,marginTop:p+"px"},r.duration+300,r.easing),m.is(":visible")&&m.filter(":visible").hide(),e.dimScreen({context:r.context,duration:0,dim:function(){e(n).on("keyup."+g,function(e){var t=e.which,n=27;switch(t){case n:l.trigger("modalHide"),e.preventDefault()}}),d.one("click",function(){l.trigger("modalHide")}),r.dim()},unDim:function(){l.trigger("modalHide"),d.unbind("click")}})},hide:function(){e(n).off("keyup."+g),e.unDimScreen({duration:0,unDim:function(){l.popOut(200),r.unDim()}})},setting:function(e,t){return t===o?r[e]:(r[e]=t,o)},debug:function(){var e=[],t=r.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};r.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=r.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};r.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,a){var s,c;return a=a||[].slice.call(arguments,2),"string"==typeof t&&f!==o&&(t=t.split("."),s=t.length-1,e.each(t,function(t,n){return e.isPlainObject(f[n])&&t!=s?(f=f[n],!0):f[n]!==o?(c=f[n],!0):(i.error(r.errors.method),!1)})),e.isFunction(c)?c.apply(n,a):c}},p?a=i.invoke(s,this,c):i.initialize()}),a!==o?a:this},e.fn.modal.settings={moduleName:"Modal",debug:!1,namespace:"modal",errors:{method:"The method you called is not defined"},dim:function(){},unDim:function(){},hide:function(){},show:function(){},context:"body",opacity:.8,closeSpacing:25,animationOffset:15,duration:400,easing:"easeOutExpo",selector:{dimmer:"#dimmer",modal:".modal",closeButton:".close"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/popup.js b/build/minified/modules/popup.js index 56ac6b98b..1a931fcaa 100644 --- a/build/minified/modules/popup.js +++ b/build/minified/modules/popup.js @@ -1,7 +1,10 @@ /* ****************************** - Tooltip / Popup + Semantic Module: Popup Author: Jack Lukic - Notes: First Commit Sep 07, 2012 + Notes: May 30, 2013 + + Simple plug-in to display popups + ****************************** */ ;(function ($, window, document, undefined) { @@ -9,19 +12,29 @@ $.fn.popup = function(parameters) { var $allModules = $(this), - - settings = $.extend(true, {}, $.fn.popup.settings, parameters), - + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.fn.popup.settings, + eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), time = new Date().getTime(), performance = [], - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + invokedResponse ; $allModules @@ -31,19 +44,13 @@ $.fn.popup = function(parameters) { $window = $(window), $offsetParent = $module.offsetParent(), $popup = (settings.inline) - ? $module.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - + ? $module.next(selector.popup) + : $window.children(selector.popup).last(), + searchDepth = 0, - + element = this, instance = $module.data('module-' + settings.namespace), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, module ; @@ -51,6 +58,7 @@ $.fn.popup = function(parameters) { // binds events initialize: function() { + module.debug('Initializing module', $module); if(settings.on == 'hover') { $module .on('mouseenter.' + namespace, module.event.mouseenter) @@ -65,8 +73,14 @@ $.fn.popup = function(parameters) { $window .on('resize.' + namespace, module.event.resize) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; $module - .data('module-' + namespace, module) + .data('module-' + namespace, instance) ; }, @@ -508,44 +522,42 @@ $.fn.popup = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -561,24 +573,23 @@ $.fn.popup = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; } - }; + if(methodInvoked) { if(instance === undefined) { module.initialize(); @@ -586,13 +597,14 @@ $.fn.popup = function(parameters) { invokedResponse = module.invoke(query); } else { - if(instance !== undefined) { + if(instance === undefined) { module.destroy(); } module.initialize(); } }) ; + return (invokedResponse) ? invokedResponse : this @@ -600,31 +612,31 @@ $.fn.popup = function(parameters) { }; $.fn.popup.settings = { - - moduleName : 'Pop-up Module', + + moduleName : 'Popup', debug : true, verbose : true, performance : true, namespace : 'popup', - + onShow : function(){}, onHide : function(){}, - + content : false, html : false, title : false, - + on : 'hover', clicktoClose : true, - + position : 'top center', delay : 0, inline : true, - + duration : 250, easing : 'easeOutQuint', animation : 'pop', - + distanceAway : 2, arrowOffset : 0, maxSearchDepth : 10, diff --git a/build/minified/modules/popup.min.js b/build/minified/modules/popup.min.js index 1fcd5570c..a008b59df 100644 --- a/build/minified/modules/popup.min.js +++ b/build/minified/modules/popup.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.popup=function(i){var a,r=e(this),s=e.extend(!0,{},e.fn.popup.settings,i),c=("."+s.namespace,"module-"+s.namespace,r.selector||""),l=(new Date).getTime(),u=[],d=arguments[0],m="string"==typeof d,f=[].slice.call(arguments,1);return r.each(function(){var i,p=e(this),g=e(t),h=p.offsetParent(),v=s.inline?p.next(s.selector.popup):g.children(s.selector.popup).last(),b=0,y=this,x=p.data("module-"+s.namespace),w=s.selector,C=s.className,k=s.error,T=s.metadata,N=s.namespace;i={initialize:function(){"hover"==s.on?p.on("mouseenter."+N,i.event.mouseenter).on("mouseleave."+N,i.event.mouseleave):p.on(s.on+"."+N,i.event[s.on]),g.on("resize."+N,i.event.resize),p.data("module-"+N,i)},refresh:function(){v=s.inline?p.next(w.popup):g.children(w.popup).last(),h=p.offsetParent()},destroy:function(){i.debug("Destroying existing popups"),p.off("."+N),v.remove()},event:{mouseenter:function(t){var n=this;i.timer=setTimeout(function(){e.proxy(i.toggle,n)(),e(n).hasClass(C.visible)&&t.stopPropagation()},s.delay)},mouseleave:function(){clearTimeout(i.timer),p.is(":visible")&&i.hide()},click:function(t){e.proxy(i.toggle,this)(),e(this).hasClass(C.visible)&&t.stopPropagation()},resize:function(){v.is(":visible")&&i.position()}},create:function(){i.debug("Creating pop-up content");var t=p.data(T.html)||s.html,n=p.data(T.title)||s.title,o=p.data(T.content)||p.attr("title")||s.content;t||o||n?(t||(t=s.template({title:n,content:o})),v=e("
").addClass(C.popup).html(t),s.inline?v.insertAfter(p):v.appendTo(e("body"))):i.error(k.content)},remove:function(){v.remove()},get:{offstagePosition:function(){var n={top:e(t).scrollTop(),bottom:e(t).scrollTop()+e(t).height(),left:0,right:e(t).width()},o={width:v.outerWidth(),height:v.outerHeight(),position:v.offset()},i={},a=[];return o.position&&(i={top:o.position.topn.bottom,right:o.position.left+o.width>n.right,left:o.position.left0?a.join(" "):!1},nextPosition:function(e){switch(e){case"top left":e="bottom left";break;case"bottom left":e="top right";break;case"top right":e="bottom right";break;case"bottom right":e="top center";break;case"top center":e="bottom center";break;case"bottom center":e="right center";break;case"right center":e="left center";break;case"left center":e="top center"}return e}},toggle:function(){p=e(this),i.debug("Toggling pop-up"),i.refresh(),0===v.size()&&i.create(),p.hasClass(C.visible)?i.hide():i.position()&&i.show()},position:function(n,o){var a,r,c=(e(t).width(),e(t).height(),p.outerWidth()),l=p.outerHeight(),u=v.outerWidth(),d=v.outerHeight(),m=s.inline?p.position():p.offset(),f=s.inline?h.outerWidth():g.outerWidth(),y=s.inline?h.outerHeight():g.outerHeight();switch(n=n||p.data(T.position)||s.position,o=o||p.data(T.arrowOffset)||s.arrowOffset,i.debug("Calculating offset for position",n),n){case"top left":a={top:"auto",bottom:y-m.top+s.distanceAway,left:m.left+o};break;case"top center":a={bottom:y-m.top+s.distanceAway,left:m.left+c/2-u/2+o,top:"auto",right:"auto"};break;case"top right":a={bottom:y-m.top+s.distanceAway,right:f-m.left-c-o,top:"auto",left:"auto"};break;case"left center":a={top:m.top+l/2-d/2,right:f-m.left+s.distanceAway-o,left:"auto",bottom:"auto"};break;case"right center":a={top:m.top+l/2-d/2,left:m.left+c+s.distanceAway+o,bottom:"auto",right:"auto"};break;case"bottom left":a={top:m.top+l+s.distanceAway,left:m.left+o,bottom:"auto",right:"auto"};break;case"bottom center":a={top:m.top+l+s.distanceAway,left:m.left+c/2-u/2+o,bottom:"auto",right:"auto"};break;case"bottom right":a={top:m.top+l+s.distanceAway,right:f-m.left-c-o,left:"auto",bottom:"auto"}}return e.extend(a,{width:v.width()+1}),v.removeAttr("style").removeClass("top right bottom left center").css(a).addClass(n).addClass(C.loading),r=i.get.offstagePosition(),r?(i.debug("Element is outside boundaries ",r),s.maxSearchDepth>b?(n=i.get.nextPosition(n),b++,i.debug("Trying new position: ",n),i.position(n)):(i.error(k.recursion),b=0,!1)):(i.debug("Position is on stage",n),b=0,!0)},show:function(){i.debug("Showing pop-up"),e(w.popup).filter(":visible").stop().fadeOut(200).prev(p).removeClass(C.visible),p.addClass(C.visible),v.removeClass(C.loading),"pop"==s.animation&&e.fn.popIn!==o?v.stop().popIn(s.duration,s.easing):v.stop().fadeIn(s.duration,s.easing),"click"==s.on&&s.clicktoClose&&(i.debug("Binding popup close event"),e(n).on("click."+N,i.gracefully.hide)),e.proxy(s.onShow,v)()},hide:function(){p.removeClass(C.visible),v.is(":visible")&&(i.debug("Hiding pop-up"),"pop"==s.animation&&e.fn.popOut!==o?v.stop().popOut(s.duration,s.easing,function(){v.hide()}):v.stop().fadeOut(s.duration,s.easing)),"click"==s.on&&s.clicktoClose&&e(n).off("click."+N),e.proxy(s.onHide,v)(),s.inline||i.remove()},gracefully:{hide:function(t){0===e(t.target).closest(w.popup).size()&&i.hide()}},setting:function(t,n){return n===o?s[t]:(e.isPlainObject(t)?e.extend(!0,s,t):s[t]=n,o)},internal:function(t,n){return n===o?i[t]:(e.isPlainObject(t)?e.extend(!0,i,t):i[t]=n,o)},debug:function(){s.debug&&(s.performance?i.performance.log(arguments):i.debug=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},verbose:function(){s.verbose&&s.debug&&(s.performance?i.performance.log(arguments):i.verbose=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},error:function(){i.error=Function.prototype.bind.call(console.log,console,s.moduleName+":")},performance:{log:function(e){var t,n,o;s.performance&&(t=(new Date).getTime(),o=l||t,n=t-o,l=t,u.push({Element:y,Name:e[0],Arguments:e[1]||"None","Execution Time":n}),clearTimeout(i.performance.timer),i.performance.timer=setTimeout(i.performance.display,100))},display:function(){var t=s.moduleName,n=(s.moduleName+": "+c+"("+r.size()+" elements)",0);c&&(t+=" Performance ("+c+")"),(console.group!==o||console.table!==o)&&u.length>0&&(console.groupCollapsed(t),console.table?(e.each(u,function(e,t){n+=t["Execution Time"]}),console.table(u)):e.each(u,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),u=[],l=!1)}},invoke:function(t,n,a){var r,s;return n=n||f,a=y||a,"string"==typeof t&&x!==o&&(t=t.split("."),r=t.length-1,e.each(t,function(t,n){return e.isPlainObject(x[n])&&t!=r?(x=x[n],!0):x[n]!==o?(s=x[n],!0):(i.error(k.method),!1)})),e.isFunction(s)?(i.verbose("Executing invoked function",s),s.apply(a,n)):s||!1}},m?(x===o&&i.initialize(),a=i.invoke(d)):(x!==o&&i.destroy(),i.initialize())}),a?a:this},e.fn.popup.settings={moduleName:"Pop-up Module",debug:!0,verbose:!0,performance:!0,namespace:"popup",onShow:function(){},onHide:function(){},content:!1,html:!1,title:!1,on:"hover",clicktoClose:!0,position:"top center",delay:0,inline:!0,duration:250,easing:"easeOutQuint",animation:"pop",distanceAway:2,arrowOffset:0,maxSearchDepth:10,error:{content:"Warning: Your popup has no content specified",method:"The method you called is not defined.",recursion:"Popup attempted to reposition element to fit, but could not find an adequate position."},metadata:{content:"content",html:"html",title:"title",position:"position",arrowOffset:"arrowOffset"},className:{popup:"ui popup",visible:"visible",loading:"loading"},selector:{popup:".ui.popup"},template:function(e){var t="";return typeof e!==o&&(typeof e.title!==o&&e.title&&(t+="

"+e.title+"

"),typeof e.content!==o&&e.content&&(t+='
'+e.content+"
")),t}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.popup=function(i){var a,r=e(this),s=e.isPlainObject(i)?e.extend(!0,{},e.fn.popup.settings,i):e.fn.popup.settings,c=("."+s.namespace,"module-"+s.namespace,r.selector||""),l=(r.size(),(new Date).getTime()),u=[],d=s.selector,m=s.className,f=s.error,p=s.metadata,g=s.namespace,h=arguments[0],v="string"==typeof h,b=[].slice.call(arguments,1);return r.each(function(){var i,r=e(this),y=e(t),x=r.offsetParent(),w=s.inline?r.next(d.popup):y.children(d.popup).last(),C=0,k=this,T=r.data("module-"+s.namespace);i={initialize:function(){i.debug("Initializing module",r),"hover"==s.on?r.on("mouseenter."+g,i.event.mouseenter).on("mouseleave."+g,i.event.mouseleave):r.on(s.on+"."+g,i.event[s.on]),y.on("resize."+g,i.event.resize),i.instantiate()},instantiate:function(){i.verbose("Storing instance of module"),T=i,r.data("module-"+g,T)},refresh:function(){w=s.inline?r.next(d.popup):y.children(d.popup).last(),x=r.offsetParent()},destroy:function(){i.debug("Destroying existing popups"),r.off("."+g),w.remove()},event:{mouseenter:function(t){var n=this;i.timer=setTimeout(function(){e.proxy(i.toggle,n)(),e(n).hasClass(m.visible)&&t.stopPropagation()},s.delay)},mouseleave:function(){clearTimeout(i.timer),r.is(":visible")&&i.hide()},click:function(t){e.proxy(i.toggle,this)(),e(this).hasClass(m.visible)&&t.stopPropagation()},resize:function(){w.is(":visible")&&i.position()}},create:function(){i.debug("Creating pop-up content");var t=r.data(p.html)||s.html,n=r.data(p.title)||s.title,o=r.data(p.content)||r.attr("title")||s.content;t||o||n?(t||(t=s.template({title:n,content:o})),w=e("
").addClass(m.popup).html(t),s.inline?w.insertAfter(r):w.appendTo(e("body"))):i.error(f.content)},remove:function(){w.remove()},get:{offstagePosition:function(){var n={top:e(t).scrollTop(),bottom:e(t).scrollTop()+e(t).height(),left:0,right:e(t).width()},o={width:w.outerWidth(),height:w.outerHeight(),position:w.offset()},i={},a=[];return o.position&&(i={top:o.position.topn.bottom,right:o.position.left+o.width>n.right,left:o.position.left0?a.join(" "):!1},nextPosition:function(e){switch(e){case"top left":e="bottom left";break;case"bottom left":e="top right";break;case"top right":e="bottom right";break;case"bottom right":e="top center";break;case"top center":e="bottom center";break;case"bottom center":e="right center";break;case"right center":e="left center";break;case"left center":e="top center"}return e}},toggle:function(){r=e(this),i.debug("Toggling pop-up"),i.refresh(),0===w.size()&&i.create(),r.hasClass(m.visible)?i.hide():i.position()&&i.show()},position:function(n,o){var a,c,l=(e(t).width(),e(t).height(),r.outerWidth()),u=r.outerHeight(),d=w.outerWidth(),g=w.outerHeight(),h=s.inline?r.position():r.offset(),v=s.inline?x.outerWidth():y.outerWidth(),b=s.inline?x.outerHeight():y.outerHeight();switch(n=n||r.data(p.position)||s.position,o=o||r.data(p.arrowOffset)||s.arrowOffset,i.debug("Calculating offset for position",n),n){case"top left":a={top:"auto",bottom:b-h.top+s.distanceAway,left:h.left+o};break;case"top center":a={bottom:b-h.top+s.distanceAway,left:h.left+l/2-d/2+o,top:"auto",right:"auto"};break;case"top right":a={bottom:b-h.top+s.distanceAway,right:v-h.left-l-o,top:"auto",left:"auto"};break;case"left center":a={top:h.top+u/2-g/2,right:v-h.left+s.distanceAway-o,left:"auto",bottom:"auto"};break;case"right center":a={top:h.top+u/2-g/2,left:h.left+l+s.distanceAway+o,bottom:"auto",right:"auto"};break;case"bottom left":a={top:h.top+u+s.distanceAway,left:h.left+o,bottom:"auto",right:"auto"};break;case"bottom center":a={top:h.top+u+s.distanceAway,left:h.left+l/2-d/2+o,bottom:"auto",right:"auto"};break;case"bottom right":a={top:h.top+u+s.distanceAway,right:v-h.left-l-o,left:"auto",bottom:"auto"}}return e.extend(a,{width:w.width()+1}),w.removeAttr("style").removeClass("top right bottom left center").css(a).addClass(n).addClass(m.loading),c=i.get.offstagePosition(),c?(i.debug("Element is outside boundaries ",c),s.maxSearchDepth>C?(n=i.get.nextPosition(n),C++,i.debug("Trying new position: ",n),i.position(n)):(i.error(f.recursion),C=0,!1)):(i.debug("Position is on stage",n),C=0,!0)},show:function(){i.debug("Showing pop-up"),e(d.popup).filter(":visible").stop().fadeOut(200).prev(r).removeClass(m.visible),r.addClass(m.visible),w.removeClass(m.loading),"pop"==s.animation&&e.fn.popIn!==o?w.stop().popIn(s.duration,s.easing):w.stop().fadeIn(s.duration,s.easing),"click"==s.on&&s.clicktoClose&&(i.debug("Binding popup close event"),e(n).on("click."+g,i.gracefully.hide)),e.proxy(s.onShow,w)()},hide:function(){r.removeClass(m.visible),w.is(":visible")&&(i.debug("Hiding pop-up"),"pop"==s.animation&&e.fn.popOut!==o?w.stop().popOut(s.duration,s.easing,function(){w.hide()}):w.stop().fadeOut(s.duration,s.easing)),"click"==s.on&&s.clicktoClose&&e(n).off("click."+g),e.proxy(s.onHide,w)(),s.inline||i.remove()},gracefully:{hide:function(t){0===e(t.target).closest(d.popup).size()&&i.hide()}},setting:function(t,n){return n===o?s[t]:(e.isPlainObject(t)?e.extend(!0,s,t):s[t]=n,o)},internal:function(t,n){return n===o?i[t]:(e.isPlainObject(t)?e.extend(!0,i,t):i[t]=n,o)},debug:function(){s.debug&&(s.performance?i.performance.log(arguments):i.debug=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},verbose:function(){s.verbose&&s.debug&&(s.performance?i.performance.log(arguments):i.verbose=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},error:function(){i.error=Function.prototype.bind.call(console.log,console,s.moduleName+":")},performance:{log:function(e){var t,n,o;s.performance&&(t=(new Date).getTime(),o=l||t,n=t-o,l=t,u.push({Element:k,Name:e[0],Arguments:e[1]||"","Execution Time":n})),clearTimeout(i.performance.timer),i.performance.timer=setTimeout(i.performance.display,100)},display:function(){var t=s.moduleName+":",n=0;l=!1,e.each(u,function(e,t){n+=t["Execution Time"]}),t+=" "+n+"ms",c&&(t+=" '"+c+"'"),(console.group!==o||console.table!==o)&&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,n,a){var r,s;return n=n||b,a=k||a,"string"==typeof t&&T!==o&&(t=t.split("."),r=t.length-1,e.each(t,function(t,n){e.isPlainObject(T[n])&&t!=r?T=T[n]:T[n]!==o?s=T[n]:i.error(f.method)})),e.isFunction(s)?(T.verbose("Executing invoked function",s),s.apply(a,n)):s||!1}},v?(T===o&&i.initialize(),a=i.invoke(h)):(T===o&&i.destroy(),i.initialize())}),a?a:this},e.fn.popup.settings={moduleName:"Popup",debug:!0,verbose:!0,performance:!0,namespace:"popup",onShow:function(){},onHide:function(){},content:!1,html:!1,title:!1,on:"hover",clicktoClose:!0,position:"top center",delay:0,inline:!0,duration:250,easing:"easeOutQuint",animation:"pop",distanceAway:2,arrowOffset:0,maxSearchDepth:10,error:{content:"Warning: Your popup has no content specified",method:"The method you called is not defined.",recursion:"Popup attempted to reposition element to fit, but could not find an adequate position."},metadata:{content:"content",html:"html",title:"title",position:"position",arrowOffset:"arrowOffset"},className:{popup:"ui popup",visible:"visible",loading:"loading"},selector:{popup:".ui.popup"},template:function(e){var t="";return typeof e!==o&&(typeof e.title!==o&&e.title&&(t+="

"+e.title+"

"),typeof e.content!==o&&e.content&&(t+='
'+e.content+"
")),t}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/shape.js b/build/minified/modules/shape.js index 017fc8bcf..f638fc3c2 100644 --- a/build/minified/modules/shape.js +++ b/build/minified/modules/shape.js @@ -40,7 +40,7 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - endTransition = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', + transitionEnd = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -111,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(endTransition, callback) + .one(transitionEnd, callback) ; } else { @@ -137,7 +137,7 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(endTransition, function() { + .one(transitionEnd, function() { module.debug('Executing queued animation'); $module.shape(method); }) @@ -614,7 +614,7 @@ $.fn.shape = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/minified/modules/shape.min.js b/build/minified/modules/shape.min.js index 95f43b729..ab4b5eebf 100644 --- a/build/minified/modules/shape.min.js +++ b/build/minified/modules/shape.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.shape=function(t){var i,a=e(this),s=e.extend(!0,{},e.fn.shape.settings,t),r="."+s.namespace,c="module-"+s.namespace,l=a.selector||"",u=(new Date).getTime(),d=[],m=arguments[0],f="string"==typeof m,p=[].slice.call(arguments,1);return a.each(function(){var t,g,h,v=e(this),b=v.find(s.selector.sides),y=v.find(s.selector.side),x="transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd",w=this,C=v.data(c),k=(s.namespace,s.error),T=s.className;h={initialize:function(){h.verbose("Initializing module for",w),h.set.defaultSide(),C=h,v.data(c,C)},destroy:function(){h.verbose("Destroying previous module for",w),v.removeData(c).off(r)},refresh:function(){h.verbose("Refreshing selector cache for",w),v=e(w),b=e(this).find(s.selector.shape),y=e(this).find(s.selector.side)},repaint:function(){h.verbose("Forcing repaint event");var e=b.get(0)||n.createElement("div");e.offsetWidth},animate:function(n,o){h.verbose("Animating box with properties",n),o=o||function(t){h.reset(),h.set.active(),e.proxy(s.onChange,g)(),t.stopImmediatePropagation()},s.useCSS?(h.verbose("Starting CSS animation"),v.addClass(T.animating),h.set.stageSize(),h.repaint(),v.addClass(T.css),t.addClass(T.hidden),b.css(n).one(x,o)):(h.verbose("Starting javascript animation"),v.addClass(T.animating).removeClass(T.css),h.set.stageSize(),h.repaint(),t.animate({opacity:0},s.duration,s.easing),b.animate(n,s.duration,s.easing,o))},queue:function(e){h.debug("Queueing animation of",e),b.one(x,function(){h.debug("Executing queued animation"),v.shape(e)})},reset:function(){h.verbose("Animating states reset"),v.removeClass(T.css).removeClass(T.animating).removeAttr("style"),b.removeAttr("style"),y.removeAttr("style").removeClass(T.hidden),g.removeClass(T.animating).removeAttr("style")},is:{animating:function(){return v.hasClass(T.animating)}},get:{nextSide:function(){return t.next(s.selector.side).size()>0?t.next(s.selector.side):v.find(s.selector.side).first()}},set:{defaultSide:function(){t=v.find("."+s.className.active),g=t.next(s.selector.side).size()>0?t.next(s.selector.side):v.find(s.selector.side).first(),h.verbose("Active side set to",t),h.verbose("Next side set to",g)},stageSize:function(){var e={width:g.outerWidth(),height:g.outerHeight()};h.verbose("Resizing stage to fit new content",e),v.css({width:e.width,height:e.height})},nextSide:function(e){g=v.find(e),0===g.size()&&h.error(k.side),h.verbose("Next side manually set to",g)},active:function(){h.verbose("Setting new side to active",g),y.removeClass(T.active),g.addClass(T.active),h.set.defaultSide()}},flip:{up:function(){h.debug("Flipping up",g),h.is.animating()?h.queue("flip.up"):(h.stage.above(),h.animate(h.getTransform.up()))},down:function(){h.debug("Flipping down",g),h.is.animating()?h.queue("flip.down"):(h.stage.below(),h.animate(h.getTransform.down()))},left:function(){h.debug("Flipping left",g),h.is.animating()?h.queue("flip.left"):(h.stage.left(),h.animate(h.getTransform.left()))},right:function(){h.debug("Flipping right",g),h.is.animating()?h.queue("flip.right"):(h.stage.right(),h.animate(h.getTransform.right()))},over:function(){h.debug("Flipping over",g),h.is.animating()?h.queue("flip.over"):(h.stage.behind(),h.animate(h.getTransform.behind()))}},getTransform:{up:function(){var e={y:-((t.outerHeight()-g.outerHeight())/2),z:-(t.outerHeight()/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(-90deg)"}},down:function(){var e={y:-((t.outerHeight()-g.outerHeight())/2),z:-(t.outerHeight()/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(90deg)"}},left:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2),z:-(t.outerWidth()/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(90deg)"}},right:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2),z:-(t.outerWidth()/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(-90deg)"}},behind:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2)};return{transform:"translateX("+e.x+"px) rotateY(180deg)"}}},stage:{above:function(){var e={origin:(t.outerHeight()-g.outerHeight())/2,depth:{active:g.outerHeight()/2,next:t.outerHeight()/2}};h.verbose("Setting the initial animation position as above",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",top:e.origin+"px",transform:"rotateX(90deg) translateZ("+e.depth.next+"px)"})},below:function(){var e={origin:(t.outerHeight()-g.outerHeight())/2,depth:{active:g.outerHeight()/2,next:t.outerHeight()/2}};h.verbose("Setting the initial animation position as below",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",top:e.origin+"px",transform:"rotateX(-90deg) translateZ("+e.depth.next+"px)"})},left:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as left",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(-90deg) translateZ("+e.depth.next+"px)"})},right:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as left",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(90deg) translateZ("+e.depth.next+"px)"})},behind:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as behind",g,e),t.css({transform:"rotateY(0deg)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(t,n){return n===o?s[t]:(e.isPlainObject(t)?(h.verbose("Modifying settings object",t,n),e.extend(!0,s,t)):(h.verbose("Modifying setting",t,n),s[t]=n),o)},internal:function(t,n){return n===o?h[t]:(e.isPlainObject(t)?(h.verbose("Modifying internal property",t,n),e.extend(!0,h,t)):(h.verbose("Changing internal method to",n),h[t]=n),o)},debug:function(){s.debug&&(s.performance?h.performance.log(arguments):h.debug=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},verbose:function(){s.verbose&&s.debug&&(s.performance?h.performance.log(arguments):h.verbose=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},error:function(){h.error=Function.prototype.bind.call(console.log,console,s.moduleName+":")},performance:{log:function(e){var t,n,o;s.performance&&(t=(new Date).getTime(),o=u||t,n=t-o,u=t,d.push({Element:w,Name:e[0],Arguments:e[1]||"None","Execution Time":n}),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,100))},display:function(){var t=s.moduleName,n=(s.moduleName+": "+l+"("+a.size()+" elements)",0);l&&(t+=" Performance ("+l+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(t,n,i){var a,s;return n=n||p,i=w||i,"string"==typeof t&&C!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(C[n])&&t!=a?(C=C[n],!0):C[n]!==o?(s=C[n],!0):(h.error(errors.method),!1)})),e.isFunction(s)?(h.verbose("Executing invoked function",s),s.apply(i,n)):s||!1}},f?(C===o&&h.initialize(),i=h.invoke(m)):(C!==o&&h.destroy(),h.initialize())}),i?i:this},e.fn.shape.settings={moduleName:"Shape Module",debug:!0,verbose:!0,performance:!0,namespace:"shape",beforeChange:function(){},onChange:function(){},useCSS:!0,duration:1e3,easing:"easeInOutQuad",error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{css:"css",animating:"animating",hidden:"hidden",active:"active"},selector:{sides:".sides",side:".side"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.shape=function(t){var i,a=e(this),s=e.extend(!0,{},e.fn.shape.settings,t),r="."+s.namespace,c="module-"+s.namespace,l=a.selector||"",u=(new Date).getTime(),d=[],m=arguments[0],f="string"==typeof m,p=[].slice.call(arguments,1);return a.each(function(){var t,g,h,v=e(this),b=v.find(s.selector.sides),y=v.find(s.selector.side),x="transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd",w=this,C=v.data(c),k=(s.namespace,s.error),T=s.className;h={initialize:function(){h.verbose("Initializing module for",w),h.set.defaultSide(),C=h,v.data(c,C)},destroy:function(){h.verbose("Destroying previous module for",w),v.removeData(c).off(r)},refresh:function(){h.verbose("Refreshing selector cache for",w),v=e(w),b=e(this).find(s.selector.shape),y=e(this).find(s.selector.side)},repaint:function(){h.verbose("Forcing repaint event");var e=b.get(0)||n.createElement("div");e.offsetWidth},animate:function(n,o){h.verbose("Animating box with properties",n),o=o||function(t){h.reset(),h.set.active(),e.proxy(s.onChange,g)(),t.stopImmediatePropagation()},s.useCSS?(h.verbose("Starting CSS animation"),v.addClass(T.animating),h.set.stageSize(),h.repaint(),v.addClass(T.css),t.addClass(T.hidden),b.css(n).one(x,o)):(h.verbose("Starting javascript animation"),v.addClass(T.animating).removeClass(T.css),h.set.stageSize(),h.repaint(),t.animate({opacity:0},s.duration,s.easing),b.animate(n,s.duration,s.easing,o))},queue:function(e){h.debug("Queueing animation of",e),b.one(x,function(){h.debug("Executing queued animation"),v.shape(e)})},reset:function(){h.verbose("Animating states reset"),v.removeClass(T.css).removeClass(T.animating).removeAttr("style"),b.removeAttr("style"),y.removeAttr("style").removeClass(T.hidden),g.removeClass(T.animating).removeAttr("style")},is:{animating:function(){return v.hasClass(T.animating)}},get:{nextSide:function(){return t.next(s.selector.side).size()>0?t.next(s.selector.side):v.find(s.selector.side).first()}},set:{defaultSide:function(){t=v.find("."+s.className.active),g=t.next(s.selector.side).size()>0?t.next(s.selector.side):v.find(s.selector.side).first(),h.verbose("Active side set to",t),h.verbose("Next side set to",g)},stageSize:function(){var e={width:g.outerWidth(),height:g.outerHeight()};h.verbose("Resizing stage to fit new content",e),v.css({width:e.width,height:e.height})},nextSide:function(e){g=v.find(e),0===g.size()&&h.error(k.side),h.verbose("Next side manually set to",g)},active:function(){h.verbose("Setting new side to active",g),y.removeClass(T.active),g.addClass(T.active),h.set.defaultSide()}},flip:{up:function(){h.debug("Flipping up",g),h.is.animating()?h.queue("flip.up"):(h.stage.above(),h.animate(h.getTransform.up()))},down:function(){h.debug("Flipping down",g),h.is.animating()?h.queue("flip.down"):(h.stage.below(),h.animate(h.getTransform.down()))},left:function(){h.debug("Flipping left",g),h.is.animating()?h.queue("flip.left"):(h.stage.left(),h.animate(h.getTransform.left()))},right:function(){h.debug("Flipping right",g),h.is.animating()?h.queue("flip.right"):(h.stage.right(),h.animate(h.getTransform.right()))},over:function(){h.debug("Flipping over",g),h.is.animating()?h.queue("flip.over"):(h.stage.behind(),h.animate(h.getTransform.behind()))}},getTransform:{up:function(){var e={y:-((t.outerHeight()-g.outerHeight())/2),z:-(t.outerHeight()/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(-90deg)"}},down:function(){var e={y:-((t.outerHeight()-g.outerHeight())/2),z:-(t.outerHeight()/2)};return{transform:"translateY("+e.y+"px) translateZ("+e.z+"px) rotateX(90deg)"}},left:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2),z:-(t.outerWidth()/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(90deg)"}},right:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2),z:-(t.outerWidth()/2)};return{transform:"translateX("+e.x+"px) translateZ("+e.z+"px) rotateY(-90deg)"}},behind:function(){var e={x:-((t.outerWidth()-g.outerWidth())/2)};return{transform:"translateX("+e.x+"px) rotateY(180deg)"}}},stage:{above:function(){var e={origin:(t.outerHeight()-g.outerHeight())/2,depth:{active:g.outerHeight()/2,next:t.outerHeight()/2}};h.verbose("Setting the initial animation position as above",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",top:e.origin+"px",transform:"rotateX(90deg) translateZ("+e.depth.next+"px)"})},below:function(){var e={origin:(t.outerHeight()-g.outerHeight())/2,depth:{active:g.outerHeight()/2,next:t.outerHeight()/2}};h.verbose("Setting the initial animation position as below",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",top:e.origin+"px",transform:"rotateX(-90deg) translateZ("+e.depth.next+"px)"})},left:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as left",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(-90deg) translateZ("+e.depth.next+"px)"})},right:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as left",g,e),t.css({transform:"rotateY(0deg) translateZ("+e.depth.active+"px)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(90deg) translateZ("+e.depth.next+"px)"})},behind:function(){var e={origin:(t.outerWidth()-g.outerWidth())/2,depth:{active:g.outerWidth()/2,next:t.outerWidth()/2}};h.verbose("Setting the initial animation position as behind",g,e),t.css({transform:"rotateY(0deg)"}),g.addClass(T.animating).css({display:"block",left:e.origin+"px",transform:"rotateY(-180deg)"})}},setting:function(t,n){return n===o?s[t]:(e.isPlainObject(t)?(h.verbose("Modifying settings object",t,n),e.extend(!0,s,t)):(h.verbose("Modifying setting",t,n),s[t]=n),o)},internal:function(t,n){return n===o?h[t]:(e.isPlainObject(t)?(h.verbose("Modifying internal property",t,n),e.extend(!0,h,t)):(h.verbose("Changing internal method to",n),h[t]=n),o)},debug:function(){s.debug&&(s.performance?h.performance.log(arguments):h.debug=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},verbose:function(){s.verbose&&s.debug&&(s.performance?h.performance.log(arguments):h.verbose=Function.prototype.bind.call(console.info,console,s.moduleName+":"))},error:function(){h.error=Function.prototype.bind.call(console.log,console,s.moduleName+":")},performance:{log:function(e){var t,n,o;s.performance&&(t=(new Date).getTime(),o=u||t,n=t-o,u=t,d.push({Element:w,Name:e[0],Arguments:e[1]||"None","Execution Time":n}),clearTimeout(h.performance.timer),h.performance.timer=setTimeout(h.performance.display,100))},display:function(){var t=s.moduleName,n=(s.moduleName+": "+l+"("+a.size()+" elements)",0);l&&(t+=" Performance ("+l+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"],console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(t,n,i){var a,s;return n=n||p,i=w||i,"string"==typeof t&&C!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(C[n])&&t!=a?(C=C[n],!0):C[n]!==o?(s=C[n],!0):(h.error(errors.method),!1)})),e.isFunction(s)?(C.verbose("Executing invoked function",s),s.apply(i,n)):s||!1}},f?(C===o&&h.initialize(),i=h.invoke(m)):(C!==o&&h.destroy(),h.initialize())}),i?i:this},e.fn.shape.settings={moduleName:"Shape Module",debug:!0,verbose:!0,performance:!0,namespace:"shape",beforeChange:function(){},onChange:function(){},useCSS:!0,duration:1e3,easing:"easeInOutQuad",error:{side:"You tried to switch to a side that does not exist.",method:"The method you called is not defined"},className:{css:"css",animating:"animating",hidden:"hidden",active:"active"},selector:{sides:".sides",side:".side"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/tab.min.js b/build/minified/modules/tab.min.js index 80c94dcb6..54bf3c0f9 100644 --- a/build/minified/modules/tab.min.js +++ b/build/minified/modules/tab.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.tabNavigation=function(n){var i,a,r,s,c,l=e.extend(!0,{},e.fn.tabNavigation.settings,n),u=e(this),d=e(l.context).find(l.selector.tabs),f=!0,m={},p=0,g=l.className,h=l.metadata,v=l.namespace,b=l.errors,y=u.data("module"),x=arguments[0],w=y!==o&&"string"==typeof x,C=[].slice.call(arguments,1);return s={initialize:function(){s.debug("Initializing Tabs",u),l.history&&l.path!==!1&&(e.address!==o?(s.verbose("Address library found adding state change event"),e.address.state(l.path).change(s.event.history.change)):s.error(b.state)),e.isWindow(u.get(0))||u.on("click."+v,s.event.click),u.data("module",s)},destroy:function(){s.debug("Destroying tabs",u),u.off("."+v)},event:{click:function(){s.debug("Navigation clicked");var t=e(this).data(h.tab);t!==o?t!==i&&(l.history?e.address.value(t):s.change(t)):s.debug("No tab specified")},history:{change:function(t){var n=t.pathNames.join("/")||s.get.initialPath(),i=l.templates.determineTitle(n)||!1;s.debug("History change event",n,t),r=t,n!==o&&s.change(n),i&&e.address.title(i)}}},refresh:function(){i&&(s.debug("Refreshing tab",i),s.change(i))},cache:{read:function(e){return e!==o?m[e]:m},add:function(e,t){e=e||i,s.debug("Adding cached content for",e),m[e]=t},remove:function(e){e=e||i,s.debug("Removing cached content for",e),delete m[e]}},change:function(n){var c=s.get.defaultPathArray(n);s.deactivate.all(),e.each(c,function(u,d){var p=c.slice(0,u+1),g=s.utils.arrayToPath(p),h=s.utils.last(c)==g,v=s.is.tab(g),b=!v,y=t.history&&t.history.pushState,x=y&&l.ignoreFirstLoad&&f,w=e.isPlainObject(l.apiSettings),C=s.get.tabElement(g);return s.verbose("Looking for tab",d),b?(s.verbose("Tab is not found, assuming it is a parameter",d),!0):(v&&(s.verbose("Tab was found",d),i=g,a=s.utils.filterArray(c,p),h&&w?x?(s.debug("Ignoring remote content on first tab load",g),f=!1,m[n]=C.html(),s.activate.all(g),e.proxy(l.onTabInit,C)(g,a,r)):(s.activate.navigation(g),s.content.fetch(g,l.onTabLoad)):(s.debug("Opened tab",g),s.activate.all(g),e.proxy(l.onTabLoad,C)(g,a,r))),o)})},content:{fetch:function(t){var n=s.get.tabElement(t),c=m[t]||!1,u={dataType:"html",stateContext:n,success:function(o){m[t]=o,s.content.update(t,o),t==i?(s.debug("Content loaded",t),s.activate.tab(t)):s.debug("Content loaded in background",t),e.proxy(l.onTabInit,n)(t,a,r)},urlData:{tab:t}},d=n.data(h.promise)||!1,f=d&&"pending"===d.state();l.cache&&c?(s.debug("Showing existing content",t),s.activate.tab(t),e.proxy(l.onTabLoad,n)(t,a,r)):f?(s.debug("Content is already loading",t),n.addClass(g.loading)):e.api!==o?(s.debug("Retrieving content",t),e.api(e.extend(!0,{},l.apiSettings,u))):s.error(b.api)},update:function(e,t){s.debug("Updating html for",e);var n=s.get.tabElement(e);n.html(t)}},activate:{all:function(e){s.activate.tab(e),s.activate.navigation(e)},tab:function(e){var t=s.get.tabElement(e);s.verbose("Showing tab content for",t),t.addClass(g.active)},navigation:function(e){var t=s.get.navElement(e);s.verbose("Activating tab navigation for",t),t.addClass(g.active)}},deactivate:{all:function(){s.deactivate.navigation(),s.deactivate.tabs()},navigation:function(){u.removeClass(g.active)},tabs:function(){d.removeClass(g.active+" "+g.loading)}},is:{tab:function(e){return s.get.tabElement(e).size()>0}},get:{initialPath:function(){return u.eq(0).data(h.tab)||d.eq(0).data(h.tab)},defaultPathArray:function(e){return s.utils.pathToArray(s.get.defaultPath(e))},defaultPath:function(e){var t=u.filter("[data-"+h.tab+'^="'+e+'/"]').eq(0),n=t.data(h.tab)||!1;if(n){if(s.debug("Found default tab",n),l.maxDepth>p)return p++,s.get.defaultPath(n);s.error(b.recursion)}return p=0,e},navElement:function(e){return e=e||i,u.filter("[data-"+h.tab+'="'+e+'"]')},tabElement:function(e){var t,n,o,a;return e=e||i,o=s.utils.pathToArray(e),a=s.utils.last(o),t=d.filter("[data-"+h.tab+'="'+a+'"]'),n=d.filter("[data-"+h.tab+'="'+e+'"]'),t.size()>0?t:n},tab:function(){return i}},utils:{filterArray:function(t,n){return e.grep(t,function(t){return-1==e.inArray(t,n)})},last:function(t){return e.isArray(t)?t[t.length-1]:!1},pathToArray:function(e){return e===o&&(e=i),"string"==typeof e?e.split("/"):[e]},arrayToPath:function(t){return e.isArray(t)?t.join("/"):!1}},setting:function(e,t){return t===o?l[e]:(l[e]=t,o)},verbose:function(){l.verbose&&s.debug.apply(this,arguments)},debug:function(){var e=[],t=l.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),l.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=l.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};o=Function.prototype.bind.call(o,console),l.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,i){var a,r;return i=i||[].slice.call(arguments,2),"string"==typeof t&&y!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(y[n])&&t!=a?(y=y[n],!0):y[n]!==o?(r=y[n],!0):(s.error(l.errors.method),!1)})),e.isFunction(r)?r.apply(n,i):r}},w?c=s.invoke(x,this,C):s.initialize(),c!==o?c:this},e.tabNavigation=function(n){e(t).tabNavigation(n)},e.fn.tabNavigation.settings={moduleName:"Tab Module",verbose:!1,debug:!0,namespace:"tab",onTabInit:function(){},onTabLoad:function(){},templates:{determineTitle:function(){}},history:!1,path:!1,context:"body",maxDepth:25,ignoreFirstLoad:!0,alwaysRefresh:!1,cache:!0,apiSettings:!1,errors:{api:"You attempted to load content without API module",noContent:"The tab you specified is missing a content url.",method:"The method you called is not defined",state:"The state library has not been initialized",missingTab:"Missing tab: ",recursion:"Max recursive depth reached"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".tab"}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.tabNavigation=function(n){var i,a,r,s,c,l=e.extend(!0,{},e.fn.tabNavigation.settings,n),u=e(this),d=e(l.context).find(l.selector.tabs),m=!0,f={},p=0,g=l.className,h=l.metadata,v=l.namespace,b=l.errors,y=u.data("module"),x=arguments[0],w=y!==o&&"string"==typeof x,C=[].slice.call(arguments,1);return s={initialize:function(){s.debug("Initializing Tabs",u),l.history&&l.path!==!1&&(e.address!==o?(s.verbose("Address library found adding state change event"),e.address.state(l.path).change(s.event.history.change)):s.error(b.state)),e.isWindow(u.get(0))||u.on("click."+v,s.event.click),u.data("module",s)},destroy:function(){s.debug("Destroying tabs",u),u.off("."+v)},event:{click:function(){s.debug("Navigation clicked");var t=e(this).data(h.tab);t!==o?t!==i&&(l.history?e.address.value(t):s.change(t)):s.debug("No tab specified")},history:{change:function(t){var n=t.pathNames.join("/")||s.get.initialPath(),i=l.templates.determineTitle(n)||!1;s.debug("History change event",n,t),r=t,n!==o&&s.change(n),i&&e.address.title(i)}}},refresh:function(){i&&(s.debug("Refreshing tab",i),s.change(i))},cache:{read:function(e){return e!==o?f[e]:f},add:function(e,t){e=e||i,s.debug("Adding cached content for",e),f[e]=t},remove:function(e){e=e||i,s.debug("Removing cached content for",e),delete f[e]}},change:function(n){var c=s.get.defaultPathArray(n);s.deactivate.all(),e.each(c,function(u,d){var p=c.slice(0,u+1),g=s.utils.arrayToPath(p),h=s.utils.last(c)==g,v=s.is.tab(g),b=!v,y=t.history&&t.history.pushState,x=y&&l.ignoreFirstLoad&&m,w=e.isPlainObject(l.apiSettings),C=s.get.tabElement(g);return s.verbose("Looking for tab",d),b?(s.verbose("Tab is not found, assuming it is a parameter",d),!0):(v&&(s.verbose("Tab was found",d),i=g,a=s.utils.filterArray(c,p),h&&w?x?(s.debug("Ignoring remote content on first tab load",g),m=!1,f[n]=C.html(),s.activate.all(g),e.proxy(l.onTabInit,C)(g,a,r)):(s.activate.navigation(g),s.content.fetch(g,l.onTabLoad)):(s.debug("Opened tab",g),s.activate.all(g),e.proxy(l.onTabLoad,C)(g,a,r))),o)})},content:{fetch:function(t){var n=s.get.tabElement(t),c=f[t]||!1,u={dataType:"html",stateContext:n,success:function(o){f[t]=o,s.content.update(t,o),t==i?(s.debug("Content loaded",t),s.activate.tab(t)):s.debug("Content loaded in background",t),e.proxy(l.onTabInit,n)(t,a,r)},urlData:{tab:t}},d=n.data(h.promise)||!1,m=d&&"pending"===d.state();l.cache&&c?(s.debug("Showing existing content",t),s.activate.tab(t),e.proxy(l.onTabLoad,n)(t,a,r)):m?(s.debug("Content is already loading",t),n.addClass(g.loading)):e.api!==o?(s.debug("Retrieving content",t),e.api(e.extend(!0,{},l.apiSettings,u))):s.error(b.api)},update:function(e,t){s.debug("Updating html for",e);var n=s.get.tabElement(e);n.html(t)}},activate:{all:function(e){s.activate.tab(e),s.activate.navigation(e)},tab:function(e){var t=s.get.tabElement(e);s.verbose("Showing tab content for",t),t.addClass(g.active)},navigation:function(e){var t=s.get.navElement(e);s.verbose("Activating tab navigation for",t),t.addClass(g.active)}},deactivate:{all:function(){s.deactivate.navigation(),s.deactivate.tabs()},navigation:function(){u.removeClass(g.active)},tabs:function(){d.removeClass(g.active+" "+g.loading)}},is:{tab:function(e){return s.get.tabElement(e).size()>0}},get:{initialPath:function(){return u.eq(0).data(h.tab)||d.eq(0).data(h.tab)},defaultPathArray:function(e){return s.utils.pathToArray(s.get.defaultPath(e))},defaultPath:function(e){var t=u.filter("[data-"+h.tab+'^="'+e+'/"]').eq(0),n=t.data(h.tab)||!1;if(n){if(s.debug("Found default tab",n),l.maxDepth>p)return p++,s.get.defaultPath(n);s.error(b.recursion)}return p=0,e},navElement:function(e){return e=e||i,u.filter("[data-"+h.tab+'="'+e+'"]')},tabElement:function(e){var t,n,o,a;return e=e||i,o=s.utils.pathToArray(e),a=s.utils.last(o),t=d.filter("[data-"+h.tab+'="'+a+'"]'),n=d.filter("[data-"+h.tab+'="'+e+'"]'),t.size()>0?t:n},tab:function(){return i}},utils:{filterArray:function(t,n){return e.grep(t,function(t){return-1==e.inArray(t,n)})},last:function(t){return e.isArray(t)?t[t.length-1]:!1},pathToArray:function(e){return e===o&&(e=i),"string"==typeof e?e.split("/"):[e]},arrayToPath:function(t){return e.isArray(t)?t.join("/"):!1}},setting:function(e,t){return t===o?l[e]:(l[e]=t,o)},verbose:function(){l.verbose&&s.debug.apply(this,arguments)},debug:function(){var e=[],t=l.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),l.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=l.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};o=Function.prototype.bind.call(o,console),l.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,i){var a,r;return i=i||[].slice.call(arguments,2),"string"==typeof t&&y!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(y[n])&&t!=a?(y=y[n],!0):y[n]!==o?(r=y[n],!0):(s.error(l.errors.method),!1)})),e.isFunction(r)?r.apply(n,i):r}},w?c=s.invoke(x,this,C):s.initialize(),c!==o?c:this},e.tabNavigation=function(n){e(t).tabNavigation(n)},e.fn.tabNavigation.settings={moduleName:"Tab Module",verbose:!1,debug:!0,namespace:"tab",onTabInit:function(){},onTabLoad:function(){},templates:{determineTitle:function(){}},history:!1,path:!1,context:"body",maxDepth:25,ignoreFirstLoad:!0,alwaysRefresh:!1,cache:!0,apiSettings:!1,errors:{api:"You attempted to load content without API module",noContent:"The tab you specified is missing a content url.",method:"The method you called is not defined",state:"The state library has not been initialized",missingTab:"Missing tab: ",recursion:"Max recursive depth reached"},metadata:{tab:"tab",loaded:"loaded",promise:"promise"},className:{loading:"loading",active:"active"},selector:{tabs:".tab"}}})(jQuery,window,document); \ No newline at end of file diff --git a/build/packaged/modules/behavior/form.js b/build/packaged/modules/behavior/form.js index 72b7e5447..5997acd85 100644 --- a/build/packaged/modules/behavior/form.js +++ b/build/packaged/modules/behavior/form.js @@ -443,18 +443,17 @@ $.fn.form = function(fields, parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/packaged/modules/carousel.js b/build/packaged/modules/carousel.js index e95867e0f..6f3eb8c66 100644 --- a/build/packaged/modules/carousel.js +++ b/build/packaged/modules/carousel.js @@ -264,7 +264,7 @@ $.fn.carousel = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/packaged/modules/checkbox.js b/build/packaged/modules/checkbox.js index 3895f5168..fafb03065 100644 --- a/build/packaged/modules/checkbox.js +++ b/build/packaged/modules/checkbox.js @@ -253,7 +253,7 @@ $.fn.checkbox = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/packaged/modules/dimmer.js b/build/packaged/modules/dimmer.js index 4adf71fb7..9f9539dd1 100644 --- a/build/packaged/modules/dimmer.js +++ b/build/packaged/modules/dimmer.js @@ -12,53 +12,84 @@ $.fn.dimmer = function(parameters) { var $allModules = $(this), - $document = $(document), - settings = $.extend(true, {}, $.fn.dimmer.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dimmer.settings, parameters) + : $.fn.dimmer.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), - selector = $allModules.selector || '', time = new Date().getTime(), performance = [], - namespace = settings.namespace, - className = settings.className, - errors = settings.errors, - query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - invokedResponse, - allModules + + selector = settings.selector, + namespace = settings.namespace, + className = settings.className, + error = settings.error, + + invokedResponse ; $allModules .each(function() { var - $module = $(this), - $dimmer = $module.children(selector.dimmer), + $module = $(this), + $dimmer = $module.children(selector.dimmer).first(), + + animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd', - element = this, - instance = $module.data('module-' + namespace), + element = this, + instance = $dimmer.data('module-' + namespace), module ; module = { initialize: function() { - if( $module.is(settings.selector.dimmer) ) { + if( module.is.dimmer() ) { $dimmer = $module; + $module = $dimmer.parent(); + module.debug('Module initialized as dimmer', $dimmer); + } + else if( module.is.pageDimmer() ) { + $dimmer = $module; + $module = $('body'); + module.debug('Initializing page dimmer', $dimmer); } else { - if($dimmer.size() === 0) { - module.create(); + if( module.has.dimmer() ) { + $dimmer = $module.find(selector.dimmer); + module.debug('Module initialized with found dimmer', $dimmer); } - $dimmer = $module.find(selector.dimmer); + else { + $dimmer = settings.template.dimmer(); + $dimmer + .appendTo($module) + ; + module.debug('Module initialized with created dimmer', $dimmer); + } + } + if(settings.closable) { + $dimmer + .on('click', module.event.click) + ; } - module.debug('Module initialized with dimmer', $dimmer); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; + $dimmer + .data('module-' + namespace, instance) + ; }, destroy: function() { @@ -68,28 +99,63 @@ $.fn.dimmer = function(parameters) { ; }, + event: { + + click: function(event) { + module.verbose('Determining if event occured on dimmer', event); + if( event.target == element ) { + module.hide(); + } + } + + }, + animate: { show: function() { + module.set.dimmed(); if(settings.animation.show == 'css') { + module.verbose('Showing dimmer animation with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function() { + $dimmer.removeClass(className.show); + module.set.active(); + }) + .addClass(className.show) ; } else if(settings.animation.show == 'fade') { + module.verbose('Showing dimmer animation with javascript'); $dimmer - .fadeTo(settings.duration, settings.opacity) + .stop() + .css({ + opacity : 0, + width : '100%', + height : '100%' + }) + .fadeTo(settings.duration, 1, module.set.active) ; } }, hide: function() { - if(settings.animation.show == 'css') { + module.remove.dimmed(); + if(settings.animation.hide == 'css') { + module.verbose('Hiding dimmer with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function(){ + module.remove.active(); + $dimmer.removeClass(className.hide); + }) + .addClass(className.hide) ; } - else if(settings.animation.show == 'fade') { + else if(settings.animation.hide == 'fade') { + module.verbose('Hiding dimmer with javascript'); $dimmer - .fadeOut(settings.duration) + .stop() + .fadeOut(settings.duration, function() { + $dimmer.removeAttr('style'); + module.remove.active(); + }) ; } else if( $.isFunction(settings.animation.hide) ) { @@ -98,18 +164,34 @@ $.fn.dimmer = function(parameters) { } }, + has: { + dimmer: function() { + return ( $module.children(selector.dimmer).size() > 0 ); + } + }, + is: { + animating: function() { + return ( $dimmer.hasClass(className.show) || $dimmer.hasClass(className.hide) || $dimmer.is(':animated') ); + }, + dimmer: function() { + return $module.is(selector.dimmer); + }, + + dimmable: function() { + return $module.is(selector.dimmable); + }, enabled: function() { return !$module.hasClass(className.disabled); }, disabled: function() { return $module.hasClass(className.disabled); }, - visible: function() { - return $dimmer.is(':visible'); + active: function() { + return $dimmer.hasClass(className.active); }, - hidden: function() { - return $dimmer.is(':not(:visible)'); + pageDimmer: function() { + return $dimmer.is(selector.pageDimmer); } }, @@ -119,21 +201,51 @@ $.fn.dimmer = function(parameters) { } }, + set: { + active: function() { + $dimmer.addClass(className.active); + }, + dimmed: function() { + $module.addClass(className.dimmed); + }, + disabled: function() { + $dimmer.addClass(className.disabled); + } + }, + + remove: { + active: function() { + $dimmer.removeClass(className.active); + }, + dimmed: function() { + $module.removeClass(className.dimmed); + }, + disabled: function() { + $dimmer.removeClass(className.disabled); + } + }, + show: function() { module.debug('Showing dimmer', $dimmer); - if( !module.is.visible() && module.is.enabled() ) { + if( !module.is.active() && module.is.enabled() ) { module.animate.show(); - $.proxy(settings.onShow, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onShow, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is already shown or disabled'); } }, hide: function() { - if( !module.is.hidden() ) { + if( module.is.active() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(); - $.proxy(settings.onHide, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onHide, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is not visible'); } }, @@ -146,7 +258,7 @@ $.fn.dimmer = function(parameters) { module.hide(); } }, - + setting: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { @@ -211,41 +323,39 @@ $.fn.dimmer = function(parameters) { performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -261,18 +371,17 @@ $.fn.dimmer = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(errors.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -293,6 +402,7 @@ $.fn.dimmer = function(parameters) { } }) ; + return (invokedResponse) ? invokedResponse : this @@ -301,37 +411,48 @@ $.fn.dimmer = function(parameters) { $.fn.dimmer.settings = { - moduleName : 'Dimmer Module', + moduleName : 'Dimmer', namespace : 'dimmer', verbose : true, debug : true, - performance : false, + performance : true, animation : { - show: 'css', - hide: 'css' + show: 'fade', + hide: 'fade' }, + closable : true, duration : 500, - opacity : 0.85, onChange : function(){}, onShow : function(){}, onHide : function(){}, - errors : { + error : { method : 'The method you called is not defined.' }, selector: { - dimmer : '.ui.dimmer' + dimmable : '.ui.dimmable', + dimmer : '.ui.dimmer', + pageDimmer : '.ui.page.dimmer' + }, + + template: { + dimmer: function() { + return $('
').attr('class', 'ui dimmer'); + } }, className : { - dimmed : 'dimmed', - active : 'active', - disabled : 'disabled' + active : 'active', + dimmed : 'dimmed', + disabled : 'disabled', + animating : 'animating', + hide : 'hide', + show : 'show' } }; diff --git a/build/packaged/modules/dropdown.js b/build/packaged/modules/dropdown.js index 6d99c4d5c..cb544e4ef 100644 --- a/build/packaged/modules/dropdown.js +++ b/build/packaged/modules/dropdown.js @@ -14,7 +14,9 @@ $.fn.dropdown = function(parameters) { $allModules = $(this), $document = $(document), - settings = $.extend(true, {}, $.fn.dropdown.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.fn.dropdown.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, @@ -506,7 +508,7 @@ $.fn.dropdown = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/packaged/modules/popup.js b/build/packaged/modules/popup.js index 56ac6b98b..1a931fcaa 100644 --- a/build/packaged/modules/popup.js +++ b/build/packaged/modules/popup.js @@ -1,7 +1,10 @@ /* ****************************** - Tooltip / Popup + Semantic Module: Popup Author: Jack Lukic - Notes: First Commit Sep 07, 2012 + Notes: May 30, 2013 + + Simple plug-in to display popups + ****************************** */ ;(function ($, window, document, undefined) { @@ -9,19 +12,29 @@ $.fn.popup = function(parameters) { var $allModules = $(this), - - settings = $.extend(true, {}, $.fn.popup.settings, parameters), - + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.fn.popup.settings, + eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), time = new Date().getTime(), performance = [], - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + invokedResponse ; $allModules @@ -31,19 +44,13 @@ $.fn.popup = function(parameters) { $window = $(window), $offsetParent = $module.offsetParent(), $popup = (settings.inline) - ? $module.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - + ? $module.next(selector.popup) + : $window.children(selector.popup).last(), + searchDepth = 0, - + element = this, instance = $module.data('module-' + settings.namespace), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, module ; @@ -51,6 +58,7 @@ $.fn.popup = function(parameters) { // binds events initialize: function() { + module.debug('Initializing module', $module); if(settings.on == 'hover') { $module .on('mouseenter.' + namespace, module.event.mouseenter) @@ -65,8 +73,14 @@ $.fn.popup = function(parameters) { $window .on('resize.' + namespace, module.event.resize) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; $module - .data('module-' + namespace, module) + .data('module-' + namespace, instance) ; }, @@ -508,44 +522,42 @@ $.fn.popup = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -561,24 +573,23 @@ $.fn.popup = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; } - }; + if(methodInvoked) { if(instance === undefined) { module.initialize(); @@ -586,13 +597,14 @@ $.fn.popup = function(parameters) { invokedResponse = module.invoke(query); } else { - if(instance !== undefined) { + if(instance === undefined) { module.destroy(); } module.initialize(); } }) ; + return (invokedResponse) ? invokedResponse : this @@ -600,31 +612,31 @@ $.fn.popup = function(parameters) { }; $.fn.popup.settings = { - - moduleName : 'Pop-up Module', + + moduleName : 'Popup', debug : true, verbose : true, performance : true, namespace : 'popup', - + onShow : function(){}, onHide : function(){}, - + content : false, html : false, title : false, - + on : 'hover', clicktoClose : true, - + position : 'top center', delay : 0, inline : true, - + duration : 250, easing : 'easeOutQuint', animation : 'pop', - + distanceAway : 2, arrowOffset : 0, maxSearchDepth : 10, diff --git a/build/packaged/modules/shape.js b/build/packaged/modules/shape.js index 017fc8bcf..f638fc3c2 100644 --- a/build/packaged/modules/shape.js +++ b/build/packaged/modules/shape.js @@ -40,7 +40,7 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - endTransition = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', + transitionEnd = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -111,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(endTransition, callback) + .one(transitionEnd, callback) ; } else { @@ -137,7 +137,7 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(endTransition, function() { + .one(transitionEnd, function() { module.debug('Executing queued animation'); $module.shape(method); }) @@ -614,7 +614,7 @@ $.fn.shape = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/packaged/semantic.min.css.REMOVED.git-id b/build/packaged/semantic.min.css.REMOVED.git-id index aafe2a7a7..3e8fe7c60 100644 --- a/build/packaged/semantic.min.css.REMOVED.git-id +++ b/build/packaged/semantic.min.css.REMOVED.git-id @@ -1 +1 @@ -8330aa92143bdf65d9e545aa114127ad5da19fba \ No newline at end of file +9e6f6cf6a8b07c39de44b1f9d9237c2c858599d9 \ No newline at end of file diff --git a/build/packaged/semantic.min.js.REMOVED.git-id b/build/packaged/semantic.min.js.REMOVED.git-id index a3d6cd041..b55dfe2cb 100644 --- a/build/packaged/semantic.min.js.REMOVED.git-id +++ b/build/packaged/semantic.min.js.REMOVED.git-id @@ -1 +1 @@ -46f95e52fb6ce7bcdc26f7ff75617f8ad17493ec \ No newline at end of file +9cdab95e993a45b7b1ee790f44757d8acc6cd475 \ No newline at end of file diff --git a/build/uncompressed/elements/progress.css b/build/uncompressed/elements/progress.css index eea6650a0..2dccfc31c 100644 --- a/build/uncompressed/elements/progress.css +++ b/build/uncompressed/elements/progress.css @@ -52,6 +52,7 @@ .ui.successful.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- Failed @@ -63,6 +64,7 @@ .ui.failed.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- Active @@ -82,11 +84,11 @@ -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; - -webkit-animation: animate-emphasis 2s ease-out infinite; - -moz-animation: animate-emphasis 2s ease-out infinite; - animation: animate-emphasis 2s ease-out infinite; + -webkit-animation: progress-active 2s ease-out infinite; + -moz-animation: progress-active 2s ease-out infinite; + animation: progress-active 2s ease-out infinite; } -@-webkit-keyframes animate-emphasis { +@-webkit-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -99,7 +101,7 @@ width: 95%; } } -@-moz-keyframes animate-emphasis { +@-moz-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -112,7 +114,7 @@ width: 100%; } } -@keyframes animate-emphasis { +@keyframes progress-active { 0% { opacity: 0; width: 0; @@ -135,6 +137,7 @@ .ui.disabled.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /******************************* Variations @@ -178,10 +181,11 @@ background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .ui.progress.active.striped .bar { - -webkit-animation: animate-striped 3s linear infinite; - -moz-animation: animate-striped 3s linear infinite; + -webkit-animation: progress-striped 3s linear infinite; + -moz-animation: progress-striped 3s linear infinite; + animation: progress-striped 3s linear infinite; } -@-webkit-keyframes animate-striped { +@-webkit-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -189,7 +193,7 @@ background-position: 60px 0; } } -@-moz-keyframes animate-striped { +@-moz-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -197,7 +201,7 @@ background-position: 60px 0; } } -@keyframes animate-striped { +@keyframes progress-striped { 0% { background-position: 0px 0; } diff --git a/build/uncompressed/modules/behavior/form.js b/build/uncompressed/modules/behavior/form.js index 72b7e5447..5997acd85 100644 --- a/build/uncompressed/modules/behavior/form.js +++ b/build/uncompressed/modules/behavior/form.js @@ -443,18 +443,17 @@ $.fn.form = function(fields, parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/uncompressed/modules/carousel.js b/build/uncompressed/modules/carousel.js index e95867e0f..6f3eb8c66 100644 --- a/build/uncompressed/modules/carousel.js +++ b/build/uncompressed/modules/carousel.js @@ -264,7 +264,7 @@ $.fn.carousel = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/uncompressed/modules/checkbox.js b/build/uncompressed/modules/checkbox.js index 3895f5168..fafb03065 100644 --- a/build/uncompressed/modules/checkbox.js +++ b/build/uncompressed/modules/checkbox.js @@ -253,7 +253,7 @@ $.fn.checkbox = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/uncompressed/modules/dimmer.css b/build/uncompressed/modules/dimmer.css index 4d13469a6..3820d556b 100644 --- a/build/uncompressed/modules/dimmer.css +++ b/build/uncompressed/modules/dimmer.css @@ -12,16 +12,21 @@ /******************************* Dimmer *******************************/ +.ui.dimmable { + position: relative; +} .ui.dimmer { - display: none; position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - background-color: #000000; + top: 0em !important; + left: 0em !important; + background-color: rgba(0, 0, 0, 0.85); opacity: 0; line-height: 1; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + -o-animation-fill-mode: forwards; + -ms-animation-fill-mode: forwards; + animation-fill-mode: forwards; -webkit-transition: background-color 0.5s ease; -moz-transition: background-color 0.5s ease; -o-transition: background-color 0.5s ease; @@ -29,24 +34,44 @@ transition: background-color 0.5s ease; z-index: 100; } -body > .ui.dimmer { +body.dimmable > .ui.dimmer { position: fixed; } +/* Loose Coupling */ +.ui.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.ui.horizontal.segment > .ui.dimmer, +.ui.vertical.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} /******************************* States *******************************/ +.ui.dimmable.dimmed :not(.dimmer) { + -webkit-filter: blur(10px) grayscale(0.7);; + -moz-filter: blur(10px) grayscale(0.7);; + filter: blur(10px) grayscale(0.7);; +} +.ui.dimmable.dimmed > .ui.dimmer, .ui.dimmer.active { - opacity: 0.85; - display: block; + width: 100%; + height: 100%; + opacity: 1; } .ui.disabled.dimmer { - display: none !important; + width: 0em !important; + height: 0em !important; } /******************************* Variations *******************************/ /*-------------- - Page + Page ---------------*/ .ui.page.dimmer { position: fixed; @@ -55,7 +80,7 @@ body > .ui.dimmer { Inverted ---------------*/ .ui.inverted.dimmer { - background-color: #FFFFFF; + background-color: rgba(255, 255, 255, 0.85); } /*-------------- Simple @@ -69,7 +94,7 @@ body > .ui.dimmer { width: 0px; background-color: rgba(0, 0, 0, 0); } -.dimmed > .ui.simple.dimmer { +.ui.dimmable.dimmed > .ui.simple.dimmer { overflow: visible; opacity: 1; width: 100%; @@ -79,6 +104,90 @@ body > .ui.dimmer { .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0); } -.dimmed > .ui.simple.inverted.dimmer { +.ui.dimmable.dimmed > .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0.85); } +/******************************* + Animations +*******************************/ +.ui.dimmer.show { + width: 100%; + height: 100%; + -webkit-animation: dimmer-show 0.5s; + -moz-animation: dimmer-show 0.5s; + animation: dimmer-show 0.5s; +} +@-webkit-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-moz-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +.ui.dimmer.hide { + -webkit-animation: dimmer-hide 0.5s; + -moz-animation: dimmer-hide 0.5s; + animation: dimmer-hide 0.5s; +} +@-webkit-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@-moz-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} diff --git a/build/uncompressed/modules/dimmer.js b/build/uncompressed/modules/dimmer.js index 4adf71fb7..9f9539dd1 100644 --- a/build/uncompressed/modules/dimmer.js +++ b/build/uncompressed/modules/dimmer.js @@ -12,53 +12,84 @@ $.fn.dimmer = function(parameters) { var $allModules = $(this), - $document = $(document), - settings = $.extend(true, {}, $.fn.dimmer.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dimmer.settings, parameters) + : $.fn.dimmer.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), - selector = $allModules.selector || '', time = new Date().getTime(), performance = [], - namespace = settings.namespace, - className = settings.className, - errors = settings.errors, - query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - invokedResponse, - allModules + + selector = settings.selector, + namespace = settings.namespace, + className = settings.className, + error = settings.error, + + invokedResponse ; $allModules .each(function() { var - $module = $(this), - $dimmer = $module.children(selector.dimmer), + $module = $(this), + $dimmer = $module.children(selector.dimmer).first(), + + animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd', - element = this, - instance = $module.data('module-' + namespace), + element = this, + instance = $dimmer.data('module-' + namespace), module ; module = { initialize: function() { - if( $module.is(settings.selector.dimmer) ) { + if( module.is.dimmer() ) { $dimmer = $module; + $module = $dimmer.parent(); + module.debug('Module initialized as dimmer', $dimmer); + } + else if( module.is.pageDimmer() ) { + $dimmer = $module; + $module = $('body'); + module.debug('Initializing page dimmer', $dimmer); } else { - if($dimmer.size() === 0) { - module.create(); + if( module.has.dimmer() ) { + $dimmer = $module.find(selector.dimmer); + module.debug('Module initialized with found dimmer', $dimmer); } - $dimmer = $module.find(selector.dimmer); + else { + $dimmer = settings.template.dimmer(); + $dimmer + .appendTo($module) + ; + module.debug('Module initialized with created dimmer', $dimmer); + } + } + if(settings.closable) { + $dimmer + .on('click', module.event.click) + ; } - module.debug('Module initialized with dimmer', $dimmer); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; + $dimmer + .data('module-' + namespace, instance) + ; }, destroy: function() { @@ -68,28 +99,63 @@ $.fn.dimmer = function(parameters) { ; }, + event: { + + click: function(event) { + module.verbose('Determining if event occured on dimmer', event); + if( event.target == element ) { + module.hide(); + } + } + + }, + animate: { show: function() { + module.set.dimmed(); if(settings.animation.show == 'css') { + module.verbose('Showing dimmer animation with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function() { + $dimmer.removeClass(className.show); + module.set.active(); + }) + .addClass(className.show) ; } else if(settings.animation.show == 'fade') { + module.verbose('Showing dimmer animation with javascript'); $dimmer - .fadeTo(settings.duration, settings.opacity) + .stop() + .css({ + opacity : 0, + width : '100%', + height : '100%' + }) + .fadeTo(settings.duration, 1, module.set.active) ; } }, hide: function() { - if(settings.animation.show == 'css') { + module.remove.dimmed(); + if(settings.animation.hide == 'css') { + module.verbose('Hiding dimmer with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function(){ + module.remove.active(); + $dimmer.removeClass(className.hide); + }) + .addClass(className.hide) ; } - else if(settings.animation.show == 'fade') { + else if(settings.animation.hide == 'fade') { + module.verbose('Hiding dimmer with javascript'); $dimmer - .fadeOut(settings.duration) + .stop() + .fadeOut(settings.duration, function() { + $dimmer.removeAttr('style'); + module.remove.active(); + }) ; } else if( $.isFunction(settings.animation.hide) ) { @@ -98,18 +164,34 @@ $.fn.dimmer = function(parameters) { } }, + has: { + dimmer: function() { + return ( $module.children(selector.dimmer).size() > 0 ); + } + }, + is: { + animating: function() { + return ( $dimmer.hasClass(className.show) || $dimmer.hasClass(className.hide) || $dimmer.is(':animated') ); + }, + dimmer: function() { + return $module.is(selector.dimmer); + }, + + dimmable: function() { + return $module.is(selector.dimmable); + }, enabled: function() { return !$module.hasClass(className.disabled); }, disabled: function() { return $module.hasClass(className.disabled); }, - visible: function() { - return $dimmer.is(':visible'); + active: function() { + return $dimmer.hasClass(className.active); }, - hidden: function() { - return $dimmer.is(':not(:visible)'); + pageDimmer: function() { + return $dimmer.is(selector.pageDimmer); } }, @@ -119,21 +201,51 @@ $.fn.dimmer = function(parameters) { } }, + set: { + active: function() { + $dimmer.addClass(className.active); + }, + dimmed: function() { + $module.addClass(className.dimmed); + }, + disabled: function() { + $dimmer.addClass(className.disabled); + } + }, + + remove: { + active: function() { + $dimmer.removeClass(className.active); + }, + dimmed: function() { + $module.removeClass(className.dimmed); + }, + disabled: function() { + $dimmer.removeClass(className.disabled); + } + }, + show: function() { module.debug('Showing dimmer', $dimmer); - if( !module.is.visible() && module.is.enabled() ) { + if( !module.is.active() && module.is.enabled() ) { module.animate.show(); - $.proxy(settings.onShow, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onShow, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is already shown or disabled'); } }, hide: function() { - if( !module.is.hidden() ) { + if( module.is.active() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(); - $.proxy(settings.onHide, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onHide, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is not visible'); } }, @@ -146,7 +258,7 @@ $.fn.dimmer = function(parameters) { module.hide(); } }, - + setting: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { @@ -211,41 +323,39 @@ $.fn.dimmer = function(parameters) { performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -261,18 +371,17 @@ $.fn.dimmer = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(errors.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -293,6 +402,7 @@ $.fn.dimmer = function(parameters) { } }) ; + return (invokedResponse) ? invokedResponse : this @@ -301,37 +411,48 @@ $.fn.dimmer = function(parameters) { $.fn.dimmer.settings = { - moduleName : 'Dimmer Module', + moduleName : 'Dimmer', namespace : 'dimmer', verbose : true, debug : true, - performance : false, + performance : true, animation : { - show: 'css', - hide: 'css' + show: 'fade', + hide: 'fade' }, + closable : true, duration : 500, - opacity : 0.85, onChange : function(){}, onShow : function(){}, onHide : function(){}, - errors : { + error : { method : 'The method you called is not defined.' }, selector: { - dimmer : '.ui.dimmer' + dimmable : '.ui.dimmable', + dimmer : '.ui.dimmer', + pageDimmer : '.ui.page.dimmer' + }, + + template: { + dimmer: function() { + return $('
').attr('class', 'ui dimmer'); + } }, className : { - dimmed : 'dimmed', - active : 'active', - disabled : 'disabled' + active : 'active', + dimmed : 'dimmed', + disabled : 'disabled', + animating : 'animating', + hide : 'hide', + show : 'show' } }; diff --git a/build/uncompressed/modules/dropdown.js b/build/uncompressed/modules/dropdown.js index 6d99c4d5c..cb544e4ef 100644 --- a/build/uncompressed/modules/dropdown.js +++ b/build/uncompressed/modules/dropdown.js @@ -14,7 +14,9 @@ $.fn.dropdown = function(parameters) { $allModules = $(this), $document = $(document), - settings = $.extend(true, {}, $.fn.dropdown.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.fn.dropdown.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, @@ -506,7 +508,7 @@ $.fn.dropdown = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/build/uncompressed/modules/modal.css b/build/uncompressed/modules/modal.css index 1c8e875b2..b352ea533 100644 --- a/build/uncompressed/modules/modal.css +++ b/build/uncompressed/modules/modal.css @@ -1,54 +1,3 @@ -/******************************* - Dimmer Styles - *******************************/ -/* the one true page dimmer */ -#dimmer { - position: absolute; - visibility: hidden; - top: 0px; - left: 0px; - z-index: 999; - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; -} -#dimmer .content { - position: fixed; - top: 0px; - left: 0px; - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; - visibility: hidden; - background-color: #000000; - opacity: 0.0; -} -/* a generic dimmer */ -.dimmer { - display: none; - position: absolute; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - opacity: 0; - background-color: #000000; - z-index: 999; -} -.white.dimmer { - background-color: #FFFFFF; -} -.loading .dimmer { - display: block; - opacity: 0.8; - -webkit-transition: opacity 0.5s linear; - -moz-transition: opacity 0.5s linear; - -o-transition: opacity 0.5s linear; - -ms-transition: opacity 0.5s linear; - transition: opacity 0.5s linear; -} /******************************* Modal Styles *******************************/ diff --git a/build/uncompressed/modules/popup.js b/build/uncompressed/modules/popup.js index 56ac6b98b..1a931fcaa 100644 --- a/build/uncompressed/modules/popup.js +++ b/build/uncompressed/modules/popup.js @@ -1,7 +1,10 @@ /* ****************************** - Tooltip / Popup + Semantic Module: Popup Author: Jack Lukic - Notes: First Commit Sep 07, 2012 + Notes: May 30, 2013 + + Simple plug-in to display popups + ****************************** */ ;(function ($, window, document, undefined) { @@ -9,19 +12,29 @@ $.fn.popup = function(parameters) { var $allModules = $(this), - - settings = $.extend(true, {}, $.fn.popup.settings, parameters), - + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.fn.popup.settings, + eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), time = new Date().getTime(), performance = [], - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + invokedResponse ; $allModules @@ -31,19 +44,13 @@ $.fn.popup = function(parameters) { $window = $(window), $offsetParent = $module.offsetParent(), $popup = (settings.inline) - ? $module.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - + ? $module.next(selector.popup) + : $window.children(selector.popup).last(), + searchDepth = 0, - + element = this, instance = $module.data('module-' + settings.namespace), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, module ; @@ -51,6 +58,7 @@ $.fn.popup = function(parameters) { // binds events initialize: function() { + module.debug('Initializing module', $module); if(settings.on == 'hover') { $module .on('mouseenter.' + namespace, module.event.mouseenter) @@ -65,8 +73,14 @@ $.fn.popup = function(parameters) { $window .on('resize.' + namespace, module.event.resize) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; $module - .data('module-' + namespace, module) + .data('module-' + namespace, instance) ; }, @@ -508,44 +522,42 @@ $.fn.popup = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -561,24 +573,23 @@ $.fn.popup = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; } - }; + if(methodInvoked) { if(instance === undefined) { module.initialize(); @@ -586,13 +597,14 @@ $.fn.popup = function(parameters) { invokedResponse = module.invoke(query); } else { - if(instance !== undefined) { + if(instance === undefined) { module.destroy(); } module.initialize(); } }) ; + return (invokedResponse) ? invokedResponse : this @@ -600,31 +612,31 @@ $.fn.popup = function(parameters) { }; $.fn.popup.settings = { - - moduleName : 'Pop-up Module', + + moduleName : 'Popup', debug : true, verbose : true, performance : true, namespace : 'popup', - + onShow : function(){}, onHide : function(){}, - + content : false, html : false, title : false, - + on : 'hover', clicktoClose : true, - + position : 'top center', delay : 0, inline : true, - + duration : 250, easing : 'easeOutQuint', animation : 'pop', - + distanceAway : 2, arrowOffset : 0, maxSearchDepth : 10, diff --git a/build/uncompressed/modules/shape.js b/build/uncompressed/modules/shape.js index 017fc8bcf..f638fc3c2 100644 --- a/build/uncompressed/modules/shape.js +++ b/build/uncompressed/modules/shape.js @@ -40,7 +40,7 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - endTransition = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', + transitionEnd = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -111,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(endTransition, callback) + .one(transitionEnd, callback) ; } else { @@ -137,7 +137,7 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(endTransition, function() { + .one(transitionEnd, function() { module.debug('Executing queued animation'); $module.shape(method); }) @@ -614,7 +614,7 @@ $.fn.shape = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/docpad.coffee b/node/docpad.coffee index 07c0560b4..9a1962fab 100755 --- a/node/docpad.coffee +++ b/node/docpad.coffee @@ -10,7 +10,7 @@ docpadConfig = { jade: false marked: false paged: false - liveReload: false + livereload: false plugins: handlebars: diff --git a/node/src/documents/modules/dimmer.html b/node/src/documents/modules/dimmer.html index ace8ed626..c9227c246 100755 --- a/node/src/documents/modules/dimmer.html +++ b/node/src/documents/modules/dimmer.html @@ -43,22 +43,75 @@ type : 'UI Module'

Standard

-

Dimmer:

-

A standard dimmer

+

Dimmer Content

+

A dimmer can contain content which will display when dimmed

+
If no UI dimmer exists inside a content segment it will automatically be added on first use
-
-

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

-

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

+

+ Check out these pictures of dogs +

+ + +
+

This is a message for you

+
+ +
+

Page Dimmer

+

A dimmer can be formatted to be fixed to the page

+
+
Show
+
+ +
+

Stand-alone Dimmer

+

A dimmer can exist on its own without defining content that is /p> +

+

+ Check out these pictures of dogs +

+ + +
+
+
+
+
+
+

Behavior

+
+

Display

+

A dimmer can show or hide itself, a can show or hide a dimmer

+
+ // these two are the same + $('.ui.) + .dimmer('show') + ; + $('.ui.dimmer') + .dimmer('show') + ; + + // these two as well + $('.ui.) + .dimmer('hide') + ; + $('.ui.dimmer') + .dimmer('hide') + ; +
+
+ +

States

@@ -79,25 +132,51 @@ type : 'UI Module'

Variations

+

Dimmer

Simple Dimmer

A dimmer can be controlled without javascript

Having any parent element receive the class "dimmed" will trigger the dimmer to display.
-
+
+
+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

+

Inverted Dimmer

-

A dimmer can have its colors inverted

-
+

A dimmer can be formatted to have its colors inverted

+
+
+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec odio. Quisque volutpat mattis eros. Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede.

+
+
+
+
+
+

/h3>
-

Page Dimmer

-

A dimmer can be formatted to be fixed to the page

-
+

Blurred /h4> +

A section may have its content blurred when dimmed

+
CSS Filters are only currently supported in Webkit browsers
+
+

+ Check out these pictures of dogs +

+ + +
+
+
+
+
+

- +

diff --git a/node/src/documents/modules/dropdown.html b/node/src/documents/modules/dropdown.html index 1634c4839..15bd3f3b5 100755 --- a/node/src/documents/modules/dropdown.html +++ b/node/src/documents/modules/dropdown.html @@ -180,7 +180,7 @@ type : 'UI Module'

Behavior

-
+

Trigger event

A dropdown can trigger based on a variety of user events

@@ -198,7 +198,7 @@ type : 'UI Module' ;
-
+

Dropdown Action

A dropdown can trigger different behaviors on selection

@@ -239,7 +239,7 @@ type : 'UI Module' ;
-
+

Display state

A dropdown can show or hide itself

@@ -251,7 +251,7 @@ type : 'UI Module' ;
-
+

Toggle

A dropdown can toggle between states

diff --git a/node/src/files/components/semantic/elements/progress.css b/node/src/files/components/semantic/elements/progress.css index eea6650a0..2dccfc31c 100644 --- a/node/src/files/components/semantic/elements/progress.css +++ b/node/src/files/components/semantic/elements/progress.css @@ -52,6 +52,7 @@ .ui.successful.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- Failed @@ -63,6 +64,7 @@ .ui.failed.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- Active @@ -82,11 +84,11 @@ -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; - -webkit-animation: animate-emphasis 2s ease-out infinite; - -moz-animation: animate-emphasis 2s ease-out infinite; - animation: animate-emphasis 2s ease-out infinite; + -webkit-animation: progress-active 2s ease-out infinite; + -moz-animation: progress-active 2s ease-out infinite; + animation: progress-active 2s ease-out infinite; } -@-webkit-keyframes animate-emphasis { +@-webkit-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -99,7 +101,7 @@ width: 95%; } } -@-moz-keyframes animate-emphasis { +@-moz-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -112,7 +114,7 @@ width: 100%; } } -@keyframes animate-emphasis { +@keyframes progress-active { 0% { opacity: 0; width: 0; @@ -135,6 +137,7 @@ .ui.disabled.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /******************************* Variations @@ -178,10 +181,11 @@ background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .ui.progress.active.striped .bar { - -webkit-animation: animate-striped 3s linear infinite; - -moz-animation: animate-striped 3s linear infinite; + -webkit-animation: progress-striped 3s linear infinite; + -moz-animation: progress-striped 3s linear infinite; + animation: progress-striped 3s linear infinite; } -@-webkit-keyframes animate-striped { +@-webkit-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -189,7 +193,7 @@ background-position: 60px 0; } } -@-moz-keyframes animate-striped { +@-moz-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -197,7 +201,7 @@ background-position: 60px 0; } } -@keyframes animate-striped { +@keyframes progress-striped { 0% { background-position: 0px 0; } diff --git a/node/src/files/components/semantic/modules/behavior/form.js b/node/src/files/components/semantic/modules/behavior/form.js index 72b7e5447..5997acd85 100644 --- a/node/src/files/components/semantic/modules/behavior/form.js +++ b/node/src/files/components/semantic/modules/behavior/form.js @@ -443,18 +443,17 @@ $.fn.form = function(fields, parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/src/files/components/semantic/modules/carousel.js b/node/src/files/components/semantic/modules/carousel.js index e95867e0f..6f3eb8c66 100644 --- a/node/src/files/components/semantic/modules/carousel.js +++ b/node/src/files/components/semantic/modules/carousel.js @@ -264,7 +264,7 @@ $.fn.carousel = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/src/files/components/semantic/modules/checkbox.js b/node/src/files/components/semantic/modules/checkbox.js index 3895f5168..fafb03065 100644 --- a/node/src/files/components/semantic/modules/checkbox.js +++ b/node/src/files/components/semantic/modules/checkbox.js @@ -253,7 +253,7 @@ $.fn.checkbox = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/src/files/components/semantic/modules/dimmer.css b/node/src/files/components/semantic/modules/dimmer.css index 4d13469a6..3820d556b 100644 --- a/node/src/files/components/semantic/modules/dimmer.css +++ b/node/src/files/components/semantic/modules/dimmer.css @@ -12,16 +12,21 @@ /******************************* Dimmer *******************************/ +.ui.dimmable { + position: relative; +} .ui.dimmer { - display: none; position: absolute; - top: 0em; - left: 0em; - width: 100%; - height: 100%; - background-color: #000000; + top: 0em !important; + left: 0em !important; + background-color: rgba(0, 0, 0, 0.85); opacity: 0; line-height: 1; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + -o-animation-fill-mode: forwards; + -ms-animation-fill-mode: forwards; + animation-fill-mode: forwards; -webkit-transition: background-color 0.5s ease; -moz-transition: background-color 0.5s ease; -o-transition: background-color 0.5s ease; @@ -29,24 +34,44 @@ transition: background-color 0.5s ease; z-index: 100; } -body > .ui.dimmer { +body.dimmable > .ui.dimmer { position: fixed; } +/* Loose Coupling */ +.ui.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.ui.horizontal.segment > .ui.dimmer, +.ui.vertical.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} /******************************* States *******************************/ +.ui.dimmable.dimmed :not(.dimmer) { + -webkit-filter: blur(10px) grayscale(0.7);; + -moz-filter: blur(10px) grayscale(0.7);; + filter: blur(10px) grayscale(0.7);; +} +.ui.dimmable.dimmed > .ui.dimmer, .ui.dimmer.active { - opacity: 0.85; - display: block; + width: 100%; + height: 100%; + opacity: 1; } .ui.disabled.dimmer { - display: none !important; + width: 0em !important; + height: 0em !important; } /******************************* Variations *******************************/ /*-------------- - Page + Page ---------------*/ .ui.page.dimmer { position: fixed; @@ -55,7 +80,7 @@ body > .ui.dimmer { Inverted ---------------*/ .ui.inverted.dimmer { - background-color: #FFFFFF; + background-color: rgba(255, 255, 255, 0.85); } /*-------------- Simple @@ -69,7 +94,7 @@ body > .ui.dimmer { width: 0px; background-color: rgba(0, 0, 0, 0); } -.dimmed > .ui.simple.dimmer { +.ui.dimmable.dimmed > .ui.simple.dimmer { overflow: visible; opacity: 1; width: 100%; @@ -79,6 +104,90 @@ body > .ui.dimmer { .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0); } -.dimmed > .ui.simple.inverted.dimmer { +.ui.dimmable.dimmed > .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0.85); } +/******************************* + Animations +*******************************/ +.ui.dimmer.show { + width: 100%; + height: 100%; + -webkit-animation: dimmer-show 0.5s; + -moz-animation: dimmer-show 0.5s; + animation: dimmer-show 0.5s; +} +@-webkit-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-moz-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +.ui.dimmer.hide { + -webkit-animation: dimmer-hide 0.5s; + -moz-animation: dimmer-hide 0.5s; + animation: dimmer-hide 0.5s; +} +@-webkit-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@-moz-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} diff --git a/node/src/files/components/semantic/modules/dimmer.js b/node/src/files/components/semantic/modules/dimmer.js index 4adf71fb7..9f9539dd1 100644 --- a/node/src/files/components/semantic/modules/dimmer.js +++ b/node/src/files/components/semantic/modules/dimmer.js @@ -12,53 +12,84 @@ $.fn.dimmer = function(parameters) { var $allModules = $(this), - $document = $(document), - settings = $.extend(true, {}, $.fn.dimmer.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dimmer.settings, parameters) + : $.fn.dimmer.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), - selector = $allModules.selector || '', time = new Date().getTime(), performance = [], - namespace = settings.namespace, - className = settings.className, - errors = settings.errors, - query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - invokedResponse, - allModules + + selector = settings.selector, + namespace = settings.namespace, + className = settings.className, + error = settings.error, + + invokedResponse ; $allModules .each(function() { var - $module = $(this), - $dimmer = $module.children(selector.dimmer), + $module = $(this), + $dimmer = $module.children(selector.dimmer).first(), + + animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd', - element = this, - instance = $module.data('module-' + namespace), + element = this, + instance = $dimmer.data('module-' + namespace), module ; module = { initialize: function() { - if( $module.is(settings.selector.dimmer) ) { + if( module.is.dimmer() ) { $dimmer = $module; + $module = $dimmer.parent(); + module.debug('Module initialized as dimmer', $dimmer); + } + else if( module.is.pageDimmer() ) { + $dimmer = $module; + $module = $('body'); + module.debug('Initializing page dimmer', $dimmer); } else { - if($dimmer.size() === 0) { - module.create(); + if( module.has.dimmer() ) { + $dimmer = $module.find(selector.dimmer); + module.debug('Module initialized with found dimmer', $dimmer); } - $dimmer = $module.find(selector.dimmer); + else { + $dimmer = settings.template.dimmer(); + $dimmer + .appendTo($module) + ; + module.debug('Module initialized with created dimmer', $dimmer); + } + } + if(settings.closable) { + $dimmer + .on('click', module.event.click) + ; } - module.debug('Module initialized with dimmer', $dimmer); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; + $dimmer + .data('module-' + namespace, instance) + ; }, destroy: function() { @@ -68,28 +99,63 @@ $.fn.dimmer = function(parameters) { ; }, + event: { + + click: function(event) { + module.verbose('Determining if event occured on dimmer', event); + if( event.target == element ) { + module.hide(); + } + } + + }, + animate: { show: function() { + module.set.dimmed(); if(settings.animation.show == 'css') { + module.verbose('Showing dimmer animation with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function() { + $dimmer.removeClass(className.show); + module.set.active(); + }) + .addClass(className.show) ; } else if(settings.animation.show == 'fade') { + module.verbose('Showing dimmer animation with javascript'); $dimmer - .fadeTo(settings.duration, settings.opacity) + .stop() + .css({ + opacity : 0, + width : '100%', + height : '100%' + }) + .fadeTo(settings.duration, 1, module.set.active) ; } }, hide: function() { - if(settings.animation.show == 'css') { + module.remove.dimmed(); + if(settings.animation.hide == 'css') { + module.verbose('Hiding dimmer with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function(){ + module.remove.active(); + $dimmer.removeClass(className.hide); + }) + .addClass(className.hide) ; } - else if(settings.animation.show == 'fade') { + else if(settings.animation.hide == 'fade') { + module.verbose('Hiding dimmer with javascript'); $dimmer - .fadeOut(settings.duration) + .stop() + .fadeOut(settings.duration, function() { + $dimmer.removeAttr('style'); + module.remove.active(); + }) ; } else if( $.isFunction(settings.animation.hide) ) { @@ -98,18 +164,34 @@ $.fn.dimmer = function(parameters) { } }, + has: { + dimmer: function() { + return ( $module.children(selector.dimmer).size() > 0 ); + } + }, + is: { + animating: function() { + return ( $dimmer.hasClass(className.show) || $dimmer.hasClass(className.hide) || $dimmer.is(':animated') ); + }, + dimmer: function() { + return $module.is(selector.dimmer); + }, + + dimmable: function() { + return $module.is(selector.dimmable); + }, enabled: function() { return !$module.hasClass(className.disabled); }, disabled: function() { return $module.hasClass(className.disabled); }, - visible: function() { - return $dimmer.is(':visible'); + active: function() { + return $dimmer.hasClass(className.active); }, - hidden: function() { - return $dimmer.is(':not(:visible)'); + pageDimmer: function() { + return $dimmer.is(selector.pageDimmer); } }, @@ -119,21 +201,51 @@ $.fn.dimmer = function(parameters) { } }, + set: { + active: function() { + $dimmer.addClass(className.active); + }, + dimmed: function() { + $module.addClass(className.dimmed); + }, + disabled: function() { + $dimmer.addClass(className.disabled); + } + }, + + remove: { + active: function() { + $dimmer.removeClass(className.active); + }, + dimmed: function() { + $module.removeClass(className.dimmed); + }, + disabled: function() { + $dimmer.removeClass(className.disabled); + } + }, + show: function() { module.debug('Showing dimmer', $dimmer); - if( !module.is.visible() && module.is.enabled() ) { + if( !module.is.active() && module.is.enabled() ) { module.animate.show(); - $.proxy(settings.onShow, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onShow, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is already shown or disabled'); } }, hide: function() { - if( !module.is.hidden() ) { + if( module.is.active() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(); - $.proxy(settings.onHide, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onHide, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is not visible'); } }, @@ -146,7 +258,7 @@ $.fn.dimmer = function(parameters) { module.hide(); } }, - + setting: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { @@ -211,41 +323,39 @@ $.fn.dimmer = function(parameters) { performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -261,18 +371,17 @@ $.fn.dimmer = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(errors.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -293,6 +402,7 @@ $.fn.dimmer = function(parameters) { } }) ; + return (invokedResponse) ? invokedResponse : this @@ -301,37 +411,48 @@ $.fn.dimmer = function(parameters) { $.fn.dimmer.settings = { - moduleName : 'Dimmer Module', + moduleName : 'Dimmer', namespace : 'dimmer', verbose : true, debug : true, - performance : false, + performance : true, animation : { - show: 'css', - hide: 'css' + show: 'fade', + hide: 'fade' }, + closable : true, duration : 500, - opacity : 0.85, onChange : function(){}, onShow : function(){}, onHide : function(){}, - errors : { + error : { method : 'The method you called is not defined.' }, selector: { - dimmer : '.ui.dimmer' + dimmable : '.ui.dimmable', + dimmer : '.ui.dimmer', + pageDimmer : '.ui.page.dimmer' + }, + + template: { + dimmer: function() { + return $('
').attr('class', 'ui dimmer'); + } }, className : { - dimmed : 'dimmed', - active : 'active', - disabled : 'disabled' + active : 'active', + dimmed : 'dimmed', + disabled : 'disabled', + animating : 'animating', + hide : 'hide', + show : 'show' } }; diff --git a/node/src/files/components/semantic/modules/dropdown.js b/node/src/files/components/semantic/modules/dropdown.js index 6d99c4d5c..cb544e4ef 100644 --- a/node/src/files/components/semantic/modules/dropdown.js +++ b/node/src/files/components/semantic/modules/dropdown.js @@ -14,7 +14,9 @@ $.fn.dropdown = function(parameters) { $allModules = $(this), $document = $(document), - settings = $.extend(true, {}, $.fn.dropdown.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.fn.dropdown.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, @@ -506,7 +508,7 @@ $.fn.dropdown = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/src/files/components/semantic/modules/modal.css b/node/src/files/components/semantic/modules/modal.css index 1c8e875b2..b352ea533 100644 --- a/node/src/files/components/semantic/modules/modal.css +++ b/node/src/files/components/semantic/modules/modal.css @@ -1,54 +1,3 @@ -/******************************* - Dimmer Styles - *******************************/ -/* the one true page dimmer */ -#dimmer { - position: absolute; - visibility: hidden; - top: 0px; - left: 0px; - z-index: 999; - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; -} -#dimmer .content { - position: fixed; - top: 0px; - left: 0px; - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; - visibility: hidden; - background-color: #000000; - opacity: 0.0; -} -/* a generic dimmer */ -.dimmer { - display: none; - position: absolute; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - opacity: 0; - background-color: #000000; - z-index: 999; -} -.white.dimmer { - background-color: #FFFFFF; -} -.loading .dimmer { - display: block; - opacity: 0.8; - -webkit-transition: opacity 0.5s linear; - -moz-transition: opacity 0.5s linear; - -o-transition: opacity 0.5s linear; - -ms-transition: opacity 0.5s linear; - transition: opacity 0.5s linear; -} /******************************* Modal Styles *******************************/ diff --git a/node/src/files/components/semantic/modules/popup.js b/node/src/files/components/semantic/modules/popup.js index 56ac6b98b..1a931fcaa 100644 --- a/node/src/files/components/semantic/modules/popup.js +++ b/node/src/files/components/semantic/modules/popup.js @@ -1,7 +1,10 @@ /* ****************************** - Tooltip / Popup + Semantic Module: Popup Author: Jack Lukic - Notes: First Commit Sep 07, 2012 + Notes: May 30, 2013 + + Simple plug-in to display popups + ****************************** */ ;(function ($, window, document, undefined) { @@ -9,19 +12,29 @@ $.fn.popup = function(parameters) { var $allModules = $(this), - - settings = $.extend(true, {}, $.fn.popup.settings, parameters), - + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.fn.popup.settings, + eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), time = new Date().getTime(), performance = [], - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + invokedResponse ; $allModules @@ -31,19 +44,13 @@ $.fn.popup = function(parameters) { $window = $(window), $offsetParent = $module.offsetParent(), $popup = (settings.inline) - ? $module.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - + ? $module.next(selector.popup) + : $window.children(selector.popup).last(), + searchDepth = 0, - + element = this, instance = $module.data('module-' + settings.namespace), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, module ; @@ -51,6 +58,7 @@ $.fn.popup = function(parameters) { // binds events initialize: function() { + module.debug('Initializing module', $module); if(settings.on == 'hover') { $module .on('mouseenter.' + namespace, module.event.mouseenter) @@ -65,8 +73,14 @@ $.fn.popup = function(parameters) { $window .on('resize.' + namespace, module.event.resize) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; $module - .data('module-' + namespace, module) + .data('module-' + namespace, instance) ; }, @@ -508,44 +522,42 @@ $.fn.popup = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -561,24 +573,23 @@ $.fn.popup = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; } - }; + if(methodInvoked) { if(instance === undefined) { module.initialize(); @@ -586,13 +597,14 @@ $.fn.popup = function(parameters) { invokedResponse = module.invoke(query); } else { - if(instance !== undefined) { + if(instance === undefined) { module.destroy(); } module.initialize(); } }) ; + return (invokedResponse) ? invokedResponse : this @@ -600,31 +612,31 @@ $.fn.popup = function(parameters) { }; $.fn.popup.settings = { - - moduleName : 'Pop-up Module', + + moduleName : 'Popup', debug : true, verbose : true, performance : true, namespace : 'popup', - + onShow : function(){}, onHide : function(){}, - + content : false, html : false, title : false, - + on : 'hover', clicktoClose : true, - + position : 'top center', delay : 0, inline : true, - + duration : 250, easing : 'easeOutQuint', animation : 'pop', - + distanceAway : 2, arrowOffset : 0, maxSearchDepth : 10, diff --git a/node/src/files/components/semantic/modules/shape.js b/node/src/files/components/semantic/modules/shape.js index 017fc8bcf..f638fc3c2 100644 --- a/node/src/files/components/semantic/modules/shape.js +++ b/node/src/files/components/semantic/modules/shape.js @@ -40,7 +40,7 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - endTransition = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', + transitionEnd = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -111,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(endTransition, callback) + .one(transitionEnd, callback) ; } else { @@ -137,7 +137,7 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(endTransition, function() { + .one(transitionEnd, function() { module.debug('Executing queued animation'); $module.shape(method); }) @@ -614,7 +614,7 @@ $.fn.shape = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/node/src/files/javascript/dimmer.js b/node/src/files/javascript/dimmer.js index 4996d5c20..ec3195938 100755 --- a/node/src/files/javascript/dimmer.js +++ b/node/src/files/javascript/dimmer.js @@ -7,6 +7,7 @@ semantic.dimmer.ready = function() { var $examples = $('.example'), $showButton = $examples.find('.show.button'), + $pageButton = $examples.find('.page.button'), $hideButton = $examples.find('.hide.button'), // alias handler @@ -15,20 +16,30 @@ semantic.dimmer.ready = function() { // event handlers handler = { show: function() { - console.log($(this).closest('.example')); $(this) .closest('.example') - .dimmer('show') + .find('.segment') + .dimmer('show') ; }, hide: function() { $(this) .closest('.example') - .dimmer('hide') + .find('.segment') + .dimmer('hide') + ; + }, + page: function() { + $(this) + .prev('.dimmer') + .dimmer('show') ; } }; - + + $pageButton + .on('click', handler.page) + ; $showButton .on('click', handler.show) ; diff --git a/node/src/files/javascript/semantic.js b/node/src/files/javascript/semantic.js index b5ea80a2a..c4a335559 100755 --- a/node/src/files/javascript/semantic.js +++ b/node/src/files/javascript/semantic.js @@ -112,7 +112,7 @@ semantic.ready = function() { var $example = $(this).closest('.example'), $header = $example.children('.ui.header:first-of-type, p:first-of-type'), - $demo = $example.children().not($header).not('i.code:first-child, .annotated, br, .ignore'), + $demo = $example.children().not($header).not('i.code:first-child, .annotated, br, .ignore, .ignored'), $annotated = $example.find('.annotated'), $code = $annotated.find('.code'), whiteSpace = new RegExp('\\n\\s{4}', 'g'), diff --git a/node/src/files/stylesheets/semantic.css b/node/src/files/stylesheets/semantic.css index b7ac635e9..9ddbf340a 100755 --- a/node/src/files/stylesheets/semantic.css +++ b/node/src/files/stylesheets/semantic.css @@ -758,6 +758,9 @@ a:hover { /* examples */ +#example .no.example i.code { + display: none; +} #example h2 + .example, #example h3 + .example, diff --git a/node/src/layouts/default.html.eco b/node/src/layouts/default.html.eco index 4eb881eba..18ccb3077 100755 --- a/node/src/layouts/default.html.eco +++ b/node/src/layouts/default.html.eco @@ -15,7 +15,7 @@ - + <%- @getBlock('meta').toHTML() %> @@ -58,7 +58,6 @@ <%- @getBlock('scripts').toHTML() %> - diff --git a/spec/modules/module.commented.js b/spec/modules/module.commented.js index a99282cc0..3d43d179f 100755 --- a/spec/modules/module.commented.js +++ b/spec/modules/module.commented.js @@ -27,7 +27,9 @@ $.fn.example = function(parameters) { $allModules = $(this), // Extend settings to merge run-time settings with defaults - settings = $.extend(true, {}, $.fn.example.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.example.settings, parameters) + : $.fn.example.settings, // Define namespaces for storing module instance and binding events eventNamespace = '.' + settings.namespace, @@ -80,10 +82,15 @@ $.fn.example = function(parameters) { // #### Initialize // Initialize attaches events and preserves each instance in html metadata initialize: function() { - module.verbose('Initializing module for', element); + module.debug('Initializing module for', element); $module .on('click' + eventNamespace, module.exampleBehavior) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); // The instance is just a copy of the module definition, we store it in metadata so we can use it outside of scope, but also define it for immediate use instance = module; $module @@ -291,18 +298,17 @@ $.fn.example = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -330,6 +336,9 @@ $.fn.example = function(parameters) { }) ; + // lets performance tracking know this is the end of a single trace through module + time = false; + // If you called invoke, you may have a returned value which shoudl be returned, otherwise allow the call to chain return (invokedResponse) ? invokedResponse @@ -360,7 +369,8 @@ $.fn.example.settings = { }, // Error messages returned by the module error: { - noText : 'The text you tried to display has not been defined.', method : 'The method you called is not defined.' + noText : 'The text you tried to display has not been defined.', + method : 'The method you called is not defined.' }, // Class names which your module refers to className : { diff --git a/spec/modules/module.js b/spec/modules/module.js index 1bc90f42b..1118515a4 100755 --- a/spec/modules/module.js +++ b/spec/modules/module.js @@ -204,18 +204,17 @@ $.fn.example = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -238,6 +237,8 @@ $.fn.example = function(parameters) { }) ; + time = false; + return (invokedResponse) ? invokedResponse : this diff --git a/src/elements/progress.less b/src/elements/progress.less index 41f5dcb94..967f72d6a 100755 --- a/src/elements/progress.less +++ b/src/elements/progress.less @@ -83,6 +83,7 @@ .ui.successful.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- @@ -96,6 +97,7 @@ .ui.failed.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } /*-------------- @@ -120,12 +122,12 @@ -webkit-border-radius: 3px; border-radius: 3px; - -webkit-animation: animate-emphasis 2s ease-out infinite; - -moz-animation: animate-emphasis 2s ease-out infinite; - animation: animate-emphasis 2s ease-out infinite; + -webkit-animation: progress-active 2s ease-out infinite; + -moz-animation: progress-active 2s ease-out infinite; + animation: progress-active 2s ease-out infinite; } -@-webkit-keyframes animate-emphasis { +@-webkit-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -138,7 +140,7 @@ width: 95%; } } -@-moz-keyframes animate-emphasis { +@-moz-keyframes progress-active { 0% { opacity: 0; width: 0; @@ -151,7 +153,7 @@ width: 100%; } } -@keyframes animate-emphasis { +@keyframes progress-active { 0% { opacity: 0; width: 0; @@ -176,6 +178,7 @@ .ui.disabled.progress .bar::after { -webkit-animation: none !important; -moz-animation: none !important; + animation: none !important; } @@ -266,11 +269,12 @@ } .ui.progress.active.striped .bar { - -webkit-animation: animate-striped 3s linear infinite; - -moz-animation: animate-striped 3s linear infinite; + -webkit-animation: progress-striped 3s linear infinite; + -moz-animation: progress-striped 3s linear infinite; + animation: progress-striped 3s linear infinite; } -@-webkit-keyframes animate-striped { +@-webkit-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -278,7 +282,7 @@ background-position: 60px 0; } } -@-moz-keyframes animate-striped { +@-moz-keyframes progress-striped { 0% { background-position: 0px 0; } @@ -286,7 +290,7 @@ background-position: 60px 0; } } -@keyframes animate-striped { +@keyframes progress-striped { 0% { background-position: 0px 0; } diff --git a/src/modules/behavior/form.js b/src/modules/behavior/form.js index 72b7e5447..5997acd85 100755 --- a/src/modules/behavior/form.js +++ b/src/modules/behavior/form.js @@ -443,18 +443,17 @@ $.fn.form = function(fields, parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/src/modules/carousel.js b/src/modules/carousel.js index e95867e0f..6f3eb8c66 100755 --- a/src/modules/carousel.js +++ b/src/modules/carousel.js @@ -264,7 +264,7 @@ $.fn.carousel = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/src/modules/checkbox.js b/src/modules/checkbox.js index 3895f5168..fafb03065 100755 --- a/src/modules/checkbox.js +++ b/src/modules/checkbox.js @@ -253,7 +253,7 @@ $.fn.checkbox = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/src/modules/dimmer.js b/src/modules/dimmer.js index 4adf71fb7..9f9539dd1 100755 --- a/src/modules/dimmer.js +++ b/src/modules/dimmer.js @@ -12,53 +12,84 @@ $.fn.dimmer = function(parameters) { var $allModules = $(this), - $document = $(document), - settings = $.extend(true, {}, $.fn.dimmer.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dimmer.settings, parameters) + : $.fn.dimmer.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), - selector = $allModules.selector || '', time = new Date().getTime(), performance = [], - namespace = settings.namespace, - className = settings.className, - errors = settings.errors, - query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), - invokedResponse, - allModules + + selector = settings.selector, + namespace = settings.namespace, + className = settings.className, + error = settings.error, + + invokedResponse ; $allModules .each(function() { var - $module = $(this), - $dimmer = $module.children(selector.dimmer), + $module = $(this), + $dimmer = $module.children(selector.dimmer).first(), + + animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd', - element = this, - instance = $module.data('module-' + namespace), + element = this, + instance = $dimmer.data('module-' + namespace), module ; module = { initialize: function() { - if( $module.is(settings.selector.dimmer) ) { + if( module.is.dimmer() ) { $dimmer = $module; + $module = $dimmer.parent(); + module.debug('Module initialized as dimmer', $dimmer); + } + else if( module.is.pageDimmer() ) { + $dimmer = $module; + $module = $('body'); + module.debug('Initializing page dimmer', $dimmer); } else { - if($dimmer.size() === 0) { - module.create(); + if( module.has.dimmer() ) { + $dimmer = $module.find(selector.dimmer); + module.debug('Module initialized with found dimmer', $dimmer); } - $dimmer = $module.find(selector.dimmer); + else { + $dimmer = settings.template.dimmer(); + $dimmer + .appendTo($module) + ; + module.debug('Module initialized with created dimmer', $dimmer); + } + } + if(settings.closable) { + $dimmer + .on('click', module.event.click) + ; } - module.debug('Module initialized with dimmer', $dimmer); + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; + $dimmer + .data('module-' + namespace, instance) + ; }, destroy: function() { @@ -68,28 +99,63 @@ $.fn.dimmer = function(parameters) { ; }, + event: { + + click: function(event) { + module.verbose('Determining if event occured on dimmer', event); + if( event.target == element ) { + module.hide(); + } + } + + }, + animate: { show: function() { + module.set.dimmed(); if(settings.animation.show == 'css') { + module.verbose('Showing dimmer animation with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function() { + $dimmer.removeClass(className.show); + module.set.active(); + }) + .addClass(className.show) ; } else if(settings.animation.show == 'fade') { + module.verbose('Showing dimmer animation with javascript'); $dimmer - .fadeTo(settings.duration, settings.opacity) + .stop() + .css({ + opacity : 0, + width : '100%', + height : '100%' + }) + .fadeTo(settings.duration, 1, module.set.active) ; } }, hide: function() { - if(settings.animation.show == 'css') { + module.remove.dimmed(); + if(settings.animation.hide == 'css') { + module.verbose('Hiding dimmer with css'); $dimmer - .addClass(className.active) + .one(animationEnd, function(){ + module.remove.active(); + $dimmer.removeClass(className.hide); + }) + .addClass(className.hide) ; } - else if(settings.animation.show == 'fade') { + else if(settings.animation.hide == 'fade') { + module.verbose('Hiding dimmer with javascript'); $dimmer - .fadeOut(settings.duration) + .stop() + .fadeOut(settings.duration, function() { + $dimmer.removeAttr('style'); + module.remove.active(); + }) ; } else if( $.isFunction(settings.animation.hide) ) { @@ -98,18 +164,34 @@ $.fn.dimmer = function(parameters) { } }, + has: { + dimmer: function() { + return ( $module.children(selector.dimmer).size() > 0 ); + } + }, + is: { + animating: function() { + return ( $dimmer.hasClass(className.show) || $dimmer.hasClass(className.hide) || $dimmer.is(':animated') ); + }, + dimmer: function() { + return $module.is(selector.dimmer); + }, + + dimmable: function() { + return $module.is(selector.dimmable); + }, enabled: function() { return !$module.hasClass(className.disabled); }, disabled: function() { return $module.hasClass(className.disabled); }, - visible: function() { - return $dimmer.is(':visible'); + active: function() { + return $dimmer.hasClass(className.active); }, - hidden: function() { - return $dimmer.is(':not(:visible)'); + pageDimmer: function() { + return $dimmer.is(selector.pageDimmer); } }, @@ -119,21 +201,51 @@ $.fn.dimmer = function(parameters) { } }, + set: { + active: function() { + $dimmer.addClass(className.active); + }, + dimmed: function() { + $module.addClass(className.dimmed); + }, + disabled: function() { + $dimmer.addClass(className.disabled); + } + }, + + remove: { + active: function() { + $dimmer.removeClass(className.active); + }, + dimmed: function() { + $module.removeClass(className.dimmed); + }, + disabled: function() { + $dimmer.removeClass(className.disabled); + } + }, + show: function() { module.debug('Showing dimmer', $dimmer); - if( !module.is.visible() && module.is.enabled() ) { + if( !module.is.active() && module.is.enabled() ) { module.animate.show(); - $.proxy(settings.onShow, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onShow, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is already shown or disabled'); } }, hide: function() { - if( !module.is.hidden() ) { + if( module.is.active() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(); - $.proxy(settings.onHide, $module.get())(); - $.proxy(settings.onChange, $module.get())(); + $.proxy(settings.onHide, element)(); + $.proxy(settings.onChange, element)(); + } + else { + module.debug('Dimmer is not visible'); } }, @@ -146,7 +258,7 @@ $.fn.dimmer = function(parameters) { module.hide(); } }, - + setting: function(name, value) { if(value !== undefined) { if( $.isPlainObject(name) ) { @@ -211,41 +323,39 @@ $.fn.dimmer = function(parameters) { performance.push({ 'Element' : element, 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -261,18 +371,17 @@ $.fn.dimmer = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(errors.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; @@ -293,6 +402,7 @@ $.fn.dimmer = function(parameters) { } }) ; + return (invokedResponse) ? invokedResponse : this @@ -301,37 +411,48 @@ $.fn.dimmer = function(parameters) { $.fn.dimmer.settings = { - moduleName : 'Dimmer Module', + moduleName : 'Dimmer', namespace : 'dimmer', verbose : true, debug : true, - performance : false, + performance : true, animation : { - show: 'css', - hide: 'css' + show: 'fade', + hide: 'fade' }, + closable : true, duration : 500, - opacity : 0.85, onChange : function(){}, onShow : function(){}, onHide : function(){}, - errors : { + error : { method : 'The method you called is not defined.' }, selector: { - dimmer : '.ui.dimmer' + dimmable : '.ui.dimmable', + dimmer : '.ui.dimmer', + pageDimmer : '.ui.page.dimmer' + }, + + template: { + dimmer: function() { + return $('
').attr('class', 'ui dimmer'); + } }, className : { - dimmed : 'dimmed', - active : 'active', - disabled : 'disabled' + active : 'active', + dimmed : 'dimmed', + disabled : 'disabled', + animating : 'animating', + hide : 'hide', + show : 'show' } }; diff --git a/src/modules/dimmer.less b/src/modules/dimmer.less index 5412c6488..0cbf98697 100755 --- a/src/modules/dimmer.less +++ b/src/modules/dimmer.less @@ -15,19 +15,25 @@ Dimmer *******************************/ +.ui.dimmable { + position: relative; +} + .ui.dimmer { - display: none; position: absolute; - top: 0em; - left: 0em; - - width: 100%; - height: 100%; + top: 0em !important; + left: 0em !important; - background-color: #000000; + background-color: rgba(0, 0, 0, 0.85); opacity: 0; line-height: 1; + -webkit-animation-fill-mode: forwards; + -moz-animation-fill-mode: forwards; + -o-animation-fill-mode: forwards; + -ms-animation-fill-mode: forwards; + animation-fill-mode: forwards; + -webkit-transition: background-color 0.5s ease ; @@ -46,22 +52,44 @@ z-index: 100; } -body > .ui.dimmer { +body.dimmable > .ui.dimmer { position: fixed; } +/* Loose Coupling */ + +.ui.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.ui.horizontal.segment > .ui.dimmer, +.ui.vertical.segment > .ui.dimmer { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} /******************************* States *******************************/ +.ui.dimmable.dimmed :not(.dimmer){ + -webkit-filter: ~"blur(10px) grayscale(0.7);"; + -moz-filter: ~"blur(10px) grayscale(0.7);"; + filter: ~"blur(10px) grayscale(0.7);"; +} + +.ui.dimmable.dimmed > .ui.dimmer, .ui.dimmer.active { - opacity: 0.85; - display: block; + width: 100%; + height: 100%; + opacity: 1; } .ui.disabled.dimmer { - display: none !important; + width: 0em !important; + height: 0em !important; } @@ -69,10 +97,10 @@ body > .ui.dimmer { Variations *******************************/ - /*-------------- - Page + Page ---------------*/ + .ui.page.dimmer { position: fixed; } @@ -82,7 +110,7 @@ body > .ui.dimmer { ---------------*/ .ui.inverted.dimmer { - background-color: #FFFFFF; + background-color: rgba(255, 255, 255, 0.85); } /*-------------- @@ -98,7 +126,7 @@ body > .ui.dimmer { width: 0px; background-color: rgba(0, 0, 0, 0); } -.dimmed > .ui.simple.dimmer { +.ui.dimmable.dimmed > .ui.simple.dimmer { overflow: visible; opacity: 1; width: 100%; @@ -109,7 +137,99 @@ body > .ui.dimmer { .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0); } -.dimmed > .ui.simple.inverted.dimmer { +.ui.dimmable.dimmed > .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0.85) } + +/******************************* + Animations +*******************************/ + +.ui.dimmer.show { + width: 100%; + height: 100%; + + -webkit-animation: dimmer-show 0.5s; + -moz-animation: dimmer-show 0.5s; + animation: dimmer-show 0.5s; +} + +@-webkit-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-moz-keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes dimmer-show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.ui.dimmer.hide { + -webkit-animation: dimmer-hide 0.5s; + -moz-animation: dimmer-hide 0.5s; + animation: dimmer-hide 0.5s; +} + +@-webkit-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@-moz-keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} +@keyframes dimmer-hide { + 0% { + opacity: 1; + } + 99% { + width: 100%; + height: 100%; + opacity: 0; + } + 100% { + opacity: 0; + height: 0em; + width: 0em; + } +} + + diff --git a/src/modules/dropdown.js b/src/modules/dropdown.js index 6d99c4d5c..cb544e4ef 100755 --- a/src/modules/dropdown.js +++ b/src/modules/dropdown.js @@ -14,7 +14,9 @@ $.fn.dropdown = function(parameters) { $allModules = $(this), $document = $(document), - settings = $.extend(true, {}, $.fn.dropdown.settings, parameters), + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.dropdown.settings, parameters) + : $.fn.dropdown.settings, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, @@ -506,7 +508,7 @@ $.fn.dropdown = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; diff --git a/src/modules/modal.less b/src/modules/modal.less index 149a7bc98..0e10719d1 100755 --- a/src/modules/modal.less +++ b/src/modules/modal.less @@ -1,62 +1,3 @@ -/******************************* - Dimmer Styles - *******************************/ - - /* the one true page dimmer */ -#dimmer { - position: absolute; - visibility: hidden; - top: 0px; - left: 0px; - z-index: 999; - - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; -} -#dimmer .content { - position: fixed; - top: 0px; - left: 0px; - - margin: 0px; - width: 100%; - height: 100%; - padding: 0px; - visibility: hidden; - - background-color: #000000; - opacity: 0.0; -} - -/* a generic dimmer */ -.dimmer { - display: none; - position: absolute; - top: 0px; - left: 0px; - width: 100%; - height: 100%; - opacity: 0; - background-color: #000000; - z-index: 999; -} -.white.dimmer { - background-color: #FFFFFF; -} -.loading .dimmer { - display: block; - opacity: 0.8; - - -webkit-transition: opacity 0.5s linear; - -moz-transition: opacity 0.5s linear; - -o-transition: opacity 0.5s linear; - -ms-transition: opacity 0.5s linear; - transition: opacity 0.5s linear; -} - - /******************************* Modal Styles *******************************/ diff --git a/src/modules/popup.js b/src/modules/popup.js index 56ac6b98b..1a931fcaa 100755 --- a/src/modules/popup.js +++ b/src/modules/popup.js @@ -1,7 +1,10 @@ /* ****************************** - Tooltip / Popup + Semantic Module: Popup Author: Jack Lukic - Notes: First Commit Sep 07, 2012 + Notes: May 30, 2013 + + Simple plug-in to display popups + ****************************** */ ;(function ($, window, document, undefined) { @@ -9,19 +12,29 @@ $.fn.popup = function(parameters) { var $allModules = $(this), - - settings = $.extend(true, {}, $.fn.popup.settings, parameters), - + + settings = ( $.isPlainObject(parameters) ) + ? $.extend(true, {}, $.fn.popup.settings, parameters) + : $.fn.popup.settings, + eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, moduleSelector = $allModules.selector || '', + moduleCount = $allModules.size(), time = new Date().getTime(), performance = [], - + + selector = settings.selector, + className = settings.className, + error = settings.error, + metadata = settings.metadata, + namespace = settings.namespace, + query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), + invokedResponse ; $allModules @@ -31,19 +44,13 @@ $.fn.popup = function(parameters) { $window = $(window), $offsetParent = $module.offsetParent(), $popup = (settings.inline) - ? $module.next(settings.selector.popup) - : $window.children(settings.selector.popup).last(), - + ? $module.next(selector.popup) + : $window.children(selector.popup).last(), + searchDepth = 0, - + element = this, instance = $module.data('module-' + settings.namespace), - - selector = settings.selector, - className = settings.className, - error = settings.error, - metadata = settings.metadata, - namespace = settings.namespace, module ; @@ -51,6 +58,7 @@ $.fn.popup = function(parameters) { // binds events initialize: function() { + module.debug('Initializing module', $module); if(settings.on == 'hover') { $module .on('mouseenter.' + namespace, module.event.mouseenter) @@ -65,8 +73,14 @@ $.fn.popup = function(parameters) { $window .on('resize.' + namespace, module.event.resize) ; + module.instantiate(); + }, + + instantiate: function() { + module.verbose('Storing instance of module'); + instance = module; $module - .data('module-' + namespace, module) + .data('module-' + namespace, instance) ; }, @@ -508,44 +522,42 @@ $.fn.popup = function(parameters) { previousTime = time || currentTime, executionTime = currentTime - previousTime; time = currentTime; - performance.push({ + performance.push({ 'Element' : element, - 'Name' : message[0], - 'Arguments' : message[1] || 'None', + 'Name' : message[0], + 'Arguments' : message[1] || '', 'Execution Time' : executionTime }); - clearTimeout(module.performance.timer); - module.performance.timer = setTimeout(module.performance.display, 100); } + clearTimeout(module.performance.timer); + module.performance.timer = setTimeout(module.performance.display, 100); }, display: function() { var - title = settings.moduleName, - caption = settings.moduleName + ': ' + moduleSelector + '(' + $allModules.size() + ' elements)', - totalExecutionTime = 0 + title = settings.moduleName + ':', + totalTime = 0 ; + time = false; + $.each(performance, function(index, data) { + totalTime += data['Execution Time']; + }); + title += ' ' + totalTime + 'ms'; if(moduleSelector) { - title += ' Performance (' + moduleSelector + ')'; + title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { - $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; - }); console.table(performance); } else { $.each(performance, function(index, data) { - totalExecutionTime += data['Execution Time']; console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } - console.log('Total Execution Time:', totalExecutionTime +'ms'); console.groupEnd(); - performance = []; - time = false; } + performance = []; } }, invoke: function(query, passedArguments, context) { @@ -561,24 +573,23 @@ $.fn.popup = function(parameters) { $.each(query, function(depth, value) { if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) { instance = instance[value]; - return true; } else if( instance[value] !== undefined ) { found = instance[value]; - return true; } - module.error(error.method); - return false; + else { + module.error(error.method); + } }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false; } - }; + if(methodInvoked) { if(instance === undefined) { module.initialize(); @@ -586,13 +597,14 @@ $.fn.popup = function(parameters) { invokedResponse = module.invoke(query); } else { - if(instance !== undefined) { + if(instance === undefined) { module.destroy(); } module.initialize(); } }) ; + return (invokedResponse) ? invokedResponse : this @@ -600,31 +612,31 @@ $.fn.popup = function(parameters) { }; $.fn.popup.settings = { - - moduleName : 'Pop-up Module', + + moduleName : 'Popup', debug : true, verbose : true, performance : true, namespace : 'popup', - + onShow : function(){}, onHide : function(){}, - + content : false, html : false, title : false, - + on : 'hover', clicktoClose : true, - + position : 'top center', delay : 0, inline : true, - + duration : 250, easing : 'easeOutQuint', animation : 'pop', - + distanceAway : 2, arrowOffset : 0, maxSearchDepth : 10, diff --git a/src/modules/shape.js b/src/modules/shape.js index 017fc8bcf..f638fc3c2 100755 --- a/src/modules/shape.js +++ b/src/modules/shape.js @@ -40,7 +40,7 @@ $.fn.shape = function(parameters) { // private variables $activeSide, $nextSide, - endTransition = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', + transitionEnd = 'transitionend msTransitionEnd oTransitionEnd webkitTransitionEnd', // standard module element = this, @@ -111,7 +111,7 @@ $.fn.shape = function(parameters) { ; $sides .css(propertyObject) - .one(endTransition, callback) + .one(transitionEnd, callback) ; } else { @@ -137,7 +137,7 @@ $.fn.shape = function(parameters) { queue: function(method) { module.debug('Queueing animation of', method); $sides - .one(endTransition, function() { + .one(transitionEnd, function() { module.debug('Executing queued animation'); $module.shape(method); }) @@ -614,7 +614,7 @@ $.fn.shape = function(parameters) { }); } if ( $.isFunction( found ) ) { - module.verbose('Executing invoked function', found); + instance.verbose('Executing invoked function', found); return found.apply(context, passedArguments); } return found || false;