PageSourceSearch

https://tharaux.fr/plugins/auto/bootstrap4/v4.7.2/bootstrap/js/bootstrap-collapse.js?1788883547

js tharaux.fr collected 2026-10-02 21:56:05 UTC 13,394 bytes, 397 lines download raw bytes

vendor: 4,302 bytes, lines 1-124
1/*!
2  * Bootstrap collapse.js v4.6.2 (https://getbootstrap.com/)
3  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5  */
6(function (global, factory) {
7  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8  typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.jQuery, global.Util));
10})(this, (function ($, Util) { 'use strict';
11
12  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
14  var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15  var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
17  function _defineProperties(target, props) {
18    for (var i = 0; i < props.length; i++) {
19      var descriptor = props[i];
20      descriptor.enumerable = descriptor.enumerable || false;
21      descriptor.configurable = true;
22      if ("value" in descriptor) descriptor.writable = true;
23      Object.defineProperty(target, descriptor.key, descriptor);
24    }
25  }
26
27  function _createClass(Constructor, protoProps, staticProps) {
28    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29    if (staticProps) _defineProperties(Constructor, staticProps);
30    Object.defineProperty(Constructor, "prototype", {
31      writable: false
32    });
33    return Constructor;
34  }
35
36  function _extends() {
37    _extends = Object.assign ? Object.assign.bind() : function (target) {
38      for (var i = 1; i < arguments.length; i++) {
39        var source = arguments[i];
40
41        for (var key in source) {
42          if (Object.prototype.hasOwnProperty.call(source, key)) {
43            target[key] = source[key];
44          }
45        }
46      }
47
48      return target;
49    };
50    return _extends.apply(this, arguments);
51  }
52
53  /**
54   * Constants
55   */
56
57  var NAME = 'collapse';
58  var VERSION = '4.6.2';
59  var DATA_KEY = 'bs.collapse';
60  var EVENT_KEY = "." + DATA_KEY;
61  var DATA_API_KEY = '.data-api';
62  var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
63  var CLASS_NAME_SHOW = 'show';
64  var CLASS_NAME_COLLAPSE = 'collapse';
65  var CLASS_NAME_COLLAPSING = 'collapsing';
66  var CLASS_NAME_COLLAPSED = 'collapsed';
67  var DIMENSION_WIDTH = 'width';
68  var DIMENSION_HEIGHT = 'height';
69  var EVENT_SHOW = "show" + EVENT_KEY;
70  var EVENT_SHOWN = "shown" + EVENT_KEY;
71  var EVENT_HIDE = "hide" + EVENT_KEY;
72  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
73  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
74  var SELECTOR_ACTIVES = '.show, .collapsing';
75  var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
76  var Default = {
77    toggle: true,
78    parent: ''
79  };
80  var DefaultType = {
81    toggle: 'boolean',
82    parent: '(string|element)'
83  };
84  /**
85   * Class definition
86   */
87
88  var Collapse = /*#__PURE__*/function () {
89    function Collapse(element, config) {
90      this._isTransitioning = false;
91      this._element = element;
92      this._config = this._getConfig(config);
93      this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
94      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
95
96      for (var i = 0, len = toggleList.length; i < len; i++) {
97        var elem = toggleList[i];
98        var selector = Util__default["default"].getSelectorFromElement(elem);
99        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
100          return foundElem === element;
101        });
102
103        if (selector !== null && filterElement.length > 0) {
104          this._selector = selector;
105
106          this._triggerArray.push(elem);
107        }
108      }
109
110      this._parent = this._config.parent ? this._getParent() : null;
111
112      if (!this._config.parent) {
113        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
114      }
115
116      if (this._config.toggle) {
117        this.toggle();
118      }
119    } // Getters
120
121
122    var _proto = Collapse.prototype;
123
124    // Public
vendor: 7,321 bytes, lines 125-328
125    _proto.toggle = function toggle() {
126      if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
127        this.hide();
128      } else {
129        this.show();
130      }
131    };
132
133    _proto.show = function show() {
134      var _this = this;
135
136      if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
137        return;
138      }
139
140      var actives;
141      var activesData;
142
143      if (this._parent) {
144        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
145          if (typeof _this._config.parent === 'string') {
146            return elem.getAttribute('data-parent') === _this._config.parent;
147          }
148
149          return elem.classList.contains(CLASS_NAME_COLLAPSE);
150        });
151
152        if (actives.length === 0) {
153          actives = null;
154        }
155      }
156
157      if (actives) {
158        activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY);
159
160        if (activesData && activesData._isTransitioning) {
161          return;
162        }
163      }
164
165      var startEvent = $__default["default"].Event(EVENT_SHOW);
166      $__default["default"](this._element).trigger(startEvent);
167
168      if (startEvent.isDefaultPrevented()) {
169        return;
170      }
171
172      if (actives) {
173        Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide');
174
175        if (!activesData) {
176          $__default["default"](actives).data(DATA_KEY, null);
177        }
178      }
179
180      var dimension = this._getDimension();
181
182      $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
183      this._element.style[dimension] = 0;
184
185      if (this._triggerArray.length) {
186        $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
187      }
188
189      this.setTransitioning(true);
190
191      var complete = function complete() {
192        $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
193        _this._element.style[dimension] = '';
194
195        _this.setTransitioning(false);
196
197        $__default["default"](_this._element).trigger(EVENT_SHOWN);
198      };
199
200      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
201      var scrollSize = "scroll" + capitalizedDimension;
202      var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
203      $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
204      this._element.style[dimension] = this._element[scrollSize] + "px";
205    };
206
207    _proto.hide = function hide() {
208      var _this2 = this;
209
210      if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
211        return;
212      }
213
214      var startEvent = $__default["default"].Event(EVENT_HIDE);
215      $__default["default"](this._element).trigger(startEvent);
216
217      if (startEvent.isDefaultPrevented()) {
218        return;
219      }
220
221      var dimension = this._getDimension();
222
223      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
224      Util__default["default"].reflow(this._element);
225      $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
226      var triggerArrayLength = this._triggerArray.length;
227
228      if (triggerArrayLength > 0) {
229        for (var i = 0; i < triggerArrayLength; i++) {
230          var trigger = this._triggerArray[i];
231          var selector = Util__default["default"].getSelectorFromElement(trigger);
232
233          if (selector !== null) {
234            var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
235
236            if (!$elem.hasClass(CLASS_NAME_SHOW)) {
237              $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
238            }
239          }
240        }
241      }
242
243      this.setTransitioning(true);
244
245      var complete = function complete() {
246        _this2.setTransitioning(false);
247
248        $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
249      };
250
251      this._element.style[dimension] = '';
252      var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
253      $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
254    };
255
256    _proto.setTransitioning = function setTransitioning(isTransitioning) {
257      this._isTransitioning = isTransitioning;
258    };
259
260    _proto.dispose = function dispose() {
261      $__default["default"].removeData(this._element, DATA_KEY);
262      this._config = null;
263      this._parent = null;
264      this._element = null;
265      this._triggerArray = null;
266      this._isTransitioning = null;
267    } // Private
268    ;
269
270    _proto._getConfig = function _getConfig(config) {
271      config = _extends({}, Default, config);
272      config.toggle = Boolean(config.toggle); // Coerce string values
273
274      Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
275      return config;
276    };
277
278    _proto._getDimension = function _getDimension() {
279      var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
280      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
281    };
282
283    _proto._getParent = function _getParent() {
284      var _this3 = this;
285
286      var parent;
287
288      if (Util__default["default"].isElement(this._config.parent)) {
289        parent = this._config.parent; // It's a jQuery object
290
291        if (typeof this._config.parent.jquery !== 'undefined') {
292          parent = this._config.parent[0];
293        }
294      } else {
295        parent = document.querySelector(this._config.parent);
296      }
297
298      var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
299      var children = [].slice.call(parent.querySelectorAll(selector));
300      $__default["default"](children).each(function (i, element) {
301        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
302      });
303      return parent;
304    };
305
306    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
307      var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW);
308
309      if (triggerArray.length) {
310        $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
311      }
312    } // Static
313    ;
314
315    Collapse._getTargetFromElement = function _getTargetFromElement(element) {
316      var selector = Util__default["default"].getSelectorFromElement(element);
317      return selector ? document.querySelector(selector) : null;
318    };
319
320    Collapse._jQueryInterface = function _jQueryInterface(config) {
321      return this.each(function () {
322        var $element = $__default["default"](this);
323        var data = $element.data(DATA_KEY);
324
325        var _config = _extends({}, Default, $element.data(), typeof config === 'object' && config ? config : {});
326
327        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
328          _config.toggle = false;
vendor: 1,771 bytes, lines 329-397
329        }
330
331        if (!data) {
332          data = new Collapse(this, _config);
333          $element.data(DATA_KEY, data);
334        }
335
336        if (typeof config === 'string') {
337          if (typeof data[config] === 'undefined') {
338            throw new TypeError("No method named \"" + config + "\"");
339          }
340
341          data[config]();
342        }
343      });
344    };
345
346    _createClass(Collapse, null, [{
347      key: "VERSION",
348      get: function get() {
349        return VERSION;
350      }
351    }, {
352      key: "Default",
353      get: function get() {
354        return Default;
355      }
356    }]);
357
358    return Collapse;
359  }();
360  /**
361   * Data API implementation
362   */
363
364
365  $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
366    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
367    if (event.currentTarget.tagName === 'A') {
368      event.preventDefault();
369    }
370
371    var $trigger = $__default["default"](this);
372    var selector = Util__default["default"].getSelectorFromElement(this);
373    var selectors = [].slice.call(document.querySelectorAll(selector));
374    $__default["default"](selectors).each(function () {
375      var $target = $__default["default"](this);
376      var data = $target.data(DATA_KEY);
377      var config = data ? 'toggle' : $trigger.data();
378
379      Collapse._jQueryInterface.call($target, config);
380    });
381  });
382  /**
383   * jQuery
384   */
385
386  $__default["default"].fn[NAME] = Collapse._jQueryInterface;
387  $__default["default"].fn[NAME].Constructor = Collapse;
388
389  $__default["default"].fn[NAME].noConflict = function () {
390    $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
391    return Collapse._jQueryInterface;
392  };
393
394  return Collapse;
395
396}));
397//# sourceMappingURL=collapse.js.map

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.