From 9e75c606b49a5741981331bfe819d2885971bfe4 Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Wed, 20 Aug 2025 01:07:06 -0300 Subject: [PATCH 01/51] adapt process to use two letter country code, derive state from it --- projects/packages/forms/src/modules/field-phone/view.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/projects/packages/forms/src/modules/field-phone/view.js b/projects/packages/forms/src/modules/field-phone/view.js index 9b091ae4460c8..1322a1a0add22 100644 --- a/projects/packages/forms/src/modules/field-phone/view.js +++ b/projects/packages/forms/src/modules/field-phone/view.js @@ -88,6 +88,8 @@ const { actions } = store( NAMESPACE, { callbacks: { initializeCountrySelector() { const context = getContext(); + window.parsePhoneNumber = parsePhoneNumber; + window.AsYouType = AsYouType; if ( context.showCountrySelector ) { context.countryList = countries.map( country => ( { ...country, From f73861b04f5cc3b1d95fdb72c482264c065da915 Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Wed, 20 Aug 2025 01:11:13 -0300 Subject: [PATCH 02/51] remove debugging code --- projects/packages/forms/src/modules/field-phone/view.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/projects/packages/forms/src/modules/field-phone/view.js b/projects/packages/forms/src/modules/field-phone/view.js index 1322a1a0add22..9b091ae4460c8 100644 --- a/projects/packages/forms/src/modules/field-phone/view.js +++ b/projects/packages/forms/src/modules/field-phone/view.js @@ -88,8 +88,6 @@ const { actions } = store( NAMESPACE, { callbacks: { initializeCountrySelector() { const context = getContext(); - window.parsePhoneNumber = parsePhoneNumber; - window.AsYouType = AsYouType; if ( context.showCountrySelector ) { context.countryList = countries.map( country => ( { ...country, From 57ca513404f005710f59baf80f96c97fc16805f3 Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Fri, 22 Aug 2025 14:55:12 -0300 Subject: [PATCH 03/51] remove field-phone registration and handlers --- .../forms/src/contact-form/class-contact-form-field.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 794a51c96b3f9..3305e9c6177a2 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -1069,7 +1069,7 @@ public function render_telephone_field( $id, $label, $value, $class, $required, get_error_div( $id, 'phone' ); + $field = $label . $input . $this->get_error_div( $id, 'telephone' ); return $field; } From 758c73ba4b010a50ab25c7787430a0311b4e088b Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Mon, 25 Aug 2025 19:01:48 -0300 Subject: [PATCH 04/51] deprovision default when not using country selector on phone field --- .../forms/src/contact-form/class-contact-form-field.php | 2 ++ .../forms/src/contact-form/class-contact-form-plugin.php | 3 +++ 2 files changed, 5 insertions(+) diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 3305e9c6177a2..4c7db46def97a 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -210,6 +210,8 @@ public function __construct( $attributes, $content = null, $form = null ) { $attributes['showcountryselector'] = true; } else { $attributes['showcountryselector'] = false; + // phone uses default for country selector, so unset it + unset( $attributes['default'] ); } } diff --git a/projects/packages/forms/src/contact-form/class-contact-form-plugin.php b/projects/packages/forms/src/contact-form/class-contact-form-plugin.php index 048847f357afb..a047afda7c06d 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-plugin.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-plugin.php @@ -510,6 +510,9 @@ public static function block_attributes_to_shortcode_attributes( $atts, $type, $ // This input is exclusively used by the new telephone field. if ( 'jetpack/phone-input' === $block_name ) { $atts['placeholder'] = $inner_block['attrs']['placeholder'] ?? ''; + if ( ! isset( $atts['showcountryselector'] ) || ! $atts['showcountryselector'] ) { + unset( $atts['default'] ); + } if ( ! isset( $atts['showCountrySelector'] ) || ! $atts['showCountrySelector'] ) { unset( $atts['default'] ); From 43301df9c7969f9125f800a360beb3c01abe6153 Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Mon, 25 Aug 2025 19:18:16 -0300 Subject: [PATCH 05/51] cleanup useless code --- .../forms/src/contact-form/class-contact-form-field.php | 2 -- .../forms/src/contact-form/class-contact-form-plugin.php | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 4c7db46def97a..3305e9c6177a2 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -210,8 +210,6 @@ public function __construct( $attributes, $content = null, $form = null ) { $attributes['showcountryselector'] = true; } else { $attributes['showcountryselector'] = false; - // phone uses default for country selector, so unset it - unset( $attributes['default'] ); } } diff --git a/projects/packages/forms/src/contact-form/class-contact-form-plugin.php b/projects/packages/forms/src/contact-form/class-contact-form-plugin.php index a047afda7c06d..a8417591cff11 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-plugin.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-plugin.php @@ -510,7 +510,8 @@ public static function block_attributes_to_shortcode_attributes( $atts, $type, $ // This input is exclusively used by the new telephone field. if ( 'jetpack/phone-input' === $block_name ) { $atts['placeholder'] = $inner_block['attrs']['placeholder'] ?? ''; - if ( ! isset( $atts['showcountryselector'] ) || ! $atts['showcountryselector'] ) { + + if ( ! isset( $atts['showCountrySelector'] ) || ! $atts['showCountrySelector'] ) { unset( $atts['default'] ); } From fd9fa7431fbf7f03c0cf9f59cd09692dcb4c858e Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Tue, 26 Aug 2025 00:28:36 -0300 Subject: [PATCH 06/51] use the right field type for international phone number: phone --- .../forms/src/contact-form/class-contact-form-field.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 3305e9c6177a2..794a51c96b3f9 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -1069,7 +1069,7 @@ public function render_telephone_field( $id, $label, $value, $class, $required, get_error_div( $id, 'telephone' ); + $field = $label . $input . $this->get_error_div( $id, 'phone' ); return $field; } From cb5ceaa698ea54954161a47cc407c56ed03e109f Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Fri, 22 Aug 2025 14:55:12 -0300 Subject: [PATCH 07/51] remove field-phone registration and handlers --- .../forms/src/contact-form/class-contact-form-field.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 794a51c96b3f9..3305e9c6177a2 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -1069,7 +1069,7 @@ public function render_telephone_field( $id, $label, $value, $class, $required, get_error_div( $id, 'phone' ); + $field = $label . $input . $this->get_error_div( $id, 'telephone' ); return $field; } From fb202705e7e3f79a4bb7317fc7d9f53f51ca8d7a Mon Sep 17 00:00:00 2001 From: Christian Gastrell Date: Thu, 28 Aug 2025 01:41:17 -0300 Subject: [PATCH 08/51] temp, working forwards --- .../contact-form/class-contact-form-field.php | 11 +- .../forms/src/contact-form/css/combobox.scss | 119 ++++++++++ .../forms/src/contact-form/css/grunion.scss | 2 +- .../src/contact-form/css/phone-field.scss | 10 +- .../forms/src/modules/field-phone/view.js | 215 +++++++++++++++++- 5 files changed, 347 insertions(+), 10 deletions(-) create mode 100644 projects/packages/forms/src/contact-form/css/combobox.scss diff --git a/projects/packages/forms/src/contact-form/class-contact-form-field.php b/projects/packages/forms/src/contact-form/class-contact-form-field.php index 3305e9c6177a2..14e5acc277a78 100644 --- a/projects/packages/forms/src/contact-form/class-contact-form-field.php +++ b/projects/packages/forms/src/contact-form/class-contact-form-field.php @@ -1025,11 +1025,10 @@ public function render_telephone_field( $id, $label, $value, $class, $required, ); ?> > -
+
+
+ +
+
+
+ placeholder="" + data-wp-on--input="actions.phoneComboboxInputHandler" + data-wp-on--keydown="actions.phoneComboboxKeydownHandler">