bricks/docs/ja/form.md
2025-11-19 12:30:39 +08:00

114 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# InlineForm
**コントロール機能**:行内に送信可能なフォームを埋め込むためのもので、フィールド入力、検証、ツールバー操作(送信、リセット、キャンセル)をサポートしています。軽量なフォームを埋め込みたいシーンに適しています。
**タイプ**:通常コントロール
**親クラスコントロール**`bricks.FormBase`
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|--------|------|------|
| `fields` | 配列 | フォームフィールド設定配列。各フィールドオブジェクトには name、label、uitype などの情報が含まれます。 |
| `height` | 文字列 | 任意。デフォルトは `"100%"`。コントロールの高さを設定します。 |
| `width` | 文字列 | 任意。デフォルトは `"100%"`。コントロールの幅を設定します。 |
| `overflow` | 文字列 | 任意。デフォルトは `"auto"`。コンテンツがオーバーフローした際の表示方法を制御します。 |
> 注意:すべてのオプションはコンストラクタに `opts` 経由で渡されます。
## 主要イベント
| イベント名 | 発火条件 | コールバック引数 |
|--------|----------|---------|
| `submit(data)` | ユーザーが「送信」ボタンをクリックし、データが検証を通過した後に発火します。 | `data`: FormData オブジェクトまたは通常のオブジェクト。フォームデータを含みます。 |
| `submited(resp)` | 送信リクエスト完了後(成功・失敗問わず)に発火します。 | `resp`: レスポンスオブジェクト。`await resp.json()` で戻り値を取得できます。 |
| `cancel` | ユーザーが「キャンセル」ボタンをクリックしたときに発火します。 | 引数なし。 |
| `reset` | ユーザーが「リセット」ボタンをクリックしたときに発火します。 | 引数なし。 |
| カスタムコマンドイベント | ツールバーにカスタムボタンが追加され、`action` または名前が設定されている場合にクリック時に発火します。 | `event.params` にボタン情報が含まれます。 |
---
# Form
**コントロール機能**:完全なフォームコンテナーコントロールで、タイトル、説明文、複数フィールドのレイアウト、テキスト/非テキストフィールドの分離、ツールバーの自動生成、送信URLおよびメソッドの設定が可能です。独立したページやポップアップ内のフル機能フォームに適しています。
**タイプ**:コンテナーコントロール
**親クラスコントロール**`bricks.FormBase`
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|--------|------|------|
| `title` | 文字列 | 任意。フォームのタイトル。大きな文字で表示されます。 |
| `description` | 文字列 | 任意。フォームの説明文。タイトルの下に表示されます。 |
| `fields` | 配列 | 必須。フィールド設定リスト。構造は InlineForm と同じです。 |
| `submit_url` | 文字列 | 任意。フォーム送信先の URL。設定すると自動的に HTTP リクエストが送信されます。 |
| `method` | 文字列 | 任意。HTTP メソッド。デフォルトは `'POST'`。 |
| `notoolbar` | 真偽値 | 任意。デフォルトは `false`。デフォルトのツールバー(送信/リセット/キャンセル)を非表示にするかどうか。 |
| `toolbar` | オブジェクト | 任意。デフォルトツールバーの拡張または置き換え設定。構造は `{ tools: [...] }`。 |
| `input_layout` | 文字列 | 任意。入力フィールドのレイアウト方式。`"VBox"`(垂直)または `"HBox"`(水平)をサポート。デフォルトは `"VBox"`。 |
| `dataurl` | 文字列 | (予約)初期データ読み込み用のインターフェースアドレス(現時点では直接使用されていません)。 |
## 主要イベント
| イベント名 | 発火条件 | コールバック引数 |
|--------|----------|---------|
| `submit(data)` | フォーム送信前に検証通過後に発火。データの中断や前処理に利用可能。 | `data`: 送信されるデータオブジェクトまたは FormData。 |
| `submited(resp)` | `submit_url` へのリクエスト送信完了後に発火。 | `resp`: Response オブジェクト。レスポンス結果の処理に利用可能。 |
| `cancel` | ユーザーが「キャンセル」ボタンをクリックしたときに発火。 | 引数なし。 |
| `reset` | ユーザーが「リセット」ボタンをクリックしたときに発火。 | 引数なし。 |
| カスタムイベント | ツールバー内のカスタムボタンがクリックされ、`action` またはイベント名が定義されている場合に発火。 | `event.params` にボタンのメタデータが含まれます。 |
---
# FormBody
**コントロール機能**`Form` 内部で使用される本体コンテンツ領域。すべての非テキストフィールド(`FieldGroup` 経由)とテキストフィールド(読み取り専用表示)をレンダリングし、実際の入力エリアを保持するコンテナです。
**タイプ**:コンテナーコントロール
**親クラスコントロール**`bricks.VScrollPanel`
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|--------|------|------|
| `form` | オブジェクト | 所属するフォームインスタンス。フィールド定義や name_inputs などの状態にアクセスするために使用。 |
| `opts` | オブジェクト | 設定項目。自動的に `width: '100%'``height: '100%'` が設定されます。 |
> 注:このコントロールは通常、開発者が直接作成するものではなく、`Form` の構築過程で内部的にインスタンス化されます。
## 主要イベント
このコントロール自体は外部へイベントを発行しませんが、コンテナーとして `VScrollPanel` のスクロール関連機能を継承しており、主に視覚的な表示に使用されます。
- 業務イベントを主動的に発火させません。
- 子コントロール(例:入力フィールド)の変更は上位の `Form` の状態に影響を与えます。
---
# FieldGroup
**コントロール機能**:補助クラス。フォーム内のフィールドグループ(入れ子の group 構造も可を再帰的に構築するためのもので、フィールドをレイアウトルールに従って動的列DynamicColumnや入力コンテナVBox/HBoxに組織化します。
**タイプ**:通常コントロール(ロジックコンポーネント)
**親クラスコントロール**:なし(基本クラス)
## 初期化パラメータ
| パラメータ名 | 型 | 説明 |
|--------|------|------|
| `opts` | オブジェクト | 現在は実際には使用されていません。将来の拡張性のために保持されています。 |
> 注:このクラスは UI コントロールではなく、DOM を直接レンダリングしません。構築ロジックモジュールとしてのみ存在します。
## 主要イベント
このクラスにはイベント機構はなく、同期メソッド呼び出しにのみサービスを提供します:
- `build_fields(form, parent, fields)`核心メソッド。再帰的にフィールドUIを生成し、指定された親コンテナにマウントします。
---
> ✅ **説明まとめ**
>
> - `InlineForm` と `Form` はユーザーが直接使用できるフォームコントロールです。
> - `FormBody` と `FieldGroup` は内部実装コンポーネントであり、通常は個別にドキュメント化して使用する必要はありません。
> - すべてのフォームコントロールは、統一されたデータ収集、検証、送信プロセスを共有しています。
> - ファイル型フィールドfile/audio/videoは、`FormData` を使用することで自動認識されます。
> - ツールバーは高度なカスタマイズ拡張をサポートしています。