Tab コンポーネント
Tab は、同じ業務オブジェクトやワークフローに属する並列コンテンツを整理します。ユーザーはページを離れずに表示領域を切り替えられます。情報の保守、段階的な設定、詳細のグループ化、編集と確認を行うワークスペースに適しています。
このガイドでは、複数の Tab の追加、Line/Card/Editable Card の外観、上下左右の位置、中央寄せ、無効化、初回レンダリングの遅延、Form やフィールドの配置、各 Tab と外側コンテナの onClick を説明します。
Tab は同じオブジェクト内の並列ビューに使用します。独立した URL、権限、メニュー選択状態が必要な別モジュールにはページメニューを使用し、多数の Tab でアプリケーションナビゲーションを代用しないでください。
1. 例:キャンペーン公開ワークスペース
Spark Sample の Tab ページは次の構成です。
| Tab | 内容 | 主なポイント |
|---|---|---|
| Overview | 名前、担当者、公開日、予算、概要 | 通常のフォームと下書き保存 |
| Delivery settings | チャネル、対象、承認、言語、配信メモ | Select、Switch、設定検証 |
| Review & publish | 読み取り専用の要約と公開ボタン | 遅延レンダリング、Tab 間の状態、操作 |
| Audit log (coming soon) | 未公開 | 無効な Tab |
この例はバックエンドの Sample API に依存しません。値は現在のページ状態に保持されます。業務データを読み込む場合は、Tab 内に Data Form、DataList、ProTable などを追加します。
2. Tab コンテナを追加する
- 対象ページを Page Designer で開きます。
- 左側の Containers を展開します。
- Tab を Screen またはコンテナを配置できる領域へドラッグします。
- Tab を選択し、Tabs 子要素領域で Tab を追加します。
- 各子 Tab を選択して Tab Label を入力します。
- 対応する領域へ Form、フィールド、ボタンなどを配置します。
Tab
├── Overview
│ └── Form
├── Delivery settings
│ └── Form
├── Review & publish
│ └── Form
└── Audit log (coming soon)
3. Tab コンテナを設定する
| プロパティ | 値 | 説明 |
|---|---|---|
| Tab Style | line、card、editable-card | Line は下線、Card はカード形式、Editable Card は編集可能カードの外観のみを使用します |
| Tab Position | top、right、bottom、left | ラベルをコンテンツのどの方向に置くかを指定します |
| Center Tabs | オン/オフ | 上下配置ではラベルを中央寄せし、左右配置では縦並びを維持します |
editable-card でも、実行時のユーザーはページ構造を追加・削除できません。Tab の数と順序は Page Designer で管理します。
スタイルや位置を選ぶとデザインキャンバスにすぐ反映されます。保存すると、実行時にも保存済み設定が表示されます。
4. 各 Tab を設定する
| プロパティ | 説明 |
|---|---|
| Tab Label | Tab に表示する短く明確な名前 |
| Always Render | オンなら初回ロード時、オフなら最初に開いた時に内容をレンダリングします |
| Disabled | 選択を禁止します。準備中または条件未達の内容に適しています |
4.1 Always Render
- フィールドが少ない、または状態をすぐ共有する場合はオンにします。
- グラフ、リモートリスト、重いコンポーネントが多い場合はオフにします。
- オフでも遅れるのは初回だけで、一度開いた後の通常の切り替えで入力値は自動消去されません。
4.2 Disabled
無効な Tab はラベルを表示しますが、内容を切り替えず onClick も実行しません。常にアクセス不可なら構造を削除または非表示にし、Disabled は一時的な利用不可に使います。
5. Tab 内のコンテンツを整理する
- 各 Tab に明確なテーマを一つだけ持たせます。
- フォームでは先に Form を追加し、その中へフィールドを置いて列数、ラベル比率、レイアウト、検証を統一します。
- 主要アクションは最後の確認 Tab または固定領域に置きます。
- 重いデータリストでは Always Render をオフにします。
- 5~7 個を超える場合は構成を見直し、低頻度の内容をグループ、Drawer、別ページへ移します。
例の Overview と Delivery settings は編集可能な Form、Review & publish は同名フィールドの読み取り専用 Form です。前の Tab で値を変更すると、確認 Tab に最新値が表示されます。
6. インタラクションを設定する
Tab は子 Tab と外側 Tab コンテナの二段階の onClick に対応します。
- キャンバスまたは子要素一覧で対象 Tab を選択します。
- 右側の Interaction を開きます。
onClickに Toast、ページコンテキスト更新、API 呼び出しなどを追加します。- 保存し、実行時に確認します。
有効な Tab を選択すると、子 Tab の onClick、外側コンテナの onClick の順に実行されます。Disabled の Tab は実行しません。例では Review & publish と公開ボタンにそれぞれメッセージを設定しています。
7. サンプルを再現する
- Tab を追加し、
line、top、中央寄せオフにします。 - Overview、Delivery settings、Review & publish、Audit log (coming soon) を追加します。
- 最初の三つに 2 列 Horizontal の Form を追加します。
- Overview に Input、DatePicker、TextArea、Save draft を追加します。
- Delivery settings に Dropdown Select、Switch、Input、TextArea、Validate settings を追加します。
- Review & publish に読み取り専用フィールドと Publish campaign を追加し、Always Render をオフにします。
- Audit log を Disabled にし、Always Render をオフにします。
- Review & publish の
onClickに Info Toast を追加します。 - 三つのボタンにも Toast を追加します。例:
Campaign [[campaignName]] is ready for [[campaignChannel]].
8. トラブルシューティング
8.1 スタイルや位置が実行時に変わらない
ページが保存済みで、実行 URL が現在の設計バージョンの versionId を使用しているか確認します。キャンバスは即時プレビューしますが、実行時は保存済み Page JSON を読み取ります。
8.2 Tab をクリックしても動作しない
- Interaction が内部 Form ではなく実際の子 Tab に設定されているか。
- イベントが
onClickか。 - Tab が Disabled でないか。
- ページが保存済みで、実行時に現在のバージョンを使用しているか。
8.3 切り替えるとフィールド値が消える
各フィールドに安定した一意の Name が必要です。同じ値を共有する編集領域と読み取り専用領域では同じ Name を使用します。異なる Name は独立したページ状態です。
8.4 初回表示が遅い
リモートリスト、グラフ、多数のフィールドを含む初期表示以外の Tab では Always Render をオフにします。
9. 設計上の推奨事項
- Overview、Configuration、History のような名詞または短い動作句を使います。
- 同じグループでは情報階層をそろえ、Details、System settings、Sign out を同列に置かないでください。
- 重要なエラー、未保存状態、公開結果を色だけで示さず、読める文言も表示します。
- モバイルでは Tab 数を減らします。左右配置はデスクトップの部分的なワークスペースに適しています。
- 独立 URL、ブラウザ履歴、メニュー権限が必要なら別ページとメニューを使います。