From 460abc9cf5f26d68ce16e392c9accbb20ae483fc Mon Sep 17 00:00:00 2001 From: Rohit Sharma <rohit2sharma95@gmail.com> Date: Tue, 25 May 2021 22:50:49 +0530 Subject: [PATCH] Move defineJQueryPlugin in the base component --- js/src/alert.js | 14 +------------- js/src/base-component.js | 5 ++++- js/src/button.js | 10 ---------- js/src/carousel.js | 10 ---------- js/src/collapse.js | 10 ---------- js/src/dropdown.js | 10 ---------- js/src/modal.js | 10 ---------- js/src/offcanvas.js | 9 --------- js/src/popover.js | 10 ---------- js/src/scrollspy.js | 10 ---------- js/src/tab.js | 10 ---------- js/src/toast.js | 10 ---------- js/src/tooltip.js | 10 ---------- js/src/util/index.js | 36 +++++++++++++++++++++++++++--------- 14 files changed, 32 insertions(+), 132 deletions(-) diff --git a/js/src/alert.js b/js/src/alert.js index 679a90cdb4..97ec6faffc 100644 --- a/js/src/alert.js +++ b/js/src/alert.js @@ -5,10 +5,7 @@ * -------------------------------------------------------------------------- */ -import { - defineJQueryPlugin, - getElementFromSelector -} from './util/index' +import { getElementFromSelector } from './util/index' import Data from './dom/data' import EventHandler from './dom/event-handler' import BaseComponent from './base-component' @@ -118,13 +115,4 @@ class Alert extends BaseComponent { EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert())) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Alert to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Alert) - export default Alert diff --git a/js/src/base-component.js b/js/src/base-component.js index a5f1b36a00..ad5e025227 100644 --- a/js/src/base-component.js +++ b/js/src/base-component.js @@ -10,7 +10,8 @@ import { emulateTransitionEnd, execute, getElement, - getTransitionDurationFromElement + getTransitionDurationFromElement, + defineJQueryPlugin } from './util/index' import EventHandler from './dom/event-handler' @@ -78,4 +79,6 @@ class BaseComponent { } } +defineJQueryPlugin() + export default BaseComponent diff --git a/js/src/button.js b/js/src/button.js index 6ef7531367..26f917727d 100644 --- a/js/src/button.js +++ b/js/src/button.js @@ -5,7 +5,6 @@ * -------------------------------------------------------------------------- */ -import { defineJQueryPlugin } from './util/index' import Data from './dom/data' import EventHandler from './dom/event-handler' import BaseComponent from './base-component' @@ -83,13 +82,4 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => { data.toggle() }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Button to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Button) - export default Button diff --git a/js/src/carousel.js b/js/src/carousel.js index 7d197ab1ee..1b62c34a82 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, getElementFromSelector, isRTL, isVisible, @@ -578,13 +577,4 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, () => { } }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Carousel to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Carousel) - export default Carousel diff --git a/js/src/collapse.js b/js/src/collapse.js index fd85fbde2d..abd65bc00a 100644 --- a/js/src/collapse.js +++ b/js/src/collapse.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, getElement, getSelectorFromElement, getElementFromSelector, @@ -376,13 +375,4 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( }) }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Collapse to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Collapse) - export default Collapse diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 34beb65129..3ed2fea54a 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -8,7 +8,6 @@ import * as Popper from '@popperjs/core' import { - defineJQueryPlugin, getElement, getElementFromSelector, isDisabled, @@ -508,13 +507,4 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( Dropdown.dropdownInterface(this) }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Dropdown to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Dropdown) - export default Dropdown diff --git a/js/src/modal.js b/js/src/modal.js index b05fe8de75..5d2908a4e2 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, emulateTransitionEnd, getElementFromSelector, getTransitionDurationFromElement, @@ -434,13 +433,4 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( data.toggle(this) }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Modal to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Modal) - export default Modal diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js index fed892f4c7..215fe0039e 100644 --- a/js/src/offcanvas.js +++ b/js/src/offcanvas.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, getElementFromSelector, isDisabled, isVisible, @@ -265,12 +264,4 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, () => { SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show()) }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - -defineJQueryPlugin(Offcanvas) - export default Offcanvas diff --git a/js/src/popover.js b/js/src/popover.js index 929391392a..ccf8fdb662 100644 --- a/js/src/popover.js +++ b/js/src/popover.js @@ -5,7 +5,6 @@ * -------------------------------------------------------------------------- */ -import { defineJQueryPlugin } from './util/index' import Data from './dom/data' import SelectorEngine from './dom/selector-engine' import Tooltip from './tooltip' @@ -165,13 +164,4 @@ class Popover extends Tooltip { } } -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Popover to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Popover) - export default Popover diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index 3297c45c23..394b292525 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, getSelectorFromElement, getUID, isElement, @@ -296,13 +295,4 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, () => { .forEach(spy => new ScrollSpy(spy)) }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .ScrollSpy to jQuery only if jQuery is present - */ - -defineJQueryPlugin(ScrollSpy) - export default ScrollSpy diff --git a/js/src/tab.js b/js/src/tab.js index 51deb170f8..7c5fe1fa40 100644 --- a/js/src/tab.js +++ b/js/src/tab.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, getElementFromSelector, isDisabled, reflow @@ -213,13 +212,4 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( data.show() }) -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tab to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Tab) - export default Tab diff --git a/js/src/toast.js b/js/src/toast.js index 40cd40d9a9..1deb148b4d 100644 --- a/js/src/toast.js +++ b/js/src/toast.js @@ -6,7 +6,6 @@ */ import { - defineJQueryPlugin, reflow, typeCheckConfig } from './util/index' @@ -236,13 +235,4 @@ class Toast extends BaseComponent { } } -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Toast to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Toast) - export default Toast diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 2eb91965b2..be29cd0aa1 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -8,7 +8,6 @@ import * as Popper from '@popperjs/core' import { - defineJQueryPlugin, findShadowRoot, getElement, getUID, @@ -740,13 +739,4 @@ class Tooltip extends BaseComponent { } } -/** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - * add .Tooltip to jQuery only if jQuery is present - */ - -defineJQueryPlugin(Tooltip) - export default Tooltip diff --git a/js/src/util/index.js b/js/src/util/index.js index 4d077b21f9..f138516e2f 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -229,19 +229,37 @@ const onDOMContentLoaded = callback => { const isRTL = () => document.documentElement.dir === 'rtl' -const defineJQueryPlugin = plugin => { +const defineJQueryPlugin = () => { onDOMContentLoaded(() => { const $ = getjQuery() /* istanbul ignore if */ if ($) { - const name = plugin.NAME - const JQUERY_NO_CONFLICT = $.fn[name] - $.fn[name] = plugin.jQueryInterface - $.fn[name].Constructor = plugin - $.fn[name].noConflict = () => { - $.fn[name] = JQUERY_NO_CONFLICT - return plugin.jQueryInterface - } + [ + 'Alert', + 'Button', + 'Carousel', + 'Collapse', + 'Dropdown', + 'Modal', + 'Offcanvas', + 'Popover', + 'ScrollSpy', + 'Tab', + 'Toast', + 'Tooltip' + ].forEach(pluginName => { + const plugin = window.bootstrap[pluginName] + if (plugin) { + const name = plugin.NAME + const JQUERY_NO_CONFLICT = $.fn[name] + $.fn[name] = plugin.jQueryInterface + $.fn[name].Constructor = plugin + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT + return plugin.jQueryInterface + } + } + }) } }) } -- GitLab