panel.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. (function (global, factory) {
  2. if (typeof define === "function" && define.amd) {
  3. define("/Plugin/panel", ["exports", "jquery", "Plugin"], factory);
  4. } else if (typeof exports !== "undefined") {
  5. factory(exports, require("jquery"), require("Plugin"));
  6. } else {
  7. var mod = {
  8. exports: {}
  9. };
  10. factory(mod.exports, global.jQuery, global.Plugin);
  11. global.PluginPanel = mod.exports;
  12. }
  13. })(this, function (_exports, _jquery, _Plugin2) {
  14. "use strict";
  15. Object.defineProperty(_exports, "__esModule", {
  16. value: true
  17. });
  18. _exports.default = void 0;
  19. _jquery = babelHelpers.interopRequireDefault(_jquery);
  20. _Plugin2 = babelHelpers.interopRequireDefault(_Plugin2);
  21. var NAME = 'panel';
  22. function getPanelAPI($el) {
  23. if ($el.length <= 0) {
  24. return;
  25. }
  26. var api = $el.data('panelAPI');
  27. if (api) {
  28. return api;
  29. }
  30. api = new Panel($el, _jquery.default.extend(true, {}, Panel.getDefaults(), $el.data()));
  31. api.render();
  32. return api;
  33. }
  34. var Panel =
  35. /*#__PURE__*/
  36. function (_Plugin) {
  37. babelHelpers.inherits(Panel, _Plugin);
  38. function Panel() {
  39. babelHelpers.classCallCheck(this, Panel);
  40. return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Panel).apply(this, arguments));
  41. }
  42. babelHelpers.createClass(Panel, [{
  43. key: "getName",
  44. value: function getName() {
  45. return NAME;
  46. }
  47. }, {
  48. key: "render",
  49. value: function render(context) {
  50. var $el = this.$el;
  51. this.isFullscreen = false;
  52. this.isClose = false;
  53. this.isCollapse = false;
  54. this.isLoading = false;
  55. this.$panelBody = $el.find('.panel-body');
  56. this.$fullscreen = $el.find('[data-toggle="panel-fullscreen"]');
  57. this.$collapse = $el.find('[data-toggle="panel-collapse"]');
  58. this.$loading = null;
  59. if ($el.hasClass('is-collapse')) {
  60. this.isCollapse = true;
  61. }
  62. if (typeof this.options.loadCallback === 'string') {
  63. this.options.loadCallback = window[this.options.loadCallback];
  64. }
  65. $el.data('panelAPI', this);
  66. }
  67. }, {
  68. key: "load",
  69. value: function load(callback) {
  70. var $el = this.$el;
  71. var type = $el.data('loader-type');
  72. if (!type) {
  73. type = 'default';
  74. }
  75. callback = callback || this.options.loadCallback;
  76. this.$loading = (0, _jquery.default)("<div class=\"panel-loading\">\n <div class=\"loader loader-".concat(type, "\"></div>\n </div>")).appendTo($el);
  77. $el.addClass('is-loading');
  78. $el.trigger('loading.uikit.panel');
  79. this.isLoading = true;
  80. if (typeof callback === 'function') {
  81. callback.call(this);
  82. }
  83. }
  84. }, {
  85. key: "done",
  86. value: function done() {
  87. if (this.isLoading === true) {
  88. this.$loading.remove();
  89. this.$el.removeClass('is-loading');
  90. this.$el.trigger('loading.done.uikit.panel');
  91. }
  92. }
  93. }, {
  94. key: "toggleContent",
  95. value: function toggleContent() {
  96. if (this.isCollapse) {
  97. this.showContent();
  98. } else {
  99. this.hideContent();
  100. }
  101. }
  102. }, {
  103. key: "showContent",
  104. value: function showContent() {
  105. if (this.isCollapse !== false) {
  106. this.$el.removeClass('is-collapse');
  107. if (this.$collapse.hasClass('wb-plus')) {
  108. this.$collapse.removeClass('wb-plus').addClass('wb-minus');
  109. }
  110. this.$el.trigger('shown.uikit.panel');
  111. this.isCollapse = false;
  112. }
  113. }
  114. }, {
  115. key: "hideContent",
  116. value: function hideContent() {
  117. if (this.isCollapse !== true) {
  118. this.$el.addClass('is-collapse');
  119. if (this.$collapse.hasClass('wb-minus')) {
  120. this.$collapse.removeClass('wb-minus').addClass('wb-plus');
  121. }
  122. this.$el.trigger('hidden.uikit.panel');
  123. this.isCollapse = true;
  124. }
  125. }
  126. }, {
  127. key: "toggleFullscreen",
  128. value: function toggleFullscreen() {
  129. if (this.isFullscreen) {
  130. this.leaveFullscreen();
  131. } else {
  132. this.enterFullscreen();
  133. }
  134. }
  135. }, {
  136. key: "enterFullscreen",
  137. value: function enterFullscreen() {
  138. if (this.isFullscreen !== true) {
  139. this.$el.addClass('is-fullscreen');
  140. if (this.$fullscreen.hasClass('wb-expand')) {
  141. this.$fullscreen.removeClass('wb-expand').addClass('wb-contract');
  142. }
  143. this.$el.trigger('enter.fullscreen.uikit.panel');
  144. this.isFullscreen = true;
  145. }
  146. }
  147. }, {
  148. key: "leaveFullscreen",
  149. value: function leaveFullscreen() {
  150. if (this.isFullscreen !== false) {
  151. this.$el.removeClass('is-fullscreen');
  152. if (this.$fullscreen.hasClass('wb-contract')) {
  153. this.$fullscreen.removeClass('wb-contract').addClass('wb-expand');
  154. }
  155. this.$el.trigger('leave.fullscreen.uikit.panel');
  156. this.isFullscreen = false;
  157. }
  158. }
  159. }, {
  160. key: "toggle",
  161. value: function toggle() {
  162. if (this.isClose) {
  163. this.open();
  164. } else {
  165. this.close();
  166. }
  167. }
  168. }, {
  169. key: "open",
  170. value: function open() {
  171. if (this.isClose !== false) {
  172. this.$el.removeClass('is-close');
  173. this.$el.trigger('open.uikit.panel');
  174. this.isClose = false;
  175. }
  176. }
  177. }, {
  178. key: "close",
  179. value: function close() {
  180. if (this.isClose !== true) {
  181. this.$el.addClass('is-close');
  182. this.$el.trigger('close.uikit.panel');
  183. this.isClose = true;
  184. }
  185. }
  186. }], [{
  187. key: "getDefaults",
  188. value: function getDefaults() {
  189. return {};
  190. }
  191. }, {
  192. key: "api",
  193. value: function api() {
  194. return function () {
  195. (0, _jquery.default)(document).on('click.site.panel', '[data-toggle="panel-fullscreen"]', function (e) {
  196. e.preventDefault();
  197. var api = getPanelAPI((0, _jquery.default)(this).closest('.panel'));
  198. api.toggleFullscreen();
  199. });
  200. (0, _jquery.default)(document).on('click.site.panel', '[data-toggle="panel-collapse"]', function (e) {
  201. e.preventDefault();
  202. var api = getPanelAPI((0, _jquery.default)(this).closest('.panel'));
  203. api.toggleContent();
  204. });
  205. (0, _jquery.default)(document).on('click.site.panel', '[data-toggle="panel-close"]', function (e) {
  206. e.preventDefault();
  207. var api = getPanelAPI((0, _jquery.default)(this).closest('.panel'));
  208. api.close();
  209. });
  210. (0, _jquery.default)(document).on('click.site.panel', '[data-toggle="panel-refresh"]', function (e) {
  211. e.preventDefault();
  212. var api = getPanelAPI((0, _jquery.default)(this).closest('.panel'));
  213. api.load();
  214. });
  215. };
  216. }
  217. }]);
  218. return Panel;
  219. }(_Plugin2.default);
  220. _Plugin2.default.register(NAME, Panel);
  221. var _default = Panel;
  222. _exports.default = _default;
  223. });