first commit
This commit is contained in:
72
public/js/modules/accordion.js
Normal file
72
public/js/modules/accordion.js
Normal file
@@ -0,0 +1,72 @@
|
||||
CNVS.Accordion = function() {
|
||||
var __core = SEMICOLON.Core;
|
||||
|
||||
return {
|
||||
init: function(selector) {
|
||||
if( __core.getSelector(selector, false, false).length < 1 ){
|
||||
return true;
|
||||
}
|
||||
|
||||
__core.isFuncTrue( function() {
|
||||
return typeof jQuery !== 'undefined';
|
||||
}).then( function(cond) {
|
||||
if( !cond ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
__core.initFunction({ class: 'has-plugin-accordions', event: 'pluginAccordionsReady' });
|
||||
|
||||
selector = __core.getSelector( selector );
|
||||
if( selector.length < 1 ){
|
||||
return true;
|
||||
}
|
||||
|
||||
selector.each( function(){
|
||||
var element = jQuery(this),
|
||||
elState = element.attr('data-state'),
|
||||
elActive = element.attr('data-active') || 1,
|
||||
elActiveClass = element.attr('data-active-class') || '',
|
||||
elCollapsible = element.attr('data-collapsible') || 'false',
|
||||
windowHash = location.hash,
|
||||
accActive;
|
||||
|
||||
elActive = Number( elActive ) - 1;
|
||||
|
||||
if( typeof windowHash !== 'undefined' && windowHash != '' ) {
|
||||
accActive = element.find('.accordion-header'+ windowHash);
|
||||
if( accActive.length > 0 ) {
|
||||
elActive = accActive.index() / 2;
|
||||
}
|
||||
}
|
||||
|
||||
element.find('.accordion-content').hide();
|
||||
|
||||
if( elState != 'closed' ) {
|
||||
element.find('.accordion-header:eq('+ Number(elActive) +')').addClass('accordion-active ' + elActiveClass).next().show();
|
||||
}
|
||||
|
||||
element.find('.accordion-header').off( 'click' ).on( 'click', function(){
|
||||
var clickTarget = jQuery(this);
|
||||
|
||||
if( clickTarget.next().is(':hidden') ) {
|
||||
element.find('.accordion-header').removeClass('accordion-active ' + elActiveClass).next().slideUp("normal");
|
||||
clickTarget.toggleClass('accordion-active ' + elActiveClass, true).next().stop(true,true).slideDown("normal", function(){
|
||||
if( ( jQuery('body').hasClass('device-sm') || jQuery('body').hasClass('device-xs') ) && element.hasClass('scroll-on-open') ) {
|
||||
__core.scrollTo((__core.offset(clickTarget).top - __core.getVars.topScrollOffset - 40), 800, 'easeOutQuad');
|
||||
}
|
||||
|
||||
__core.runContainerModules( clickTarget.next()[0] );
|
||||
});
|
||||
} else {
|
||||
if( elCollapsible == 'true' ) {
|
||||
clickTarget.toggleClass('accordion-active ' + elActiveClass, false).next().stop(true,true).slideUp("normal");
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
}();
|
||||
Reference in New Issue
Block a user