Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
collapse.js398 linesDownload Raw Back to dist
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: false32    });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   * Constants55   */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 definition86   */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    } // Getters120 121 122    var _proto = Collapse.prototype;123 124    // Public125    _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    } // Private268    ;269 270    _proto._getConfig = function _getConfig(config) {271      config = _extends({}, Default, config);272      config.toggle = Boolean(config.toggle); // Coerce string values273 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 object290 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    } // Static313    ;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;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 implementation362   */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 element367    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   * jQuery384   */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.map398 
codekingpro/portable-devtools · Team Ai