From 55b3712847ea06ed28b5bf5a8b7b7bd6ee022c98 Mon Sep 17 00:00:00 2001 From: Jack Lukic Date: Tue, 28 May 2013 17:24:29 -0400 Subject: [PATCH] finished form validation Former-commit-id: 97e73b7d8706a9e163d7a4cd25f94e7f394dc236 Former-commit-id: ca3d3ed9b79905a895ae8d67da07c32eb98e8e0f --- build/minified/modules/behavior/form.js | 73 +++++++++++++++---- build/minified/modules/behavior/form.min.js | 2 +- build/minified/modules/checkbox.js | 27 ++++--- build/minified/modules/checkbox.min.js | 2 +- build/minified/modules/dropdown.js | 23 ++++-- build/minified/modules/dropdown.min.js | 2 +- build/minified/modules/nag.min.js | 2 +- build/minified/modules/popup.min.js | 2 +- build/minified/modules/search.min.js | 2 +- build/minified/modules/tab.min.js | 2 +- build/packaged/modules/behavior/form.js | 73 +++++++++++++++---- build/packaged/modules/checkbox.js | 27 ++++--- build/packaged/modules/dropdown.js | 23 ++++-- build/packaged/semantic.min.js.REMOVED.git-id | 2 +- build/uncompressed/modules/behavior/form.js | 73 +++++++++++++++---- build/uncompressed/modules/checkbox.js | 27 ++++--- build/uncompressed/modules/dropdown.js | 23 ++++-- .../semantic/modules/behavior/form.js | 73 +++++++++++++++---- .../components/semantic/modules/checkbox.js | 27 ++++--- .../components/semantic/modules/dropdown.js | 23 ++++-- src/modules/behavior/form.js | 73 +++++++++++++++---- src/modules/checkbox.js | 27 ++++--- src/modules/dropdown.js | 23 ++++-- 23 files changed, 458 insertions(+), 173 deletions(-) diff --git a/build/minified/modules/behavior/form.js b/build/minified/modules/behavior/form.js index 2d63f4c4d..b4c792dbb 100644 --- a/build/minified/modules/behavior/form.js +++ b/build/minified/modules/behavior/form.js @@ -47,7 +47,6 @@ $.fn.form = function(fields, parameters) { instance = $module.data('module-' + settings.namespace), namespace = settings.namespace, - selector = settings.selector, metadata = settings.metadata, className = settings.className, errors = settings.errors, @@ -81,12 +80,14 @@ $.fn.form = function(fields, parameters) { }, refresh: function() { - $field = $module.find(selector.field); + $field = $module.find(settings.selector.field); }, submit: function() { module.verbose('Submitting form', $module); - $module.submit(); + $module + .submit() + ; }, event: { @@ -102,9 +103,11 @@ $.fn.form = function(fields, parameters) { ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $field.blur(); + $field + .blur() + ; } - if( key == keyCode.enter && $field.is(selector.input) ) { + if( key == keyCode.enter && $field.is(settings.selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -140,6 +143,7 @@ $.fn.form = function(fields, parameters) { get: { field: function(identifier) { + module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).size() > 0 ) { return $field.filter('#' + identifier); } @@ -164,12 +168,30 @@ $.fn.form = function(fields, parameters) { } }, + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + if( $field.filter('#' + identifier).size() > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { + return true + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { + return true + } + return false; + } + + }, + add: { prompt: function(field, errors) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), + $prompt = $fieldGroup.find(settings.selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -188,7 +210,9 @@ $.fn.form = function(fields, parameters) { .html(errors[0]) ; if($prompt.is(':not(:visible)')) { - $prompt.fadeIn(200); + $prompt + .fadeIn(settings.animateSpeed) + ; } } }, @@ -230,7 +254,10 @@ $.fn.form = function(fields, parameters) { } }); if(allValid) { - $module.removeClass(className.error); + $module + .removeClass(className.error) + .addClass(className.success) + ; $.proxy(settings.onSuccess, this)(event); } else { @@ -251,7 +278,7 @@ $.fn.form = function(fields, parameters) { ; if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( !( module.validate.rule(field, rule) ) ) { + if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', field.identifier, rule.type); fieldErrors.push(rule.prompt); fieldValid = false; @@ -329,14 +356,22 @@ $.fn.form = function(fields, parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -356,7 +391,8 @@ $.fn.form = function(fields, parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -370,7 +406,7 @@ $.fn.form = function(fields, parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -446,9 +482,10 @@ $.fn.form = function(fields, parameters) { $.fn.form.settings = { // module info - moduleName : 'Validate Form Module', + moduleName : 'Form', debug : true, verbose : true, + performance : true, namespace : 'validate', keyboardShortcuts : true, @@ -477,6 +514,7 @@ $.fn.form.settings = { className : { error : 'error', + success: 'success', down : 'down', label : 'ui label prompt' }, @@ -603,6 +641,9 @@ $.fn.form.settings = { not: function(value, notValue) { return (value != notValue); }, + is: function(value, text) { + return (value == text); + }, maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) diff --git a/build/minified/modules/behavior/form.min.js b/build/minified/modules/behavior/form.min.js index 6f1ddde69..0be093f9c 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||"",(new Date).getTime()),u=[],d=arguments[0],f="string"==typeof d,m=[].slice.call(arguments,1);return o.each(function(){var t,n=e(this),p=e(this).find(r.selector.field),g=e(this).find(r.selector.group),h=e(this).find(r.selector.message),v=(e(this).find(r.selector.prompt),e(this).find(r.selector.submit)),y=[],b=this,x=n.data("module-"+r.namespace),w=r.namespace,C=r.selector,k=r.metadata,P=r.className,z=r.errors;t={initialize:function(){t.verbose("Initializing form validation"),r.keyboardShortcuts&&p.on("keydown"+l,t.event.field.keydown),n.on("submit"+l,t.validate.form),p.on("change"+l,t.event.field.change),v.on("click"+l,t.submit)},destroy:function(){n.off(w)},refresh:function(){p=n.find(C.field)},submit:function(){t.verbose("Submitting form",n),n.submit()},event:{field:{keydown:function(n){var a=e(this),o=n.which,r={enter:13,escape:27};return o==r.escape&&(t.verbose("Escape key pressed blurring field"),a.blur()),o==r.enter&&a.is(C.input)?(t.debug("Enter key pressed, submitting form"),v.addClass(P.down),a.one("keyup"+l,t.event.field.keyup),n.preventDefault(),!1):i},keyup:function(){t.verbose("Doing keyboard shortcut form submit"),v.removeClass(P.down),t.submit()},change:function(){var n=e(this),i=n.closest(g);i.hasClass(P.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(t){return p.filter("#"+t).size()>0?p.filter("#"+t):p.filter('[name="'+t+'"]').size()>0?p.filter('[name="'+t+'"]'):p.filter("[data-"+k.validate+'="'+t+'"]').size()>0?p.filter("[data-"+k.validate+'="'+t+'"]'):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}},add:{prompt:function(e,n){var i=t.get.field(e.identifier),a=i.closest(g),o=a.find(C.prompt),s=0!==o.size();t.verbose("Adding inline validation prompt"),a.addClass(P.error),r.inlineError&&(s||(o=r.templates.prompt(n),o.appendTo(a).hide()),o.html(n[0]),o.is(":not(:visible)")&&o.fadeIn(200))},errors:function(e){t.debug("Adding form error messages",e),h.html(r.templates.error(e))}},remove:{prompt:function(e){var n=t.get.field(e.identifier),i=n.closest(g),a=g.find(a);i.removeClass(P.error),r.inlineError&&a.hide()}},validate:{form:function(i){var a=!0;y=[],e.each(s,function(e,n){t.validate.field(n)||(a=!1)}),a?(n.removeClass(P.error),e.proxy(r.onSuccess,this)(i)):(n.addClass(P.error),r.inlineError||t.add.errors(y),e.proxy(r.onFailure,this)(y))},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.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):(y=y.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&&(t.performance.log(arguments[0]),t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(t.performance.log(arguments[0]),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=c||n,i=n-a,c=n,u.push({Element:b,Name:e,"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)&&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("Total Execution Time:",n+"ms"),console.groupEnd(),u=[],c=!1)}},invoke:function(n,a,o){var r,s;return a=a||m,o=b||o,"string"==typeof n&&x!==i&&(n=n.split("."),r=n.length-1,e.each(n,function(n,a){return e.isPlainObject(x[a])&&n!=r?(x=x[a],!0):x[a]!==i?(s=x[a],!0):(t.error(z.method),!1)})),e.isFunction(s)?(t.verbose("Executing invoked function",s),s.apply(o,a)):s||!1}},f?(x===i&&t.initialize(),a=t.invoke(d)):(x!==i&&t.destroy(),t.initialize())}),a?a:this},e.fn.form.settings={moduleName:"Validate Form Module",debug:!0,verbose:!0,namespace:"validate",keyboardShortcuts:!0,on:"change",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",down:"down",label:"ui label prompt"},errors:{method:"The method you called is not defined."},defaults:{firstName:{identifier:"first-name",rules:[{type:"empty",prompt:"Please enter your first name"}]},lastName:{identifier:"last-name",rules:[{type:"empty",prompt:"Please enter your last name"}]},username:{identifier:"username",rules:[{type:"empty",prompt:"Please enter a username"}]},email:{identifier:"email",rules:[{type:"empty",prompt:"Please enter your email"},{type:"email",prompt:"Please enter a valid email"}]},password:{identifier:"password",rules:[{type:"empty",prompt:"Please enter a password"},{type:"length[6]",prompt:"Your password must be at least 6 characters"}]},passwordConfirm:{identifier:"password-confirm",rules:[{type:"empty",prompt:"Please confirm your password"},{identifier:"password-confirm",type:"match[password]",prompt:"Please verify password matches"}]},terms:{identifier:"terms",rules:[{type:"checked",prompt:"You must agree to the terms and conditions"}]}},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},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,r=e(this),o=e.extend(!0,{},e.fn.form.settings,n),s=e.extend({},e.fn.form.settings.defaults,t),l="."+o.namespace,c=("module-"+o.namespace,r.selector||""),u=(new Date).getTime(),d=[],f=arguments[0],m="string"==typeof f,p=[].slice.call(arguments,1);return r.each(function(){var t,n=e(this),g=e(this).find(o.selector.field),h=e(this).find(o.selector.group),v=e(this).find(o.selector.message),y=(e(this).find(o.selector.prompt),e(this).find(o.selector.submit)),b=[],x=this,w=n.data("module-"+o.namespace),C=o.namespace,z=o.metadata,k=o.className,P=o.errors;t={initialize:function(){t.verbose("Initializing form validation"),o.keyboardShortcuts&&g.on("keydown"+l,t.event.field.keydown),n.on("submit"+l,t.validate.form),g.on("change"+l,t.event.field.change),y.on("click"+l,t.submit)},destroy:function(){n.off(C)},refresh:function(){g=n.find(o.selector.field)},submit:function(){t.verbose("Submitting form",n),n.submit()},event:{field:{keydown:function(n){var a=e(this),r=n.which,s={enter:13,escape:27};return r==s.escape&&(t.verbose("Escape key pressed blurring field"),a.blur()),r==s.enter&&a.is(o.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);i.hasClass(k.error)?(t.debug("Revalidating field",n,t.get.validation(n)),t.validate.field(t.get.validation(n))):"change"==o.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),r=a.find(o.selector.prompt),s=0!==r.size();t.verbose("Adding inline validation prompt"),a.addClass(k.error),o.inlineError&&(s||(r=o.templates.prompt(n),r.appendTo(a).hide()),r.html(n[0]),r.is(":not(:visible)")&&r.fadeIn(o.animateSpeed))},errors:function(e){t.debug("Adding form error messages",e),v.html(o.templates.error(e))}},remove:{prompt:function(e){var n=t.get.field(e.identifier),i=n.closest(h),a=h.find(a);i.removeClass(k.error),o.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(o.onSuccess,this)(i)):(n.addClass(k.error),o.inlineError||t.add.errors(b),e.proxy(o.onFailure,this)(b))},field:function(n){var a=t.get.field(n.identifier),r=!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),r=!1)}),r?(t.remove.prompt(n,s),e.proxy(o.onValid,a)(),!0):(b=b.concat(s),t.add.prompt(n,s),e.proxy(o.onInvalid,a)(s),!1)},rule:function(a,r){var s,l,c=t.get.field(a.identifier),u=r.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(o.rules[l],n)(d,s)):p="checked"==u?c.filter(":checked").size()>0:o.rules[u](d),p}},setting:function(t,n){return n===i?o[t]:(e.isPlainObject(t)?e.extend(!0,o,t):o[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(){o.debug&&(o.performance?t.performance.log(arguments):t.debug=Function.prototype.bind.call(console.info,console,o.moduleName+":"))},verbose:function(){o.verbose&&o.debug&&(o.performance?t.performance.log(arguments):t.verbose=Function.prototype.bind.call(console.info,console,o.moduleName+":"))},error:function(){t.error=Function.prototype.bind.call(console.log,console,o.moduleName+":")},performance:{log:function(e){var n,i,a;o.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=o.moduleName,n=(o.moduleName+": "+c+"("+r.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("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,a,r){var o,s;return a=a||p,r=x||r,"string"==typeof n&&w!==i&&(n=n.split("."),o=n.length-1,e.each(n,function(n,a){return e.isPlainObject(w[a])&&n!=o?(w=w[a],!0):w[a]!==i?(s=w[a],!0):(t.error(P.method),!1)})),e.isFunction(s)?(t.verbose("Executing invoked function",s),s.apply(r,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:!0,namespace:"validate",keyboardShortcuts:!0,on:"change",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"},errors:{method:"The method you called is not defined."},defaults:{firstName:{identifier:"first-name",rules:[{type:"empty",prompt:"Please enter your first name"}]},lastName:{identifier:"last-name",rules:[{type:"empty",prompt:"Please enter your last name"}]},username:{identifier:"username",rules:[{type:"empty",prompt:"Please enter a username"}]},email:{identifier:"email",rules:[{type:"empty",prompt:"Please enter your email"},{type:"email",prompt:"Please enter a valid email"}]},password:{identifier:"password",rules:[{type:"empty",prompt:"Please enter a password"},{type:"length[6]",prompt:"Your password must be at least 6 characters"}]},passwordConfirm:{identifier:"password-confirm",rules:[{type:"empty",prompt:"Please confirm your password"},{identifier:"password-confirm",type:"match[password]",prompt:"Please verify password matches"}]},terms:{identifier:"terms",rules:[{type:"checked",prompt:"You must agree to the terms and conditions"}]}},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,r=e(this);return r.find("#"+n).size()>0?a=r.find("#"+n).val():r.find("[name="+n+"]").size()>0?a=r.find("[name="+n+"]").val():r.find('[data-validate="'+n+'"]').size()>0&&(a=r.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/checkbox.js b/build/minified/modules/checkbox.js index 8653f8918..fb452ee1f 100644 --- a/build/minified/modules/checkbox.js +++ b/build/minified/modules/checkbox.js @@ -156,20 +156,26 @@ $.fn.checkbox = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { - if(console.log !== undefined) { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); - } + module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -185,7 +191,8 @@ $.fn.checkbox = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -199,7 +206,7 @@ $.fn.checkbox = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -279,7 +286,7 @@ $.fn.checkbox.settings = { verbose : true, debug : true, - performance : false, + performance : true, // delegated event context context : false, diff --git a/build/minified/modules/checkbox.min.js b/build/minified/modules/checkbox.min.js index ee409036e..a5f5b05d9 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,l=(a.selector||"",(new Date).getTime()),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return a.each(function(){var t,m=e(this),p=e(this).find(i.selector.input),g=m.selector||"",h=this,v=m.data("module-"+i.namespace),b=i.className,y=i.namespace,x=i.errors;t={initialize:function(){i.context&&""!==g?(t.verbose("Initializing checkbox with delegated events",m),e(h,i.context).on(g,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",m),m.on("click"+s,t.toggle).data(r,t))},destroy:function(){t.verbose("Destroying previous module for",m),m.off(y)},is:{radio:function(){return m.hasClass(b.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},enable:function(){t.debug("Enabling checkbox"),m.addClass(b.active),p.prop("checked",!0),e.proxy(i.onChange,p.get())(),e.proxy(i.onEnable,p.get())()},disable:function(){t.debug("Disabling checkbox"),m.removeClass(b.active),p.prop("checked",!1),e.proxy(i.onChange,p.get())(),e.proxy(i.onDisable,p.get())()},toggle:function(){t.verbose("Toggling checkbox state"),p.prop("checked")!==o&&p.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&&(t.performance.log(arguments[0]),t.debug=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},verbose:function(){i.verbose&&i.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},error:function(){console.log!==o&&(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,c.push({Element:h,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=i.moduleName,n=(i.moduleName+": "+g+"("+a.size()+" elements)",0);g&&(t+="Performance ("+g+")"),(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("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||f,i=h||i,"string"==typeof n&&v!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(v[a])&&n!=s?(v=v[a],!0):v[a]!==o?(r=v[a],!0):(t.error(x.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},d?(v===o&&t.initialize(),n=t.invoke(u)):(v!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.checkbox.settings={moduleName:"Checkbox Module",namespace:"checkbox",verbose:!0,debug:!0,performance:!1,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,l=(a.selector||"",(new Date).getTime()),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return a.each(function(){var t,m=e(this),p=e(this).find(i.selector.input),g=m.selector||"",h=this,v=m.data("module-"+i.namespace),b=i.className,y=i.namespace,x=i.errors;t={initialize:function(){i.context&&""!==g?(t.verbose("Initializing checkbox with delegated events",m),e(h,i.context).on(g,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",m),m.on("click"+s,t.toggle).data(r,t))},destroy:function(){t.verbose("Destroying previous module for",m),m.off(y)},is:{radio:function(){return m.hasClass(b.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},enable:function(){t.debug("Enabling checkbox"),m.addClass(b.active),p.prop("checked",!0),e.proxy(i.onChange,p.get())(),e.proxy(i.onEnable,p.get())()},disable:function(){t.debug("Disabling checkbox"),m.removeClass(b.active),p.prop("checked",!1),e.proxy(i.onChange,p.get())(),e.proxy(i.onDisable,p.get())()},toggle:function(){t.verbose("Toggling checkbox state"),p.prop("checked")!==o&&p.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,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=i.moduleName,n=(i.moduleName+": "+g+"("+a.size()+" elements)",0);g&&(t+=" Performance ("+g+")"),(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("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||f,i=h||i,"string"==typeof n&&v!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(v[a])&&n!=s?(v=v[a],!0):v[a]!==o?(r=v[a],!0):(t.error(x.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},d?(v===o&&t.initialize(),n=t.invoke(u)):(v!==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/dropdown.js b/build/minified/modules/dropdown.js index 35cfac202..6501a2e39 100644 --- a/build/minified/modules/dropdown.js +++ b/build/minified/modules/dropdown.js @@ -393,14 +393,22 @@ $.fn.dropdown = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -420,7 +428,8 @@ $.fn.dropdown = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -434,7 +443,7 @@ $.fn.dropdown = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -514,7 +523,7 @@ $.fn.dropdown.settings = { verbose : true, debug : true, - performance : false, + performance : true, on : 'click', gracePeriod : 300, diff --git a/build/minified/modules/dropdown.min.js b/build/minified/modules/dropdown.min.js index 5f4e3a557..37ed190eb 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,p=[].slice.call(arguments,1);return a.each(function(){var t,g=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,C=g.selector||"",w=this,T=g.data("module-"+r.namespace),k=r.className,P=r.metadata,N=r.namespace,z=r.animation,D=r.errors;t={initialize:function(){t.verbose("Initializing dropdown with bound events",g),x?g.on("touchstart"+c,t.event.test.toggle):"click"==r.on?g.on("click"+c,t.event.test.toggle):"hover"==r.on?g.on("mouseenter"+c,t.show).on("mouseleave"+c,t.delayedHide):g.on(r.on+c,t.toggle),"form"==r.action&&t.set.selected(),v.on(t.get.selectEvent()+c,t.event.item.click),g.data(l,t)},destroy:function(){t.verbose("Destroying previous module for",g),g.off(N)},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(){var n=e(this),o=n.data(P.text)||n.text(),i=n.data(P.value)||o;t.verbose("Adding active state to selected item"),v.removeClass(k.active),n.addClass(k.active),t.action.determine(o,i),e.proxy(r.onChange,h.get())(o,i)}}},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(P.value)==t&&(n=e(this))}),n}},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=(e||y.val(),t.get.item(e)),o=n.data(P.text)||n.text();t.debug("Setting selected menu item to",n),v.removeClass(k.active),n.addClass(k.active),t.set.text(o)}},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!g.hasClass(k.disabled)}},animate:{show:function(){t.verbose("Doing menu showing animation"),"show"==z.show?h.show():"slide"==z.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"==z.hide?h.hide():"slide"==z.hide&&h.clearQueue().children().clearQueue().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){clearTimeout(t.graceTimer),t.is.visible()||(t.debug("Showing dropdown"),g.addClass(k.visible),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onShow,h.get())())},delayedHide:function(){t.verbose("User moused away setting timer to hide dropdown"),t.graceTimer=setTimeout(t.hide,r.gracePeriod)},hide:function(){t.is.hidden()||(t.debug("Hiding dropdown"),g.removeClass(k.visible),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onHide,h.get())())},toggle:function(){t.verbose("Toggling menu visibility"),t.can.show()?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&&(t.performance.log(arguments[0]),t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(t.performance.log(arguments[0]),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:w,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+C+"("+a.size()+" elements)",0);C&&(t+="Performance ("+C+")"),(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("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,i,a){var s,r;return i=i||p,a=w||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 +(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,p=[].slice.call(arguments,1);return a.each(function(){var t,g=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,C=g.selector||"",w=this,T=g.data("module-"+r.namespace),k=r.className,P=r.metadata,N=r.namespace,z=r.animation,D=r.errors;t={initialize:function(){t.verbose("Initializing dropdown with bound events",g),x?g.on("touchstart"+c,t.event.test.toggle):"click"==r.on?g.on("click"+c,t.event.test.toggle):"hover"==r.on?g.on("mouseenter"+c,t.show).on("mouseleave"+c,t.delayedHide):g.on(r.on+c,t.toggle),"form"==r.action&&t.set.selected(),v.on(t.get.selectEvent()+c,t.event.item.click),g.data(l,t)},destroy:function(){t.verbose("Destroying previous module for",g),g.off(N)},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(){var n=e(this),o=n.data(P.text)||n.text(),i=n.data(P.value)||o;t.verbose("Adding active state to selected item"),v.removeClass(k.active),n.addClass(k.active),t.action.determine(o,i),e.proxy(r.onChange,h.get())(o,i)}}},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(P.value)==t&&(n=e(this))}),n}},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=(e||y.val(),t.get.item(e)),o=n.data(P.text)||n.text();t.debug("Setting selected menu item to",n),v.removeClass(k.active),n.addClass(k.active),t.set.text(o)}},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!g.hasClass(k.disabled)}},animate:{show:function(){t.verbose("Doing menu showing animation"),"show"==z.show?h.show():"slide"==z.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"==z.hide?h.hide():"slide"==z.hide&&h.clearQueue().children().clearQueue().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){clearTimeout(t.graceTimer),t.is.visible()||(t.debug("Showing dropdown"),g.addClass(k.visible),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onShow,h.get())())},delayedHide:function(){t.verbose("User moused away setting timer to hide dropdown"),t.graceTimer=setTimeout(t.hide,r.gracePeriod)},hide:function(){t.is.hidden()||(t.debug("Hiding dropdown"),g.removeClass(k.visible),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onHide,h.get())())},toggle:function(){t.verbose("Toggling menu visibility"),t.can.show()?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:w,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+": "+C+"("+a.size()+" elements)",0);C&&(t+=" Performance ("+C+")"),(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("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,i,a){var s,r;return i=i||p,a=w||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:!0,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/nag.min.js b/build/minified/modules/nag.min.js index 17713ecc7..e5976ecfc 100644 --- a/build/minified/modules/nag.min.js +++ b/build/minified/modules/nag.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.nag=function(n){var i=e.extend(!0,{},e.fn.nag.settings,n),a=arguments||!1;return e(this).each(function(){var n,s,r,l,c,u,d,m,f,p=e(this),g=p.find(i.selector.close),h=e(i.context),v=p.data("module"),b=i.className,y=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return f={initialize:function(){n=p.offset(),s=p.outerHeight(),r=h.outerWidth(),l=h.outerHeight(),c=h.offset(),p.data("module",f),g.on("mouseenter mouseleave",f.event.hover).on("click",f.dismiss),i.context==t&&"fixed"==i.position&&p.addClass(b.fixed),i.sticky&&("absolute"==i.position?h.on("scroll resize",f.event.scroll):e(t).on("scroll resize",f.event.scroll),e.proxy(f.event.scroll,this)()),i.followLink&&p.on("mouseenter mouseleave",f.event.hover).on("click",f.followLink),i.displayTime>0&&setTimeout(f.hide,i.displayTime),f.should.show()?p.is(":visible")||f.show():f.hide()},refresh:function(){n=p.offset(),s=p.outerHeight(),r=h.outerWidth(),l=h.outerHeight(),c=h.offset()},show:function(){e.fn.popIn!==o?p.popIn(i.duration):p.fadeIn(i.duration,i.easing)},hide:function(){p.fadeOut(i.duration,i.easing)},stick:function(){if(f.refresh(),"fixed"==i.position){var n=e(t).prop("pageYOffset")||e(t).scrollTop(),o=p.hasClass(b.bottom)?c.top+(l-s)-n:c.top-n;p.css({position:"fixed",top:o,left:c.left,width:r-i.scrollBarWidth})}else p.css({top:d})},unStick:function(){p.css({top:""})},dismiss:function(){i.storageMethod&&f.storage.set(i.storedKey,i.storedValue),f.hide()},should:{show:function(){return f.storage.get(i.storedKey)==i.storedValue?!1:!0},stick:function(){return u=h.prop("pageYOffset")||h.scrollTop(),d=p.hasClass(b.bottom)?l-p.outerHeight()+u:u,d>n.top?!0:"fixed"==i.position?!0:!1}},followLink:function(){e.fn.followLink!==o&&p.followLink()},storage:{set:function(t,n){"local"==i.storageMethod&&store!==o?store.set(t,n):e.cookie!==o?e.cookie(t,n):f.error(i.errors.noStorage)},get:function(t){return"local"==i.storageMethod&&store!==o?store.get(t):e.cookie!==o?e.cookie(t):(f.error(i.errors.noStorage),o)}},event:{hover:function(){e(this).toggleClass(b.hover)},scroll:function(){m!==o&&clearTimeout(m),m=setTimeout(function(){f.should.stick()?y(f.stick):f.unStick()},i.lag)}},error:function(e){console.log("Nag Module:"+e)},invoke:function(t,n,a){var s;return a=a||Array.prototype.slice.call(arguments,2),"string"==typeof t&&v!==o&&(t=t.split("."),e.each(t,function(t,n){return e.isPlainObject(v[n])?(v=v[n],!0):e.isFunction(v[n])?(s=v[n],!0):(f.error(i.errors.method),!1)})),e.isFunction(s)?s.apply(n,a):s}},v!==o&&a?("invoke"==a[0]&&(a=Array.prototype.slice.call(a,1)),f.invoke(a[0],this,Array.prototype.slice.call(a,1))):(f.initialize(),o)}),this},e.fn.nag.settings={displayTime:0,followLink:!0,position:"fixed",scrollBarWidth:18,storageMethod:"cookie",storedKey:"nag",storedValue:"dismiss",sticky:!0,lag:0,context:t,errors:{noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",followLink:"Follow link is set but the plugin is not included"},className:{bottom:"bottom",hover:"hover",fixed:"fixed"},selector:{close:".icon.close"},speed:500,easing:"easeOutQuad"}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.nag=function(n){var i=e.extend(!0,{},e.fn.nag.settings,n),a=arguments||!1;return e(this).each(function(){var n,s,r,c,l,u,d,f,m,p=e(this),g=p.find(i.selector.close),h=e(i.context),v=p.data("module"),b=i.className,y=t.requestAnimationFrame||t.mozRequestAnimationFrame||t.webkitRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,0)};return m={initialize:function(){n=p.offset(),s=p.outerHeight(),r=h.outerWidth(),c=h.outerHeight(),l=h.offset(),p.data("module",m),g.on("mouseenter mouseleave",m.event.hover).on("click",m.dismiss),i.context==t&&"fixed"==i.position&&p.addClass(b.fixed),i.sticky&&("absolute"==i.position?h.on("scroll resize",m.event.scroll):e(t).on("scroll resize",m.event.scroll),e.proxy(m.event.scroll,this)()),i.followLink&&p.on("mouseenter mouseleave",m.event.hover).on("click",m.followLink),i.displayTime>0&&setTimeout(m.hide,i.displayTime),m.should.show()?p.is(":visible")||m.show():m.hide()},refresh:function(){n=p.offset(),s=p.outerHeight(),r=h.outerWidth(),c=h.outerHeight(),l=h.offset()},show:function(){e.fn.popIn!==o?p.popIn(i.duration):p.fadeIn(i.duration,i.easing)},hide:function(){p.fadeOut(i.duration,i.easing)},stick:function(){if(m.refresh(),"fixed"==i.position){var n=e(t).prop("pageYOffset")||e(t).scrollTop(),o=p.hasClass(b.bottom)?l.top+(c-s)-n:l.top-n;p.css({position:"fixed",top:o,left:l.left,width:r-i.scrollBarWidth})}else p.css({top:d})},unStick:function(){p.css({top:""})},dismiss:function(){i.storageMethod&&m.storage.set(i.storedKey,i.storedValue),m.hide()},should:{show:function(){return m.storage.get(i.storedKey)==i.storedValue?!1:!0},stick:function(){return u=h.prop("pageYOffset")||h.scrollTop(),d=p.hasClass(b.bottom)?c-p.outerHeight()+u:u,d>n.top?!0:"fixed"==i.position?!0:!1}},followLink:function(){e.fn.followLink!==o&&p.followLink()},storage:{set:function(t,n){"local"==i.storageMethod&&store!==o?store.set(t,n):e.cookie!==o?e.cookie(t,n):m.error(i.errors.noStorage)},get:function(t){return"local"==i.storageMethod&&store!==o?store.get(t):e.cookie!==o?e.cookie(t):(m.error(i.errors.noStorage),o)}},event:{hover:function(){e(this).toggleClass(b.hover)},scroll:function(){f!==o&&clearTimeout(f),f=setTimeout(function(){m.should.stick()?y(m.stick):m.unStick()},i.lag)}},error:function(e){console.log("Nag Module:"+e)},invoke:function(t,n,a){var s;return a=a||Array.prototype.slice.call(arguments,2),"string"==typeof t&&v!==o&&(t=t.split("."),e.each(t,function(t,n){return e.isPlainObject(v[n])?(v=v[n],!0):e.isFunction(v[n])?(s=v[n],!0):(m.error(i.errors.method),!1)})),e.isFunction(s)?s.apply(n,a):s}},v!==o&&a?("invoke"==a[0]&&(a=Array.prototype.slice.call(a,1)),m.invoke(a[0],this,Array.prototype.slice.call(a,1))):(m.initialize(),o)}),this},e.fn.nag.settings={displayTime:0,followLink:!0,position:"fixed",scrollBarWidth:18,storageMethod:"cookie",storedKey:"nag",storedValue:"dismiss",sticky:!0,lag:0,context:t,errors:{noStorage:"Neither $.cookie or store is defined. A storage solution is required for storing state",followLink:"Follow link is set but the plugin is not included"},className:{bottom:"bottom",hover:"hover",fixed:"fixed"},selector:{close:".icon.close"},speed:500,easing:"easeOutQuad"}})(jQuery,window,document); \ No newline at end of file diff --git a/build/minified/modules/popup.min.js b/build/minified/modules/popup.min.js index 4834ca299..98ed94ec3 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,s=e.extend(!0,{},e.fn.popup.settings,i),r=arguments||!1;return e(this).each(function(){var l,c,u=e(this),d=e(t),f=u.offsetParent(),p=s.inline?u.next(s.selector.popup):d.children(s.selector.popup).last(),m=0,g=u.data("module-"+s.namespace),h=g!==o&&"string"==typeof i,v=s.selector,b=s.className,y=s.errors,x=s.metadata,w=s.namespace;c={initialize:function(){"hover"==s.event?u.on("mouseenter."+w,c.event.mouseenter).on("mouseleave."+w,c.event.mouseleave):u.on(s.event+"."+w,c.event[s.event]),d.on("resize."+w,c.event.resize),u.data("module-"+w,c)},refresh:function(){p=s.inline?u.next(v.popup):d.children(v.popup).last(),f=u.offsetParent()},destroy:function(){c.debug("Destroying existing popups"),u.off("."+w),p.remove()},event:{mouseenter:function(t){var n=this;l=setTimeout(function(){e.proxy(c.toggle,n)(),e(n).hasClass(b.visible)&&t.stopPropagation()},s.delay)},mouseleave:function(){clearTimeout(l),u.is(":visible")&&c.hide()},click:function(t){e.proxy(c.toggle,this)(),e(this).hasClass(b.visible)&&t.stopPropagation()},resize:function(){p.is(":visible")&&c.position()}},create:function(){c.debug("Creating pop-up content");var t=u.data(x.html)||s.html,n=u.data(x.title)||s.title,o=u.data(x.content)||u.attr("title")||s.content;t||o||n?(t||(t=s.template({title:n,content:o})),p=e("
").addClass(b.popup).html(t),s.inline?p.insertAfter(u):p.appendTo(e("body"))):c.error(y.content)},remove:function(){p.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:p.outerWidth(),height:p.outerHeight(),position:p.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(){u=e(this),c.debug("Toggling pop-up"),c.refresh(),0===p.size()&&c.create(),u.hasClass(b.visible)?c.hide():c.position()&&c.show()},position:function(n,o){var i,a,r=(e(t).width(),e(t).height(),u.outerWidth()),l=u.outerHeight(),g=p.outerWidth(),h=p.outerHeight(),v=s.inline?u.position():u.offset(),w=s.inline?f.outerWidth():d.outerWidth(),C=s.inline?f.outerHeight():d.outerHeight();switch(n=n||u.data(x.position)||s.position,o=o||u.data(x.arrowOffset)||s.arrowOffset,c.debug("Calculating offset for position",n),n){case"top left":i={top:"auto",bottom:C-v.top+s.distanceAway,left:v.left+o};break;case"top center":i={bottom:C-v.top+s.distanceAway,left:v.left+r/2-g/2+o,top:"auto",right:"auto"};break;case"top right":i={bottom:C-v.top+s.distanceAway,right:w-v.left-r-o,top:"auto",left:"auto"};break;case"left center":i={top:v.top+l/2-h/2,right:w-v.left+s.distanceAway-o,left:"auto",bottom:"auto"};break;case"right center":i={top:v.top+l/2-h/2,left:v.left+r+s.distanceAway+o,bottom:"auto",right:"auto"};break;case"bottom left":i={top:v.top+l+s.distanceAway,left:v.left+o,bottom:"auto",right:"auto"};break;case"bottom center":i={top:v.top+l+s.distanceAway,left:v.left+r/2-g/2+o,bottom:"auto",right:"auto"};break;case"bottom right":i={top:v.top+l+s.distanceAway,right:w-v.left-r-o,left:"auto",bottom:"auto"}}return e.extend(i,{width:p.width()+1}),p.removeAttr("style").removeClass("top right bottom left center").css(i).addClass(n).addClass(b.loading),a=c.get.offstagePosition(),a?(c.debug("Element is outside boundaries ",a),s.maxRecursion>m?(n=c.get.nextPosition(n),m++,c.debug("Trying new position: ",n),c.position(n)):(c.error(y.recursion),m=0,!1)):(c.debug("Position is on stage",n),m=0,!0)},show:function(){c.debug("Showing pop-up"),e(v.popup).filter(":visible").stop().fadeOut(200).prev(u).removeClass(b.visible),u.addClass(b.visible),p.removeClass(b.loading),"pop"==s.animation&&e.fn.popIn!==o?p.stop().popIn(s.duration,s.easing):p.stop().fadeIn(s.duration,s.easing),"click"==s.event&&s.clicktoClose&&(c.debug("Binding popup close event"),e(n).on("click."+w,c.gracefully.hide)),e.proxy(s.onShow,p)()},hide:function(){u.removeClass(b.visible),p.is(":visible")&&(c.debug("Hiding pop-up"),"pop"==s.animation&&e.fn.popOut!==o?p.stop().popOut(s.duration,s.easing,function(){p.hide()}):p.stop().fadeOut(s.duration,s.easing)),"click"==s.event&&s.clicktoClose&&e(n).off("click."+w),e.proxy(s.onHide,p)(),s.inline||c.remove()},gracefully:{hide:function(t){0===e(t.target).closest(v.popup).size()&&c.hide()}},setting:function(e,t){return t===o?s[e]:(s[e]=t,o)},debug:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};s.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};s.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&&g!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(g[n])&&t!=a?(g=g[n],!0):g[n]!==o?(r=g[n],!0):(c.error(s.errors.method),!1)})),e.isFunction(r)?r.apply(n,i):r}},h?a=c.invoke(r[0],this,Array.prototype.slice.call(r,1)):(g&&c.destroy(),c.initialize())}),a!==o?a:this},e.fn.popup.settings={moduleName:"Pop-up Module",debug:!0,namespace:"popup",onShow:function(){},onHide:function(){},content:!1,html:!1,title:!1,position:"top center",delay:0,inline:!0,duration:250,easing:"easeOutQuint",animation:"pop",errors:{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."},distanceAway:2,arrowOffset:0,maxRecursion:10,event:"hover",clicktoClose:!0,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,s=e.extend(!0,{},e.fn.popup.settings,i),r=arguments||!1;return e(this).each(function(){var l,c,u=e(this),d=e(t),f=u.offsetParent(),m=s.inline?u.next(s.selector.popup):d.children(s.selector.popup).last(),p=0,g=u.data("module-"+s.namespace),h=g!==o&&"string"==typeof i,v=s.selector,b=s.className,y=s.errors,x=s.metadata,w=s.namespace;c={initialize:function(){"hover"==s.event?u.on("mouseenter."+w,c.event.mouseenter).on("mouseleave."+w,c.event.mouseleave):u.on(s.event+"."+w,c.event[s.event]),d.on("resize."+w,c.event.resize),u.data("module-"+w,c)},refresh:function(){m=s.inline?u.next(v.popup):d.children(v.popup).last(),f=u.offsetParent()},destroy:function(){c.debug("Destroying existing popups"),u.off("."+w),m.remove()},event:{mouseenter:function(t){var n=this;l=setTimeout(function(){e.proxy(c.toggle,n)(),e(n).hasClass(b.visible)&&t.stopPropagation()},s.delay)},mouseleave:function(){clearTimeout(l),u.is(":visible")&&c.hide()},click:function(t){e.proxy(c.toggle,this)(),e(this).hasClass(b.visible)&&t.stopPropagation()},resize:function(){m.is(":visible")&&c.position()}},create:function(){c.debug("Creating pop-up content");var t=u.data(x.html)||s.html,n=u.data(x.title)||s.title,o=u.data(x.content)||u.attr("title")||s.content;t||o||n?(t||(t=s.template({title:n,content:o})),m=e("
").addClass(b.popup).html(t),s.inline?m.insertAfter(u):m.appendTo(e("body"))):c.error(y.content)},remove:function(){m.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:m.outerWidth(),height:m.outerHeight(),position:m.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(){u=e(this),c.debug("Toggling pop-up"),c.refresh(),0===m.size()&&c.create(),u.hasClass(b.visible)?c.hide():c.position()&&c.show()},position:function(n,o){var i,a,r=(e(t).width(),e(t).height(),u.outerWidth()),l=u.outerHeight(),g=m.outerWidth(),h=m.outerHeight(),v=s.inline?u.position():u.offset(),w=s.inline?f.outerWidth():d.outerWidth(),C=s.inline?f.outerHeight():d.outerHeight();switch(n=n||u.data(x.position)||s.position,o=o||u.data(x.arrowOffset)||s.arrowOffset,c.debug("Calculating offset for position",n),n){case"top left":i={top:"auto",bottom:C-v.top+s.distanceAway,left:v.left+o};break;case"top center":i={bottom:C-v.top+s.distanceAway,left:v.left+r/2-g/2+o,top:"auto",right:"auto"};break;case"top right":i={bottom:C-v.top+s.distanceAway,right:w-v.left-r-o,top:"auto",left:"auto"};break;case"left center":i={top:v.top+l/2-h/2,right:w-v.left+s.distanceAway-o,left:"auto",bottom:"auto"};break;case"right center":i={top:v.top+l/2-h/2,left:v.left+r+s.distanceAway+o,bottom:"auto",right:"auto"};break;case"bottom left":i={top:v.top+l+s.distanceAway,left:v.left+o,bottom:"auto",right:"auto"};break;case"bottom center":i={top:v.top+l+s.distanceAway,left:v.left+r/2-g/2+o,bottom:"auto",right:"auto"};break;case"bottom right":i={top:v.top+l+s.distanceAway,right:w-v.left-r-o,left:"auto",bottom:"auto"}}return e.extend(i,{width:m.width()+1}),m.removeAttr("style").removeClass("top right bottom left center").css(i).addClass(n).addClass(b.loading),a=c.get.offstagePosition(),a?(c.debug("Element is outside boundaries ",a),s.maxRecursion>p?(n=c.get.nextPosition(n),p++,c.debug("Trying new position: ",n),c.position(n)):(c.error(y.recursion),p=0,!1)):(c.debug("Position is on stage",n),p=0,!0)},show:function(){c.debug("Showing pop-up"),e(v.popup).filter(":visible").stop().fadeOut(200).prev(u).removeClass(b.visible),u.addClass(b.visible),m.removeClass(b.loading),"pop"==s.animation&&e.fn.popIn!==o?m.stop().popIn(s.duration,s.easing):m.stop().fadeIn(s.duration,s.easing),"click"==s.event&&s.clicktoClose&&(c.debug("Binding popup close event"),e(n).on("click."+w,c.gracefully.hide)),e.proxy(s.onShow,m)()},hide:function(){u.removeClass(b.visible),m.is(":visible")&&(c.debug("Hiding pop-up"),"pop"==s.animation&&e.fn.popOut!==o?m.stop().popOut(s.duration,s.easing,function(){m.hide()}):m.stop().fadeOut(s.duration,s.easing)),"click"==s.event&&s.clicktoClose&&e(n).off("click."+w),e.proxy(s.onHide,m)(),s.inline||c.remove()},gracefully:{hide:function(t){0===e(t.target).closest(v.popup).size()&&c.hide()}},setting:function(e,t){return t===o?s[e]:(s[e]=t,o)},debug:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};s.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};s.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&&g!==o&&(t=t.split("."),a=t.length-1,e.each(t,function(t,n){return e.isPlainObject(g[n])&&t!=a?(g=g[n],!0):g[n]!==o?(r=g[n],!0):(c.error(s.errors.method),!1)})),e.isFunction(r)?r.apply(n,i):r}},h?a=c.invoke(r[0],this,Array.prototype.slice.call(r,1)):(g&&c.destroy(),c.initialize())}),a!==o?a:this},e.fn.popup.settings={moduleName:"Pop-up Module",debug:!0,namespace:"popup",onShow:function(){},onHide:function(){},content:!1,html:!1,title:!1,position:"top center",delay:0,inline:!0,duration:250,easing:"easeOutQuint",animation:"pop",errors:{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."},distanceAway:2,arrowOffset:0,maxRecursion:10,event:"hover",clicktoClose:!0,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/search.min.js b/build/minified/modules/search.min.js index 6f8fad09e..aaab57e14 100644 --- a/build/minified/modules/search.min.js +++ b/build/minified/modules/search.min.js @@ -1 +1 @@ -(function(e,t,n,o){e.fn.searchPrompt=function(n,i){var a,s=e.extend(!0,{},e.fn.searchPrompt.settings,i),r=arguments[0],l=[].slice.call(arguments,1);return e(this).each(function(){var i,c=e(this),u=c.find(s.selector.searchPrompt),d=c.find(s.selector.searchButton),f=c.find(s.selector.searchResults),p=(c.find(s.selector.result),c.find(s.selector.category),c.find(s.selector.emptyResult),c.find(s.selector.resultPage),this),m=(c.selector||"",c.data("module-"+s.namespace)),g=m!==o&&"string"==typeof r,h=s.className,v=s.namespace,b=s.errors;i={initialize:function(){var e=u[0],t=e.oninput!==o?"input":e.onpropertychange!==o?"propertychange":"keyup";u.on("focus."+v,i.event.focus).on("blur."+v,i.event.blur).on("keydown."+v,i.handleKeyboard),s.automatic&&u.on(t+"."+v,i.search.throttle),d.on("click."+v,i.search.query),f.on("click."+v,s.selector.result,i.results.select),c.data("module-"+v,i)},event:{focus:function(){c.addClass(h.focus),i.results.show()},blur:function(){i.search.cancel(),c.removeClass(h.focus),i.results.hide()}},handleKeyboard:function(t){var n,o=c.find(s.selector.result),a=c.find(s.selector.category),r=t.which,l={backspace:8,enter:13,escape:27,upArrow:38,downArrow:40},p=h.active,m=o.index(o.filter("."+p)),g=o.size();if(r==l.escape&&u.trigger("blur"),f.filter(":visible").size()>0)if(r==l.enter){if(o.filter("."+p).exists())return e.proxy(i.results.select,o.filter("."+p))(),t.preventDefault(),!1}else r==l.upArrow?(n=0>m-1?m:m-1,a.removeClass(p),o.removeClass(p).eq(n).addClass(p).closest(a).addClass(p),t.preventDefault()):r==l.downArrow&&(n=m+1>=g?m:m+1,a.removeClass(p),o.removeClass(p).eq(n).addClass(p).closest(a).addClass(p),t.preventDefault());else r==l.enter&&(i.search.query(),d.addClass(h.down),u.one("keyup",function(){d.removeClass(h.down)}))},search:{cancel:function(){var e=c.data("xhr")||!1;e&&"resolved"!=e.state()&&e.abort()},throttle:function(){var e,t=u.val(),n=t.length;clearTimeout(c.data("timer")),n>=s.minCharacters?(e=setTimeout(i.search.query,s.searchThrottle),c.data("timer",e)):i.results.hide()},query:function(){var t=u.val(),o=i.search.cache.read(t);o?(i.debug("Reading result for '"+t+"' from cache"),i.results.add(o)):(i.debug("Querying for '"+t+"'"),"object"==typeof n?i.search.local(t):i.search.remote(t),e.proxy(s.onSearchQuery,c)(t))},local:function(t){var o,a=[],r=[],l=e.isArray(s.searchFields)?s.searchFields:[s.searchFields],u=RegExp("(?:s|^)"+t,"i"),d=RegExp(t,"i");c.addClass(h.loading),e.each(l,function(t,o){e.each(n,function(t,n){"string"==typeof n[o]&&-1==e.inArray(n,a)&&-1==e.inArray(n,r)&&(u.test(n[o])?a.push(n):d.test(n[o])&&r.push(n))})}),o=i.results.generate({results:e.merge(a,r)}),c.removeClass(h.loading),i.search.cache.write(t,o),i.results.add(o)},remote:function(t){var a,r=c.data("xhr")!==o?c.data("xhr"):!1,l={stateContext:c,url:n,urlData:{query:t},success:function(e){a=i.results.generate(e),i.search.cache.write(t,a),i.results.add(a)},failure:i.error};r&&"resolved"!=r.state()&&r.abort(),e.extend(!0,l,s.apiSettings),e.api(l)},cache:{read:function(e){var t=c.data("cache");return s.cache&&"object"==typeof t&&t[e]!==o?t[e]:!1},write:function(e,t){var n=c.data("cache")!==o?c.data("cache"):{};n[e]=t,c.data("cache",n)}}},results:{generate:function(t){i.debug("Generating html from response",t);var n=s.templates[s.type],o="";return e.isPlainObject(t.results)&&!e.isEmptyObject(t.results)||e.isArray(t.results)&&t.results.length>0?(s.maxResults>0&&(t.results=e.makeArray(t.results).slice(0,s.maxResults)),t.results.length>0&&(e.isFunction(n)?o=n(t):i.error(b.noTemplate,!1))):o=i.message(b.noResults,"empty"),e.proxy(s.onSearchResults,c)(t),o},add:function(t){("default"==s.onResultsAdd||"default"==e.proxy(s.onResultsAdd,f)(t))&&f.html(t),i.results.show()},show:function(){0===f.filter(":visible").size()&&u.filter(":focus").size()>0&&""!==f.html()&&(f.stop().fadeIn(200),e.proxy(s.onResultsOpen,f)())},hide:function(){f.filter(":visible").size()>0&&(f.stop().fadeOut(200),e.proxy(s.onResultsClose,f)())},followLink:function(){},select:function(n){i.debug("Search result selected");var o=e(this),a=o.find(".title"),r=a.html();if("default"==s.onSelect||"default"==e.proxy(s.onSelect,this)(n)){var l=o.find("a[href]").eq(0),c=l.attr("href"),d=l.attr("target");try{i.results.hide(),u.val(r),"_blank"==d||n.ctrlKey?t.open(c):t.location.href=c}catch(f){}}}},setting:function(e,t){return t===o?s[e]:(s[e]=t,o)},debug:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),s.debug&&(e.push(t),o.apply(console,e.concat(n)))},message:function(e,t){return t=t||"standard",i.results.add(s.templates.message(e,t)),s.templates.message(e,t)},error:function(e,t){t=t!==o?t:!0,console.warn(s.moduleName+": "+e),t&&e!==o&&i.message(e,"error")},invoke:function(t,n,a){var s,r;return a=a||[].slice.call(arguments,2),"string"==typeof t&&m!==o&&(t=t.split("."),s=t.length-1,e.each(t,function(t,n){return e.isPlainObject(m[n])&&t!=s?(m=m[n],!0):m[n]!==o?(r=m[n],!0):(i.error(b.method),!1)})),e.isFunction(r)?r.apply(n,a):r}},g?a=i.invoke(r,p,l):i.initialize()}),a!==o?a:this},e.fn.searchPrompt.settings={moduleName:"Search Module",debug:!0,namespace:"search",onSelect:"default",onResultsAdd:"default",onSearchQuery:function(){},onSearchResults:function(){},onResultsOpen:function(){},onResultsClose:function(){},automatic:"true",type:"simple",minCharacters:3,searchThrottle:300,maxResults:7,cache:!0,searchFields:["title","description"],apiSettings:{},className:{active:"active",down:"down",focus:"focus",empty:"empty",loading:"loading"},errors:{noResults:"Your search returned no results",logging:"Error in debug logging, exiting.",noTemplate:"A valid template name was not specified.",serverError:"There was an issue with querying the server.",method:"The method you called is not defined."},selector:{searchPrompt:".prompt",searchButton:".search.button",searchResults:".results",category:".category",result:".result",emptyResult:".results .message",resultPage:".results .page"},templates:{message:function(e,t){var n="";return e!==o&&t!==o&&(n+='
'+'
',n+="empty"==t?"

No Results

"+e+"

":'
'+e+"
",n+="
"),n},categories:function(t){var n="";return t.results!==o?(e.each(t.results,function(t,i){i.results!==o&&i.results.length>0&&(n+='
'+i.name+"
"+"
    ",e.each(i.results,function(e,t){n+='
  • ',n+='',t.image!==o&&(n+='
    '+"
    "),n+=t.image!==o?'
    ':'
    ',t.price!==o&&(n+='
    '+t.price+"
    "),t.title!==o&&(n+='
    '+t.title+"
    "),t.description!==o&&(n+='
    '+t.description+"
    "),n+="
  • "}),n+="
")}),t.resultPage&&(n+=''+t.resultPage.text+""),n):!1},simple:function(t){var n="";return t.results!==o?(n+="
    ",e.each(t.results,function(e,t){n+='
  • ',t.url!==o&&(n+=''),t.image!==o&&(n+='
    '+"
    "),n+=t.image!==o?'
    ':'
    ',t.price!==o&&(n+='
    '+t.price+"
    "),t.title!==o&&(n+='
    '+t.title+"
    "),t.description!==o&&(n+='
    '+t.description+"
    "),n+="
  • "}),n+="
",t.resultPage&&(n+=''+t.resultPage.text+""),n):!1}}}})(jQuery,window,document); \ No newline at end of file +(function(e,t,n,o){e.fn.searchPrompt=function(n,i){var a,s=e.extend(!0,{},e.fn.searchPrompt.settings,i),r=arguments[0],l=[].slice.call(arguments,1);return e(this).each(function(){var i,c=e(this),u=c.find(s.selector.searchPrompt),d=c.find(s.selector.searchButton),f=c.find(s.selector.searchResults),m=(c.find(s.selector.result),c.find(s.selector.category),c.find(s.selector.emptyResult),c.find(s.selector.resultPage),this),p=(c.selector||"",c.data("module-"+s.namespace)),g=p!==o&&"string"==typeof r,h=s.className,v=s.namespace,b=s.errors;i={initialize:function(){var e=u[0],t=e.oninput!==o?"input":e.onpropertychange!==o?"propertychange":"keyup";u.on("focus."+v,i.event.focus).on("blur."+v,i.event.blur).on("keydown."+v,i.handleKeyboard),s.automatic&&u.on(t+"."+v,i.search.throttle),d.on("click."+v,i.search.query),f.on("click."+v,s.selector.result,i.results.select),c.data("module-"+v,i)},event:{focus:function(){c.addClass(h.focus),i.results.show()},blur:function(){i.search.cancel(),c.removeClass(h.focus),i.results.hide()}},handleKeyboard:function(t){var n,o=c.find(s.selector.result),a=c.find(s.selector.category),r=t.which,l={backspace:8,enter:13,escape:27,upArrow:38,downArrow:40},m=h.active,p=o.index(o.filter("."+m)),g=o.size();if(r==l.escape&&u.trigger("blur"),f.filter(":visible").size()>0)if(r==l.enter){if(o.filter("."+m).exists())return e.proxy(i.results.select,o.filter("."+m))(),t.preventDefault(),!1}else r==l.upArrow?(n=0>p-1?p:p-1,a.removeClass(m),o.removeClass(m).eq(n).addClass(m).closest(a).addClass(m),t.preventDefault()):r==l.downArrow&&(n=p+1>=g?p:p+1,a.removeClass(m),o.removeClass(m).eq(n).addClass(m).closest(a).addClass(m),t.preventDefault());else r==l.enter&&(i.search.query(),d.addClass(h.down),u.one("keyup",function(){d.removeClass(h.down)}))},search:{cancel:function(){var e=c.data("xhr")||!1;e&&"resolved"!=e.state()&&e.abort()},throttle:function(){var e,t=u.val(),n=t.length;clearTimeout(c.data("timer")),n>=s.minCharacters?(e=setTimeout(i.search.query,s.searchThrottle),c.data("timer",e)):i.results.hide()},query:function(){var t=u.val(),o=i.search.cache.read(t);o?(i.debug("Reading result for '"+t+"' from cache"),i.results.add(o)):(i.debug("Querying for '"+t+"'"),"object"==typeof n?i.search.local(t):i.search.remote(t),e.proxy(s.onSearchQuery,c)(t))},local:function(t){var o,a=[],r=[],l=e.isArray(s.searchFields)?s.searchFields:[s.searchFields],u=RegExp("(?:s|^)"+t,"i"),d=RegExp(t,"i");c.addClass(h.loading),e.each(l,function(t,o){e.each(n,function(t,n){"string"==typeof n[o]&&-1==e.inArray(n,a)&&-1==e.inArray(n,r)&&(u.test(n[o])?a.push(n):d.test(n[o])&&r.push(n))})}),o=i.results.generate({results:e.merge(a,r)}),c.removeClass(h.loading),i.search.cache.write(t,o),i.results.add(o)},remote:function(t){var a,r=c.data("xhr")!==o?c.data("xhr"):!1,l={stateContext:c,url:n,urlData:{query:t},success:function(e){a=i.results.generate(e),i.search.cache.write(t,a),i.results.add(a)},failure:i.error};r&&"resolved"!=r.state()&&r.abort(),e.extend(!0,l,s.apiSettings),e.api(l)},cache:{read:function(e){var t=c.data("cache");return s.cache&&"object"==typeof t&&t[e]!==o?t[e]:!1},write:function(e,t){var n=c.data("cache")!==o?c.data("cache"):{};n[e]=t,c.data("cache",n)}}},results:{generate:function(t){i.debug("Generating html from response",t);var n=s.templates[s.type],o="";return e.isPlainObject(t.results)&&!e.isEmptyObject(t.results)||e.isArray(t.results)&&t.results.length>0?(s.maxResults>0&&(t.results=e.makeArray(t.results).slice(0,s.maxResults)),t.results.length>0&&(e.isFunction(n)?o=n(t):i.error(b.noTemplate,!1))):o=i.message(b.noResults,"empty"),e.proxy(s.onSearchResults,c)(t),o},add:function(t){("default"==s.onResultsAdd||"default"==e.proxy(s.onResultsAdd,f)(t))&&f.html(t),i.results.show()},show:function(){0===f.filter(":visible").size()&&u.filter(":focus").size()>0&&""!==f.html()&&(f.stop().fadeIn(200),e.proxy(s.onResultsOpen,f)())},hide:function(){f.filter(":visible").size()>0&&(f.stop().fadeOut(200),e.proxy(s.onResultsClose,f)())},followLink:function(){},select:function(n){i.debug("Search result selected");var o=e(this),a=o.find(".title"),r=a.html();if("default"==s.onSelect||"default"==e.proxy(s.onSelect,this)(n)){var l=o.find("a[href]").eq(0),c=l.attr("href"),d=l.attr("target");try{i.results.hide(),u.val(r),"_blank"==d||n.ctrlKey?t.open(c):t.location.href=c}catch(f){}}}},setting:function(e,t){return t===o?s[e]:(s[e]=t,o)},debug:function(){var e=[],t=s.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),s.debug&&(e.push(t),o.apply(console,e.concat(n)))},message:function(e,t){return t=t||"standard",i.results.add(s.templates.message(e,t)),s.templates.message(e,t)},error:function(e,t){t=t!==o?t:!0,console.warn(s.moduleName+": "+e),t&&e!==o&&i.message(e,"error")},invoke:function(t,n,a){var s,r;return a=a||[].slice.call(arguments,2),"string"==typeof t&&p!==o&&(t=t.split("."),s=t.length-1,e.each(t,function(t,n){return e.isPlainObject(p[n])&&t!=s?(p=p[n],!0):p[n]!==o?(r=p[n],!0):(i.error(b.method),!1)})),e.isFunction(r)?r.apply(n,a):r}},g?a=i.invoke(r,m,l):i.initialize()}),a!==o?a:this},e.fn.searchPrompt.settings={moduleName:"Search Module",debug:!0,namespace:"search",onSelect:"default",onResultsAdd:"default",onSearchQuery:function(){},onSearchResults:function(){},onResultsOpen:function(){},onResultsClose:function(){},automatic:"true",type:"simple",minCharacters:3,searchThrottle:300,maxResults:7,cache:!0,searchFields:["title","description"],apiSettings:{},className:{active:"active",down:"down",focus:"focus",empty:"empty",loading:"loading"},errors:{noResults:"Your search returned no results",logging:"Error in debug logging, exiting.",noTemplate:"A valid template name was not specified.",serverError:"There was an issue with querying the server.",method:"The method you called is not defined."},selector:{searchPrompt:".prompt",searchButton:".search.button",searchResults:".results",category:".category",result:".result",emptyResult:".results .message",resultPage:".results .page"},templates:{message:function(e,t){var n="";return e!==o&&t!==o&&(n+='
'+'
',n+="empty"==t?"

No Results

"+e+"

":'
'+e+"
",n+="
"),n},categories:function(t){var n="";return t.results!==o?(e.each(t.results,function(t,i){i.results!==o&&i.results.length>0&&(n+='
'+i.name+"
"+"
    ",e.each(i.results,function(e,t){n+='
  • ',n+='',t.image!==o&&(n+='
    '+"
    "),n+=t.image!==o?'
    ':'
    ',t.price!==o&&(n+='
    '+t.price+"
    "),t.title!==o&&(n+='
    '+t.title+"
    "),t.description!==o&&(n+='
    '+t.description+"
    "),n+="
  • "}),n+="
")}),t.resultPage&&(n+=''+t.resultPage.text+""),n):!1},simple:function(t){var n="";return t.results!==o?(n+="
    ",e.each(t.results,function(e,t){n+='
  • ',t.url!==o&&(n+=''),t.image!==o&&(n+='
    '+"
    "),n+=t.image!==o?'
    ':'
    ',t.price!==o&&(n+='
    '+t.price+"
    "),t.title!==o&&(n+='
    '+t.title+"
    "),t.description!==o&&(n+='
    '+t.description+"
    "),n+="
  • "}),n+="
",t.resultPage&&(n+=''+t.resultPage.text+""),n):!1}}}})(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 c7c5c7479..14142d415 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,s,r,l,c=e.extend(!0,{},e.fn.tabNavigation.settings,n),u=e(this),d=e(c.context).find(c.selector.tabs),f=!0,p={},m=0,g=c.className,h=c.metadata,v=c.namespace,b=c.errors,y=u.data("module"),x=arguments[0],w=y!==o&&"string"==typeof x,C=[].slice.call(arguments,1);return r={initialize:function(){r.debug("Initializing Tabs",u),c.history&&c.path!==!1&&(e.address!==o?(r.verbose("Address library found adding state change event"),e.address.state(c.path).change(r.event.history.change)):r.error(b.state)),e.isWindow(u.get(0))||u.on("click."+v,r.event.click),u.data("module",r)},destroy:function(){r.debug("Destroying tabs",u),u.off("."+v)},event:{click:function(){r.debug("Navigation clicked");var t=e(this).data(h.tab);t!==o?t!==i&&(c.history?e.address.value(t):r.change(t)):r.debug("No tab specified")},history:{change:function(t){var n=t.pathNames.join("/")||r.get.initialPath(),i=c.templates.determineTitle(n)||!1;r.debug("History change event",n,t),s=t,n!==o&&r.change(n),i&&e.address.title(i)}}},refresh:function(){i&&(r.debug("Refreshing tab",i),r.change(i))},cache:{read:function(e){return e!==o?p[e]:p},add:function(e,t){e=e||i,r.debug("Adding cached content for",e),p[e]=t},remove:function(e){e=e||i,r.debug("Removing cached content for",e),delete p[e]}},change:function(n){var l=r.get.defaultPathArray(n);r.deactivate.all(),e.each(l,function(u,d){var m=l.slice(0,u+1),g=r.utils.arrayToPath(m),h=r.utils.last(l)==g,v=r.is.tab(g),b=!v,y=t.history&&t.history.pushState,x=y&&c.ignoreFirstLoad&&f,w=e.isPlainObject(c.apiSettings),C=r.get.tabElement(g);return r.verbose("Looking for tab",d),b?(r.verbose("Tab is not found, assuming it is a parameter",d),!0):(v&&(r.verbose("Tab was found",d),i=g,a=r.utils.filterArray(l,m),h&&w?x?(r.debug("Ignoring remote content on first tab load",g),f=!1,p[n]=C.html(),r.activate.all(g),e.proxy(c.onTabInit,C)(g,a,s)):(r.activate.navigation(g),r.content.fetch(g,c.onTabLoad)):(r.debug("Opened tab",g),r.activate.all(g),e.proxy(c.onTabLoad,C)(g,a,s))),o)})},content:{fetch:function(t){var n=r.get.tabElement(t),l=p[t]||!1,u={dataType:"html",stateContext:n,success:function(o){p[t]=o,r.content.update(t,o),t==i?(r.debug("Content loaded",t),r.activate.tab(t)):r.debug("Content loaded in background",t),e.proxy(c.onTabInit,n)(t,a,s)},urlData:{tab:t}},d=n.data(h.promise)||!1,f=d&&"pending"===d.state();c.cache&&l?(r.debug("Showing existing content",t),r.activate.tab(t),e.proxy(c.onTabLoad,n)(t,a,s)):f?(r.debug("Content is already loading",t),n.addClass(g.loading)):e.api!==o?(r.debug("Retrieving content",t),e.api(e.extend(!0,{},c.apiSettings,u))):r.error(b.api)},update:function(e,t){r.debug("Updating html for",e);var n=r.get.tabElement(e);n.html(t)}},activate:{all:function(e){r.activate.tab(e),r.activate.navigation(e)},tab:function(e){var t=r.get.tabElement(e);r.verbose("Showing tab content for",t),t.addClass(g.active)},navigation:function(e){var t=r.get.navElement(e);r.verbose("Activating tab navigation for",t),t.addClass(g.active)}},deactivate:{all:function(){r.deactivate.navigation(),r.deactivate.tabs()},navigation:function(){u.removeClass(g.active)},tabs:function(){d.removeClass(g.active+" "+g.loading)}},is:{tab:function(e){return r.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 r.utils.pathToArray(r.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(r.debug("Found default tab",n),c.maxDepth>m)return m++,r.get.defaultPath(n);r.error(b.recursion)}return m=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=r.utils.pathToArray(e),a=r.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?c[e]:(c[e]=t,o)},verbose:function(){c.verbose&&r.debug.apply(this,arguments)},debug:function(){var e=[],t=c.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),c.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=c.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};o=Function.prototype.bind.call(o,console),c.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,i){var a,s;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?(s=y[n],!0):(r.error(c.errors.method),!1)})),e.isFunction(s)?s.apply(n,i):s}},w?l=r.invoke(x,this,C):r.initialize(),l!==o?l: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,s,r,l,c=e.extend(!0,{},e.fn.tabNavigation.settings,n),u=e(this),d=e(c.context).find(c.selector.tabs),f=!0,m={},p=0,g=c.className,h=c.metadata,v=c.namespace,b=c.errors,y=u.data("module"),x=arguments[0],w=y!==o&&"string"==typeof x,C=[].slice.call(arguments,1);return r={initialize:function(){r.debug("Initializing Tabs",u),c.history&&c.path!==!1&&(e.address!==o?(r.verbose("Address library found adding state change event"),e.address.state(c.path).change(r.event.history.change)):r.error(b.state)),e.isWindow(u.get(0))||u.on("click."+v,r.event.click),u.data("module",r)},destroy:function(){r.debug("Destroying tabs",u),u.off("."+v)},event:{click:function(){r.debug("Navigation clicked");var t=e(this).data(h.tab);t!==o?t!==i&&(c.history?e.address.value(t):r.change(t)):r.debug("No tab specified")},history:{change:function(t){var n=t.pathNames.join("/")||r.get.initialPath(),i=c.templates.determineTitle(n)||!1;r.debug("History change event",n,t),s=t,n!==o&&r.change(n),i&&e.address.title(i)}}},refresh:function(){i&&(r.debug("Refreshing tab",i),r.change(i))},cache:{read:function(e){return e!==o?m[e]:m},add:function(e,t){e=e||i,r.debug("Adding cached content for",e),m[e]=t},remove:function(e){e=e||i,r.debug("Removing cached content for",e),delete m[e]}},change:function(n){var l=r.get.defaultPathArray(n);r.deactivate.all(),e.each(l,function(u,d){var p=l.slice(0,u+1),g=r.utils.arrayToPath(p),h=r.utils.last(l)==g,v=r.is.tab(g),b=!v,y=t.history&&t.history.pushState,x=y&&c.ignoreFirstLoad&&f,w=e.isPlainObject(c.apiSettings),C=r.get.tabElement(g);return r.verbose("Looking for tab",d),b?(r.verbose("Tab is not found, assuming it is a parameter",d),!0):(v&&(r.verbose("Tab was found",d),i=g,a=r.utils.filterArray(l,p),h&&w?x?(r.debug("Ignoring remote content on first tab load",g),f=!1,m[n]=C.html(),r.activate.all(g),e.proxy(c.onTabInit,C)(g,a,s)):(r.activate.navigation(g),r.content.fetch(g,c.onTabLoad)):(r.debug("Opened tab",g),r.activate.all(g),e.proxy(c.onTabLoad,C)(g,a,s))),o)})},content:{fetch:function(t){var n=r.get.tabElement(t),l=m[t]||!1,u={dataType:"html",stateContext:n,success:function(o){m[t]=o,r.content.update(t,o),t==i?(r.debug("Content loaded",t),r.activate.tab(t)):r.debug("Content loaded in background",t),e.proxy(c.onTabInit,n)(t,a,s)},urlData:{tab:t}},d=n.data(h.promise)||!1,f=d&&"pending"===d.state();c.cache&&l?(r.debug("Showing existing content",t),r.activate.tab(t),e.proxy(c.onTabLoad,n)(t,a,s)):f?(r.debug("Content is already loading",t),n.addClass(g.loading)):e.api!==o?(r.debug("Retrieving content",t),e.api(e.extend(!0,{},c.apiSettings,u))):r.error(b.api)},update:function(e,t){r.debug("Updating html for",e);var n=r.get.tabElement(e);n.html(t)}},activate:{all:function(e){r.activate.tab(e),r.activate.navigation(e)},tab:function(e){var t=r.get.tabElement(e);r.verbose("Showing tab content for",t),t.addClass(g.active)},navigation:function(e){var t=r.get.navElement(e);r.verbose("Activating tab navigation for",t),t.addClass(g.active)}},deactivate:{all:function(){r.deactivate.navigation(),r.deactivate.tabs()},navigation:function(){u.removeClass(g.active)},tabs:function(){d.removeClass(g.active+" "+g.loading)}},is:{tab:function(e){return r.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 r.utils.pathToArray(r.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(r.debug("Found default tab",n),c.maxDepth>p)return p++,r.get.defaultPath(n);r.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=r.utils.pathToArray(e),a=r.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?c[e]:(c[e]=t,o)},verbose:function(){c.verbose&&r.debug.apply(this,arguments)},debug:function(){var e=[],t=c.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.info||console.log||function(){};o=Function.prototype.bind.call(o,console),c.debug&&(e.push(t),o.apply(console,e.concat(n)))},error:function(){var e=[],t=c.moduleName+": "+arguments[0],n=[].slice.call(arguments,1),o=console.warn||console.log||function(){};o=Function.prototype.bind.call(o,console),c.debug&&(e.push(t),e.concat(n),o.apply(console,e.concat(n)))},invoke:function(t,n,i){var a,s;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?(s=y[n],!0):(r.error(c.errors.method),!1)})),e.isFunction(s)?s.apply(n,i):s}},w?l=r.invoke(x,this,C):r.initialize(),l!==o?l: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 2d63f4c4d..b4c792dbb 100644 --- a/build/packaged/modules/behavior/form.js +++ b/build/packaged/modules/behavior/form.js @@ -47,7 +47,6 @@ $.fn.form = function(fields, parameters) { instance = $module.data('module-' + settings.namespace), namespace = settings.namespace, - selector = settings.selector, metadata = settings.metadata, className = settings.className, errors = settings.errors, @@ -81,12 +80,14 @@ $.fn.form = function(fields, parameters) { }, refresh: function() { - $field = $module.find(selector.field); + $field = $module.find(settings.selector.field); }, submit: function() { module.verbose('Submitting form', $module); - $module.submit(); + $module + .submit() + ; }, event: { @@ -102,9 +103,11 @@ $.fn.form = function(fields, parameters) { ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $field.blur(); + $field + .blur() + ; } - if( key == keyCode.enter && $field.is(selector.input) ) { + if( key == keyCode.enter && $field.is(settings.selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -140,6 +143,7 @@ $.fn.form = function(fields, parameters) { get: { field: function(identifier) { + module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).size() > 0 ) { return $field.filter('#' + identifier); } @@ -164,12 +168,30 @@ $.fn.form = function(fields, parameters) { } }, + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + if( $field.filter('#' + identifier).size() > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { + return true + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { + return true + } + return false; + } + + }, + add: { prompt: function(field, errors) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), + $prompt = $fieldGroup.find(settings.selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -188,7 +210,9 @@ $.fn.form = function(fields, parameters) { .html(errors[0]) ; if($prompt.is(':not(:visible)')) { - $prompt.fadeIn(200); + $prompt + .fadeIn(settings.animateSpeed) + ; } } }, @@ -230,7 +254,10 @@ $.fn.form = function(fields, parameters) { } }); if(allValid) { - $module.removeClass(className.error); + $module + .removeClass(className.error) + .addClass(className.success) + ; $.proxy(settings.onSuccess, this)(event); } else { @@ -251,7 +278,7 @@ $.fn.form = function(fields, parameters) { ; if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( !( module.validate.rule(field, rule) ) ) { + if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', field.identifier, rule.type); fieldErrors.push(rule.prompt); fieldValid = false; @@ -329,14 +356,22 @@ $.fn.form = function(fields, parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -356,7 +391,8 @@ $.fn.form = function(fields, parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -370,7 +406,7 @@ $.fn.form = function(fields, parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -446,9 +482,10 @@ $.fn.form = function(fields, parameters) { $.fn.form.settings = { // module info - moduleName : 'Validate Form Module', + moduleName : 'Form', debug : true, verbose : true, + performance : true, namespace : 'validate', keyboardShortcuts : true, @@ -477,6 +514,7 @@ $.fn.form.settings = { className : { error : 'error', + success: 'success', down : 'down', label : 'ui label prompt' }, @@ -603,6 +641,9 @@ $.fn.form.settings = { not: function(value, notValue) { return (value != notValue); }, + is: function(value, text) { + return (value == text); + }, maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) diff --git a/build/packaged/modules/checkbox.js b/build/packaged/modules/checkbox.js index 8653f8918..fb452ee1f 100644 --- a/build/packaged/modules/checkbox.js +++ b/build/packaged/modules/checkbox.js @@ -156,20 +156,26 @@ $.fn.checkbox = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { - if(console.log !== undefined) { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); - } + module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -185,7 +191,8 @@ $.fn.checkbox = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -199,7 +206,7 @@ $.fn.checkbox = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -279,7 +286,7 @@ $.fn.checkbox.settings = { verbose : true, debug : true, - performance : false, + performance : true, // delegated event context context : false, diff --git a/build/packaged/modules/dropdown.js b/build/packaged/modules/dropdown.js index 35cfac202..6501a2e39 100644 --- a/build/packaged/modules/dropdown.js +++ b/build/packaged/modules/dropdown.js @@ -393,14 +393,22 @@ $.fn.dropdown = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -420,7 +428,8 @@ $.fn.dropdown = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -434,7 +443,7 @@ $.fn.dropdown = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -514,7 +523,7 @@ $.fn.dropdown.settings = { verbose : true, debug : true, - performance : false, + performance : true, on : 'click', gracePeriod : 300, diff --git a/build/packaged/semantic.min.js.REMOVED.git-id b/build/packaged/semantic.min.js.REMOVED.git-id index c071ea5bf..a9b71bbe1 100644 --- a/build/packaged/semantic.min.js.REMOVED.git-id +++ b/build/packaged/semantic.min.js.REMOVED.git-id @@ -1 +1 @@ -9db5cfc27a304899cd1ab4666348c271a8bb92a8 \ No newline at end of file +631e78f155da36c7880a4d93d75faf2d08b799ad \ No newline at end of file diff --git a/build/uncompressed/modules/behavior/form.js b/build/uncompressed/modules/behavior/form.js index 2d63f4c4d..b4c792dbb 100644 --- a/build/uncompressed/modules/behavior/form.js +++ b/build/uncompressed/modules/behavior/form.js @@ -47,7 +47,6 @@ $.fn.form = function(fields, parameters) { instance = $module.data('module-' + settings.namespace), namespace = settings.namespace, - selector = settings.selector, metadata = settings.metadata, className = settings.className, errors = settings.errors, @@ -81,12 +80,14 @@ $.fn.form = function(fields, parameters) { }, refresh: function() { - $field = $module.find(selector.field); + $field = $module.find(settings.selector.field); }, submit: function() { module.verbose('Submitting form', $module); - $module.submit(); + $module + .submit() + ; }, event: { @@ -102,9 +103,11 @@ $.fn.form = function(fields, parameters) { ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $field.blur(); + $field + .blur() + ; } - if( key == keyCode.enter && $field.is(selector.input) ) { + if( key == keyCode.enter && $field.is(settings.selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -140,6 +143,7 @@ $.fn.form = function(fields, parameters) { get: { field: function(identifier) { + module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).size() > 0 ) { return $field.filter('#' + identifier); } @@ -164,12 +168,30 @@ $.fn.form = function(fields, parameters) { } }, + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + if( $field.filter('#' + identifier).size() > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { + return true + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { + return true + } + return false; + } + + }, + add: { prompt: function(field, errors) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), + $prompt = $fieldGroup.find(settings.selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -188,7 +210,9 @@ $.fn.form = function(fields, parameters) { .html(errors[0]) ; if($prompt.is(':not(:visible)')) { - $prompt.fadeIn(200); + $prompt + .fadeIn(settings.animateSpeed) + ; } } }, @@ -230,7 +254,10 @@ $.fn.form = function(fields, parameters) { } }); if(allValid) { - $module.removeClass(className.error); + $module + .removeClass(className.error) + .addClass(className.success) + ; $.proxy(settings.onSuccess, this)(event); } else { @@ -251,7 +278,7 @@ $.fn.form = function(fields, parameters) { ; if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( !( module.validate.rule(field, rule) ) ) { + if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', field.identifier, rule.type); fieldErrors.push(rule.prompt); fieldValid = false; @@ -329,14 +356,22 @@ $.fn.form = function(fields, parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -356,7 +391,8 @@ $.fn.form = function(fields, parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -370,7 +406,7 @@ $.fn.form = function(fields, parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -446,9 +482,10 @@ $.fn.form = function(fields, parameters) { $.fn.form.settings = { // module info - moduleName : 'Validate Form Module', + moduleName : 'Form', debug : true, verbose : true, + performance : true, namespace : 'validate', keyboardShortcuts : true, @@ -477,6 +514,7 @@ $.fn.form.settings = { className : { error : 'error', + success: 'success', down : 'down', label : 'ui label prompt' }, @@ -603,6 +641,9 @@ $.fn.form.settings = { not: function(value, notValue) { return (value != notValue); }, + is: function(value, text) { + return (value == text); + }, maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) diff --git a/build/uncompressed/modules/checkbox.js b/build/uncompressed/modules/checkbox.js index 8653f8918..fb452ee1f 100644 --- a/build/uncompressed/modules/checkbox.js +++ b/build/uncompressed/modules/checkbox.js @@ -156,20 +156,26 @@ $.fn.checkbox = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { - if(console.log !== undefined) { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); - } + module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -185,7 +191,8 @@ $.fn.checkbox = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -199,7 +206,7 @@ $.fn.checkbox = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -279,7 +286,7 @@ $.fn.checkbox.settings = { verbose : true, debug : true, - performance : false, + performance : true, // delegated event context context : false, diff --git a/build/uncompressed/modules/dropdown.js b/build/uncompressed/modules/dropdown.js index 35cfac202..6501a2e39 100644 --- a/build/uncompressed/modules/dropdown.js +++ b/build/uncompressed/modules/dropdown.js @@ -393,14 +393,22 @@ $.fn.dropdown = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -420,7 +428,8 @@ $.fn.dropdown = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -434,7 +443,7 @@ $.fn.dropdown = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -514,7 +523,7 @@ $.fn.dropdown.settings = { verbose : true, debug : true, - performance : false, + performance : true, on : 'click', gracePeriod : 300, diff --git a/node/src/files/components/semantic/modules/behavior/form.js b/node/src/files/components/semantic/modules/behavior/form.js index 2d63f4c4d..b4c792dbb 100644 --- a/node/src/files/components/semantic/modules/behavior/form.js +++ b/node/src/files/components/semantic/modules/behavior/form.js @@ -47,7 +47,6 @@ $.fn.form = function(fields, parameters) { instance = $module.data('module-' + settings.namespace), namespace = settings.namespace, - selector = settings.selector, metadata = settings.metadata, className = settings.className, errors = settings.errors, @@ -81,12 +80,14 @@ $.fn.form = function(fields, parameters) { }, refresh: function() { - $field = $module.find(selector.field); + $field = $module.find(settings.selector.field); }, submit: function() { module.verbose('Submitting form', $module); - $module.submit(); + $module + .submit() + ; }, event: { @@ -102,9 +103,11 @@ $.fn.form = function(fields, parameters) { ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $field.blur(); + $field + .blur() + ; } - if( key == keyCode.enter && $field.is(selector.input) ) { + if( key == keyCode.enter && $field.is(settings.selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -140,6 +143,7 @@ $.fn.form = function(fields, parameters) { get: { field: function(identifier) { + module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).size() > 0 ) { return $field.filter('#' + identifier); } @@ -164,12 +168,30 @@ $.fn.form = function(fields, parameters) { } }, + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + if( $field.filter('#' + identifier).size() > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { + return true + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { + return true + } + return false; + } + + }, + add: { prompt: function(field, errors) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), + $prompt = $fieldGroup.find(settings.selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -188,7 +210,9 @@ $.fn.form = function(fields, parameters) { .html(errors[0]) ; if($prompt.is(':not(:visible)')) { - $prompt.fadeIn(200); + $prompt + .fadeIn(settings.animateSpeed) + ; } } }, @@ -230,7 +254,10 @@ $.fn.form = function(fields, parameters) { } }); if(allValid) { - $module.removeClass(className.error); + $module + .removeClass(className.error) + .addClass(className.success) + ; $.proxy(settings.onSuccess, this)(event); } else { @@ -251,7 +278,7 @@ $.fn.form = function(fields, parameters) { ; if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( !( module.validate.rule(field, rule) ) ) { + if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', field.identifier, rule.type); fieldErrors.push(rule.prompt); fieldValid = false; @@ -329,14 +356,22 @@ $.fn.form = function(fields, parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -356,7 +391,8 @@ $.fn.form = function(fields, parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -370,7 +406,7 @@ $.fn.form = function(fields, parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -446,9 +482,10 @@ $.fn.form = function(fields, parameters) { $.fn.form.settings = { // module info - moduleName : 'Validate Form Module', + moduleName : 'Form', debug : true, verbose : true, + performance : true, namespace : 'validate', keyboardShortcuts : true, @@ -477,6 +514,7 @@ $.fn.form.settings = { className : { error : 'error', + success: 'success', down : 'down', label : 'ui label prompt' }, @@ -603,6 +641,9 @@ $.fn.form.settings = { not: function(value, notValue) { return (value != notValue); }, + is: function(value, text) { + return (value == text); + }, maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) diff --git a/node/src/files/components/semantic/modules/checkbox.js b/node/src/files/components/semantic/modules/checkbox.js index 8653f8918..fb452ee1f 100644 --- a/node/src/files/components/semantic/modules/checkbox.js +++ b/node/src/files/components/semantic/modules/checkbox.js @@ -156,20 +156,26 @@ $.fn.checkbox = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { - if(console.log !== undefined) { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); - } + module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -185,7 +191,8 @@ $.fn.checkbox = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -199,7 +206,7 @@ $.fn.checkbox = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -279,7 +286,7 @@ $.fn.checkbox.settings = { verbose : true, debug : true, - performance : false, + performance : true, // delegated event context context : false, diff --git a/node/src/files/components/semantic/modules/dropdown.js b/node/src/files/components/semantic/modules/dropdown.js index 35cfac202..6501a2e39 100644 --- a/node/src/files/components/semantic/modules/dropdown.js +++ b/node/src/files/components/semantic/modules/dropdown.js @@ -393,14 +393,22 @@ $.fn.dropdown = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -420,7 +428,8 @@ $.fn.dropdown = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -434,7 +443,7 @@ $.fn.dropdown = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -514,7 +523,7 @@ $.fn.dropdown.settings = { verbose : true, debug : true, - performance : false, + performance : true, on : 'click', gracePeriod : 300, diff --git a/src/modules/behavior/form.js b/src/modules/behavior/form.js index 2d63f4c4d..b4c792dbb 100755 --- a/src/modules/behavior/form.js +++ b/src/modules/behavior/form.js @@ -47,7 +47,6 @@ $.fn.form = function(fields, parameters) { instance = $module.data('module-' + settings.namespace), namespace = settings.namespace, - selector = settings.selector, metadata = settings.metadata, className = settings.className, errors = settings.errors, @@ -81,12 +80,14 @@ $.fn.form = function(fields, parameters) { }, refresh: function() { - $field = $module.find(selector.field); + $field = $module.find(settings.selector.field); }, submit: function() { module.verbose('Submitting form', $module); - $module.submit(); + $module + .submit() + ; }, event: { @@ -102,9 +103,11 @@ $.fn.form = function(fields, parameters) { ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); - $field.blur(); + $field + .blur() + ; } - if( key == keyCode.enter && $field.is(selector.input) ) { + if( key == keyCode.enter && $field.is(settings.selector.input) ) { module.debug('Enter key pressed, submitting form'); $submit .addClass(className.down) @@ -140,6 +143,7 @@ $.fn.form = function(fields, parameters) { get: { field: function(identifier) { + module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).size() > 0 ) { return $field.filter('#' + identifier); } @@ -164,12 +168,30 @@ $.fn.form = function(fields, parameters) { } }, + has: { + + field: function(identifier) { + module.verbose('Checking for existence of a field with identifier', identifier); + if( $field.filter('#' + identifier).size() > 0 ) { + return true; + } + else if( $field.filter('[name="' + identifier +'"]').size() > 0 ) { + return true + } + else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').size() > 0 ) { + return true + } + return false; + } + + }, + add: { prompt: function(field, errors) { var $field = module.get.field(field.identifier), $fieldGroup = $field.closest($group), - $prompt = $fieldGroup.find(selector.prompt), + $prompt = $fieldGroup.find(settings.selector.prompt), promptExists = ($prompt.size() !== 0) ; module.verbose('Adding inline validation prompt'); @@ -188,7 +210,9 @@ $.fn.form = function(fields, parameters) { .html(errors[0]) ; if($prompt.is(':not(:visible)')) { - $prompt.fadeIn(200); + $prompt + .fadeIn(settings.animateSpeed) + ; } } }, @@ -230,7 +254,10 @@ $.fn.form = function(fields, parameters) { } }); if(allValid) { - $module.removeClass(className.error); + $module + .removeClass(className.error) + .addClass(className.success) + ; $.proxy(settings.onSuccess, this)(event); } else { @@ -251,7 +278,7 @@ $.fn.form = function(fields, parameters) { ; if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( !( module.validate.rule(field, rule) ) ) { + if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', field.identifier, rule.type); fieldErrors.push(rule.prompt); fieldValid = false; @@ -329,14 +356,22 @@ $.fn.form = function(fields, parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -356,7 +391,8 @@ $.fn.form = function(fields, parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -370,7 +406,7 @@ $.fn.form = function(fields, parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -446,9 +482,10 @@ $.fn.form = function(fields, parameters) { $.fn.form.settings = { // module info - moduleName : 'Validate Form Module', + moduleName : 'Form', debug : true, verbose : true, + performance : true, namespace : 'validate', keyboardShortcuts : true, @@ -477,6 +514,7 @@ $.fn.form.settings = { className : { error : 'error', + success: 'success', down : 'down', label : 'ui label prompt' }, @@ -603,6 +641,9 @@ $.fn.form.settings = { not: function(value, notValue) { return (value != notValue); }, + is: function(value, text) { + return (value == text); + }, maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) diff --git a/src/modules/checkbox.js b/src/modules/checkbox.js index 8653f8918..fb452ee1f 100755 --- a/src/modules/checkbox.js +++ b/src/modules/checkbox.js @@ -156,20 +156,26 @@ $.fn.checkbox = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { - if(console.log !== undefined) { - module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); - } + module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':'); }, performance: { log: function(message) { @@ -185,7 +191,8 @@ $.fn.checkbox = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -199,7 +206,7 @@ $.fn.checkbox = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -279,7 +286,7 @@ $.fn.checkbox.settings = { verbose : true, debug : true, - performance : false, + performance : true, // delegated event context context : false, diff --git a/src/modules/dropdown.js b/src/modules/dropdown.js index 35cfac202..6501a2e39 100755 --- a/src/modules/dropdown.js +++ b/src/modules/dropdown.js @@ -393,14 +393,22 @@ $.fn.dropdown = function(parameters) { }, debug: function() { if(settings.debug) { - module.performance.log(arguments[0]); - module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, verbose: function() { if(settings.verbose && settings.debug) { - module.performance.log(arguments[0]); - module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + if(settings.performance) { + module.performance.log(arguments); + } + else { + module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':'); + } } }, error: function() { @@ -420,7 +428,8 @@ $.fn.dropdown = function(parameters) { time = currentTime; performance.push({ 'Element' : element, - 'Name' : message, + 'Name' : message[0], + 'Arguments' : message[1] || 'None', 'Execution Time' : executionTime }); clearTimeout(module.performance.timer); @@ -434,7 +443,7 @@ $.fn.dropdown = function(parameters) { totalExecutionTime = 0 ; if(selector) { - title += 'Performance (' + selector + ')'; + title += ' Performance (' + selector + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); @@ -514,7 +523,7 @@ $.fn.dropdown.settings = { verbose : true, debug : true, - performance : false, + performance : true, on : 'click', gracePeriod : 300,