Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
button.js230 linesDownload Raw Back to dist
1/*!2  * Bootstrap button.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')) :8  typeof define === 'function' && define.amd ? define(['jquery'], factory) :9  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.jQuery));10})(this, (function ($) { '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 16  function _defineProperties(target, props) {17    for (var i = 0; i < props.length; i++) {18      var descriptor = props[i];19      descriptor.enumerable = descriptor.enumerable || false;20      descriptor.configurable = true;21      if ("value" in descriptor) descriptor.writable = true;22      Object.defineProperty(target, descriptor.key, descriptor);23    }24  }25 26  function _createClass(Constructor, protoProps, staticProps) {27    if (protoProps) _defineProperties(Constructor.prototype, protoProps);28    if (staticProps) _defineProperties(Constructor, staticProps);29    Object.defineProperty(Constructor, "prototype", {30      writable: false31    });32    return Constructor;33  }34 35  /**36   * Constants37   */38 39  var NAME = 'button';40  var VERSION = '4.6.2';41  var DATA_KEY = 'bs.button';42  var EVENT_KEY = "." + DATA_KEY;43  var DATA_API_KEY = '.data-api';44  var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];45  var CLASS_NAME_ACTIVE = 'active';46  var CLASS_NAME_BUTTON = 'btn';47  var CLASS_NAME_FOCUS = 'focus';48  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;49  var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY);50  var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;51  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';52  var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';53  var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';54  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';55  var SELECTOR_INPUT = 'input:not([type="hidden"])';56  var SELECTOR_ACTIVE = '.active';57  var SELECTOR_BUTTON = '.btn';58  /**59   * Class definition60   */61 62  var Button = /*#__PURE__*/function () {63    function Button(element) {64      this._element = element;65      this.shouldAvoidTriggerChange = false;66    } // Getters67 68 69    var _proto = Button.prototype;70 71    // Public72    _proto.toggle = function toggle() {73      var triggerChangeEvent = true;74      var addAriaPressed = true;75      var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];76 77      if (rootElement) {78        var input = this._element.querySelector(SELECTOR_INPUT);79 80        if (input) {81          if (input.type === 'radio') {82            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {83              triggerChangeEvent = false;84            } else {85              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);86 87              if (activeElement) {88                $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);89              }90            }91          }92 93          if (triggerChangeEvent) {94            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input95            if (input.type === 'checkbox' || input.type === 'radio') {96              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);97            }98 99            if (!this.shouldAvoidTriggerChange) {100              $__default["default"](input).trigger('change');101            }102          }103 104          input.focus();105          addAriaPressed = false;106        }107      }108 109      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {110        if (addAriaPressed) {111          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));112        }113 114        if (triggerChangeEvent) {115          $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);116        }117      }118    };119 120    _proto.dispose = function dispose() {121      $__default["default"].removeData(this._element, DATA_KEY);122      this._element = null;123    } // Static124    ;125 126    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {127      return this.each(function () {128        var $element = $__default["default"](this);129        var data = $element.data(DATA_KEY);130 131        if (!data) {132          data = new Button(this);133          $element.data(DATA_KEY, data);134        }135 136        data.shouldAvoidTriggerChange = avoidTriggerChange;137 138        if (config === 'toggle') {139          data[config]();140        }141      });142    };143 144    _createClass(Button, null, [{145      key: "VERSION",146      get: function get() {147        return VERSION;148      }149    }]);150 151    return Button;152  }();153  /**154   * Data API implementation155   */156 157 158  $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {159    var button = event.target;160    var initialButton = button;161 162    if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {163      button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];164    }165 166    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {167      event.preventDefault(); // work around Firefox bug #1540995168    } else {169      var inputBtn = button.querySelector(SELECTOR_INPUT);170 171      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {172        event.preventDefault(); // work around Firefox bug #1540995173 174        return;175      }176 177      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {178        Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT');179      }180    }181  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {182    var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];183    $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));184  });185  $__default["default"](window).on(EVENT_LOAD_DATA_API, function () {186    // ensure correct active class is set to match the controls' actual values/states187    // find all checkboxes/readio buttons inside data-toggle groups188    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));189 190    for (var i = 0, len = buttons.length; i < len; i++) {191      var button = buttons[i];192      var input = button.querySelector(SELECTOR_INPUT);193 194      if (input.checked || input.hasAttribute('checked')) {195        button.classList.add(CLASS_NAME_ACTIVE);196      } else {197        button.classList.remove(CLASS_NAME_ACTIVE);198      }199    } // find all button toggles200 201 202    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));203 204    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {205      var _button = buttons[_i];206 207      if (_button.getAttribute('aria-pressed') === 'true') {208        _button.classList.add(CLASS_NAME_ACTIVE);209      } else {210        _button.classList.remove(CLASS_NAME_ACTIVE);211      }212    }213  });214  /**215   * jQuery216   */217 218  $__default["default"].fn[NAME] = Button._jQueryInterface;219  $__default["default"].fn[NAME].Constructor = Button;220 221  $__default["default"].fn[NAME].noConflict = function () {222    $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;223    return Button._jQueryInterface;224  };225 226  return Button;227 228}));229//# sourceMappingURL=button.js.map230