logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://hacktivis.me/git/pleroma-fe.git
commit: fd831a27f4e9c6bcd5c40f3449d63546fba2560d
parent c83657a072dc0d6e77a9c866147094099fb5dc24
Author: Henry Jameson <me@hjkos.com>
Date:   Fri, 20 May 2022 00:56:23 +0300

experimental disjointed popups

Diffstat:

Msrc/App.vue1+
Msrc/components/popover/popover.js10+++++++++-
Msrc/components/popover/popover.vue28+++++++++++++++-------------
Msrc/components/react_button/react_button.vue1+
4 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/src/App.vue b/src/App.vue @@ -54,6 +54,7 @@ <PostStatusModal /> <SettingsModal /> <div id="modal" /> + <div id="popovers" /> <GlobalNoticeList /> </div> </template> diff --git a/src/components/popover/popover.js b/src/components/popover/popover.js @@ -43,6 +43,7 @@ const Popover = { methods: { containerBoundingClientRect () { const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent + console.log(container) return container.getBoundingClientRect() }, updateStyles () { @@ -125,10 +126,17 @@ const Popover = { // Note, separate translateX and translateY avoids blurry text on chromium, // single translate or translate3d resulted in blurry text. + console.log(translateX + screenBox.x + screenBox.width) + console.log(Math.round(parentBounds.width)) this.styles = { opacity: 1, - transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)` + // transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)` + left: `${Math.round(translateX + screenBox.x + screenBox.width / 2)}px`, + top: `${Math.round(translateY + screenBox.y + screenBox.height / 2)}px`, + maxWidth: `${Math.round(parentBounds.width)}px`, + position: 'fixed' } + console.log(this.styles) }, showPopover () { const wasHidden = this.hidden diff --git a/src/components/popover/popover.vue b/src/components/popover/popover.vue @@ -11,19 +11,21 @@ > <slot name="trigger" /> </button> - <div - v-if="!hidden" - ref="content" - :style="styles" - class="popover" - :class="popoverClass || 'popover-default'" - > - <slot - name="content" - class="popover-inner" - :close="hidePopover" - /> - </div> + <teleport to="#popovers"> + <div + v-if="!hidden" + ref="content" + :style="styles" + class="popover" + :class="popoverClass || 'popover-default'" + > + <slot + name="content" + class="popover-inner" + :close="hidePopover" + /> + </div> + </teleport> </div> </template> diff --git a/src/components/react_button/react_button.vue b/src/components/react_button/react_button.vue @@ -6,6 +6,7 @@ :offset="{ y: 5 }" :bound-to="{ x: 'container' }" remove-padding + popover-class="ReactButton popover-default" @show="focusInput" > <template v-slot:content="{close}">