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('popper.js'), require('./util.js')) : typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util)); 7})(void 0, function ($, Popper, 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 Popper__default = _interopDefaultLegacy(Popper); 19 20 var Util__default = _interopDefaultLegacy(Util); 21 22 function _extends() { 23 _extends = Object.assign || function (target) { 24 for (var i = 1; i < arguments.length; i++) { 25 var source = arguments[i]; 26 27 for (var key in source) { 28 if (Object.prototype.hasOwnProperty.call(source, key)) { 29 target[key] = source[key]; 30 } 31 } 32 } 33 34 return target; 35 }; 36 37 return _extends.apply(this, arguments); 38 } 39 40 function _defineProperties(target, props) { 41 for (var i = 0; i < props.length; i++) { 42 var descriptor = props[i]; 43 descriptor.enumerable = descriptor.enumerable || false; 44 descriptor.configurable = true; 45 if ("value" in descriptor) descriptor.writable = true; 46 Object.defineProperty(target, descriptor.key, descriptor); 47 } 48 } 49 50 function _createClass(Constructor, protoProps, staticProps) { 51 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 52 if (staticProps) _defineProperties(Constructor, staticProps); 53 return Constructor; 54 } 55 56 var NAME = 'dropdown'; 57 var VERSION = '4.5.3'; 58 var DATA_KEY = 'bs.dropdown'; 59 var EVENT_KEY = "." + DATA_KEY; 60 var DATA_API_KEY = '.data-api'; 61 var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME]; 62 var ESCAPE_KEYCODE = 27; 63 var SPACE_KEYCODE = 32; 64 var TAB_KEYCODE = 9; 65 var ARROW_UP_KEYCODE = 38; 66 var ARROW_DOWN_KEYCODE = 40; 67 var RIGHT_MOUSE_BUTTON_WHICH = 3; 68 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); 69 var EVENT_HIDE = "hide" + EVENT_KEY; 70 var EVENT_HIDDEN = "hidden" + EVENT_KEY; 71 var EVENT_SHOW = "show" + EVENT_KEY; 72 var EVENT_SHOWN = "shown" + EVENT_KEY; 73 var EVENT_CLICK = "click" + EVENT_KEY; 74 var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY; 75 var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY; 76 var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY; 77 var CLASS_NAME_DISABLED = 'disabled'; 78 var CLASS_NAME_SHOW = 'show'; 79 var CLASS_NAME_DROPUP = 'dropup'; 80 var CLASS_NAME_DROPRIGHT = 'dropright'; 81 var CLASS_NAME_DROPLEFT = 'dropleft'; 82 var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; 83 var CLASS_NAME_POSITION_STATIC = 'position-static'; 84 var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]'; 85 var SELECTOR_FORM_CHILD = '.dropdown form'; 86 var SELECTOR_MENU = '.dropdown-menu'; 87 var SELECTOR_NAVBAR_NAV = '.navbar-nav'; 88 var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 89 var PLACEMENT_TOP = 'top-start'; 90 var PLACEMENT_TOPEND = 'top-end'; 91 var PLACEMENT_BOTTOM = 'bottom-start'; 92 var PLACEMENT_BOTTOMEND = 'bottom-end'; 93 var PLACEMENT_RIGHT = 'right-start'; 94 var PLACEMENT_LEFT = 'left-start'; 95 var Default = { 96 offset: 0, 97 flip: true, 98 boundary: 'scrollParent', 99 reference: 'toggle', 100 display: 'dynamic', 101 popperConfig: null 102 }; 103 var DefaultType = { 104 offset: '(number|string|function)', 105 flip: 'boolean', 106 boundary: '(string|element)', 107 reference: '(string|element)', 108 display: 'string', 109 popperConfig: '(null|object)' 110 }; 111 112 var Dropdown = function () { 113 function Dropdown(element, config) { 114 this._element = element; 115 this._popper = null; 116 this._config = this._getConfig(config); 117 this._menu = this._getMenuElement(); 118 this._inNavbar = this._detectNavbar(); 119 120 this._addEventListeners(); 121 } 122 123 var _proto = Dropdown.prototype; 124
vendor: 6,259 bytes, lines 125-321
125 _proto.toggle = function toggle() { 126 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) { 127 return; 128 } 129 130 var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW); 131 132 Dropdown._clearMenus(); 133 134 if (isActive) { 135 return; 136 } 137 138 this.show(true); 139 }; 140 141 _proto.show = function show(usePopper) { 142 if (usePopper === void 0) { 143 usePopper = false; 144 } 145 146 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW)) { 147 return; 148 } 149 150 var relatedTarget = { 151 relatedTarget: this._element 152 }; 153 var showEvent = $__default['default'].Event(EVENT_SHOW, relatedTarget); 154 155 var parent = Dropdown._getParentFromElement(this._element); 156 157 $__default['default'](parent).trigger(showEvent); 158 159 if (showEvent.isDefaultPrevented()) { 160 return; 161 } 162 163 if (!this._inNavbar && usePopper) { 164 if (typeof Popper__default['default'] === 'undefined') { 165 throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)'); 166 } 167 168 var referenceElement = this._element; 169 170 if (this._config.reference === 'parent') { 171 referenceElement = parent; 172 } else if (Util__default['default'].isElement(this._config.reference)) { 173 referenceElement = this._config.reference; 174 175 if (typeof this._config.reference.jquery !== 'undefined') { 176 referenceElement = this._config.reference[0]; 177 } 178 } 179 180 if (this._config.boundary !== 'scrollParent') { 181 $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC); 182 } 183 184 this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig()); 185 } 186 187 if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { 188 $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop); 189 } 190 191 this._element.focus(); 192 193 this._element.setAttribute('aria-expanded', true); 194 195 $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW); 196 $__default['default'](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_SHOWN, relatedTarget)); 197 }; 198 199 _proto.hide = function hide() { 200 if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW)) { 201 return; 202 } 203 204 var relatedTarget = { 205 relatedTarget: this._element 206 }; 207 var hideEvent = $__default['default'].Event(EVENT_HIDE, relatedTarget); 208 209 var parent = Dropdown._getParentFromElement(this._element); 210 211 $__default['default'](parent).trigger(hideEvent); 212 213 if (hideEvent.isDefaultPrevented()) { 214 return; 215 } 216 217 if (this._popper) { 218 this._popper.destroy(); 219 } 220 221 $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW); 222 $__default['default'](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_HIDDEN, relatedTarget)); 223 }; 224 225 _proto.dispose = function dispose() { 226 $__default['default'].removeData(this._element, DATA_KEY); 227 $__default['default'](this._element).off(EVENT_KEY); 228 this._element = null; 229 this._menu = null; 230 231 if (this._popper !== null) { 232 this._popper.destroy(); 233 234 this._popper = null; 235 } 236 }; 237 238 _proto.update = function update() { 239 this._inNavbar = this._detectNavbar(); 240 241 if (this._popper !== null) { 242 this._popper.scheduleUpdate(); 243 } 244 }; 245 246 _proto._addEventListeners = function _addEventListeners() { 247 var _this = this; 248 249 $__default['default'](this._element).on(EVENT_CLICK, function (event) { 250 event.preventDefault(); 251 event.stopPropagation(); 252 253 _this.toggle(); 254 }); 255 }; 256 257 _proto._getConfig = function _getConfig(config) { 258 config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config); 259 Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType); 260 return config; 261 }; 262 263 _proto._getMenuElement = function _getMenuElement() { 264 if (!this._menu) { 265 var parent = Dropdown._getParentFromElement(this._element); 266 267 if (parent) { 268 this._menu = parent.querySelector(SELECTOR_MENU); 269 } 270 } 271 272 return this._menu; 273 }; 274 275 _proto._getPlacement = function _getPlacement() { 276 var $parentDropdown = $__default['default'](this._element.parentNode); 277 var placement = PLACEMENT_BOTTOM; 278 279 if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { 280 placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; 281 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { 282 placement = PLACEMENT_RIGHT; 283 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { 284 placement = PLACEMENT_LEFT; 285 } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { 286 placement = PLACEMENT_BOTTOMEND; 287 } 288 289 return placement; 290 }; 291 292 _proto._detectNavbar = function _detectNavbar() { 293 return $__default['default'](this._element).closest('.navbar').length > 0; 294 }; 295 296 _proto._getOffset = function _getOffset() { 297 var _this2 = this; 298 299 var offset = {}; 300 301 if (typeof this._config.offset === 'function') { 302 offset.fn = function (data) { 303 data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); 304 return data; 305 }; 306 } else { 307 offset.offset = this._config.offset; 308 } 309 310 return offset; 311 }; 312 313 _proto._getPopperConfig = function _getPopperConfig() { 314 var popperConfig = { 315 placement: this._getPlacement(), 316 modifiers: { 317 offset: this._getOffset(), 318 flip: { 319 enabled: this._config.flip 320 }, 321 preventOverflow: {
vendor: 5,977 bytes, lines 322-514
322 boundariesElement: this._config.boundary 323 } 324 } 325 }; 326 327 if (this._config.display === 'static') { 328 popperConfig.modifiers.applyStyle = { 329 enabled: false 330 }; 331 } 332 333 return _extends({}, popperConfig, this._config.popperConfig); 334 }; 335 336 Dropdown._jQueryInterface = function _jQueryInterface(config) { 337 return this.each(function () { 338 var data = $__default['default'](this).data(DATA_KEY); 339 340 var _config = _typeof(config) === 'object' ? config : null; 341 342 if (!data) { 343 data = new Dropdown(this, _config); 344 $__default['default'](this).data(DATA_KEY, data); 345 } 346 347 if (typeof config === 'string') { 348 if (typeof data[config] === 'undefined') { 349 throw new TypeError("No method named \"" + config + "\""); 350 } 351 352 data[config](); 353 } 354 }); 355 }; 356 357 Dropdown._clearMenus = function _clearMenus(event) { 358 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { 359 return; 360 } 361 362 var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); 363 364 for (var i = 0, len = toggles.length; i < len; i++) { 365 var parent = Dropdown._getParentFromElement(toggles[i]); 366 367 var context = $__default['default'](toggles[i]).data(DATA_KEY); 368 var relatedTarget = { 369 relatedTarget: toggles[i] 370 }; 371 372 if (event && event.type === 'click') { 373 relatedTarget.clickEvent = event; 374 } 375 376 if (!context) { 377 continue; 378 } 379 380 var dropdownMenu = context._menu; 381 382 if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW)) { 383 continue; 384 } 385 386 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) { 387 continue; 388 } 389 390 var hideEvent = $__default['default'].Event(EVENT_HIDE, relatedTarget); 391 $__default['default'](parent).trigger(hideEvent); 392 393 if (hideEvent.isDefaultPrevented()) { 394 continue; 395 } 396 397 if ('ontouchstart' in document.documentElement) { 398 $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop); 399 } 400 401 toggles[i].setAttribute('aria-expanded', 'false'); 402 403 if (context._popper) { 404 context._popper.destroy(); 405 } 406 407 $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW); 408 $__default['default'](parent).removeClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_HIDDEN, relatedTarget)); 409 } 410 }; 411 412 Dropdown._getParentFromElement = function _getParentFromElement(element) { 413 var parent; 414 var selector = Util__default['default'].getSelectorFromElement(element); 415 416 if (selector) { 417 parent = document.querySelector(selector); 418 } 419 420 return parent || element.parentNode; 421 }; 422 423 Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { 424 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { 425 return; 426 } 427 428 if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) { 429 return; 430 } 431 432 var parent = Dropdown._getParentFromElement(this); 433 434 var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW); 435 436 if (!isActive && event.which === ESCAPE_KEYCODE) { 437 return; 438 } 439 440 event.preventDefault(); 441 event.stopPropagation(); 442 443 if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) { 444 if (event.which === ESCAPE_KEYCODE) { 445 $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus'); 446 } 447 448 $__default['default'](this).trigger('click'); 449 return; 450 } 451 452 var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { 453 return $__default['default'](item).is(':visible'); 454 }); 455 456 if (items.length === 0) { 457 return; 458 } 459 460 var index = items.indexOf(event.target); 461 462 if (event.which === ARROW_UP_KEYCODE && index > 0) { 463 index--; 464 } 465 466 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { 467 index++; 468 } 469 470 if (index < 0) { 471 index = 0; 472 } 473 474 items[index].focus(); 475 }; 476 477 _createClass(Dropdown, null, [{ 478 key: "VERSION", 479 get: function get() { 480 return VERSION; 481 } 482 }, { 483 key: "Default", 484 get: function get() { 485 return Default; 486 } 487 }, { 488 key: "DefaultType", 489 get: function get() { 490 return DefaultType; 491 } 492 }]); 493 494 return Dropdown; 495 }(); 496 497 $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 498 event.preventDefault(); 499 event.stopPropagation(); 500 501 Dropdown._jQueryInterface.call($__default['default'](this), 'toggle'); 502 }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) { 503 e.stopPropagation(); 504 }); 505 $__default['default'].fn[NAME] = Dropdown._jQueryInterface; 506 $__default['default'].fn[NAME].Constructor = Dropdown; 507 508 $__default['default'].fn[NAME].noConflict = function () { 509 $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT; 510 return Dropdown._jQueryInterface; 511 }; 512 513 return Dropdown; 514});
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.