summaryrefslogtreecommitdiff
path: root/html/assets/js/plugins/accordion.js
blob: 62e25ad91430704b9f305b986bd2aded930ed171 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$$plugins.define('accordion', ['domHelper'], function (element, options, $) {
    var animating = false,
        $header = $(element).find('.acc:not(.acc--disabled) .acc__header'),
        $content,
        $prevActiveAcc,
        $this,
        $accItem,
        singleOpen = options.singleOpen ? options.singleOpen : false;

    $header.on('click', function (e) {
        $this = $(this);
        $accItem = $this.parent('.acc');
        $content = $this.next('.acc__content');
        if (animating === true) {
            return;
        }
        animating = true;
        if ($accItem.is('.open')) {
            $content.slideUp(300, function () {
                $accItem.removeClass('open');
                $content.removeAttr('style');
                animating = false;
            });
        } else {
            $content.slideDown(300, function () {
                $accItem.addClass('open');
                $content.removeAttr('style');
                animating = false;
            });

            if (singleOpen) {
                $prevActiveAcc = $accItem.siblings('.acc.open');
                if ($prevActiveAcc.length != 0) {
                    $prevActiveAcc.find('.acc__content').slideUp(300, function () {
                        $prevActiveAcc.removeClass('open');
                        $prevActiveAcc.find('.acc__content').removeAttr('style');
                        animating = false;
                    });
                }
            }
        }
    });
});