Skip to content

Commit bceeec9

Browse files
committed
feat: Add position-by to tooltip and popover. (close #410)
1 parent 8a4d284 commit bceeec9

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/mixins/popup.mixin.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export default {
3838
type: null,
3939
default: 'body'
4040
},
41+
positionBy: {
42+
type: null,
43+
default: null
44+
},
4145
transition: {
4246
type: Number,
4347
default: 150
@@ -195,7 +199,7 @@ export default {
195199
const popup = this.$refs.popup
196200
/* istanbul ignore else */
197201
if (popup) {
198-
setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.viewport)
202+
setTooltipPosition(popup, this.triggerEl, this.placement, this.autoPlacement, this.appendTo, this.positionBy, this.viewport)
199203
popup.offsetHeight
200204
}
201205
},

src/utils/dom.utils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,19 +219,19 @@ export function isAvailableAtPosition (trigger, popup, placement) {
219219
return top && right && bottom && left
220220
}
221221

222-
export function setTooltipPosition (tooltip, trigger, placement, auto, appendTo, viewport) {
222+
export function setTooltipPosition (tooltip, trigger, placement, auto, appendTo, positionBy, viewport) {
223223
if (!isElement(tooltip) || !isElement(trigger)) {
224224
return
225225
}
226226
const isPopover = tooltip && tooltip.className && tooltip.className.indexOf('popover') >= 0
227227
let containerScrollTop
228228
let containerScrollLeft
229-
if (!isExist(appendTo) || appendTo === 'body') {
229+
if (!isExist(appendTo) || appendTo === 'body' || positionBy === 'body') {
230230
const doc = document.documentElement
231231
containerScrollLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0)
232232
containerScrollTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)
233233
} else {
234-
const container = getElementBySelectorOrRef(appendTo)
234+
const container = getElementBySelectorOrRef(positionBy || appendTo)
235235
containerScrollLeft = container.scrollLeft
236236
containerScrollTop = container.scrollTop
237237
}

0 commit comments

Comments
 (0)