fix(client): リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正

Fix #8071
This commit is contained in:
syuilo 2022-02-13 16:35:53 +09:00
parent 93cb26e879
commit 9d7352a9e4
2 changed files with 22 additions and 9 deletions

View File

@ -10,6 +10,14 @@
You should also include the user name that made the change. You should also include the user name that made the change.
--> -->
## 12.x.x (unreleased)
### Improvements
-
### Bugfixes
- Client: リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 @syuilo
## 12.107.0 (2022/02/12) ## 12.107.0 (2022/02/12)
### Improvements ### Improvements

View File

@ -102,7 +102,6 @@ const align = () => {
if (type.value === 'drawer') return; if (type.value === 'drawer') return;
const popover = content.value!; const popover = content.value!;
if (popover == null) return; if (popover == null) return;
const rect = props.src.getBoundingClientRect(); const rect = props.src.getBoundingClientRect();
@ -131,20 +130,23 @@ const align = () => {
left = window.innerWidth - width; left = window.innerWidth - width;
} }
const underSpace = (window.innerHeight - MARGIN) - top;
const upperSpace = (rect.top - MARGIN);
// //
if (top + height > (window.innerHeight - MARGIN)) { if (top + height > (window.innerHeight - MARGIN)) {
if (props.noOverlap) { if (props.noOverlap) {
const underSpace = (window.innerHeight - MARGIN) - top;
const upperSpace = (rect.top - MARGIN);
if (underSpace >= (upperSpace / 3)) { if (underSpace >= (upperSpace / 3)) {
maxHeight.value = underSpace; maxHeight.value = underSpace;
} else { } else {
maxHeight.value = upperSpace; maxHeight.value = upperSpace;
top = (upperSpace + MARGIN) - height; top = (upperSpace + MARGIN) - height;
} }
} else { } else {
top = (window.innerHeight - MARGIN) - height; top = (window.innerHeight - MARGIN) - height;
} }
} else {
maxHeight.value = underSpace;
} }
} else { } else {
// //
@ -152,20 +154,23 @@ const align = () => {
left = window.innerWidth - width + window.pageXOffset - 1; left = window.innerWidth - width + window.pageXOffset - 1;
} }
const underSpace = (window.innerHeight - MARGIN) - (top - window.pageYOffset);
const upperSpace = (rect.top - MARGIN);
// //
if (top + height - window.pageYOffset > (window.innerHeight - MARGIN)) { if (top + height - window.pageYOffset > (window.innerHeight - MARGIN)) {
if (props.noOverlap) { if (props.noOverlap) {
const underSpace = (window.innerHeight - MARGIN) - (top - window.pageYOffset);
const upperSpace = (rect.top - MARGIN);
if (underSpace >= (upperSpace / 3)) { if (underSpace >= (upperSpace / 3)) {
maxHeight.value = underSpace; maxHeight.value = underSpace;
} else { } else {
maxHeight.value = upperSpace; maxHeight.value = upperSpace;
top = window.pageYOffset + ((upperSpace + MARGIN) - height); top = window.pageYOffset + ((upperSpace + MARGIN) - height);
} }
} else { } else {
top = (window.innerHeight - MARGIN) - height + window.pageYOffset - 1; top = (window.innerHeight - MARGIN) - height + window.pageYOffset - 1;
} }
} else {
maxHeight.value = underSpace;
} }
} }