button.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. 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); } }
  2. function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
  3. /**
  4. * --------------------------------------------------------------------------
  5. * Bootstrap (v4.1.1): button.js
  6. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  7. * --------------------------------------------------------------------------
  8. */
  9. var Button = function ($) {
  10. /**
  11. * ------------------------------------------------------------------------
  12. * Constants
  13. * ------------------------------------------------------------------------
  14. */
  15. var NAME = 'button';
  16. var VERSION = '4.1.1';
  17. var DATA_KEY = 'bs.button';
  18. var EVENT_KEY = "." + DATA_KEY;
  19. var DATA_API_KEY = '.data-api';
  20. var JQUERY_NO_CONFLICT = $.fn[NAME];
  21. var ClassName = {
  22. ACTIVE: 'active',
  23. BUTTON: 'btn',
  24. FOCUS: 'focus'
  25. };
  26. var Selector = {
  27. DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
  28. DATA_TOGGLE: '[data-toggle="buttons"]',
  29. INPUT: 'input',
  30. ACTIVE: '.active',
  31. BUTTON: '.btn'
  32. };
  33. var Event = {
  34. CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
  35. FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
  36. /**
  37. * ------------------------------------------------------------------------
  38. * Class Definition
  39. * ------------------------------------------------------------------------
  40. */
  41. };
  42. var Button =
  43. /*#__PURE__*/
  44. function () {
  45. function Button(element) {
  46. this._element = element;
  47. } // Getters
  48. var _proto = Button.prototype;
  49. // Public
  50. _proto.toggle = function toggle() {
  51. var triggerChangeEvent = true;
  52. var addAriaPressed = true;
  53. var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
  54. if (rootElement) {
  55. var input = $(this._element).find(Selector.INPUT)[0];
  56. if (input) {
  57. if (input.type === 'radio') {
  58. if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
  59. triggerChangeEvent = false;
  60. } else {
  61. var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
  62. if (activeElement) {
  63. $(activeElement).removeClass(ClassName.ACTIVE);
  64. }
  65. }
  66. }
  67. if (triggerChangeEvent) {
  68. if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
  69. return;
  70. }
  71. input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
  72. $(input).trigger('change');
  73. }
  74. input.focus();
  75. addAriaPressed = false;
  76. }
  77. }
  78. if (addAriaPressed) {
  79. this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
  80. }
  81. if (triggerChangeEvent) {
  82. $(this._element).toggleClass(ClassName.ACTIVE);
  83. }
  84. };
  85. _proto.dispose = function dispose() {
  86. $.removeData(this._element, DATA_KEY);
  87. this._element = null;
  88. }; // Static
  89. Button._jQueryInterface = function _jQueryInterface(config) {
  90. return this.each(function () {
  91. var data = $(this).data(DATA_KEY);
  92. if (!data) {
  93. data = new Button(this);
  94. $(this).data(DATA_KEY, data);
  95. }
  96. if (config === 'toggle') {
  97. data[config]();
  98. }
  99. });
  100. };
  101. _createClass(Button, null, [{
  102. key: "VERSION",
  103. get: function get() {
  104. return VERSION;
  105. }
  106. }]);
  107. return Button;
  108. }();
  109. /**
  110. * ------------------------------------------------------------------------
  111. * Data Api implementation
  112. * ------------------------------------------------------------------------
  113. */
  114. $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
  115. event.preventDefault();
  116. var button = event.target;
  117. if (!$(button).hasClass(ClassName.BUTTON)) {
  118. button = $(button).closest(Selector.BUTTON);
  119. }
  120. Button._jQueryInterface.call($(button), 'toggle');
  121. }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
  122. var button = $(event.target).closest(Selector.BUTTON)[0];
  123. $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
  124. });
  125. /**
  126. * ------------------------------------------------------------------------
  127. * jQuery
  128. * ------------------------------------------------------------------------
  129. */
  130. $.fn[NAME] = Button._jQueryInterface;
  131. $.fn[NAME].Constructor = Button;
  132. $.fn[NAME].noConflict = function () {
  133. $.fn[NAME] = JQUERY_NO_CONFLICT;
  134. return Button._jQueryInterface;
  135. };
  136. return Button;
  137. }($);
  138. //# sourceMappingURL=button.js.map