diff options
| author | Johann-S <[email protected]> | 2019-08-14 17:27:58 +0200 |
|---|---|---|
| committer | XhmikosR <[email protected]> | 2019-08-18 17:19:36 +0300 |
| commit | f03c10a1897254f82d1484924b259a921dcf0431 (patch) | |
| tree | 7fc4154b168a4660b6f89c1b33944de7f381cbf0 /js/src/dropdown | |
| parent | b3cf60018c38b7da84e46f0362a39d5eecbfecaa (diff) | |
| download | bootstrap-f03c10a1897254f82d1484924b259a921dcf0431.tar.xz bootstrap-f03c10a1897254f82d1484924b259a921dcf0431.zip | |
allow to pass popper.js configuration for tooltip/popover and dropdown
Diffstat (limited to 'js/src/dropdown')
| -rw-r--r-- | js/src/dropdown/dropdown.js | 15 | ||||
| -rw-r--r-- | js/src/dropdown/dropdown.spec.js | 22 |
2 files changed, 34 insertions, 3 deletions
diff --git a/js/src/dropdown/dropdown.js b/js/src/dropdown/dropdown.js index 2c30ba740..26bcf2aa3 100644 --- a/js/src/dropdown/dropdown.js +++ b/js/src/dropdown/dropdown.js @@ -83,7 +83,8 @@ const Default = { flip: true, boundary: 'scrollParent', reference: 'toggle', - display: 'dynamic' + display: 'dynamic', + popperConfig: null } const DefaultType = { @@ -91,7 +92,8 @@ const DefaultType = { flip: 'boolean', boundary: '(string|element)', reference: '(string|element)', - display: 'string' + display: 'string', + popperConfig: '(null|object)' } /** @@ -339,7 +341,7 @@ class Dropdown { } _getPopperConfig() { - const popperConfig = { + let popperConfig = { placement: this._getPlacement(), modifiers: { offset: this._getOffset(), @@ -359,6 +361,13 @@ class Dropdown { } } + if (this._config.popperConfig) { + popperConfig = { + ...popperConfig, + ...this._config.popperConfig + } + } + return popperConfig } diff --git a/js/src/dropdown/dropdown.spec.js b/js/src/dropdown/dropdown.spec.js index 92d8fea03..e99e992f3 100644 --- a/js/src/dropdown/dropdown.spec.js +++ b/js/src/dropdown/dropdown.spec.js @@ -99,6 +99,28 @@ describe('Dropdown', () => { expect(dropdown.toggle).toHaveBeenCalled() }) + + it('should allow to pass config to popper.js thanks to popperConfig', () => { + fixtureEl.innerHTML = [ + '<div class="dropdown">', + ' <button href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>', + ' <div class="dropdown-menu">', + ' <a class="dropdown-item" href="#">Secondary link</a>', + ' </div>', + '</div>' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + popperConfig: { + placement: 'left' + } + }) + + const popperConfig = dropdown._getPopperConfig() + + expect(popperConfig.placement).toEqual('left') + }) }) describe('toggle', () => { |
