PageSourceSearch

https://www.irta.cat/wp-content/themes/irta/resources/v1/js/smk-accordion.js?ver=20260924085856

js irta.cat collected 2026-09-24 09:00:43 UTC 3,613 bytes, 126 lines download raw bytes

1/**
2 * SMK Accordion jQuery Plugin v1.3
3 * ----------------------------------------------------
4 * Author: Smartik
5 * Author URL: http://smartik.ws/
6 * License: MIT
7 */
8 ;(function ( $ ) {
9
10	$.fn.smk_Accordion = function( options ) {
11		
12		if (this.length > 1){
13			this.each(function() { 
14				$(this).smk_Accordion(options);
15			});
16			return this;
17		}
18		
19		// Defaults
20		var settings = $.extend({
21			animation:  true,
22			showIcon:   true,
23			closeAble:  true,
24			closeOther: true,
25			slideSpeed: 150,
26			activeIndex: true
27		}, options );
28
29		if( $(this).data('close-able') )    settings.closeAble = $(this).data('close-able');
30		if( $(this).data('animation') )     settings.animation = $(this).data('animation');
31		if( $(this).data('show-icon') )     settings.showIcon = $(this).data('show-icon');
32		if( $(this).data('close-other') )   settings.closeOther = $(this).data('close-other');
33		if( $(this).data('slide-speed') )   settings.slideSpeed = $(this).data('slide-speed');
34		if( $(this).data('active-index') )  settings.activeIndex = $(this).data('active-index');
35
36		// Cache current instance
37		// To avoid scope issues, use 'plugin' instead of 'this'
38		// to reference this class from internal events and functions.
39		var plugin = this;
40
41		//"Constructor"
42		var init = function() {
43			plugin.createStructure();
44			plugin.clickHead();
45		}
46
47		// Add .smk_accordion class
48		this.createStructure = function() {
49
50			//Add Class
51			plugin.addClass('smk_accordion');
52			if( settings.showIcon ){
53				plugin.addClass('acc_with_icon');
54			}
55
56			//Create sections if they were not created already
57			if( plugin.find('.accordion_in').length < 1 ){
58				plugin.children().addClass('accordion_in');
59			}
60
61			//Add classes to accordion head and content for each section
62			plugin.find('.accordion_in').each(function(index, elem){
63				var childs = $(elem).children();
64				$(childs[0]).addClass('acc_head');
65				$(childs[1]).addClass('acc_content');
66			});
67			
68			//Append icon
69			if( settings.showIcon ){
70				plugin.find('.acc_head').prepend('<div class="acc_icon_expand"></div>');
71			}
72
73			//Hide inactive
74			plugin.find('.accordion_in .acc_content').not('.acc_active .acc_content').hide();
75
76			//Active index
77			if( settings.activeIndex === parseInt(settings.activeIndex) ){
78				if(settings.activeIndex === 0){
79					plugin.find('.accordion_in').addClass('acc_active').show();
80					plugin.find('.accordion_in .acc_content').addClass('acc_active').show();
81				}
82				else{
83					plugin.find('.accordion_in').eq(settings.activeIndex - 1).addClass('acc_active').show();
84					plugin.find('.accordion_in .acc_content').eq(settings.activeIndex - 1).addClass('acc_active').show();
85				}
86			}
87			
88		}
89
90		// Action when the user click accordion head
91		this.clickHead = function() {
92
93			plugin.on('click', '.acc_head', function(){
94				
95				var s_parent = $(this).parent();
96				
97				if( s_parent.hasClass('acc_active') == false ){
98					if( settings.closeOther ){
99						plugin.find('.acc_content').slideUp(settings.slideSpeed);
100						plugin.find('.accordion_in').removeClass('acc_active');
101					}	
102				}
103
104				if( s_parent.hasClass('acc_active') ){
105					if( false !== settings.closeAble ){
106						s_parent.children('.acc_content').slideUp(settings.slideSpeed);
107						s_parent.removeClass('acc_active');
108					}
109				}
110				else{
111					$(this).next('.acc_content').slideDown(settings.slideSpeed);
112					s_parent.addClass('acc_active');
113				}
114
115			});
116
117		}
118
119		//"Constructor" init
120		init();
121		return this;
122
123	};
124
125
126}( jQuery ));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.