PushMenu.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. 'use strict';
  2. var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  3. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4. /**
  5. * --------------------------------------------
  6. * AdminLTE PushMenu.js
  7. * License MIT
  8. * --------------------------------------------
  9. */
  10. var PushMenu = function ($) {
  11. 'use strict';
  12. /**
  13. * Constants
  14. * ====================================================
  15. */
  16. var NAME = 'PushMenu';
  17. var DATA_KEY = 'lte.pushmenu';
  18. var EVENT_KEY = '.' + DATA_KEY;
  19. var JQUERY_NO_CONFLICT = $.fn[NAME];
  20. var Event = {
  21. COLLAPSED: 'collapsed' + EVENT_KEY,
  22. SHOWN: 'shown' + EVENT_KEY
  23. };
  24. var Selector = {
  25. COLLAPSED: 'sidebar-collapse',
  26. TOGGLE_BUTTON: '[data-widget="pushmenu"]'
  27. };
  28. /**
  29. * Class Definition
  30. * ====================================================
  31. */
  32. var PushMenu = function () {
  33. function PushMenu(element) {
  34. _classCallCheck(this, PushMenu);
  35. this._element = element;
  36. this._isShown = !$('body').hasClass(Selector.COLLAPSED) || $('body').hasClass('sidebar-open');
  37. }
  38. // Public
  39. _createClass(PushMenu, [{
  40. key: 'show',
  41. value: function show() {
  42. $('body').addClass('sidebar-open').removeClass(Selector.COLLAPSED);
  43. this._isShown = true;
  44. var shownEvent = $.Event(Event.SHOWN);
  45. $(this._element).trigger(shownEvent);
  46. }
  47. }, {
  48. key: 'collapse',
  49. value: function collapse() {
  50. $('body').removeClass('sidebar-open').addClass(Selector.COLLAPSED);
  51. this._isShown = false;
  52. var collapsedEvent = $.Event(Event.COLLAPSED);
  53. $(this._element).trigger(collapsedEvent);
  54. }
  55. }, {
  56. key: 'toggle',
  57. value: function toggle() {
  58. if (typeof this._isShown === 'undefined') {
  59. this._isShown = !$('body').hasClass(Selector.COLLAPSED) || $('body').hasClass('sidebar-open');
  60. }
  61. if (this._isShown) {
  62. this.collapse();
  63. } else {
  64. this.show();
  65. }
  66. }
  67. // Static
  68. }], [{
  69. key: '_jQueryInterface',
  70. value: function _jQueryInterface(operation) {
  71. return this.each(function () {
  72. var data = $(this).data(DATA_KEY);
  73. if (!data) {
  74. data = new PushMenu(this);
  75. $(this).data(DATA_KEY, data);
  76. }
  77. if (operation) {
  78. data[operation]();
  79. }
  80. });
  81. }
  82. }]);
  83. return PushMenu;
  84. }();
  85. /**
  86. * Data API
  87. * ====================================================
  88. */
  89. $(document).on('click', Selector.TOGGLE_BUTTON, function (event) {
  90. event.preventDefault();
  91. var button = event.currentTarget;
  92. if ($(button).data('widget') !== 'pushmenu') {
  93. button = $(button).closest(Selector.TOGGLE_BUTTON);
  94. }
  95. PushMenu._jQueryInterface.call($(button), 'toggle');
  96. });
  97. /**
  98. * jQuery API
  99. * ====================================================
  100. */
  101. $.fn[NAME] = PushMenu._jQueryInterface;
  102. $.fn[NAME].Constructor = PushMenu;
  103. $.fn[NAME].noConflict = function () {
  104. $.fn[NAME] = JQUERY_NO_CONFLICT;
  105. return PushMenu._jQueryInterface;
  106. };
  107. return PushMenu;
  108. }(jQuery);
  109. //# sourceMappingURL=PushMenu.js.map