# IconBar
**コントロール機能**:複数のクリック可能なSVGアイコンボタンを含むアイコンツールバーを作成。選択状態のサポートおよびイベント発行に対応。
**タイプ**:コンテナーコントロール
**親クラスコントロール**:`bricks.HBox`
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts.cheight` | Number | 子コントロールの高さ(文字単位)。デフォルト値は `2` |
| `opts.rate` | Number | 拡大縮小率。アイコンサイズに影響を与える。デフォルト値は `1` |
| `opts.margin` | String | アイコン間の左右マージン。CSS形式(例:`'10px'`) |
| `opts.tools` | Array | ツール項目の配列。各ツール項目は以下のフィールドを持つオブジェクト:
- `name`: ツール名(識別およびイベント用)
- `icon`: SVGアイコンのURL
- `rate`: 当該アイコンの拡大縮小率(任意)
- `dynsize`: サイズを動的に調整するかどうか(真偽値)
- `tip`: ツールチップテキスト(任意) |
> `cheight` または `rate` が指定されていない場合、自動的にデフォルト値が設定されます。
## 主なイベント
| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name`(すなわち `tools[i].name`) | アイコンがクリックされたときに発火。イベント名はそのアイコンの `name` フィールド | 対応するアイコンの `desc` オブジェクトを渡す |
| `command` | 全てのアイコンクリックで発火する共通イベント | 現在のアイコンの `desc` オブジェクトを渡す |
> イベントは `dispatch` によって発行され、外部から特定のコマンドや汎用操作を監視するために使用可能。
---
# IconTextBar
**コントロール機能**:`IconBar` を拡張し、各ツール項目が「アイコン+テキスト」の組み合わせで表示される。ラベル付き説明が必要なツールバーに適している。
**タイプ**:コンテナーコントロール
**親クラスコントロール**:`bricks.IconBar`
## 初期化パラメータ
`IconBar` のすべてのパラメータを継承し、`tools` 配列内の各項目のサポートを強化:
| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts.tools[i].label` | String | アイコン横に表示されるテキストラベル |
| `opts.tools[i].tip` | String | マウスホバー時のツールチップテキスト。アイコンとテキストを含む全体のコンテナに適用される |
| その他のパラメータ(`IconBar` と同じ) | —— | `name`, `icon`, `rate`, `dynsize` などをサポート |
> 各ツール項目は水平レイアウト(`HBox`)として構築され、内部には順に `Svg` および `Text` コントロールが追加される。
## 主なイベント
`IconBar` と完全に一致:
| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 特定の項目がクリックされたときに発火。イベント名はその `name` フィールド | 対応する `desc` オブジェクト |
| `command` | 全てのクリックで発火する共通イベント | 現在の項目の `desc` オブジェクト |
> イベントは全体の `HBox` にバインドされており、アイコンまたはテキストのいずれかをクリックしても発火する。
---
# FloatIconBar
**コントロール機能**:フローティング式のアイコンツールバー。初期状態では「外側に飛び出すアイコン」のみ表示され、マウスカーソルを乗せると完全な `IconBar` が展開される。サイドバーのフロートツールバーなどに使用される。
**タイプ**:コンテナーコントロール
**親クラスコントロール**:`bricks.HBox`
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts` | Object | 内部の `IconBar` に渡される設定オブジェクト。構造は `IconBar` の `opts.tools` などと同じ |
| 内部で `bricks_resource('imgs/float-out.png')` を使用 | —— | 固定のフロート展開ボタンアイコン |
> 実際のツール項目は渡された `opts` により内部の `IconBar` が構築される。
## 主なイベント
内部の `IconBar` と一致:
| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 展開後に特定のアイコンがクリックされたとき発火 | 対応するアイコンの `desc` オブジェクト |
| `command` | 全てのアイコンクリックで発火 | 現在のアイコンの `desc` オブジェクト |
> イベントは内蔵された `IconBar` インスタンスから発行され、自動的に透過される。
さらに以下の動作イベントも存在:
- `mousemove`:フロートアイコン上で発火し、メニューを展開
- ページ上の任意の位置での `click`:メニューを折りたたむ(`bricks.Body` のリスニングにより実現)
---
# FloatIconTextBar
**コントロール機能**:フローティング式の「アイコン+テキスト」ツールバー。`FloatIconBar` の拡張版であり、展開後に文字ラベル付きのツール項目を表示する。
**タイプ**:コンテナーコントロール
**親クラスコントロール**:`bricks.FloatIconBar`
## 初期化パラメータ
`FloatIconBar` と同じ:
| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts` | Object | `tools` 配列およびその他の設定を含み、内部で `IconTextBar` を構築する際に使用 |
> 内部では `build_bar(opts)` を呼び出して `IconTextBar` インスタンスを作成するため、`label`、`tip` などのテキスト関連属性をサポート。
## 主なイベント
`IconTextBar` と一致:
| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 展開後に特定の項目がクリックされたとき発火 | 当該項目の `desc` オブジェクト |
| `command` | 全てのクリックで発火 | 現在の項目の `desc` オブジェクト |
> 全てのイベントは内部の `IconTextBar` インスタンスから発行され、自動的に上位へバブルアップする。