closeable-tabs.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. (function (global, factory) {
  2. if (typeof define === "function" && define.amd) {
  3. define("/Plugin/closeable-tabs", ["exports", "jquery"], factory);
  4. } else if (typeof exports !== "undefined") {
  5. factory(exports, require("jquery"));
  6. } else {
  7. var mod = {
  8. exports: {}
  9. };
  10. factory(mod.exports, global.jQuery);
  11. global.PluginCloseableTabs = mod.exports;
  12. }
  13. })(this, function (_exports, _jquery) {
  14. "use strict";
  15. Object.defineProperty(_exports, "__esModule", {
  16. value: true
  17. });
  18. _exports.default = void 0;
  19. _jquery = babelHelpers.interopRequireDefault(_jquery);
  20. var pluginName = 'tabClose';
  21. var dismiss = '[data-close="tab"]';
  22. var TabClose =
  23. /*#__PURE__*/
  24. function () {
  25. function TabClose(el) {
  26. babelHelpers.classCallCheck(this, TabClose);
  27. (0, _jquery.default)(el).on('click', dismiss, this.close);
  28. }
  29. babelHelpers.createClass(TabClose, [{
  30. key: "close",
  31. value: function close(e) {
  32. var $this = (0, _jquery.default)(this);
  33. var $toggle = $this.closest('[data-toggle="tab"]');
  34. var selector = $toggle.data('target');
  35. var $li = $toggle.parent('li');
  36. if (!selector) {
  37. selector = $toggle.attr('href');
  38. selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '');
  39. }
  40. if ($toggle.hasClass('active')) {
  41. var $next = $li.siblings().eq(0).children('[data-toggle="tab"]');
  42. if ($next.length > 0) {
  43. var api = $next.tab().data('bs.tab');
  44. api.show();
  45. }
  46. }
  47. var $parent = (0, _jquery.default)(selector);
  48. if (e) {
  49. e.preventDefault();
  50. }
  51. $parent.trigger(e = _jquery.default.Event('close.bs.tab'));
  52. if (e.isDefaultPrevented()) {
  53. return;
  54. }
  55. $parent.removeClass('in');
  56. function removeElement() {
  57. // detach from parent, fire event then clean up data
  58. $parent.detach().trigger('closed.bs.tab').remove();
  59. $li.detach().remove();
  60. }
  61. _jquery.default.support.transition && $parent.hasClass('fade') ? $parent.one('bsTransitionEnd', removeElement).emulateTransitionEnd(TabClose.TRANSITION_DURATION) : removeElement();
  62. }
  63. }], [{
  64. key: "_jQueryInterface",
  65. value: function _jQueryInterface(option) {
  66. console.log(option);
  67. return this.each(function () {
  68. var $this = (0, _jquery.default)(this);
  69. var data = $this.data('bs.tab.close');
  70. if (!data) {
  71. $this.data('bs.tab.close', data = new TabClose(this));
  72. }
  73. if (typeof option === 'string') {
  74. data[option].call($this);
  75. }
  76. });
  77. }
  78. }]);
  79. return TabClose;
  80. }();
  81. TabClose.TRANSITION_DURATION = 150;
  82. _jquery.default.fn[pluginName] = TabClose._jQueryInterface;
  83. _jquery.default.fn[pluginName].Constructor = TabClose;
  84. _jquery.default.fn[pluginName].noConflict = function () {
  85. _jquery.default.fn[pluginName] = window.JQUERY_NO_CONFLICT;
  86. return asSelectable._jQueryInterface;
  87. }; // TAB CLOSE DATA-API
  88. // ==================
  89. (0, _jquery.default)(document).on('click.bs.tab-close.data-api', dismiss, TabClose.prototype.close);
  90. var _default = TabClose;
  91. _exports.default = _default;
  92. });