Drawer コンポーネントの lightDismiss デフォルトを false に修正

shoelace-style/webawesome

Web Awesome のブール属性規約に従い、<wa-drawer>lightDismiss の既定値を true から false に変更しました。これにより属性の有無だけで外部クリック時の閉鎖動作を宣言的に制御できるようになります。

背景

lightDismiss がデフォルトで true であったことは、Web Awesome の貢献ガイドラインで定められた "ブール属性はデフォルトで false にすべき" という原則に反していました。ブール属性は属性が存在すれば true、省略すれば false と解釈されるため、デフォルトが true だと属性を除去して無効化できませんでした。\
この不一致は Issue #2433 で指摘され、<wa-dialog> と同様に false が正しい既定値であることが確認されました。\
結果として、デフォルトが true のままでは API の予測可能性が低下し、利用者が意図しない自動閉鎖を経験していました。

技術的な変更

変更の核心は WaDrawer クラスの lightDismiss プロパティ定義を true から false に置き換えることです。このシンプルな差分により、属性のデフォルト挙動が HTML のブール属性規約と一致します。\
コード側のロジックは if (this.lightDismiss) { … } で判定しているため、デフォルトが false になるだけで既存ロジックへの副作用はありません。

@@
-  @property({ attribute: 'light-dismiss', type: Boolean }) lightDismiss = true;
+  @property({ attribute: 'light-dismiss', type: Boolean }) lightDismiss = false;

テストも同様に期待値を true から false に更新しましたdrawer.test.ts のデフォルト確認テストが新しい既定値を正しく検証するよう改修されています。

@@
-        it('should default lightDismiss to true', async () => {
+        it('should default lightDismiss to false', async () => {
           const el = await fixture<WaDrawer>(html`<wa-drawer>Content</wa-drawer>`);
-          expect(el.lightDismiss).to.be.true;
+          expect(el.lightDismiss).to.be.false;
         });

内部処理は変更されていないため、既存の lightDismiss 判定ロジックはそのまま動作しますthis.lightDismisstrue の場合にのみ背景クリックで閉じる処理が走る設計は保持され、デフォルトが false になるだけで機能的な差分はありません。

設計判断

ブール属性のデフォルトを常に false とする方針を全コンポーネントに統一するという設計判断が示されています。属性が省略可能になることで、マークアップだけでコンポーネントの振る舞いを明示的に制御でき、API の一貫性が向上します。\
代替案として新規属性キー(例: light-dismiss-enabled)を導入する議論もありましたが、既存の light-dismiss キーを修正することで後方互換性とコードベースのシンプルさを保ちました。

この変更は <wa-dialog> で既に採用されているデフォルト false と整合性を取ることに焦点を当てています。同一属性名で挙動が統一されることで、開発者はコンポーネント間で同じ思考モデルを適用できます。\
結果として、属性の有無だけで有効/無効を切り替える標準的な HTML パターンが全体に浸透します。

まとめ

<wa-drawer>lightDismiss デフォルトを false に修正したことで、Web Awesome のブール属性規約と <wa-dialog> との整合性が取れ、属性の有無だけで外部クリック時の閉鎖動作を宣言的に制御できるようになりました。変更はプロパティ定義とテストの差分のみで、既存ロジックへの影響は最小限に抑えられています。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
168e1a5e

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

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文・背景・技術的な変更・設計判断・まとめの5要素が揃っており、総論→各論→結論の流れが明確です。

カスタムMarkdown構文 ⚠ WARNING

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

コードブロックは正しい `言語:ファイルパス` 形式ですが、PRリンクが `[PR #2437](URL)` となっており、仕様の `[#123](URL)` 形式と異なります。

対象読者への適合性 ✓ PASS

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

エンジニア向けの具体的な実装変更に焦点を当てており、過度な初心者向け解説はありません。

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

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

各セクションは総論・各論・結論の段落構成で、トピックセンテンスが先頭にあり、1段落1トピック・適切な長さが保たれています。

Diff内容との照合 ✓ PASS

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

記事中のコードブロックは提供されたDiffと完全に一致しており、変更内容・行番号も正確です。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`lightDismiss`、Boolean属性、`@property` などの用語がPRと一致し、誤用はありません。

説明の技術的正確性 ✓ PASS

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

技術的説明はPRの要旨と合致し、因果関係も正しく記述されています。

事実の突合 ✓ PASS

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

背景・動機・影響など全てがPRの記述やIssue番号に裏付けられており、捏造や推測はありません。

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

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

PR番号 #2437、Issue番号 #2433 など数値・固有名詞は正確です。

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

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

記事タイトルはPRタイトル「Make drawer lightDismiss default false」の日本語訳として適切です。

外部知識の正確性 ✓ PASS

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

LTSやリリース日程等の外部情報は一切記載されていません。

時間表現の正確性 ✓ PASS

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

時間表現のずれはありません。