From 1838ed814b7cdbc900068edc0954e01ccd2d4f96 Mon Sep 17 00:00:00 2001 From: Bastiaan Grutters Date: Mon, 16 Oct 2023 11:25:20 +0200 Subject: [PATCH] Bug #57928: Signal compatibility with HPOS for WooCommerce 8.2.0 - Update WooCommerce compatibility versionto 8.2.0 - Updated version number --- assets/js/postcode-eu-autofill.js | 38 +++++++++++++++++---- postcodenl-address-autocomplete.php | 16 +++++++-- src/PostcodeNl/AddressAutocomplete/Main.php | 3 +- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/assets/js/postcode-eu-autofill.js b/assets/js/postcode-eu-autofill.js index 2ec9cf0..4d4a913 100644 --- a/assets/js/postcode-eu-autofill.js +++ b/assets/js/postcode-eu-autofill.js @@ -52,7 +52,7 @@ // Wrap in timeout to execute after Woocommerce field logic: window.setTimeout(function () { - toggleAddressFields(getAddressFields(container), !isSupportedCountry(selectedCountry), true); + toggleAddressFields(getAddressFields(container), !isSupportedCountry(selectedCountry), true, isSupportedCountry(selectedCountry)); }); }).trigger('change.postcode-eu.address-fields'); }) @@ -96,7 +96,7 @@ } } - const toggleAddressFields = function (addressFields, state, force) + const toggleAddressFields = function (addressFields, state, force, isSupportedCountry) { if (!force) { @@ -120,7 +120,33 @@ if (field.length > 0 && field.prop('type') !== 'hidden') { - field.closest('.form-row').toggle(state); + let formRow = field.closest('.form-row'); + formRow.toggle(state); + let input = formRow.find('input[type="text"]'); + if (input.length === 0) + { + continue; + } + if (state && !isSupportedCountry) + { + let previousValue = input.attr('previous-autocomplete'); + if (previousValue) + { + input.attr('autocomplete', previousValue); + } + else + { + input.attr('autocomplete', null); + } + } + else + { + if (!input.attr('previous-autocomplete')) + { + input.attr('previous-autocomplete', input.attr('autocomplete')); + } + input.attr('autocomplete', 'off'); + } } } } @@ -547,7 +573,7 @@ const callback = (result) => { fillAddressFieldsIntl(result); - toggleAddressFields(addressFields, true); + toggleAddressFields(addressFields, true, false, true); intlField .removeClass('postcodenl-address-autocomplete-loading') .trigger('address-result', result); @@ -607,7 +633,7 @@ document.addEventListener('autocomplete-xhrerror', function (e) { console.error('Autocomplete XHR error', e); - toggleAddressFields(addressFields, true); + toggleAddressFields(addressFields, true, false, true); intlField.removeClass('postcodenl-address-autocomplete-loading') setFieldValidity( intlField, @@ -728,7 +754,7 @@ link = $('', {'class': 'postcode-eu-autofill-intl-bypass-link', text: settings.autofillIntlBypassLinkText}); link.on('click', function () { - toggleAddressFields(getAddressFields(container), true, true); + toggleAddressFields(getAddressFields(container), true, true, true); formRow.hide(); return false; }); diff --git a/postcodenl-address-autocomplete.php b/postcodenl-address-autocomplete.php index 10fc0c9..8d318db 100644 --- a/postcodenl-address-autocomplete.php +++ b/postcodenl-address-autocomplete.php @@ -3,7 +3,7 @@ * Plugin Name: Postcode.nl Address Autocomplete * Plugin URI: https://www.postcode.nl/en/services/adresdata/implementatie * Description: Reference implementation for Postcode.nl international address autocomplete for WooCommerce - * Version: 2.1.1 + * Version: 2.1.2 * Author: Postcode.nl * Author URI: https://www.postcode.nl * Text Domain: postcodenl-address-autocomplete @@ -11,9 +11,10 @@ * Requires PHP: 7.3.0 * * WC requires at least: 3.7.0 - * WC tested up to: 7.5.0 + * WC tested up to: 8.2.0 */ +use Automattic\WooCommerce\Utilities\FeaturesUtil; use PostcodeNl\AddressAutocomplete\Main; defined('ABSPATH') || exit; @@ -39,3 +40,14 @@ }); new Main(); + +/** + * @see https://github.com/woocommerce/woocommerce/wiki/High-Performance-Order-Storage-Upgrade-Recipe-Book#declaring-extension-incompatibility + */ +add_action('before_woocommerce_init', function() { + if (!class_exists('Automattic\\WooCommerce\\Utilities\\FeaturesUtil')) + { + return; + } + FeaturesUtil::declare_compatibility('custom_order_tables', __FILE__, true); +}); diff --git a/src/PostcodeNl/AddressAutocomplete/Main.php b/src/PostcodeNl/AddressAutocomplete/Main.php index 6a1c8a5..f68431e 100644 --- a/src/PostcodeNl/AddressAutocomplete/Main.php +++ b/src/PostcodeNl/AddressAutocomplete/Main.php @@ -10,7 +10,7 @@ class Main { /** @var string The version number of the plugin should be equal to the commented version number in ../../../postcodenl-address-autocomplete.php */ - public const VERSION = '2.1.1'; + public const VERSION = '2.1.2'; /** @var self Reference to own */ protected static $_instance; @@ -30,7 +30,6 @@ public function __construct() $this->loadOptions(); add_action('init', [$this, 'wordPressInit']); - static::$_instance = $this; }