codekingpro/portable-devtools
115k
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 