|
- import IHK from '../ihk';
- const $ = require('jquery');
- class Accordion {
- constructor(section) {
- this.section = section.addClass('initiated');
- this.section.find('.accordion-toggler').on('click', (e) => {
- e.preventDefault();
- const item = $(e.currentTarget).closest('li');
- item.toggleClass('open').find('.accordion-content').stop().slideToggle(400, 'easeOutQuad');
- if (this.section.data('single-open') !== false) {
- item.siblings('.open').removeClass('open').find('.accordion-content').slideUp(400, 'easeOutQuad');
- }
- });
-
- if (section.attr('data-type') === 'event') {
- this.initEvent();
- }
- }
-
- initEvent() {
- this.openEvent();
- this.section.find('.referee-details').hide();
- this.section.find('.referees > li > a').on('click', function (e) {
- e.preventDefault();
- const a = $(this);
- a.siblings('.referee-details').slideToggle(400, 'easeOutQuad');
- })
- };
-
- openEvent() {
- const t = this;
- const vars = IHK.getUrlVars();
- const $events = t.section.find('.accordion-content');
- const $queryParamEvent = $('#js-event-' + vars.terminId);
-
- if ($queryParamEvent.length) {
- // open if the url params have the terminId
- $queryParamEvent.show().closest('li').addClass('open');
- } else {
- // open the first item as fallback
- $events.first().show().closest('li').addClass('open');
- }
- }
- }
-
- $('body').on('ihk-init dynamic-component-loaded gfi-dynamic-init', function () {
- $('.accordion:not(.initiated)').each(function (i) {
- new Accordion($(this));
- });
- });
|