Browse Source

Updates widget factory to be more consistent accross modules

Former-commit-id: 0a9c0b8100
Former-commit-id: 6987d9702d
pull/258/head
Jack Lukic 11 years ago
parent
commit
fdea3091b7
11 changed files with 780 additions and 640 deletions
  1. 20
      src/modules/accordion.js
  2. 1
      src/modules/carousel.js
  3. 67
      src/modules/checkbox.js
  4. 24
      src/modules/dimmer.js
  5. 20
      src/modules/dropdown.js
  6. 13
      src/modules/modal.js
  7. 723
      src/modules/nag.js
  8. 70
      src/modules/popup.js
  9. 404
      src/modules/search.js
  10. 72
      src/modules/shape.js
  11. 6
      src/modules/tab.js

20
src/modules/accordion.js

@ -26,8 +26,7 @@ $.fn.accordion = function(parameters) {
query = arguments[0],
methodInvoked = (typeof query == 'string'),
queryArguments = [].slice.call(arguments, 1),
invokedResponse,
allModules
invokedResponse
;
$allModules
.each(function() {
@ -37,14 +36,11 @@ $.fn.accordion = function(parameters) {
$icon = $module.find(settings.selector.icon),
$content = $module.find(settings.selector.content),
selector = $module.selector || '',
element = this,
instance = $module.data('module-' + settings.namespace),
instance = $module.data(moduleNamespace),
className = settings.className,
metadata = settings.metadata,
namespace = settings.namespace,
animation = settings.animation,
errors = settings.errors,
module
@ -56,17 +52,18 @@ $.fn.accordion = function(parameters) {
module.debug('Initializing accordion with bound events', $module);
// initializing
$title
.on('click', module.event.click)
.on('click' + eventNamespace, module.event.click)
;
$module
.data('module', module)
.data(moduleNamespace, module)
;
},
destroy: function() {
module.debug('Destroying previous accordion for', $module);
$module
.off(namespace)
.off(eventNamespace)
.removeData(moduleNamespace)
;
},
@ -247,7 +244,7 @@ $.fn.accordion = function(parameters) {
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : message[1] || '',
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
@ -306,7 +303,6 @@ $.fn.accordion = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;
@ -337,7 +333,7 @@ $.fn.accordion.settings = {
debug : true,
verbose : true,
performance : false,
performance : true,
exclusive : true,
collapsible : true,

1
src/modules/carousel.js

@ -264,7 +264,6 @@ $.fn.carousel = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;

67
src/modules/checkbox.js

@ -18,8 +18,6 @@ $.fn.checkbox = function(parameters) {
settings = $.extend(true, {}, $.fn.checkbox.settings, parameters),
eventNamespace = '.' + settings.namespace,
moduleNamespace = 'module-' + settings.namespace,
moduleSelector = $allModules.selector || '',
time = new Date().getTime(),
@ -34,33 +32,35 @@ $.fn.checkbox = function(parameters) {
$allModules
.each(function() {
var
$module = $(this),
$label = $(this).next(settings.selector.label).first(),
$input = $(this).find(settings.selector.input),
$module = $(this),
$label = $(this).next(settings.selector.label).first(),
$input = $(this).find(settings.selector.input),
eventNamespace = '.' + settings.namespace,
moduleNamespace = 'module-' + settings.namespace,
selector = $module.selector || '',
element = this,
instance = $module.data('module-' + settings.namespace),
className = settings.className,
namespace = settings.namespace,
errors = settings.errors,
selector = $module.selector || '',
element = this,
instance = $module.data(moduleNamespace),
className = settings.className,
namespace = settings.namespace,
errors = settings.errors,
module
;
module = {
initialize: function() {
module.verbose('Initializing checkbox');
if(settings.context && selector !== '') {
module.verbose('Initializing checkbox with delegated events', $module);
module.verbose('Adding delegated events');
$(element, settings.context)
.on(selector, 'click' + eventNamespace, module.toggle)
.on(selector + ' + ' + settings.selector.label, 'click' + eventNamespace, module.toggle)
.data(moduleNamespace, module)
;
}
else {
module.verbose('Initializing checkbox with bound events', $module);
$module
.on('click' + eventNamespace, module.toggle)
.data(moduleNamespace, module)
@ -69,10 +69,19 @@ $.fn.checkbox = function(parameters) {
.on('click' + eventNamespace, module.toggle)
;
}
module.instantiate();
},
instantiate: function() {
module.verbose('Storing instance of module', module);
instance = module;
$module
.data(moduleNamespace, module)
;
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
module.verbose('Destroying previous module');
$module
.off(namespace)
;
@ -80,9 +89,7 @@ $.fn.checkbox = function(parameters) {
is: {
radio: function() {
return $module
.hasClass(className.radio)
;
return $module.hasClass(className.radio);
}
},
@ -119,8 +126,8 @@ $.fn.checkbox = function(parameters) {
$.proxy(settings.onDisable, $input.get())();
},
toggle: function() {
module.verbose('Toggling checkbox state');
toggle: function(event) {
module.verbose('Determining new checkbox state', $(event.target));
if($input.prop('checked') === undefined || !$input.prop('checked')) {
module.enable();
}
@ -128,15 +135,12 @@ $.fn.checkbox = function(parameters) {
module.disable();
}
},
setting: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
module.verbose('Modifying settings object', name, value);
$.extend(true, settings, name);
}
else {
module.verbose('Modifying setting', name, value);
settings[name] = value;
}
}
@ -147,11 +151,9 @@ $.fn.checkbox = function(parameters) {
internal: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
module.verbose('Modifying internal property', name, value);
$.extend(true, module, name);
}
else {
module.verbose('Changing internal method to', value);
module[name] = value;
}
}
@ -180,7 +182,7 @@ $.fn.checkbox = function(parameters) {
}
},
error: function() {
module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':');
module.error = Function.prototype.bind.call(console.warn, console, settings.moduleName + ':');
},
performance: {
log: function(message) {
@ -197,7 +199,7 @@ $.fn.checkbox = function(parameters) {
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : message[1] || '',
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
@ -245,18 +247,16 @@ $.fn.checkbox = function(parameters) {
$.each(query, function(depth, value) {
if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) {
instance = instance[value];
return true;
}
else if( instance[value] !== undefined ) {
found = instance[value];
return true;
}
module.error(errors.method);
return false;
else {
module.error(errors.method);
}
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;
@ -277,6 +277,7 @@ $.fn.checkbox = function(parameters) {
}
})
;
return (invokedResponse)
? invokedResponse
: this

24
src/modules/dimmer.js

@ -20,7 +20,6 @@ $.fn.dimmer = function(parameters) {
eventNamespace = '.' + settings.namespace,
moduleNamespace = 'module-' + settings.namespace,
moduleSelector = $allModules.selector || '',
moduleCount = $allModules.size(),
time = new Date().getTime(),
performance = [],
@ -46,7 +45,7 @@ $.fn.dimmer = function(parameters) {
animationEnd = 'animationend msAnimationEnd oAnimationEnd webkitAnimationEnd',
element = this,
instance = $dimmer.data('module-' + namespace),
instance = $dimmer.data(moduleNamespace),
module
;
@ -56,29 +55,29 @@ $.fn.dimmer = function(parameters) {
if( module.is.dimmer() ) {
$dimmer = $module;
$module = $dimmer.parent();
module.debug('Module initialized as dimmer', $dimmer);
module.debug('Module initialized as dimmer');
}
else {
if( module.has.dimmer() ) {
$dimmer = $module.find(selector.dimmer);
module.debug('Module initialized with found dimmer', $dimmer);
module.debug('Module initialized with found dimmer');
}
else {
$dimmer = settings.template.dimmer();
$dimmer
.appendTo($module)
;
module.debug('Module initialized with created dimmer', $dimmer);
module.debug('Module initialized with created dimmer');
}
if(settings.on == 'hover') {
$module
.on('mouseenter', module.show)
.on('mouseleave', module.hide)
.on('mouseenter' + eventNamespace, module.show)
.on('mouseleave' + eventNamespace, module.hide)
;
}
else if(settings.on == 'click') {
$module
.on('click', module.toggle)
.on('click' + eventNamespace, module.toggle)
;
}
}
@ -97,12 +96,12 @@ $.fn.dimmer = function(parameters) {
module.verbose('Storing instance of module');
instance = module;
$dimmer
.data('module-' + namespace, instance)
.data(moduleNamespace, instance)
;
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
module.verbose('Destroying previous module');
$module
.off(namespace)
;
@ -336,7 +335,7 @@ $.fn.dimmer = function(parameters) {
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : message[1] || '',
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
@ -394,7 +393,6 @@ $.fn.dimmer = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;
@ -408,7 +406,7 @@ $.fn.dimmer = function(parameters) {
invokedResponse = module.invoke(query);
}
else {
if(instance === undefined) {
if(instance !== undefined) {
module.destroy();
}
module.initialize();

20
src/modules/dropdown.js

@ -28,8 +28,7 @@ $.fn.dropdown = function(parameters) {
query = arguments[0],
methodInvoked = (typeof query == 'string'),
queryArguments = [].slice.call(arguments, 1),
invokedResponse,
allModules
invokedResponse
;
$allModules
@ -43,9 +42,8 @@ $.fn.dropdown = function(parameters) {
isTouchDevice = ('ontouchstart' in document.documentElement),
selector = $module.selector || '',
element = this,
instance = $module.data('module-' + settings.namespace),
instance = $module.data(moduleNamespace),
className = settings.className,
metadata = settings.metadata,
@ -59,7 +57,7 @@ $.fn.dropdown = function(parameters) {
module = {
initialize: function() {
module.verbose('Initializing dropdown with bound events', $module);
module.debug('Initializing dropdown with bound events', $module);
if(isTouchDevice) {
$module
.on('touchstart' + eventNamespace, module.event.test.toggle)
@ -87,6 +85,11 @@ $.fn.dropdown = function(parameters) {
$item
.on(module.get.selectEvent() + eventNamespace, module.event.item.click)
;
module.instantiate();
},
instantiate: function() {
module.verbose('Storing instance of module', module);
$module
.data(moduleNamespace, module)
;
@ -96,6 +99,7 @@ $.fn.dropdown = function(parameters) {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
.removeData(moduleNamespace)
;
},
@ -250,7 +254,6 @@ $.fn.dropdown = function(parameters) {
},
selected: function(value) {
var
selectedValue = value || $input.val(),
$selectedItem = module.get.item(value),
selectedText
;
@ -463,7 +466,7 @@ $.fn.dropdown = function(parameters) {
}
},
error: function() {
module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':');
module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':');
},
performance: {
log: function(message) {
@ -480,7 +483,7 @@ $.fn.dropdown = function(parameters) {
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : message[1] || '',
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
@ -538,7 +541,6 @@ $.fn.dropdown = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;

13
src/modules/modal.js

@ -121,10 +121,10 @@
instance = $modal.data('module-' + settings.namespace),
methodInvoked = (typeof query == 'string'),
className = settings.className,
namespace = settings.namespace,
module
;
@ -154,6 +154,7 @@
startPosition
;
$modal
.removeClass('absolute fixed')
.addClass(modalType)
;
topCentering = (cantFit)
@ -341,16 +342,16 @@
unDim : function(){},
hide : function(){},
show : function(){},
context : 'body',
opacity : 0.8,
closeSpacing : 25,
animationOffset : 15,
duration : 400,
easing : 'easeOutExpo',
selector : {
dimmer : '#dimmer',
modal : '.modal',

723
src/modules/nag.js

@ -8,345 +8,500 @@
;(function ($, window, document, undefined) {
$.fn.nag = function(parameters) {
var
settings = $.extend(true, {}, $.fn.nag.settings, parameters),
// hoist arguments
moduleArguments = arguments || false
;
$(this)
.each(function() {
var
$module = $(this),
$close = $module.find(settings.selector.close),
$context = $(settings.context),
instance = $module.data('module'),
className = settings.className,
moduleOffset,
moduleHeight,
contextWidth,
contextHeight,
contextOffset,
yOffset,
yPosition,
timer,
module,
requestAnimationFrame = window.requestAnimationFrame
|| window.mozRequestAnimationFrame
|| window.webkitRequestAnimationFrame
|| window.msRequestAnimationFrame
|| function(callback) { setTimeout(callback, 0); }
;
module = {
initialize: function() {
// calculate module offset once
moduleOffset = $module.offset();
moduleHeight = $module.outerHeight();
contextWidth = $context.outerWidth();
contextHeight = $context.outerHeight();
contextOffset = $context.offset();
$.fn.nag = function(parameters) {
var
$allModules = $(this),
settings = $.extend(true, {}, $.fn.nag.settings, parameters),
eventNamespace = '.' + settings.namespace,
moduleNamespace = settings.namespace + '-module',
moduleSelector = $allModules.selector || '',
time = new Date().getTime(),
performance = [],
query = arguments[0],
methodInvoked = (typeof query == 'string'),
queryArguments = [].slice.call(arguments, 1),
invokedResponse
;
$(this)
.each(function() {
var
$module = $(this),
$close = $module.find(settings.selector.close),
$context = $(settings.context),
element = this,
instance = $module.data(moduleNamespace),
className = settings.className,
errors = settings.errors,
moduleOffset,
moduleHeight,
contextWidth,
contextHeight,
contextOffset,
yOffset,
yPosition,
timer,
module,
requestAnimationFrame = window.requestAnimationFrame
|| window.mozRequestAnimationFrame
|| window.webkitRequestAnimationFrame
|| window.msRequestAnimationFrame
|| function(callback) { setTimeout(callback, 0); }
;
module = {
initialize: function() {
module.verbose('Initializing element');
// calculate module offset once
moduleOffset = $module.offset();
moduleHeight = $module.outerHeight();
contextWidth = $context.outerWidth();
contextHeight = $context.outerHeight();
contextOffset = $context.offset();
$module
.data(moduleNamespace, module)
;
$close
.on('click' + eventNamespace, module.dismiss)
;
// lets avoid javascript if we dont need to reposition
if(settings.context == window && settings.position == 'fixed') {
$module
.data('module', module)
;
$close
.on('click', module.dismiss)
.addClass(className.fixed)
;
// lets avoid javascript if we dont need to reposition
if(settings.context == window && settings.position == 'fixed') {
$module
.addClass(className.fixed)
}
if(settings.sticky) {
module.verbose('Adding scroll events');
// retrigger on scroll for absolute
if(settings.position == 'absolute') {
$context
.on('scroll' + eventNamespace, module.event.scroll)
.on('resize' + eventNamespace, module.event.scroll)
;
}
if(settings.sticky) {
// retrigger on scroll for absolute
if(settings.position == 'absolute') {
$context
.on('scroll resize', module.event.scroll)
;
}
// fixed is always relative to window
else {
$(window)
.on('scroll resize', module.event.scroll)
;
}
// fire once to position on init
$.proxy(module.event.scroll, this)();
// fixed is always relative to window
else {
$(window)
.on('scroll' + eventNamespace, module.event.scroll)
.on('resize' + eventNamespace, module.event.scroll)
;
}
// fire once to position on init
$.proxy(module.event.scroll, this)();
}
if(settings.displayTime > 0) {
setTimeout(module.hide, settings.displayTime);
}
if(module.should.show()) {
if( !$module.is(':visible') ) {
module.show();
}
}
else {
module.hide();
if(settings.displayTime > 0) {
setTimeout(module.hide, settings.displayTime);
}
if(module.should.show()) {
if( !$module.is(':visible') ) {
module.show();
}
},
}
else {
module.hide();
}
},
destroy: function() {
module.verbose('Destroying instance');
$module
.removeData(moduleNamespace)
.off(eventNamespace)
;
if(settings.sticky) {
$context
.off(eventNamespace)
;
}
},
refresh: function() {
module.debug('Refreshing cached calculations');
moduleOffset = $module.offset();
moduleHeight = $module.outerHeight();
contextWidth = $context.outerWidth();
contextHeight = $context.outerHeight();
contextOffset = $context.offset();
},
show: function() {
module.debug('Showing nag', settings.animation.show);
if(settings.animation.show == 'fade') {
$module
.fadeIn(settings.duration, settings.easing)
;
}
else {
$module
.slideDown(settings.duration, settings.easing)
;
}
},
hide: function() {
module.debug('Showing nag', settings.animation.hide);
if(settings.animation.show == 'fade') {
$module
.fadeIn(settings.duration, settings.easing)
;
}
else {
$module
.slideUp(settings.duration, settings.easing)
;
}
},
refresh: function() {
moduleOffset = $module.offset();
moduleHeight = $module.outerHeight();
contextWidth = $context.outerWidth();
contextHeight = $context.outerHeight();
contextOffset = $context.offset();
},
onHide: function() {
module.debug('Removing nag', settings.animation.hide);
$module.remove();
if (settings.onHide) {
settings.onHide();
}
},
stick: function() {
module.refresh();
if(settings.position == 'fixed') {
var
windowScroll = $(window).prop('pageYOffset') || $(window).scrollTop(),
fixedOffset = ( $module.hasClass(className.bottom) )
? contextOffset.top + (contextHeight - moduleHeight) - windowScroll
: contextOffset.top - windowScroll
;
$module
.css({
position : 'fixed',
top : fixedOffset,
left : contextOffset.left,
width : contextWidth - settings.scrollBarWidth
})
;
}
else {
$module
.css({
top : yPosition
})
;
}
},
unStick: function() {
$module
.css({
top : ''
})
;
},
dismiss: function(event) {
if(settings.storageMethod) {
module.storage.set(settings.storedKey, settings.storedValue);
}
module.hide();
event.stopImmediatePropagation();
event.preventDefault();
},
should: {
show: function() {
if(settings.animation.show == 'fade') {
$module
.fadeIn(settings.duration, settings.easing)
;
if(settings.persist) {
module.debug('Persistent nag is set, can show nag');
return true;
}
else {
$module
.slideDown(settings.duration, settings.easing)
;
if(module.storage.get(settings.storedKey) != settings.storedValue) {
module.debug('Stored value is not set can show nag', module.storage.get(settings.storedKey));
return true;
}
module.debug('Stored value is set, cant show nag', module.storage.get(settings.storedKey));
return false;
},
hide: function() {
if(settings.animation.show == 'fade') {
$module
.fadeIn(settings.duration, settings.easing)
;
stick: function() {
yOffset = $context.prop('pageYOffset') || $context.scrollTop();
yPosition = ( $module.hasClass(className.bottom) )
? (contextHeight - $module.outerHeight() ) + yOffset
: yOffset
;
// absolute position calculated when y offset met
if(yPosition > moduleOffset.top) {
return true;
}
else {
$module
.slideUp(settings.duration, settings.easing)
;
else if(settings.position == 'fixed') {
return true;
}
},
return false;
}
},
onHide: function() {
$module.remove();
if (settings.onHide) {
settings.onHide();
}
},
storage: {
stick: function() {
module.refresh();
if(settings.position == 'fixed') {
var
windowScroll = $(window).prop('pageYOffset') || $(window).scrollTop(),
fixedOffset = ( $module.hasClass(className.bottom) )
? contextOffset.top + (contextHeight - moduleHeight) - windowScroll
: contextOffset.top - windowScroll
;
$module
.css({
position : 'fixed',
top : fixedOffset,
left : contextOffset.left,
width : contextWidth - settings.scrollBarWidth
})
;
set: function(key, value) {
module.debug('Setting stored value', key, value, settings.storageMethod);
if(settings.storageMethod == 'local' && window.store !== undefined) {
window.store.set(key, value);
}
// store by cookie
else if($.cookie !== undefined) {
$.cookie(key, value);
}
else {
$module
.css({
top : yPosition
})
;
module.error(errors.noStorage);
}
},
unStick: function() {
$module
.css({
top : ''
})
;
},
dismiss: function(event) {
if(settings.storageMethod) {
module.storage.set(settings.storedKey, settings.storedValue);
get: function(key) {
module.debug('Getting stored value', key, settings.storageMethod);
if(settings.storageMethod == 'local' && window.store !== undefined) {
return window.store.get(key);
}
module.hide();
event.stopImmediatePropagation();
event.preventDefault();
},
should: {
show: function() {
if( !settings.persist && module.storage.get(settings.storedKey) == settings.storedValue) {
return false;
}
return true;
},
stick: function() {
yOffset = $context.prop('pageYOffset') || $context.scrollTop();
yPosition = ( $module.hasClass(className.bottom) )
? (contextHeight - $module.outerHeight() ) + yOffset
: yOffset
;
// absolute position calculated when y offset met
if(yPosition > moduleOffset.top) {
return true;
}
else if(settings.position == 'fixed') {
return true;
}
return false;
// get by cookie
else if($.cookie !== undefined) {
return $.cookie(key);
}
},
else {
module.error(errors.noStorage);
}
}
storage: {
},
set: function(key, value) {
if(settings.storageMethod == 'local' && window.store !== undefined) {
window.store.set(key, value);
}
// store by cookie
else if($.cookie !== undefined) {
$.cookie(key, value);
}
else {
module.error(settings.errors.noStorage);
}
},
get: function(key) {
if(settings.storageMethod == 'local' && window.store !== undefined) {
return window.store.get(key);
}
// get by cookie
else if($.cookie !== undefined) {
return $.cookie(key);
event: {
scroll: function() {
if(timer !== undefined) {
clearTimeout(timer);
}
timer = setTimeout(function() {
if(module.should.stick() ) {
requestAnimationFrame(module.stick);
}
else {
module.error(settings.errors.noStorage);
module.unStick();
}
}, settings.lag);
}
},
setting: function(name, value) {
module.debug('Changing setting', name, value);
if(value !== undefined) {
if( $.isPlainObject(name) ) {
$.extend(true, settings, name);
}
},
event: {
scroll: function() {
if(timer !== undefined) {
clearTimeout(timer);
}
timer = setTimeout(function() {
if(module.should.stick() ) {
requestAnimationFrame(module.stick);
}
else {
module.unStick();
}
}, settings.lag);
else {
settings[name] = value;
}
},
error: function(error) {
console.log('Nag Module:' + error);
},
// allows for dot notation method calls
invoke: function(methodName, context, methodArguments) {
}
else {
return settings[name];
}
},
internal: function(name, value) {
module.debug('Changing internal', name, value);
if(value !== undefined) {
if( $.isPlainObject(name) ) {
$.extend(true, module, name);
}
else {
module[name] = value;
}
}
else {
return module[name];
}
},
debug: function() {
if(settings.debug) {
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) {
if(settings.performance) {
module.performance.log(arguments);
}
else {
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
}
},
error: function() {
module.error = Function.prototype.bind.call(console.log, console, settings.moduleName + ':');
},
performance: {
log: function(message) {
var
method
currentTime,
executionTime,
previousTime
;
methodArguments = methodArguments || Array.prototype.slice.call( arguments, 2 );
if(typeof methodName == 'string' && instance !== undefined) {
methodName = methodName.split('.');
$.each(methodName, function(index, name) {
if( $.isPlainObject( instance[name] ) ) {
instance = instance[name];
return true;
}
else if( $.isFunction( instance[name] ) ) {
method = instance[name];
return true;
}
module.error(settings.errors.method);
return false;
if(settings.performance) {
currentTime = new Date().getTime();
previousTime = time || currentTime,
executionTime = currentTime - previousTime;
time = currentTime;
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
if ( $.isFunction( method ) ) {
return method.apply(context, methodArguments);
clearTimeout(module.performance.timer);
module.performance.timer = setTimeout(module.performance.display, 100);
},
display: function() {
var
title = settings.moduleName + ':',
totalTime = 0
;
time = false;
$.each(performance, function(index, data) {
totalTime += data['Execution Time'];
});
title += ' ' + totalTime + 'ms';
if(moduleSelector) {
title += ' \'' + moduleSelector + '\'';
}
if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
console.groupCollapsed(title);
if(console.table) {
console.table(performance);
}
else {
$.each(performance, function(index, data) {
console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
});
}
console.groupEnd();
}
// return retrieved variable or chain
return method;
performance = [];
}
};
if(instance !== undefined && moduleArguments) {
if(moduleArguments[0] == 'invoke') {
moduleArguments = Array.prototype.slice.call( moduleArguments, 1 );
},
invoke: function(query, passedArguments, context) {
var
maxDepth,
found
;
passedArguments = passedArguments || queryArguments;
context = element || context;
if(typeof query == 'string' && instance !== undefined) {
query = query.split('.');
maxDepth = query.length - 1;
$.each(query, function(depth, value) {
if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) {
instance = instance[value];
return true;
}
else if( instance[value] !== undefined ) {
found = instance[value];
return true;
}
module.error(errors.method);
return false;
});
}
if ( $.isFunction( found ) ) {
return found.apply(context, passedArguments);
}
return module.invoke(moduleArguments[0], this, Array.prototype.slice.call( moduleArguments, 1 ) );
return found || false;
}
};
if(methodInvoked) {
if(instance === undefined) {
module.initialize();
}
invokedResponse = module.invoke(query);
}
else {
if(instance !== undefined) {
module.destroy();
}
module.initialize();
}
})
;
return (invokedResponse)
? invokedResponse
: this
;
};
$.fn.nag.settings = {
})
;
return this;
};
moduleName : 'Nag Module',
$.fn.nag.settings = {
verbose : true,
debug : true,
performance : true,
namespace : 'Nag',
// allows cookie to be overriden
persist : false,
// allows cookie to be overriden
persist : false,
// set to zero to manually dismiss, otherwise hides on its own
displayTime : 0,
// set to zero to manually dismiss, otherwise hides on its own
displayTime : 0,
animation : {
show: 'slide',
hide: 'slide'
},
animation : {
show: 'slide',
hide: 'slide'
},
// method of stickyness
position : 'fixed',
scrollBarWidth : 18,
// method of stickyness
position : 'fixed',
scrollBarWidth : 18,
// type of storage to use
storageMethod : 'cookie',
// type of storage to use
storageMethod : 'cookie',
// value to store in dismissed localstorage/cookie
storedKey : 'nag',
storedValue : 'dismiss',
// value to store in dismissed localstorage/cookie
storedKey : 'nag',
storedValue : 'dismiss',
// need to calculate stickyness on scroll
sticky : false,
// need to calculate stickyness on scroll
sticky : false,
// how often to check scroll event
lag : 0,
// how often to check scroll event
lag : 0,
// context for scroll event
context : window,
// context for scroll event
context : window,
errors: {
noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state'
},
errors: {
noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state'
},
className : {
bottom : 'bottom',
fixed : 'fixed'
},
className : {
bottom : 'bottom',
fixed : 'fixed'
},
selector : {
close: '.icon.close'
},
selector : {
close: '.icon.close'
},
speed : 500,
easing : 'easeOutQuad',
speed : 500,
easing : 'easeOutQuad',
onHide: function() {}
onHide: function() {}
};
};
})( jQuery, window , document );

70
src/modules/popup.js

@ -17,20 +17,11 @@ $.fn.popup = function(parameters) {
? $.extend(true, {}, $.fn.popup.settings, parameters)
: $.fn.popup.settings,
eventNamespace = '.' + settings.namespace,
moduleNamespace = 'module-' + settings.namespace,
moduleSelector = $allModules.selector || '',
moduleCount = $allModules.size(),
time = new Date().getTime(),
performance = [],
selector = settings.selector,
className = settings.className,
error = settings.error,
metadata = settings.metadata,
namespace = settings.namespace,
query = arguments[0],
methodInvoked = (typeof query == 'string'),
queryArguments = [].slice.call(arguments, 1),
@ -40,17 +31,27 @@ $.fn.popup = function(parameters) {
$allModules
.each(function() {
var
$module = $(this),
$window = $(window),
$offsetParent = $module.offsetParent(),
$popup = (settings.inline)
? $module.next(selector.popup)
: $window.children(selector.popup).last(),
searchDepth = 0,
element = this,
instance = $module.data('module-' + settings.namespace),
$module = $(this),
$window = $(window),
$offsetParent = $module.offsetParent(),
$popup = (settings.inline)
? $module.next(settings.selector.popup)
: $window.children(settings.selector.popup).last(),
searchDepth = 0,
eventNamespace = '.' + settings.namespace,
moduleNamespace = settings.namespace + '-module',
selector = settings.selector,
className = settings.className,
error = settings.error,
metadata = settings.metadata,
namespace = settings.namespace,
element = this,
instance = $module.data(moduleNamespace),
module
;
@ -61,26 +62,26 @@ $.fn.popup = function(parameters) {
module.debug('Initializing module', $module);
if(settings.on == 'hover') {
$module
.on('mouseenter.' + namespace, module.event.mouseenter)
.on('mouseleave.' + namespace, module.event.mouseleave)
.on('mouseenter' + eventNamespace, module.event.mouseenter)
.on('mouseleave' + eventNamespace, module.event.mouseleave)
;
}
else {
$module
.on(settings.on + '.' + namespace, module.event[settings.on])
.on(settings.on + '' + eventNamespace, module.event[settings.on])
;
}
$window
.on('resize.' + namespace, module.event.resize)
.on('resize' + eventNamespace, module.event.resize)
;
module.instantiate();
},
instantiate: function() {
module.verbose('Storing instance of module');
module.verbose('Storing instance of module', module);
instance = module;
$module
.data('module-' + namespace, instance)
.data(moduleNamespace, instance)
;
},
@ -93,9 +94,10 @@ $.fn.popup = function(parameters) {
},
destroy: function() {
module.debug('Destroying existing popups');
module.debug('Destroying previous module');
$module
.off('.' + namespace)
.off(eventNamespace)
.removeData(moduleNamespace)
;
},
@ -109,7 +111,7 @@ $.fn.popup = function(parameters) {
}
}, settings.delay);
},
mouseleave: function(event) {
mouseleave: function() {
clearTimeout(module.timer);
if( $module.is(':visible') ) {
module.hide();
@ -150,11 +152,13 @@ $.fn.popup = function(parameters) {
.html(html)
;
if(settings.inline) {
module.verbose('Inserting popup element inline');
$popup
.insertAfter($module)
;
}
else {
module.verbose('Appending popup element to body');
$popup
.appendTo( $('body') )
;
@ -167,6 +171,7 @@ $.fn.popup = function(parameters) {
},
remove: function() {
module.debug('Removing popup');
$popup
.remove()
;
@ -393,14 +398,12 @@ $.fn.popup = function(parameters) {
.removeClass(className.loading)
;
if(settings.animation == 'pop' && $.fn.popIn !== undefined) {
console.log($popup);
$popup
.stop()
.popIn(settings.duration, settings.easing)
;
}
else {
console.log($popup);
$popup
.stop()
.fadeIn(settings.duration, settings.easing)
@ -530,7 +533,7 @@ $.fn.popup = function(parameters) {
performance.push({
'Element' : element,
'Name' : message[0],
'Arguments' : message[1] || '',
'Arguments' : [].slice.call(message, 1) || '',
'Execution Time' : executionTime
});
}
@ -588,7 +591,6 @@ $.fn.popup = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;
@ -602,7 +604,7 @@ $.fn.popup = function(parameters) {
invokedResponse = module.invoke(query);
}
else {
if(instance === undefined) {
if(instance !== undefined) {
module.destroy();
}
module.initialize();

404
src/modules/search.js

@ -9,9 +9,9 @@
;(function ($, window, document, undefined) {
$.fn.searchPrompt = function(source, parameters) {
$.fn.search = function(source, parameters) {
var
settings = $.extend(true, {}, $.fn.searchPrompt.settings, parameters),
settings = $.extend(true, {}, $.fn.search.settings, parameters),
// make arguments available
query = arguments[0],
passedArguments = [].slice.call(arguments, 1),
@ -20,51 +20,49 @@ $.fn.searchPrompt = function(source, parameters) {
$(this)
.each(function() {
var
$module = $(this),
$searchPrompt = $module.find(settings.selector.searchPrompt),
$searchButton = $module.find(settings.selector.searchButton),
$searchResults = $module.find(settings.selector.searchResults),
$result = $module.find(settings.selector.result),
$category = $module.find(settings.selector.category),
$emptyResult = $module.find(settings.selector.emptyResult),
$resultPage = $module.find(settings.selector.resultPage),
element = this,
selector = $module.selector || '',
instance = $module.data('module-' + settings.namespace),
methodInvoked = (instance !== undefined && typeof query == 'string'),
className = settings.className,
namespace = settings.namespace,
errors = settings.errors,
$module = $(this),
$prompt = $module.find(settings.selector.prompt),
$searchButton = $module.find(settings.selector.searchButton),
$results = $module.find(settings.selector.results),
$result = $module.find(settings.selector.result),
$category = $module.find(settings.selector.category),
element = this,
selector = $module.selector || '',
instance = $module.data('module-' + settings.namespace),
methodInvoked = (instance !== undefined && typeof query == 'string'),
className = settings.className,
namespace = settings.namespace,
errors = settings.errors,
module
;
module = {
initialize: function() {
var
searchPrompt = $searchPrompt[0],
inputEvent = (searchPrompt.oninput !== undefined)
prompt = $prompt[0],
inputEvent = (prompt.oninput !== undefined)
? 'input'
: (searchPrompt.onpropertychange !== undefined)
: (prompt.onpropertychange !== undefined)
? 'propertychange'
: 'keyup'
;
// attach events
$searchPrompt
$prompt
.on('focus.' + namespace, module.event.focus)
.on('blur.' + namespace, module.event.blur)
.on('keydown.' + namespace, module.handleKeyboard)
;
if(settings.automatic) {
$searchPrompt
$prompt
.on(inputEvent + '.' + namespace, module.search.throttle)
;
}
$searchButton
.on('click.' + namespace, module.search.query)
;
$searchResults
$results
.on('click.' + namespace, settings.selector.result, module.results.select)
;
$module
@ -106,12 +104,12 @@ $.fn.searchPrompt = function(source, parameters) {
;
// search shortcuts
if(keyCode == keys.escape) {
$searchPrompt
$prompt
.trigger('blur')
;
}
// result shortcuts
if($searchResults.filter(':visible').size() > 0) {
if($results.filter(':visible').size() > 0) {
if(keyCode == keys.enter) {
if( $result.filter('.' + activeClass).exists() ) {
$.proxy(module.results.select, $result.filter('.' + activeClass) )();
@ -161,7 +159,7 @@ $.fn.searchPrompt = function(source, parameters) {
$searchButton
.addClass(className.down)
;
$searchPrompt
$prompt
.one('keyup', function(){
$searchButton
.removeClass(className.down)
@ -182,7 +180,7 @@ $.fn.searchPrompt = function(source, parameters) {
},
throttle: function(event) {
var
searchTerm = $searchPrompt.val(),
searchTerm = $prompt.val(),
numCharacters = searchTerm.length,
timer
;
@ -199,7 +197,7 @@ $.fn.searchPrompt = function(source, parameters) {
},
query: function() {
var
searchTerm = $searchPrompt.val(),
searchTerm = $prompt.val(),
cachedHTML = module.search.cache.read(searchTerm)
;
if(cachedHTML) {
@ -219,7 +217,7 @@ $.fn.searchPrompt = function(source, parameters) {
},
local: function(searchTerm) {
var
searchResults = [],
results = [],
fullTextResults = [],
searchFields = $.isArray(settings.searchFields)
? settings.searchFields
@ -235,9 +233,9 @@ $.fn.searchPrompt = function(source, parameters) {
// iterate through search fields in array order
$.each(searchFields, function(index, field) {
$.each(source, function(label, thing) {
if(typeof thing[field] == 'string' && ($.inArray(thing, searchResults) == -1) && ($.inArray(thing, fullTextResults) == -1) ) {
if(typeof thing[field] == 'string' && ($.inArray(thing, results) == -1) && ($.inArray(thing, fullTextResults) == -1) ) {
if( searchRegExp.test( thing[field] ) ) {
searchResults.push(thing);
results.push(thing);
}
else if( fullTextRegExp.test( thing[field] ) ) {
fullTextResults.push(thing);
@ -246,7 +244,7 @@ $.fn.searchPrompt = function(source, parameters) {
});
});
searchHTML = module.results.generate({
results: $.merge(searchResults, fullTextResults)
results: $.merge(results, fullTextResults)
});
$module
.removeClass(className.loading)
@ -327,37 +325,34 @@ $.fn.searchPrompt = function(source, parameters) {
else {
html = module.message(errors.noResults, 'empty');
}
$.proxy(settings.onSearchResults, $module)(response);
$.proxy(settings.onresults, $module)(response);
return html;
},
add: function(html) {
if(settings.onResultsAdd == 'default' || $.proxy(settings.onResultsAdd, $searchResults)(html) == 'default') {
$searchResults
if(settings.onResultsAdd == 'default' || $.proxy(settings.onResultsAdd, $results)(html) == 'default') {
$results
.html(html)
;
}
module.results.show();
},
show: function() {
if( ($searchResults.filter(':visible').size() === 0) && ($searchPrompt.filter(':focus').size() > 0) && $searchResults.html() !== '') {
$searchResults
if( ($results.filter(':visible').size() === 0) && ($prompt.filter(':focus').size() > 0) && $results.html() !== '') {
$results
.stop()
.fadeIn(200)
;
$.proxy(settings.onResultsOpen, $searchResults)();
$.proxy(settings.onResultsOpen, $results)();
}
},
hide: function() {
if($searchResults.filter(':visible').size() > 0) {
$searchResults
if($results.filter(':visible').size() > 0) {
$results
.stop()
.fadeOut(200)
;
$.proxy(settings.onResultsClose, $searchResults)();
$.proxy(settings.onResultsClose, $results)();
}
},
followLink: function() {
},
select: function(event) {
module.debug('Search result selected');
@ -369,14 +364,14 @@ $.fn.searchPrompt = function(source, parameters) {
if(settings.onSelect == 'default' || $.proxy(settings.onSelect, this)(event) == 'default') {
var
$link = $result.find('a[href]').eq(0),
href = $link.attr('href'),
target = $link.attr('target')
href = $link.attr('href') || false,
target = $link.attr('target') || false
;
try {
module.results.hide();
$searchPrompt
.val(title)
;
module.results.hide();
$prompt
.val(title)
;
if(href) {
if(target == '_blank' || event.ctrlKey) {
window.open(href);
}
@ -384,7 +379,6 @@ $.fn.searchPrompt = function(source, parameters) {
window.location.href = (href);
}
}
catch(error) {}
}
}
},
@ -474,186 +468,182 @@ $.fn.searchPrompt = function(source, parameters) {
;
};
$.fn.searchPrompt.settings = {
$.fn.search.settings = {
moduleName : 'Search Module',
debug : true,
namespace : 'search',
moduleName : 'Search Module',
debug : true,
namespace : 'search',
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
// onSelect default action is defined in module
onSelect : 'default',
onResultsAdd : 'default',
onSearchQuery : function(){},
onSearchResults : function(response){},
onSearchQuery : function(){},
onresults : function(response){},
onResultsOpen : function(){},
onResultsClose : function(){},
onResultsOpen : function(){},
onResultsClose : function(){},
automatic : 'true',
type : 'simple',
minCharacters : 3,
searchThrottle : 300,
maxResults : 7,
cache : true,
automatic : 'true',
type : 'simple',
minCharacters : 3,
searchThrottle : 300,
maxResults : 7,
cache : true,
searchFields : [
'title',
'description'
],
searchFields : [
'title',
'description'
],
// api config
apiSettings: {
// api config
apiSettings: {
},
},
className: {
active : 'active',
down : 'down',
focus : 'focus',
empty : 'empty',
loading : 'loading'
},
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',
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.'
},
category : '.category',
result : '.result',
emptyResult : '.results .message',
resultPage : '.results .page'
},
selector : {
prompt : '.prompt',
searchButton : '.search.button',
results : '.results',
category : '.category',
result : '.result'
},
templates: {
message: function(message, type) {
var
html = ''
templates: {
message: function(message, type) {
var
html = ''
;
if(message !== undefined && type !== undefined) {
html += ''
+ '<div class="message ' + type +'">'
;
if(message !== undefined && type !== undefined) {
html += ''
+ '<div class="message ' + type +'">'
// message type
if(type == 'empty') {
html += ''
+ '<div class="header">No Results</div class="header">'
+ '<div class="description">' + message + '</div class="description">'
;
// message type
if(type == 'empty') {
html += ''
+ '<div class="header">No Results</div class="header">'
+ '<div class="description">' + message + '</div class="description">'
;
}
else {
html += ' <div class="description">' + message + '</div>';
}
html += '</div>';
}
return html;
},
categories: function(response) {
var
html = ''
;
if(response.results !== undefined) {
// each category
$.each(response.results, function(index, category) {
if(category.results !== undefined && category.results.length > 0) {
html += ''
+ '<div class="category">'
+ '<div class="name">' + category.name + '</div>'
;
// each item inside category
$.each(category.results, function(index, result) {
html += '<div class="result">';
html += '<a href="' + result.url + '"></a>';
if(result.image !== undefined) {
html+= ''
+ '<div class="image">'
+ ' <img src="' + result.image + '">'
+ '</div>'
;
}
html += '<div class="info">';
if(result.price !== undefined) {
html+= '<div class="price">' + result.price + '</div>';
}
if(result.title !== undefined) {
html+= '<div class="title">' + result.title + '</div>';
}
if(result.description !== undefined) {
html+= '<div class="description">' + result.description + '</div>';
}
html += ''
+ '</div>'
else {
html += ' <div class="description">' + message + '</div>';
}
html += '</div>';
}
return html;
},
categories: function(response) {
var
html = ''
;
if(response.results !== undefined) {
// each category
$.each(response.results, function(index, category) {
if(category.results !== undefined && category.results.length > 0) {
html += ''
+ '<div class="category">'
+ '<div class="name">' + category.name + '</div>'
;
// each item inside category
$.each(category.results, function(index, result) {
html += '<div class="result">';
html += '<a href="' + result.url + '"></a>';
if(result.image !== undefined) {
html+= ''
+ '<div class="image">'
+ ' <img src="' + result.image + '">'
+ '</div>'
;
});
}
html += '<div class="info">';
if(result.price !== undefined) {
html+= '<div class="price">' + result.price + '</div>';
}
if(result.title !== undefined) {
html+= '<div class="title">' + result.title + '</div>';
}
if(result.description !== undefined) {
html+= '<div class="description">' + result.description + '</div>';
}
html += ''
+ '</div>'
;
}
});
if(response.resultPage) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '</a>';
}
return html;
}
return false;
},
simple: function(response) {
var
html = ''
;
if(response.results !== undefined) {
// each result
$.each(response.results, function(index, result) {
html += '<a class="result" href="' + result.url + '">';
if(result.image !== undefined) {
html+= ''
+ '<div class="image">'
+ ' <img src="' + result.image + '">'
+ '</div>'
;
}
html += '<div class="info">';
if(result.price !== undefined) {
html+= '<div class="price">' + result.price + '</div>';
}
if(result.title !== undefined) {
html+= '<div class="title">' + result.title + '</div>';
}
if(result.description !== undefined) {
html+= '<div class="description">' + result.description + '</div>';
}
});
html += ''
+ '</div>'
+ '</a>'
;
});
if(response.resultPage) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '</a>';
}
return html;
});
if(response.resultPage) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '</a>';
}
return false;
return html;
}
return false;
},
simple: function(response) {
var
html = ''
;
if(response.results !== undefined) {
// each result
$.each(response.results, function(index, result) {
html += '<a class="result" href="' + result.url + '">';
if(result.image !== undefined) {
html+= ''
+ '<div class="image">'
+ ' <img src="' + result.image + '">'
+ '</div>'
;
}
html += '<div class="info">';
if(result.price !== undefined) {
html+= '<div class="price">' + result.price + '</div>';
}
if(result.title !== undefined) {
html+= '<div class="title">' + result.title + '</div>';
}
if(result.description !== undefined) {
html+= '<div class="description">' + result.description + '</div>';
}
html += ''
+ '</div>'
+ '</a>'
;
});
if(response.resultPage) {
html += ''
+ '<a href="' + response.resultPage.url + '" class="all">'
+ response.resultPage.text
+ '</a>';
}
return html;
}
return false;
}
};
}
};
})( jQuery, window , document );

72
src/modules/shape.js

@ -90,29 +90,35 @@ $.fn.shape = function(parameters) {
animate: function(propertyObject, callback) {
module.verbose('Animating box with properties', propertyObject);
callback = callback || function(event) {
module.verbose('Executing animation callback', event);
event.stopPropagation();
module.verbose('Executing animation callback');
if(event !== undefined) {
event.stopPropagation();
}
module.reset();
module.set.active();
$.proxy(settings.onChange, $nextSide)();
};
if(settings.useCSS) {
module.verbose('Starting CSS animation');
$module
.addClass(className.animating)
;
module.set.stageSize();
module.repaint();
$module
.addClass(className.css)
;
$activeSide
.addClass(className.hidden)
;
$sides
.css(propertyObject)
.one(module.get.transitionEvent(), callback)
;
if(module.get.transitionEvent()) {
module.verbose('Starting CSS animation');
$module
.addClass(className.animating)
;
module.set.stageSize();
module.repaint();
$module
.addClass(className.css)
;
$activeSide
.addClass(className.hidden)
;
$sides
.css(propertyObject)
.one(module.get.transitionEvent(), callback)
;
}
else {
callback();
}
}
else {
// not yet supported until .animate() is extended to allow RotateX/Y
@ -151,17 +157,22 @@ $.fn.shape = function(parameters) {
$module
.removeClass(className.css)
.removeClass(className.animating)
.attr('style', '')
.removeAttr('style')
;
// removeAttr style does not consistently work in safari
$sides
.attr('style', '')
.removeAttr('style')
;
$side
.attr('style', '')
.removeAttr('style')
.removeClass(className.hidden)
;
$nextSide
.removeClass(className.animating)
.attr('style', '')
.removeAttr('style')
;
},
@ -247,6 +258,7 @@ $.fn.shape = function(parameters) {
$nextSide
.addClass(className.active)
;
$.proxy(settings.onChange, $nextSide)();
module.set.defaultSide();
}
},
@ -527,21 +539,6 @@ $.fn.shape = function(parameters) {
;
}
},
setting: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
module.verbose('Modifying settings object', name, value);
$.extend(true, settings, name);
}
else {
module.verbose('Modifying setting', name, value);
settings[name] = value;
}
}
else {
return settings[name];
}
},
setting: function(name, value) {
if(value !== undefined) {
if( $.isPlainObject(name) ) {
@ -666,7 +663,6 @@ $.fn.shape = function(parameters) {
});
}
if ( $.isFunction( found ) ) {
instance.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;
@ -699,13 +695,13 @@ $.fn.shape.settings = {
moduleName : 'Shape Module',
// debug content outputted to console
debug : false,
debug : true,
// verbose debug output
verbose : false,
verbose : true,
// performance data output
performance: false,
performance: true,
// event namespace
namespace : 'shape',

6
src/modules/tab.js

@ -34,7 +34,6 @@
className = settings.className,
metadata = settings.metadata,
namespace = settings.namespace,
errors = settings.errors,
instance = $module.data(moduleNamespace),
@ -78,7 +77,7 @@
// attach events if navigation wasn't set to window
if( !$.isWindow( element ) ) {
$module
.on('click.' + eventNamespace, module.event.click)
.on('click' + eventNamespace, module.event.click)
;
}
$module
@ -89,7 +88,7 @@
destroy: function() {
module.debug('Destroying tabs', $module);
$module
.off('.' + namespace)
.off(eventNamespace)
;
},
@ -544,6 +543,7 @@
});
}
if ( $.isFunction( found ) ) {
module.verbose('Executing invoked function', found);
return found.apply(context, passedArguments);
}
return found || false;

Loading…
Cancel
Save