=== Phone Validator with Flags for WooCommerce ===
Contributors: mokhtarbsaid
Tags: woocommerce, checkout, phone validation, phone field, country flags
Requires at least: 6.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Adds a country flag and phone validation to the WooCommerce checkout phone field. Supports Classic and Block Checkout.

== Description ==

**Phone Validator with Flags for WooCommerce** enhances the billing phone field on the checkout page by:

- Displaying a dropdown with country flags and dial codes.
- Auto-detecting the default country based on your WooCommerce store location.
- Validating the phone number format before order submission.
- Respecting WooCommerce's "Selling Locations" settings to limit the list of countries.
- Supporting both Classic Checkout and Block Checkout (introduced in WooCommerce 8+).
- Allowing full customization via a dedicated settings page under WooCommerce → Settings → Phone Validator.
- Supporting the shipping phone field independently from the billing phone field.

Ideal for WooCommerce stores targeting international customers who want to ensure clean, valid phone numbers during checkout.

Have a question or need help? [Contact the developer](https://mokhtarbensaid.com/contact/).

== Features ==

* Add country flags and dial codes to the checkout phone field.
* Validate phone numbers in real-time before submission.
* Full support for WooCommerce Block Checkout (Gutenberg).
* Supports billing phone, shipping phone, and My Account phone fields independently.
* Set preferred countries to appear at the top of the dropdown with a visual divider.
* Choose between all countries or only WooCommerce Selling Locations.
* Shipping phone field uses WooCommerce Shipping Locations automatically.
* Inline error messages styled to match WooCommerce notices.
* Respects WooCommerce field validation rules automatically.
* Compatible with WordPress 7 and WooCommerce 10+.
* GDPR-safe - no external APIs, fully self-hosted.
* Compatible with High-Performance Order Storage (HPOS).
* Lightweight and translation-ready.

== Installation ==

1. Upload the plugin folder to the `/wp-content/plugins/` directory.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Ensure that WooCommerce is active and "Selling Locations" are configured.
4. Go to WooCommerce → Settings → Phone Validator to configure the plugin.
5. The billing phone field on the checkout page will now display with country flag and validation.

== Libraries Used ==

This plugin includes the following third-party open source library:

* [intl-tel-input](https://github.com/jackocnr/intl-tel-input) v29.0.1 - JavaScript international phone input utility.
  Source: https://github.com/jackocnr/intl-tel-input
  License: MIT

== Frequently Asked Questions ==

= Does this plugin send data to third-party services? =
No. All assets and logic are fully self-hosted. No external scripts, APIs, or CDNs are used.

= Does this plugin work with WooCommerce Block Checkout? =
Yes. Since version 2.0.0 the plugin fully supports Block Checkout introduced in WooCommerce 8+.

= Does this plugin work with custom phone fields? =
Currently it targets the default WooCommerce billing_phone, shipping_phone, and My Account phone fields.

= What if the user enters an invalid phone number? =
An inline error message will appear styled to match WooCommerce notices, and the order will not be submitted until a valid number is entered.

= Does it support HPOS? =
Yes. This plugin officially declares compatibility with WooCommerce High-Performance Order Storage.

= Can I set a default country? =
Yes. You can set a default country from WooCommerce → Settings → Phone Validator. The default behavior uses your WooCommerce store country automatically.

= Can I show preferred countries at the top of the list? =
Yes. You can select preferred countries from the settings page and they will appear at the top of the dropdown, separated from the rest by a visual divider.

= Does it support the shipping phone field? =
Yes. You can enable the shipping phone field independently from WooCommerce → Settings → Phone Validator. The shipping phone dropdown will only show countries from your WooCommerce Shipping Locations.

= Is it compatible with WordPress 7 and the latest WooCommerce? =
Yes. The plugin is fully tested and compatible with WordPress 7 and WooCommerce 10+.

= I need help or have a suggestion. How can I contact the developer? =
You can reach the developer through the [contact page](https://mokhtarbensaid.com/contact/).

== Screenshots ==

1. Enhanced checkout phone field with country flag and dial code.
1. Enhanced Account addresses phone field with country flag and dial code.
2. Plugin settings page part 1 under WooCommerce → Settings → Phone Validator .
3. Plugin settings page part 2 under WooCommerce → Settings → Phone Validator.

== Changelog ==

= 1.0.0 =
* Initial release with flag selector, validation, and WooCommerce integration.

= 1.1.0 =
* Fix some technical issues about the error alert.

= 1.2.0 =
* Fix some technical issues.

= 1.3.0 =
* Fix compatibility issues.

= 2.0.0 =
* Full support for WooCommerce Block Checkout (Gutenberg).
* Added dedicated settings page under WooCommerce → Settings → Phone Validator.
* Added support for shipping phone field with Shipping Locations filtering.
* Added support for My Account phone field.
* Added preferred countries option with visual divider.
* Added inline error messages styled to match WooCommerce notices.
* Updated intl-tel-input library from v18.1.1 to v29.0.1.
* Default country now uses WooCommerce store location automatically.
* Fixed double initialization bug.
* Compatible with WordPress 7 and WooCommerce 10+.
* Code refactored and split into dedicated classes.

== Upgrade Notice ==

= 1.0.0 =
This is the initial stable release.

= 2.0.0 =
Major update. Adds Block Checkout support, settings page, shipping phone field, and updated intl-tel-input library. Compatible with WordPress 7 and WooCommerce 10+. Recommended for all users.