| 1 |
/*! |
| 2 |
* classie - class helper functions |
| 3 |
* from bonzo https://github.com/ded/bonzo |
| 4 |
* |
| 5 |
* classie.has( elem, 'my-class' ) -> true/false |
| 6 |
* classie.add( elem, 'my-new-class' ) |
| 7 |
* classie.remove( elem, 'my-unwanted-class' ) |
| 8 |
* classie.toggle( elem, 'my-class' ) |
| 9 |
*/ |
| 10 |
|
| 11 |
/*jshint browser: true, strict: true, undef: true */ |
| 12 |
/*global define: false */ |
| 13 |
|
| 14 |
( function( window ) { |
| 15 |
|
| 16 |
'use strict'; |
| 17 |
|
| 18 |
// class helper functions from bonzo https://github.com/ded/bonzo |
| 19 |
|
| 20 |
function classReg( className ) { |
| 21 |
return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); |
| 22 |
} |
| 23 |
|
| 24 |
// classList support for class management |
| 25 |
// altho to be fair, the api sucks because it won't accept multiple classes at once |
| 26 |
var hasClass, addClass, removeClass; |
| 27 |
|
| 28 |
if ( 'classList' in document.documentElement ) { |
| 29 |
hasClass = function( elem, c ) { |
| 30 |
return elem.classList.contains( c ); |
| 31 |
}; |
| 32 |
addClass = function( elem, c ) { |
| 33 |
elem.classList.add( c ); |
| 34 |
elem.classList.remove( 'closing' ) |
| 35 |
}; |
| 36 |
removeClass = function( elem, c ) { |
| 37 |
elem.classList.add( 'closing' ) |
| 38 |
setTimeout(function(){ |
| 39 |
elem.classList.remove( c ); |
| 40 |
//your code to be executed after 1 seconds |
| 41 |
},1000); |
| 42 |
}; |
| 43 |
} |
| 44 |
else { |
| 45 |
hasClass = function( elem, c ) { |
| 46 |
return classReg( c ).test( elem.className ); |
| 47 |
}; |
| 48 |
addClass = function( elem, c ) { |
| 49 |
if ( !hasClass( elem, c ) ) { |
| 50 |
elem.className = elem.className + ' ' + c; |
| 51 |
} |
| 52 |
}; |
| 53 |
removeClass = function( elem, c ) { |
| 54 |
elem.className = elem.className.replace( classReg( c ), ' ' ); |
| 55 |
}; |
| 56 |
} |
| 57 |
|
| 58 |
function toggleClass( elem, c ) { |
| 59 |
var fn = hasClass( elem, c ) ? removeClass : addClass; |
| 60 |
fn( elem, c ); |
| 61 |
} |
| 62 |
|
| 63 |
var classie = { |
| 64 |
// full names |
| 65 |
hasClass: hasClass, |
| 66 |
addClass: addClass, |
| 67 |
removeClass: removeClass, |
| 68 |
toggleClass: toggleClass, |
| 69 |
// short names |
| 70 |
has: hasClass, |
| 71 |
add: addClass, |
| 72 |
remove: removeClass, |
| 73 |
toggle: toggleClass |
| 74 |
}; |
| 75 |
|
| 76 |
// transport |
| 77 |
if ( typeof define === 'function' && define.amd ) { |
| 78 |
// AMD |
| 79 |
define( classie ); |
| 80 |
} else { |
| 81 |
// browser global |
| 82 |
window.classie = classie; |
| 83 |
} |
| 84 |
|
| 85 |
})( window ); |
| 86 |
|