Select要素のフォーカス時に自動スクロールを抑制

shoelace-style/webawesome

WebAwesomeのSelect要素で、オプションにフォーカスを当てる際の自動スクロールを抑制する変更が行われました。この変更により、ドロップダウン開閉時に発生していた意図しないスクロール動作が解消されます。

背景

#2075で報告された、ドロップダウン開閉時の意図しないスクロール問題を解消するための変更です。近年のブラウザにおけるフォーカス動作の変更により、Select要素のドロップダウンを開閉する際にページが意図せずスクロールする現象が発生していました。

#2075では、スクロール制御は既存のライブラリによって管理されているため、フォーカス時の追加のスクロールを防ぐ必要があることが示されていました。

技術的な変更

packages/webawesome/src/components/select/select.tssetCurrentOption メソッドで、オプションにフォーカスを当てる際のパラメータが変更されました。

変更前:

option.focus();

変更後:

option.focus({ preventScroll: true });

preventScroll: true オプションを指定することで、フォーカス移動時のブラウザによる自動スクロールを無効化しています。この変更により、既存のスクロール管理機構が管理するスクロール動作のみが適用され、新しいブラウザのフォーカス動作との競合が解消されます。

変更箇所は1行のみであり、既存のフォーカス管理ロジック(currentOptionの設定、current属性の更新、tabIndexの設定)には影響を与えません。

設計判断

ブラウザの自動スクロールを無効化し、既存のスクロール管理機構に一任する方式が採用されました。

#2075で示されているように、スクロール制御は既存のライブラリによって管理されています。preventScrollオプションの追加により、ブラウザレベルの自動スクロールを抑制し、既存のスクロール管理機構による制御に統一されています。

この判断は、既存のスクロール管理機構を尊重しつつ、新しいブラウザのフォーカス動作との互換性を確保するための最小限の変更といえます。

まとめ

本PRは、近年のブラウザにおけるフォーカス動作の変更に対応し、Select要素のドロップダウン開閉時のスクロール制御を既存のライブラリに一元化する変更です。1行のパラメータ追加により、ブラウザと既存のスクロール管理機構間のスクロール制御の競合を解消し、安定したユーザー体験を実現しています。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
5回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文、背景、技術的な変更、設計判断、まとめが「総論→各論→結論」の構成で明確に記述されており、理想的な記事構成です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライトやGitHubのPRリンク記法が、ガイドラインに沿って正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

「フォーカス動作」「スクロール管理機構」といった用語を適切に使い、専門知識を持つエンジニアという対象読者に合わせたレベルで記述されています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各段落がトピックセンテンスで始まり、1段落1トピックが徹底されているため、非常に構造的で読みやすい文章になっています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

Diffで示されたコード変更(option.focus() -> option.focus({ preventScroll: true }))とファイルパスを正確に引用しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`preventScroll`オプションや`focus`メソッドといった技術用語が、文脈に沿って正確に使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

`preventScroll: true`がブラウザの自動スクロールを抑制するという説明は技術的に正確であり、変更の理由と効果が論理的に解説されています。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内の主張は、PRのDescription、Diff、および関連PRとして言及されている#2075に基づいており、根拠のない情報や推測はありません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#2097, #2075)やその他の固有名詞はすべて正確に記載されています。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトル「Select要素のフォーカス時に自動スクロールを抑制」は、PRの主題を的確かつ分かりやすく表現しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

「近年のブラウザにおけるフォーカス動作の変更」というPRにない背景情報が含まれますが、これは変更の文脈を補うための妥当な説明であり、問題ありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

記事内の時間表現はPR情報と矛盾しておらず、正確です。