Add fallbackPlacement option for Tooltip and Popover

This commit is contained in:
Johann-S 2017-05-05 21:22:55 +02:00
parent ab7dc8ae2a
commit 0ae9d28ba3
4 changed files with 46 additions and 26 deletions

View File

@ -264,6 +264,13 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
<td>0</td>
<td>Offset of the popover 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>
<tr>
<td>fallbackPlacement</td>
<td>string | array</td>
<td>['top', 'right', 'bottom', 'left']</td>
<td>Allow to specify which position Popper will use on fallback. For more information refer to
Popper.js's <a href="https://popper.js.org/popper-documentation.html#modifiers..flip.behavior">behavior docs</a></td>
</tr>
</tbody>
</table>

View File

@ -242,6 +242,13 @@ Options can be passed via data attributes or JavaScript. For data attributes, ap
<td>0</td>
<td>Offset of the tooltip 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>
<tr>
<td>fallbackPlacement</td>
<td>string | array</td>
<td>['top', 'right', 'bottom', 'left']</td>
<td>Allow to specify which position Popper will use on fallback. For more information refer to
Popper.js's <a href="https://popper.js.org/popper-documentation.html#modifiers..flip.behavior">behavior docs</a></td>
</tr>
</tbody>
</table>

View File

@ -157,7 +157,8 @@ const Dropdown = (($) => {
offset : context._config.offset
},
flip : {
enabled : context._config.flip
enabled : context._config.flip,
behavior : [AttachmentMap.TOP, AttachmentMap.BOTTOM]
}
}
})

View File

@ -36,32 +36,18 @@ const Tooltip = (($) => {
const CLASS_PREFIX = 'bs-tooltip'
const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g')
const Default = {
animation : true,
template : '<div class="tooltip" role="tooltip">'
+ '<div class="arrow"></div>'
+ '<div class="tooltip-inner"></div></div>',
trigger : 'hover focus',
title : '',
delay : 0,
html : false,
selector : false,
placement : 'top',
offset : 0,
container : false
}
const DefaultType = {
animation : 'boolean',
template : 'string',
title : '(string|element|function)',
trigger : 'string',
delay : '(number|object)',
html : 'boolean',
selector : '(string|boolean)',
placement : '(string|function)',
offset : '(number|string)',
container : '(string|element|boolean)'
animation : 'boolean',
template : 'string',
title : '(string|element|function)',
trigger : 'string',
delay : '(number|object)',
html : 'boolean',
selector : '(string|boolean)',
placement : '(string|function)',
offset : '(number|string)',
container : '(string|element|boolean)',
fallbackPlacement : '(string|array)'
}
const AttachmentMap = {
@ -71,6 +57,22 @@ const Tooltip = (($) => {
LEFT : 'left'
}
const Default = {
animation : true,
template : '<div class="tooltip" role="tooltip">'
+ '<div class="arrow"></div>'
+ '<div class="tooltip-inner"></div></div>',
trigger : 'hover focus',
title : '',
delay : 0,
html : false,
selector : false,
placement : 'top',
offset : 0,
container : false,
fallbackPlacement : [AttachmentMap.TOP, AttachmentMap.RIGHT, AttachmentMap.BOTTOM, AttachmentMap.LEFT]
}
const HoverState = {
SHOW : 'show',
OUT : 'out'
@ -289,6 +291,9 @@ const Tooltip = (($) => {
modifiers : {
offset : {
offset : this.config.offset
},
flip : {
behavior : this.config.fallbackPlacement
}
},
onCreate : (data) => {