• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

divio / django-cms / #29546

24 Nov 2022 11:39AM UTC coverage: 77.399%. Remained the same
#29546

push

travis-ci

web-flow
build: bump loader-utils from 1.4.0 to 1.4.2 (#7435)

Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Fabian Braun <fsbraun@gmx.de>

1074 of 1547 branches covered (69.42%)

2565 of 3314 relevant lines covered (77.4%)

33.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

83.33
/cms/static/cms/js/modules/cms.pagetree.dropdown.js
1
import $ from 'jquery';
2
import Class from 'classjs';
3

4
/**
5
 * Dropdowns in the pagetree.
6
 * Have to be delegated, since pagetree nodes can be
7
 * lazy loaded.
8
 *
9
 * @class PageTreeDropdowns
10
 * @namespace CMS
11
 */
12
var PageTreeDropdowns = new Class({
1✔
13
    options: {
14
        dropdownSelector: '.js-cms-pagetree-dropdown',
15
        triggerSelector: '.js-cms-pagetree-dropdown-trigger',
16
        menuSelector: '.js-cms-pagetree-dropdown-menu',
17
        openCls: 'cms-pagetree-dropdown-menu-open'
18
    },
19

20
    initialize: function initialize(options) {
21
        this.options = $.extend(true, {}, this.options, options);
12✔
22
        this.click = 'click.cms.pagetree.dropdown';
12✔
23

24
        this._setupUI();
12✔
25
        this._events();
12✔
26
    },
27

28
    /**
29
     * @method _setupUI
30
     * @private
31
     */
32
    _setupUI: function _setupUI() {
33
        this.ui = {
12✔
34
            container: this.options.container,
35
            document: $(document)
36
        };
37
    },
38

39
    /**
40
     * Event handlers.
41
     *
42
     * @method _events
43
     * @private
44
     */
45
    _events: function _events() {
46
        var that = this;
14✔
47

48
        // attach event to the trigger
49
        this.ui.container.on(this.click, this.options.triggerSelector, function(e) {
14✔
50
            e.preventDefault();
1✔
51
            e.stopImmediatePropagation();
1✔
52

53
            that._toggleDropdown(this);
1✔
54
        });
55

56
        // stop propagation on the element
57
        this.ui.container.on(this.click, that.options.menuSelector, function(e) {
14✔
58
            e.stopImmediatePropagation();
2✔
59
        });
60

61
        this.ui.container.on(this.click, that.options.menuSelector + ' a', function() {
14✔
62
            that.closeAllDropdowns();
1✔
63
        });
64

65
        this.ui.document.on(this.click, function() {
14✔
66
            that.closeAllDropdowns();
50✔
67
        });
68
    },
69

70
    /**
71
     * @method _toggleDropdown
72
     * @param {jQuery} trigger trigger clicked
73
     * @private
74
     * @returns {Boolean|void}
75
     */
76
    _toggleDropdown: function _toggleDropdown(trigger) {
77
        var dropdowns = $(this.options.dropdownSelector);
3✔
78
        var dropdown = $(trigger).closest(this.options.dropdownSelector);
3✔
79

80
        // cancel if opened tooltip is triggered again
81
        if (dropdown.hasClass(this.options.openCls)) {
3✔
82
            dropdowns.removeClass(this.options.openCls);
1✔
83
            return false;
1✔
84
        }
85

86
        // otherwise show the dropdown
87
        dropdowns.removeClass(this.options.openCls);
2✔
88
        dropdown.addClass(this.options.openCls);
2✔
89

90
        this._loadContent(dropdown);
2✔
91
    },
92

93
    /**
94
     * @method _loadContent
95
     * @private
96
     * @param {jQuery} dropdown
97
     * @returns {Boolean|$.Deferred} false if not lazy or already loaded or promise
98
     */
99
    _loadContent: function _loadContent(dropdown) {
100
        var data = dropdown.data();
2✔
101
        var LOADER_SHOW_TIMEOUT = 200;
2✔
102

103
        if (!data.lazyUrl || data.loaded) {
2!
104
            return false;
2✔
105
        }
106

107
        var loaderTimeout = setTimeout(function() {
×
108
            dropdown.find('.js-cms-pagetree-dropdown-loader').addClass('cms-loader');
×
109
        }, LOADER_SHOW_TIMEOUT);
110

111
        $.ajax({
×
112
            url: data.lazyUrl,
113
            data: data.lazyUrlData
114
        }).done(function(response) {
115
            dropdown.find('.js-cms-pagetree-dropdown-menu').html(response);
×
116
            dropdown.data('loaded', true);
×
117
            clearTimeout(loaderTimeout);
×
118
        });
119
    },
120

121
    /**
122
     * @method closeAllDropdowns
123
     * @public
124
     */
125
    closeAllDropdowns: function closeAllDropdowns() {
126
        $(this.options.dropdownSelector).removeClass(this.options.openCls);
50✔
127
    }
128
});
129

130
export default PageTreeDropdowns;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc