From 9d7352a9e43e1326b1dd7f4068ffa366c818b2be Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 13 Feb 2022 16:35:53 +0900 Subject: fix(client): リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #8071 --- packages/client/src/components/ui/modal.vue | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'packages/client/src/components') 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; } } -- cgit v1.2.3-freya