W3Cには他にもhogehogeみたいなコミュニティグループがある
コントロール: コントロールは、何らかの形でユーザーとのインタラクションを可能にするコンポーネントの一種。 コントロールには、定義された部分に対するエンドユーザーのインタラクションに基づいて、コンポーネントの状態やモデルの遷移を管理するコントローラコードがある。
複合コンポーネント: 多くの場合、他のコンポーネントを含むコンポーネントを作成する必要がある。たとえば、<file> コントロールは、通常、<input> コンポーネントと <button> コンポーネントを含むコンポーネント。このようなタイプのコンポーネントは、一般に複合コンポーネントと呼ばれる。
- `<select>`, `<input type="date">`, `<input type="color">`, JSで実装しているUIコンポーネンとなどなどたくさん
- 現状のWeb UIをリプレイスするのではなく、独自のデザインシステムを構築するための基盤となる方法を新たに提供しようという方針
様々な独自手法が編み出される
- アクセシビリティ, 国際化, プライバシー, セキュリティー, UX, デフォルトスタイル, デフォルトイベント, バリエーション
StagesはTC39のStagesと同様の概念
実際、厳密にstage自体の運用はされてないみたいだけど、Open UIの提案がどんな流れでshipまで進むのかの指標として
たくさんのコントロールやAPIが提案されていますが、ここでは実際にOpen UIの提案によって実現された/されなかったコントロールの例を見ていきます
It’s difficult to track relative positioning because a popover is outside of the document flow. But there are use cases where we want to “anchor” our popup to another element, especially when you think about tooltips, alerts, etc… So how can we do this? → The anchoring API
現状の`<select>`要素で柔軟なカスタマイズができない 独自の`<select>`を実装する必要がある ネイティブのフォームコントロールと比較してパフォーマンス、アクセシビリティなどの観点で劣る
=== 現状のSelectからの改良点: 1. カスタマイズ可能性 2. 任意のコンテンツを埋め込める 3. 選択オプション 4. カスタマイズ可能なボタン 5. カスタマイズ可能なオプション 6. カスタマイズ可能なデータリスト ===
listboxはスタイル可能な<select multiple>として提案されたもの
Select要素のmultiple属性やsize属性など様々な属性を考慮してselectlist要素を確定させねばならないが、現状動作が不明確:既存の<select>要素を拡張することで、HTMLの一貫性を保ったままにできる
大規模なHTMLパーサの変更が必要でshipに時間がかかりそう: <select>要素を再利用することで、既存のパーサーの動作を利用し、問題を回避できる
既存Select要素のスタイル変更が容易になって嬉しい:<select>要素に対してappearance:noneを使用することで、スタイルのカスタマイズが可能になる。さらに、appearance:baseのような新しい値を追加することで、開発者がより簡単にスタイルを適用できるようにする。また、スタイリングの柔軟性を持たせるために、<select>要素の内部に<button>や<datalist>を含めることができるようにする。
既存の要素を拡張することで、アクセシビリティや国際化の欠落問題も回避できる。具体的には、<select>要素のパーサーを変更し、新しい子要素(例:<button>や<datalist>)を許可することでアクセシビリティを確保しつつ、カスタマイズ可能なリストボックスを実現
<datalist> を再利用することで、select/selectlist プロジェクトのすべてのユースケースを確実に満たすことができますし、出荷もより簡単で速くなる
[<selectlist>の実装に関する様々なIssue](https://github.com/openui/open-ui/issues?q=is%3Aissue+is%3Aopen+label%3Aselect+selectlist)があり、WHATWGとの議論の末、**既存`<select>`の改良を採用**
^1: [Update selectlist explainer to stylable select #976](https://github.com/openui/open-ui/pull/976), [Customizable <select> element #9799](https://github.com/whatwg/html/issues/9799) ^2: [resolved - selectlist feedback from apple #970](https://github.com/openui/open-ui/issues/970#issuecomment-1846026582)
- `skeleton`role: そのコンテンツがplaceholderであり、別のコンテンツが表示が期待されることを表す
--- ### Open UIとAPG --- ### Opne UIとデザインシステム