mirror of https://github.com/twbs/bootstrap.git
				
				
				
			
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*!
 | |
|   * Bootstrap button.js v5.3.0-alpha1 (https://getbootstrap.com/)
 | |
|   * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 | |
|   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 | |
|   */
 | |
| (function (global, factory) {
 | |
|   typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
 | |
|   typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './base-component'], factory) :
 | |
|   (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.Index, global.EventHandler, global.BaseComponent));
 | |
| })(this, (function (index_js, EventHandler, BaseComponent) { 'use strict';
 | |
| 
 | |
|   /**
 | |
|    * --------------------------------------------------------------------------
 | |
|    * Bootstrap (v5.3.0-alpha1): button.js
 | |
|    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 | |
|    * --------------------------------------------------------------------------
 | |
|    */
 | |
| 
 | |
|   /**
 | |
|    * Constants
 | |
|    */
 | |
| 
 | |
|   const NAME = 'button';
 | |
|   const DATA_KEY = 'bs.button';
 | |
|   const EVENT_KEY = `.${DATA_KEY}`;
 | |
|   const DATA_API_KEY = '.data-api';
 | |
|   const CLASS_NAME_ACTIVE = 'active';
 | |
|   const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]';
 | |
|   const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
 | |
| 
 | |
|   /**
 | |
|    * Class definition
 | |
|    */
 | |
| 
 | |
|   class Button extends BaseComponent {
 | |
|     // Getters
 | |
|     static get NAME() {
 | |
|       return NAME;
 | |
|     }
 | |
| 
 | |
|     // Public
 | |
|     toggle() {
 | |
|       // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
 | |
|       this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
 | |
|     }
 | |
| 
 | |
|     // Static
 | |
|     static jQueryInterface(config) {
 | |
|       return this.each(function () {
 | |
|         const data = Button.getOrCreateInstance(this);
 | |
|         if (config === 'toggle') {
 | |
|           data[config]();
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Data API implementation
 | |
|    */
 | |
| 
 | |
|   EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
 | |
|     event.preventDefault();
 | |
|     const button = event.target.closest(SELECTOR_DATA_TOGGLE);
 | |
|     const data = Button.getOrCreateInstance(button);
 | |
|     data.toggle();
 | |
|   });
 | |
| 
 | |
|   /**
 | |
|    * jQuery
 | |
|    */
 | |
| 
 | |
|   index_js.defineJQueryPlugin(Button);
 | |
| 
 | |
|   return Button;
 | |
| 
 | |
| }));
 | |
| //# sourceMappingURL=button.js.map
 |