diff options
| author | Roman O <[email protected]> | 2017-10-03 15:34:44 +0300 |
|---|---|---|
| committer | Johann-S <[email protected]> | 2017-10-03 14:34:44 +0200 |
| commit | 527f55c2f3fecfbc1e991263d646a32de4ffcded (patch) | |
| tree | 1dbdccbbbe52d2e2982e157e7a0ca0e6ec0c8b5a | |
| parent | 898708dd2770645c0987fdcb52e12e1c739bca88 (diff) | |
| download | bootstrap-527f55c2f3fecfbc1e991263d646a32de4ffcded.tar.xz bootstrap-527f55c2f3fecfbc1e991263d646a32de4ffcded.zip | |
Offset option for dropdown can be function (#24222)
* Offset option can be function (Popper.js)
* Fix...add function type for offset option
* Remove constants for popper config
* Optimize code. Remove foreach loop.
* Refactoring. Remove getOffset method
| -rw-r--r-- | docs/4.0/components/dropdowns.md | 2 | ||||
| -rw-r--r-- | js/src/dropdown.js | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/docs/4.0/components/dropdowns.md b/docs/4.0/components/dropdowns.md index cdf713b03..d38b410c7 100644 --- a/docs/4.0/components/dropdowns.md +++ b/docs/4.0/components/dropdowns.md @@ -588,7 +588,7 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap <tbody> <tr> <td>offset</td> - <td>number | string</td> + <td>number | string | function</td> <td>0</td> <td>Offset of the dropdown relative to its target. For more information refer to Popper.js's <a href="https://popper.js.org/popper-documentation.html#modifiers..offset.offset">offset docs</a>.</td> </tr> diff --git a/js/src/dropdown.js b/js/src/dropdown.js index f76f84ef0..6681df668 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -80,7 +80,7 @@ const Dropdown = (() => { } const DefaultType = { - offset : '(number|string)', + offset : '(number|string|function)', flip : 'boolean' } @@ -246,12 +246,19 @@ const Dropdown = (() => { } _getPopperConfig() { + const offsetConf = {} + if (typeof this._config.offset === 'function') { + offsetConf.fn = (data) => { + data.offsets = $.extend({}, data.offsets, this._config.offset(data.offsets) || {}) + return data + } + } else { + offsetConf.offset = this._config.offset + } const popperConfig = { placement : this._getPlacement(), modifiers : { - offset : { - offset : this._config.offset - }, + offset : offsetConf, flip : { enabled : this._config.flip } |
