From e5a0471b0b618409e30529a5e02933d5a74a4cc5 Mon Sep 17 00:00:00 2001 From: Johann-S Date: Wed, 19 Apr 2017 15:08:06 +0200 Subject: [PATCH] Add an update method to allow to update position for Tooltip/Popover/Dropdown manually --- docs/components/dropdowns.md | 1 + docs/components/popovers.md | 6 ++++++ docs/components/tooltips.md | 6 ++++++ js/src/dropdown.js | 6 ++++++ js/src/tooltip.js | 12 ++++++++++-- 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/components/dropdowns.md b/docs/components/dropdowns.md index 938447f3d6..7aa91773cf 100644 --- a/docs/components/dropdowns.md +++ b/docs/components/dropdowns.md @@ -568,6 +568,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap | Method | Description | | --- | --- | | `$().dropdown('toggle')` | Toggles the dropdown menu of a given navbar or tabbed navigation. | +| `$().dropdown('update')` | Updates the position of an element's dropdown. | ### Events diff --git a/docs/components/popovers.md b/docs/components/popovers.md index 9366ac1a1d..714bb0abcf 100644 --- a/docs/components/popovers.md +++ b/docs/components/popovers.md @@ -322,6 +322,12 @@ Toggles the ability for an element's popover to be shown or hidden. {% highlight js %}$('#element').popover('toggleEnabled'){% endhighlight %} +#### `.popover('update')` + +Updates the position of an element's popover. + +{% highlight js %}$('#element').popover('update'){% endhighlight %} + ### Events diff --git a/docs/components/tooltips.md b/docs/components/tooltips.md index 54f3c448f5..6d6d2a26a0 100644 --- a/docs/components/tooltips.md +++ b/docs/components/tooltips.md @@ -298,6 +298,12 @@ Toggles the ability for an element's tooltip to be shown or hidden. {% highlight js %}$('#element').tooltip('toggleEnabled'){% endhighlight %} +#### `.tooltip('update')` + +Updates the position of an element's tooltip. + +{% highlight js %}$('#element').tooltip('update'){% endhighlight %} + ### Events
diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 613a238128..0c082edd60 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -185,8 +185,14 @@ const Dropdown = (($) => { if (this._popper !== null) { this._popper.destroy() } + this._popper = null } + update() { + if (this._popper !== null) { + this._popper.scheduleUpdate() + } + } // private diff --git a/js/src/tooltip.js b/js/src/tooltip.js index a8c0ab6f1d..d50ddbb3e8 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -227,6 +227,9 @@ const Tooltip = (($) => { this._timeout = null this._hoverState = null this._activeTrigger = null + if (this._popper !== null) { + this._popper.destroy() + } this._popper = null this.element = null @@ -385,6 +388,11 @@ const Tooltip = (($) => { } + update() { + if (this._popper !== null) { + this._popper.scheduleUpdate() + } + } // protected @@ -646,8 +654,8 @@ const Tooltip = (($) => { } _handlePopperPlacementChange(data) { - this._cleanTipClass() - this.addAttachmentClass(this._getAttachment(data.placement)) + this._cleanTipClass() + this.addAttachmentClass(this._getAttachment(data.placement)) } // static