mirror of
				https://github.com/twbs/bootstrap.git
				synced 2025-10-31 00:04:27 -04:00 
			
		
		
		
	* update docs path from docs/4.0/ to docs/4.1/ * bump version to 4.1.0 * Update redirects to work for 4.1 docs move * Update docs version switcher to include latest and link to 4.0 docs * re-run dist * Update package-lock.json * Update docs-navbar.html
		
			
				
	
	
		
			167 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 | |
| 
 | |
| function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
 | |
| 
 | |
| /**
 | |
|  * --------------------------------------------------------------------------
 | |
|  * Bootstrap (v4.1.0): button.js
 | |
|  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 | |
|  * --------------------------------------------------------------------------
 | |
|  */
 | |
| var Button = function ($) {
 | |
|   /**
 | |
|    * ------------------------------------------------------------------------
 | |
|    * Constants
 | |
|    * ------------------------------------------------------------------------
 | |
|    */
 | |
|   var NAME = 'button';
 | |
|   var VERSION = '4.1.0';
 | |
|   var DATA_KEY = 'bs.button';
 | |
|   var EVENT_KEY = "." + DATA_KEY;
 | |
|   var DATA_API_KEY = '.data-api';
 | |
|   var JQUERY_NO_CONFLICT = $.fn[NAME];
 | |
|   var ClassName = {
 | |
|     ACTIVE: 'active',
 | |
|     BUTTON: 'btn',
 | |
|     FOCUS: 'focus'
 | |
|   };
 | |
|   var Selector = {
 | |
|     DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
 | |
|     DATA_TOGGLE: '[data-toggle="buttons"]',
 | |
|     INPUT: 'input',
 | |
|     ACTIVE: '.active',
 | |
|     BUTTON: '.btn'
 | |
|   };
 | |
|   var Event = {
 | |
|     CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
 | |
|     FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
 | |
|     /**
 | |
|      * ------------------------------------------------------------------------
 | |
|      * Class Definition
 | |
|      * ------------------------------------------------------------------------
 | |
|      */
 | |
| 
 | |
|   };
 | |
| 
 | |
|   var Button =
 | |
|   /*#__PURE__*/
 | |
|   function () {
 | |
|     function Button(element) {
 | |
|       this._element = element;
 | |
|     } // Getters
 | |
| 
 | |
| 
 | |
|     var _proto = Button.prototype;
 | |
| 
 | |
|     // Public
 | |
|     _proto.toggle = function toggle() {
 | |
|       var triggerChangeEvent = true;
 | |
|       var addAriaPressed = true;
 | |
|       var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
 | |
| 
 | |
|       if (rootElement) {
 | |
|         var input = $(this._element).find(Selector.INPUT)[0];
 | |
| 
 | |
|         if (input) {
 | |
|           if (input.type === 'radio') {
 | |
|             if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
 | |
|               triggerChangeEvent = false;
 | |
|             } else {
 | |
|               var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
 | |
| 
 | |
|               if (activeElement) {
 | |
|                 $(activeElement).removeClass(ClassName.ACTIVE);
 | |
|               }
 | |
|             }
 | |
|           }
 | |
| 
 | |
|           if (triggerChangeEvent) {
 | |
|             if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
 | |
|               return;
 | |
|             }
 | |
| 
 | |
|             input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
 | |
|             $(input).trigger('change');
 | |
|           }
 | |
| 
 | |
|           input.focus();
 | |
|           addAriaPressed = false;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       if (addAriaPressed) {
 | |
|         this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
 | |
|       }
 | |
| 
 | |
|       if (triggerChangeEvent) {
 | |
|         $(this._element).toggleClass(ClassName.ACTIVE);
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     _proto.dispose = function dispose() {
 | |
|       $.removeData(this._element, DATA_KEY);
 | |
|       this._element = null;
 | |
|     }; // Static
 | |
| 
 | |
| 
 | |
|     Button._jQueryInterface = function _jQueryInterface(config) {
 | |
|       return this.each(function () {
 | |
|         var data = $(this).data(DATA_KEY);
 | |
| 
 | |
|         if (!data) {
 | |
|           data = new Button(this);
 | |
|           $(this).data(DATA_KEY, data);
 | |
|         }
 | |
| 
 | |
|         if (config === 'toggle') {
 | |
|           data[config]();
 | |
|         }
 | |
|       });
 | |
|     };
 | |
| 
 | |
|     _createClass(Button, null, [{
 | |
|       key: "VERSION",
 | |
|       get: function get() {
 | |
|         return VERSION;
 | |
|       }
 | |
|     }]);
 | |
| 
 | |
|     return Button;
 | |
|   }();
 | |
|   /**
 | |
|    * ------------------------------------------------------------------------
 | |
|    * Data Api implementation
 | |
|    * ------------------------------------------------------------------------
 | |
|    */
 | |
| 
 | |
| 
 | |
|   $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
 | |
|     event.preventDefault();
 | |
|     var button = event.target;
 | |
| 
 | |
|     if (!$(button).hasClass(ClassName.BUTTON)) {
 | |
|       button = $(button).closest(Selector.BUTTON);
 | |
|     }
 | |
| 
 | |
|     Button._jQueryInterface.call($(button), 'toggle');
 | |
|   }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
 | |
|     var button = $(event.target).closest(Selector.BUTTON)[0];
 | |
|     $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
 | |
|   });
 | |
|   /**
 | |
|    * ------------------------------------------------------------------------
 | |
|    * jQuery
 | |
|    * ------------------------------------------------------------------------
 | |
|    */
 | |
| 
 | |
|   $.fn[NAME] = Button._jQueryInterface;
 | |
|   $.fn[NAME].Constructor = Button;
 | |
| 
 | |
|   $.fn[NAME].noConflict = function () {
 | |
|     $.fn[NAME] = JQUERY_NO_CONFLICT;
 | |
|     return Button._jQueryInterface;
 | |
|   };
 | |
| 
 | |
|   return Button;
 | |
| }($);
 | |
| //# sourceMappingURL=button.js.map
 |