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