From c5931289b7f647dd02cdecde2464ea0e0e77cee5 Mon Sep 17 00:00:00 2001 From: Mykyta Synelnikov Date: Thu, 4 Jan 2024 16:48:26 +0200 Subject: [PATCH] - fixed deregistered select2 styling; --- includes/common/class-enqueue.php | 104 ++++++++++++++++------------ includes/frontend/class-enqueue.php | 7 +- 2 files changed, 63 insertions(+), 48 deletions(-) diff --git a/includes/common/class-enqueue.php b/includes/common/class-enqueue.php index da7b797e..df9aa407 100644 --- a/includes/common/class-enqueue.php +++ b/includes/common/class-enqueue.php @@ -178,6 +178,63 @@ class Enqueue { return apply_filters( 'um_get_pickadate_locale', $locale, $suffix ); } + /** + * Select2 JS and CSS assets register function. + * + * + */ + public function register_select2() { + $suffix = self::get_suffix(); + $libs_url = self::get_url( 'libs' ); + + /** + * Filters marker for dequeue select2.JS library. + * + * @since 2.0.0 + * @hook um_dequeue_select2_scripts + * + * @param {bool} $dequeue_select2 Dequeue select2 assets marker. Set to `true` for dequeue scripts. + * + * @return {bool} Dequeue select2 assets. By default `false`. + * + * @example Dequeue select2 assets. + * function custom_um_dequeue_select2_scripts( $dequeue_select2 ) { + * $dequeue_select2 = true; + * return $dequeue_select2; + * } + * add_filter( 'um_dequeue_select2_scripts', 'custom_um_dequeue_select2_scripts' ); + */ + $dequeue_select2 = apply_filters( 'um_dequeue_select2_scripts', false ); + if ( class_exists( 'WooCommerce' ) || $dequeue_select2 ) { + wp_dequeue_style( 'select2' ); + wp_deregister_style( 'select2' ); + + wp_dequeue_script( 'select2' ); + wp_deregister_script( 'select2' ); + } + wp_register_script( 'select2', $libs_url . 'select2/select2.full' . $suffix . '.js', array( 'jquery' ), '4.0.13', true ); + // Load a localized version for Select2. + $locale = get_locale(); + $base_locale = get_locale(); + if ( $locale ) { + if ( ! file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { + $locale = explode( '_', $base_locale ); + $locale = $locale[0]; + + if ( ! file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { + $locale = explode( '_', $base_locale ); + $locale = implode( '-', $locale ); + } + } + + if ( file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { + wp_register_script( 'um_select2_locale', $libs_url . 'select2/i18n/' . $locale . '.js', array( 'jquery', 'select2' ), '4.0.13', true ); + self::$select2_handle = 'um_select2_locale'; + } + } + wp_register_style( 'select2', $libs_url . 'select2/select2' . $suffix . '.css', array(), '4.0.13' ); + } + /** * Register common JS/CSS libraries. * @@ -204,52 +261,7 @@ class Enqueue { wp_register_style( 'um_fonticons_fa', $libs_url . 'legacy/fonticons/fonticons-fa' . $suffix . '.css', array(), UM_VERSION ); // FontAwesome // Select2 JS. - /** - * Filters marker for dequeue select2.JS library. - * - * @since 2.0.0 - * @hook um_dequeue_select2_scripts - * - * @param {bool} $dequeue_select2 Dequeue select2 assets marker. Set to `true` for dequeue scripts. - * - * @return {bool} Dequeue select2 assets. By default `false`. - * - * @example Dequeue select2 assets. - * function custom_um_dequeue_select2_scripts( $dequeue_select2 ) { - * $dequeue_select2 = true; - * return $dequeue_select2; - * } - * add_filter( 'um_dequeue_select2_scripts', 'custom_um_dequeue_select2_scripts' ); - */ - $dequeue_select2 = apply_filters( 'um_dequeue_select2_scripts', false ); - if ( class_exists( 'WooCommerce' ) || $dequeue_select2 ) { - wp_dequeue_style( self::$select2_handle ); - wp_deregister_style( self::$select2_handle ); - - wp_dequeue_script( self::$select2_handle ); - wp_deregister_script( self::$select2_handle ); - } - wp_register_script( self::$select2_handle, $libs_url . 'select2/select2.full' . $suffix . '.js', array( 'jquery' ), '4.0.13', true ); - // Load a localized version for Select2. - $locale = get_locale(); - $base_locale = get_locale(); - if ( $locale ) { - if ( ! file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { - $locale = explode( '_', $base_locale ); - $locale = $locale[0]; - - if ( ! file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { - $locale = explode( '_', $base_locale ); - $locale = implode( '-', $locale ); - } - } - - if ( file_exists( UM_PATH . 'assets/libs/select2/i18n/' . $locale . '.js' ) ) { - wp_register_script( 'um_select2_locale', $libs_url . 'select2/i18n/' . $locale . '.js', array( 'jquery', self::$select2_handle ), '4.0.13', true ); - self::$select2_handle = 'um_select2_locale'; - } - } - wp_register_style( 'select2', $libs_url . 'select2/select2' . $suffix . '.css', array(), '4.0.13' ); + $this->register_select2(); // Date-time picker (Pickadate.JS) wp_register_script( 'um_datetime', $libs_url . 'pickadate/picker' . $suffix . '.js', array( 'jquery' ), '3.6.2', true ); diff --git a/includes/frontend/class-enqueue.php b/includes/frontend/class-enqueue.php index fcce521e..59e2740f 100644 --- a/includes/frontend/class-enqueue.php +++ b/includes/frontend/class-enqueue.php @@ -186,9 +186,12 @@ final class Enqueue extends \um\common\Enqueue { wp_register_style( 'um_rtl', $css_url . 'um.rtl' . $suffix . '.css', array(), UM_VERSION ); wp_register_style( 'um_default_css', $css_url . 'um-old-default' . $suffix . '.css', array(), UM_VERSION ); wp_register_style( 'um_modal', $css_url . 'um-modal' . $suffix . '.css', array(), UM_VERSION ); - wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array( 'um_profile' ), UM_VERSION ); + wp_register_style( 'um_responsive', $css_url . 'um-responsive' . $suffix . '.css', array(), UM_VERSION ); - wp_register_style( 'um_styles', $css_url . 'um-styles' . $suffix . '.css', array( 'um_ui', 'um_tipsy', 'um_raty', 'um_fonticons_ii', 'um_fonticons_fa', 'select2', 'um_fileupload', 'um_common' ), UM_VERSION ); + // Workaround when select2 deregistered (e.g. Woo + Impreza theme activated). + $this->register_select2(); + + wp_register_style( 'um_styles', $css_url . 'um-styles' . $suffix . '.css', array( 'um_ui', 'um_tipsy', 'um_raty', 'um_fonticons_ii', 'um_fonticons_fa', 'select2', 'um_fileupload', 'um_common', 'um_responsive', 'um_modal' ), UM_VERSION ); wp_register_style( 'um_members', $css_url . 'um-members' . $suffix . '.css', array( 'um_styles' ), UM_VERSION ); // RTL styles.