=== Contact Form 7 Confirm Modal ===
Contributors: kiyotd
Tags: contact form 7, cf7, confirm, modal, form
Requires at least: 5.0
Tested up to: 6.7
Requires PHP: 7.4
Stable tag: 0.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Contact Form 7 のフォームに送信前の確認画面モーダルを追加する、サーバー通信ゼロの軽量プラグインです。

== Description ==

Contact Form 7 で作成したフォームに、送信前の確認画面モーダルを追加するWordPressプラグインです。送信前にユーザーへ入力内容を表形式で提示し、誤送信を防止します。送信処理自体はContact Form 7に委譲し、プラグイン本体はサーバーと通信しません。

= 主な機能 =

* **送信前の確認画面モーダル**: 入力内容を表形式で整然と表示。長文も縦スクロールで省略なし
* **data-label によるラベル制御**: 祖先要素に `data-label` を付けるだけで、モーダル上の文言を制御可能。`data-label-suffix` で末尾の装飾HTMLを分離
* **リアルタイムバリデーション**: 必須項目が埋まるまで送信ボタンを無効化。MutationObserver で動的な条件変化に追従。`acceptance` フィールド対応。`data-cf7-match` 属性によるフィールド一致検証（確認用入力欄に活用可）
* **CF7 Conditional Fields との互換性**: `.wpcf7cf-hidden` が付与された非表示グループ内のフィールドをバリデーション・送信ボタン活性化・モーダル表示のいずれの対象からも自動除外
* **フォーム単位の設定**: 1ページに複数のCF7フォームを設置可。フォームごとに有効/無効・タイトル・ボタンテキスト・プライマリカラーを独立して切り替え可能
* **送信成功時のリダイレクト**: `wpcf7mailsent` イベントを捕捉し、相対パス・絶対URLの両方に対応。エラー時はリダイレクトせずエラーを表示
* **サーバー通信ゼロ・依存なし**: admin-ajax / REST エンドポイントを登録しない。送信は `wpcf7.submit()` でCF7本体に委譲。jQuery不要、Vanilla JSと単一PHPファイル構成

= 必須環境 =

* WordPress 5.0 以上
* PHP 7.4 以上
* Contact Form 7 プラグイン

== Installation ==

1. プラグインのzipファイルを管理画面の「プラグイン」→「新規追加」→「プラグインのアップロード」からアップロードする
2. プラグインを有効化する
3. 管理画面の「お問い合わせ」→「確認画面モーダル設定」から、フォームごとの設定を行う（デフォルトは無効）

== Frequently Asked Questions ==

= 既存のContact Form 7のフォームを書き換える必要はありますか =

いいえ。標準的な書き方をしていればそのまま動作します。ラベルが意図したとおりに取得できない場合のみ、祖先要素に `data-label` を1行追加するだけで解決します。

= 1つのページに複数のCF7フォームを置けますか =

はい。v0.5.0以降、`querySelectorAll` ですべてのフォームを検出し、それぞれ独立したインスタンスを生成します。フォームごとに有効/無効を切り替えられます。

= CF7 Conditional Fields との互換性は =

互換します。`.wpcf7cf-hidden` が付与された非表示グループ内のフィールドは、バリデーション・送信ボタン活性化・モーダル表示のいずれの対象からも自動で除外されます。MutationObserver でリアルタイムに監視するため、条件を切り替えると即座に反映されます。

= 必須マーク「*」がモーダルラベルに混入してしまう =

マークを囲む要素に `data-label-required` 属性を付けてください。ラベル取得時に自動的に除外されます。後方互換のため `class="required"` を持つ span も自動除外されます。完全に独自の文言にしたい場合は、祖先要素の `data-label` で上書きするのが最も確実です。

= jQueryに依存していますか =

いいえ。プラグインのフロントエンドはVanilla JS（ES6+）のみで構築されています。Contact Form 7本体以外の依存はありません。

= スタイルをカスタマイズしたい =

BEM記法のクラス（`.cf7-confirm-modal__header` など）とCSS変数（`--cf7-confirm-primary` 等）が用意されています。テーマや子テーマで上書きしてください。プライマリカラーは管理画面のカラーピッカーから直接変更できます。

== Changelog ==

= 0.7.0 =
* スマホ表示時に確認テーブルを縦並びに切り替える設定を追加（デフォルト ON）
* 縦並びに切り替えるブレイクポイント（px）をフォームごとに設定可能
* 管理画面の設定項目を4セクションにグルーピングし、UIを整理

= 0.6.0 =
* フィールド一致バリデーション（data-cf7-match）を追加

= 0.5.1 =
* 「確認画面モーダルの有効化」のデフォルト値を OFF に変更

= 0.5.0 =
* フォームごとの「確認画面モーダル有効化」設定を追加
* 同一ページの複数CF7フォームに対応
* data-label-suffix 属性を追加（モーダルラベルの装飾対応）
* ラベル取得ロジックのリファクタリングと XSS 対策強化

= 0.4.1 =
* CF7 Conditional Fields プラグインとの互換性を修正

= 0.4.0 =
* data-label 属性によるラベル指定に対応

= 0.3.0 =
* 必須フィールドのバリデーション対応
* 送信ボタンの非活性制御

= 0.2.2 =
* プライマリカラーのデフォルト値を変更（#00a968 → #0d6efd）

= 0.2.1 =
* 設定画面の項目並び順を改善

= 0.2.0 =
* フォームごとのカスタマイズ機能を追加
* 必須マークの除外方法を改善（data-label-required 属性）
* テキストエリアの改行を保持
* 管理画面 UI の改善

= 0.1.0 =
* 初期開発版
