https://github.com/shoelace-style/webawesome
`<wa-page>` コンポーネントが Web Awesome Pro(有償)からコア(無償)へ移行されました。スロットベースの多層レイアウト、CSS カスタムプロパティによるカラム幅制御、モバイル向けドロワーナビゲーションへの切り替えを備えた実装がコアパッケージに追加され、充実したドキュメントとともにすべてのユーザーが利用できるようになります。
Web Awesomeの複数コンポーネントで発生していたLit開発モードの「change-in-update」警告を修正。`wa-card` や `wa-slider` では `updated()` から `willUpdate()` へのリファクタリングで根本解消し、フォームバリデーションやSlotController起因など構造的に不可避な警告は `disableWarning('change-in-update')` で明示的に抑制した。各コンポーネントに詳細なコメントを付記し、警告が不可避である理由をドキュメント化している。
`wa-tree-item` と `wa-details` コンポーネントで、展開・折り畳みアニメーション中に連続クリックすると視覚状態と実際の表示が乖離するバグを修正。アニメーションジェネレーション番号を導入し、古いアニメーション完了後の後処理を無効化することで最終状態の整合性を保証します。
`<wa-select>` および `<wa-combobox>` で、オプションがDOMに追加される前にプロパティ経由で値を設定した際に初期値がUIに表示されないバグを修正しました。`value` セッターの変更検知ロジックを、`optionValues` フィルタリングに依存するゲッター比較から、rawな内部値の直接比較に変更することで問題を解消しています。
WebAwesomeのFreeテーマ(AwesomeとShoelace)に対してCSSセレクタの統合・モダン構文への移行と複数バグの修正が行われました。`<wa-radio>` の表示ずれや `<wa-card>` の `appearance` 無効問題などが解消され、Font AwesomeおよびShoelaceとの視覚的一致も改善されています。
`<wa-spinner>` で `--track-width` カスタムプロパティを指定しても線幅に反映されなかった不具合を修正。SVGの幾何学的属性(`cx`・`cy`・`r`・`stroke-width`)をHTMLテンプレートからCSSへ移管し、`--size` や `--track-width` を基準とした動的計算に切り替えることで、カスタムプロパティの変更が描画に確実に反映されるよう再設計されました。
`<wa-textarea>` に `with-count` 属性が追加され、テキストエリア下部に入力済み文字数または残り文字数を表示できるようになりました。スクリーンリーダー向けのデバウンス付きライブリージョン、25言語以上の複数形翻訳、ヒントとの共存レイアウトを含むアクセシビリティファーストな実装です。
Firefoxのダークモードでフォームコントロールへフォーカスした際、フォーカスリングが白く点滅するバグを修正しました。`outline` ショートハンド全体のトランジションをやめ、常時 `transparent` なアウトラインを初期値として設定したうえで `outline-color` のみをアニメーションさせることで、Firefoxがシステムスタイルを補間の起点として使用する問題を根本から解消しています。`input`・`number-input`・`select`・`textarea` の全フォームコントロールと `native.css` に同一のパターンが適用されました。
Lit SSR環境でブラウザ専用APIへのアクセスによりクラッシュしていた複数コンポーネントに対し、`isServer` ガードと `hasUpdated` ternaryパターンを体系的に適用。`wa-scroller` の `ResizeObserver` 初期化エラーや `HasSlotController` によるハイドレーションミスマッチを修正し、SSR対応パターンをコントリビューティングガイドに明文化した。
Web Awesome 3.4 で導入されたバグにより、`<wa-select>` などのコンポーネントで `change`/`input` イベントが誤ったタイミングで発火し、ハンドラ内で `event.target.value` を読み取ると古い値が返される問題を修正しました。`<wa-option>` の `selected` 変更時の不要な `handleDefaultSlotChange()` 呼び出しと、`<wa-select>` の `optionValues` キャッシュにおける `null` 値の特殊処理を除去することで解消しています。
Web Awesome のオートローダーに `data-wa-preload` 属性のサポートが追加されました。HTML マークアップにタグ名を列挙するだけで、ページ初回描画時点で DOM に存在しないコンポーネントを事前登録でき、動的に追加される要素の FOUCE を防止できます。変更は `autoloader.ts` の `discover` 関数への最小限の追記のみで、既存のユニーク化・登録処理を共有する設計です。
`setIconPath()` / `getIconPath()` の追加により、Web Awesomeのデフォルトアイコンライブラリの参照先をFont Awesome CDNからセルフホスト環境へ切り替えられるようになりました。また、family/variantからフォルダ名を解決する `getIconFolder()` もパブリックAPIとして公開され、カスタムリゾルバーでの再利用が可能になっています。
`<wa-drawer>` の `pointerdown` イベントリスナーの登録先を `document.body` から `document` に変更し、Web Awesome を `<head>` 内で読み込んだ際に発生するエラーを修正しました。`document.body` は `<head>` 内スクリプト実行時点では存在しないため `null` 参照エラーが起きていましたが、`document` への変更により解消しています。
`<wa-color-picker>`に`placement`属性が追加され、カラーピッカーのポップアップ表示位置を明示的に指定できるようになりました。画面右端などで発生していたポップアップが画面外にはみ出すバグ(#2099)を、ハードコードされた`"bottom-start"`を属性化するという最小限の変更で解消しています。デフォルト値は`'bottom-start'`のため、既存の動作への影響はありません。
`<wa-dropdown>` の見出しスタイルで `color` プロパティに付与されていた `!important` を削除しました。Shadow DOM 内の `::slotted()` セレクターが `!important` でスタイルを適用していたため、ライトDOMからの色の上書きが不可能になっていた問題(#2102)を1行の変更で解消しています。
`wa-dropdown-item` が `disabled` 状態でもプログラム的な `.click()` 呼び出しによってクリックイベントが発火してしまうバグが修正されました。Shadow DOM 内部のハンドラだけでは防げないプログラム的クリックに対応するため、ホスト要素に `handleHostClick` を追加し、`stopImmediatePropagation` で確実に遮断するようになりました。
`<wa-select>` で空文字列(`""`)をバリューに持つオプションを選択した際、ラベルと表示テキストが重なるバグが修正されました。`:state(blank)` カスタムステートの判定を `value` 単体から `value && displayLabel` の複合条件に拡張し、クリアアイコンの表示条件も同様に修正されています。フォームの送信値と表示テキストを独立した状態として扱うことで、空文字列バリューを使う実装パターンが正しく動作するようになります。
`wa-option`のdisabledプロパティをJavaScriptから設定しても見た目が変わらないバグを修正しました。DOM属性セレクタ`:host([disabled])`への依存をやめ、CSS Custom State(`:state(disabled)`)を導入することで、属性・プロパティのどちらから設定しても視覚的な無効化が正しく機能するようになっています。
ネイティブスタイルユーティリティの `<select>` 要素に存在した2つのバグが修正されました。`padding-inline-end` の追加とキャレットアイコンサイズを考慮した `calc()` 計算により選択テキストとアイコンの重複が解消され、`&[multiple]` セレクタで `height: auto` と `background-image: none` を適用することで複数選択リストが正しく展開されるようになっています。
`<wa-rating>` が Form Associated Custom Element に対応し、`<form>` タグとのネイティブなフォーム送信・バリデーションが利用できるようになりました。継承元を `WebAwesomeFormAssociatedElement` に変更し、`required` バリデーションのサポートと、ARIA属性のホスト要素への移動によるアクセシビリティ改善も合わせて実施されています。