Skip to content

fix(runtime): 狭い viewport で footnote tooltip がはみ出る問題を修正#39

Merged
r74tech merged 1 commit into
developfrom
fix/footnote-tooltip-mobile-overflow
Jun 4, 2026
Merged

fix(runtime): 狭い viewport で footnote tooltip がはみ出る問題を修正#39
r74tech merged 1 commit into
developfrom
fix/footnote-tooltip-mobile-overflow

Conversation

@r74tech

@r74tech r74tech commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • スマートフォン等の狭い viewport で長文 footnote の tooltip を開くと、tooltip がコンテナ幅を超えて右側にはみ出し、画面端を突き抜けることがあった問題を修正。
  • tooltip の maxWidth を viewport - margin*2 で制約し、left を viewport 左端 - margin で下限 clamp。

Changes

  • packages/runtime/src/utils/tooltip.ts (および footnote.ts 経由):
    • tooltip の幅を tip.style.maxWidth = ${Math.max(0, win.innerWidth - margin*2)}px で制限。
    • 左端の clamp: if (left < win.scrollX + margin) left = win.scrollX + margin
  • happy-dom ベースの DOM テスト追加 (stubRectsetViewportWidthglobalThis.Node セットアップ)。

Test plan

  • 狭 viewport (例 320px) で長文 footnote tooltip を開いてもはみ出さないことを runtime ユニットテストで確認。
  • 通常幅の viewport では従来通りの位置・幅で表示されることを確認。
  • lint / format / typecheck 通過。
  • 全体テスト通過。

モバイル等の狭い viewport で長い footnote の tooltip を開くと、tooltip 幅が
viewport 幅を超えた際に右端clamp `left = innerWidth - tipWidth - margin` が
負値になり、tooltip が画面端からはみ出していた。max-width 制約も無かった。

修正 (positionTooltip / showTooltipEl の両方):
- 測定前に tip.style.maxWidth = innerWidth - 2*margin を設定し、tooltip 幅を
  viewport 内に収める
- 右端clamp の後に left の下限を margin にクランプし、over-wide な tooltip でも
  左端からはみ出さないようにする

test: packages/runtime/tests/footnote.test.ts を新規追加。happy-dom で
getBoundingClientRect / innerWidth を stub し、max-width 設定と左端clamp の
両方を検証 (左端clamp 無しでは left=-6 になり失敗する回帰テスト)。
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
wdpr-demo-v1 d7ee35e Commit Preview URL

Branch Preview URL
Jun 03 2026, 03:45 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
wdpr-demo-v1-files d7ee35e Commit Preview URL

Branch Preview URL
Jun 03 2026, 03:44 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
decompiler-preview d7ee35e Commit Preview URL

Branch Preview URL
Jun 03 2026, 03:44 AM

@r74tech
r74tech merged commit 763216e into develop Jun 4, 2026
9 checks passed
@r74tech
r74tech deleted the fix/footnote-tooltip-mobile-overflow branch June 4, 2026 10:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant