diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2022-02-13 16:35:53 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2022-02-13 16:35:53 +0900 |
| commit | 9d7352a9e43e1326b1dd7f4068ffa366c818b2be (patch) | |
| tree | 05e727ecb59eee067bb8d1c5ef63120c378f5915 /packages/client/src/components | |
| parent | refactor: fix types (diff) | |
| download | sharkey-9d7352a9e43e1326b1dd7f4068ffa366c818b2be.tar.gz sharkey-9d7352a9e43e1326b1dd7f4068ffa366c818b2be.tar.bz2 sharkey-9d7352a9e43e1326b1dd7f4068ffa366c818b2be.zip | |
fix(client): リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正
Fix #8071
Diffstat (limited to 'packages/client/src/components')
| -rw-r--r-- | packages/client/src/components/ui/modal.vue | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/packages/client/src/components/ui/modal.vue b/packages/client/src/components/ui/modal.vue index b42c0e4d42..c83453924e 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; } } |