SiteSearch.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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 SiteSearch.js
  7. * License MIT
  8. * --------------------------------------------
  9. */
  10. var SiteSearch = function ($) {
  11. 'use strict';
  12. /**
  13. * Constants
  14. * ====================================================
  15. */
  16. var NAME = 'SiteSearch';
  17. var DATA_KEY = 'lte.site-search';
  18. var EVENT_KEY = '.' + DATA_KEY;
  19. var JQUERY_NO_CONFLICT = $.fn[NAME];
  20. var Event = {};
  21. var Selector = {
  22. TOGGLE_BUTTON: '[data-widget="site-search"]',
  23. SEARCH_BLOCK: '.site-search-block',
  24. SEARCH_BACKDROP: '.site-search-backdrop',
  25. SEARCH_INPUT: '.site-search-block .form-control'
  26. };
  27. var ClassName = {
  28. OPEN: 'site-search-open'
  29. };
  30. var Default = {
  31. transitionSpeed: 300
  32. };
  33. /**
  34. * Class Definition
  35. * ====================================================
  36. */
  37. var SiteSearch = function () {
  38. function SiteSearch(_element, _options) {
  39. _classCallCheck(this, SiteSearch);
  40. this.element = _element;
  41. this.options = $.extend({}, Default, _options);
  42. }
  43. // Public
  44. _createClass(SiteSearch, [{
  45. key: 'open',
  46. value: function open() {
  47. $(Selector.SEARCH_BLOCK).slideDown(this.options.transitionSpeed);
  48. $(Selector.SEARCH_BACKDROP).show(0);
  49. $(Selector.SEARCH_INPUT).focus();
  50. $(Selector.SEARCH_BLOCK).addClass(ClassName.OPEN);
  51. }
  52. }, {
  53. key: 'close',
  54. value: function close() {
  55. $(Selector.SEARCH_BLOCK).slideUp(this.options.transitionSpeed);
  56. $(Selector.SEARCH_BACKDROP).hide(0);
  57. $(Selector.SEARCH_BLOCK).removeClass(ClassName.OPEN);
  58. }
  59. }, {
  60. key: 'toggle',
  61. value: function toggle() {
  62. if ($(Selector.SEARCH_BLOCK).hasClass(ClassName.OPEN)) {
  63. this.close();
  64. } else {
  65. this.open();
  66. }
  67. }
  68. // Static
  69. }], [{
  70. key: '_jQueryInterface',
  71. value: function _jQueryInterface(options) {
  72. return this.each(function () {
  73. var data = $(this).data(DATA_KEY);
  74. if (!data) {
  75. data = new SiteSearch(this, options);
  76. $(this).data(DATA_KEY, data);
  77. }
  78. if (!/toggle|close/.test(options)) {
  79. throw Error('Undefined method ' + options);
  80. }
  81. data[options]();
  82. });
  83. }
  84. }]);
  85. return SiteSearch;
  86. }();
  87. /**
  88. * Data API
  89. * ====================================================
  90. */
  91. $(document).on('click', Selector.TOGGLE_BUTTON, function (event) {
  92. event.preventDefault();
  93. var button = $(event.currentTarget);
  94. if (button.data('widget') !== 'site-search') {
  95. button = button.closest(Selector.TOGGLE_BUTTON);
  96. }
  97. SiteSearch._jQueryInterface.call(button, 'toggle');
  98. });
  99. $(document).on('click', Selector.SEARCH_BACKDROP, function (event) {
  100. var backdrop = $(event.currentTarget);
  101. SiteSearch._jQueryInterface.call(backdrop, 'close');
  102. });
  103. /**
  104. * jQuery API
  105. * ====================================================
  106. */
  107. $.fn[NAME] = SiteSearch._jQueryInterface;
  108. $.fn[NAME].Constructor = SiteSearch;
  109. $.fn[NAME].noConflict = function () {
  110. $.fn[NAME] = JQUERY_NO_CONFLICT;
  111. return SiteSearch._jQueryInterface;
  112. };
  113. return SiteSearch;
  114. }(jQuery);
  115. //# sourceMappingURL=SiteSearch.js.map