diff --git a/CHANGELOG.md b/CHANGELOG.md index 89f070909..677fb5698 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,14 @@ 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) ### Improvements diff --git a/packages/client/src/components/ui/modal.vue b/packages/client/src/components/ui/modal.vue index b42c0e4d4..c83453924 100644 --- a/packages/client/src/components/ui/modal.vue +++ b/packages/client/src/components/ui/modal.vue @@ -102,7 +102,6 @@ const align = () => { if (type.value === 'drawer') return; const popover = content.value!; - if (popover == null) return; const rect = props.src.getBoundingClientRect(); @@ -131,20 +130,23 @@ const align = () => { left = window.innerWidth - width; } + const underSpace = (window.innerHeight - MARGIN) - top; + const upperSpace = (rect.top - MARGIN); + // 画面から縦にはみ出る場合 if (top + height > (window.innerHeight - MARGIN)) { if (props.noOverlap) { - const underSpace = (window.innerHeight - MARGIN) - top; - const upperSpace = (rect.top - MARGIN); if (underSpace >= (upperSpace / 3)) { - maxHeight.value = underSpace; + maxHeight.value = underSpace; } else { - maxHeight.value = upperSpace; + maxHeight.value = upperSpace; top = (upperSpace + MARGIN) - height; } } else { top = (window.innerHeight - MARGIN) - height; } + } else { + maxHeight.value = underSpace; } } else { // 画面から横にはみ出る場合 @@ -152,20 +154,23 @@ const align = () => { 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 (props.noOverlap) { - const underSpace = (window.innerHeight - MARGIN) - (top - window.pageYOffset); - const upperSpace = (rect.top - MARGIN); if (underSpace >= (upperSpace / 3)) { - maxHeight.value = underSpace; + maxHeight.value = underSpace; } else { - maxHeight.value = upperSpace; + maxHeight.value = upperSpace; top = window.pageYOffset + ((upperSpace + MARGIN) - height); } } else { top = (window.innerHeight - MARGIN) - height + window.pageYOffset - 1; } + } else { + maxHeight.value = underSpace; } }