Plugin Directory

Changeset 3206298


Ignore:
Timestamp:
12/11/2024 11:38:05 AM (16 months ago)
Author:
EmranAhmed
Message:

Update to 2.1.3

Location:
woo-variation-swatches
Files:
62 added
10 edited

Legend:

Unmodified
Added
Removed
  • woo-variation-swatches/trunk/README.txt

    r3143748 r3206298  
    44Requires PHP: 7.4
    55Requires at least: 5.9
    6 Tested up to: 6.6
     6Tested up to: 6.7
    77WC requires at least: 7.5
    8 WC tested up to: 9.2
    9 Stable tag: 2.1.2
     8WC tested up to: 9.4
     9Stable tag: 2.1.3
    1010License: GPLv3 or later
    1111License URI: http://www.gnu.org/licenses/gpl-3.0.html
     
    1919[youtube https://www.youtube.com/watch?v=4uIZjvWiSf0]
    2020
    21 Variation Swatches is easy to use WooCommerce product variation swatches plugin. It offers an aesthetic and professional experience to select attributes for variation products. It turns the product variation select options fields into radio images, colors, and label. It means with the help of this powerful WooCommerce color or image variation swatches plugin, you can show product variation items in images, colors, and label. So, you can say goodbye to dropdown product attribute fields.
    22 
    23 Variation Swatches for WooCommerce not only offers the color, image and label attributes in the single WooCommerce product. It also enables them in product quick view. If you're using WooCommerce themes like Flatsome that comes with default Quick View option, you don’t need to hassle to load color and image swatches for variable product attributes in quick view separately.
    24 
    25 In the free WooCommerce attribute variation plugin, besides creating size, brand, image, color, and label variation swatches, you can handle the swatches shape style <strong>Rounded and Circle</strong>. On top of that, it allows you beautiful tooltips on variation swatch hover.  Based on your requirement you enable and disable hover from the settings. To maximize and personalize your development process,  the product attributes swatches comes an option to disable default plugin stylesheet so that you can personally write your own CSS.
     21WooCommerce Variation Swatches makes selecting product options easier and more enjoyable. Say goodbye to dull dropdown menus—your customers can now choose sizes, colors, styles, and more using vibrant swatches, images, and labels.
     22
     23This transformation turns the shopping experience into something fun and visually appealing while efficiently supporting popular WordPress themes. Plus, it seamlessly integrates with product quick views, allows you to customize shapes into <strong>round or square</strong>, and even enables you to disable the plugin’s CSS to tailor it to your theme’s stylesheet.
     24
     25The best part? WooCommerce Variation Swatches automatically convert all variation select dropdowns into buttons right after installation—only a quick two-step configuration is needed for color and image swatches.
     26
    2627
    2728## Key Feature Comes with Variation Swatches For WooCommerce Plugin ##
     
    615616== Changelog ==
    616617
     618= 2.1.3 - 11-12-2024 =
     619
     620* Fixed: JS Setting update warning trigger issue.
     621* Added: WP 6.7+ compatibility.
     622* Added: WC 9.4+ compatibility.
     623
    617624= 2.1.2 - 29-08-2024 =
    618625
  • woo-variation-swatches/trunk/assets/css/admin.css

    r3143748 r3206298  
    33 *
    44 * Author: Emran Ahmed ( emran.bd.08@gmail.com )
    5  * Date: 8/29/2024, 6:38:28 PM
     5 * Date: 12/11/2024, 5:29:50 PM
    66 * Released under the GPLv3 license.
    77 */
  • woo-variation-swatches/trunk/assets/css/frontend.css

    r3143748 r3206298  
    33 *
    44 * Author: Emran Ahmed ( emran.bd.08@gmail.com )
    5  * Date: 8/29/2024, 6:38:28 PM
     5 * Date: 12/11/2024, 5:29:50 PM
    66 * Released under the GPLv3 license.
    77 */
  • woo-variation-swatches/trunk/assets/js/admin.js

    r3143748 r3206298  
    33 *
    44 * Author: Emran Ahmed ( emran.bd.08@gmail.com )
    5  * Date: 8/29/2024, 6:38:28 PM
     5 * Date: 12/11/2024, 5:29:50 PM
    66 * Released under the GPLv3 license.
    77 */
  • woo-variation-swatches/trunk/assets/js/frontend.js

    r3143748 r3206298  
    33 *
    44 * Author: Emran Ahmed ( emran.bd.08@gmail.com )
    5  * Date: 8/29/2024, 6:38:28 PM
     5 * Date: 12/11/2024, 5:29:50 PM
    66 * Released under the GPLv3 license.
    77 */
  • woo-variation-swatches/trunk/assets/js/wp-color-picker-alpha.js

    r3143748 r3206298  
    33 *
    44 * Author: Emran Ahmed ( emran.bd.08@gmail.com )
    5  * Date: 8/29/2024, 6:38:28 PM
     5 * Date: 12/11/2024, 5:29:50 PM
    66 * Released under the GPLv3 license.
    77 */
  • woo-variation-swatches/trunk/changelog.txt

    r3143748 r3206298  
    11*** Variation Swatches for WooCommerce ***
     2
     32024-10-11 - version 2.1.3
     4
     5* Fixed - JS Setting update warning trigger issue.
     6* Added - WP 6.7+ compatibility.
     7* Added - WC 9.4+ compatibility.
    28
    392024-08-29 - version 2.1.2
  • woo-variation-swatches/trunk/includes/getwooplugins/js/getwooplugins-settings.js

    r2776679 r3206298  
    22
    33(function ($, Backbone, _) {
    4     'use strict'
    5 
    6     /**
    7      * GWP Backbone Modal plugin
    8      *
    9      * @param {object} options
    10      */
    11     $.fn.GWPBackboneModal = function (options) {
    12         return this.each(function () {
    13             (new $.GWPBackboneModal($(this), options))
    14         })
    15     }
    16 
    17     /**
    18      * Initialize the Backbone Modal
    19      *
    20      * @param {object} element [description]
    21      * @param {object} options [description]
    22      */
    23     $.GWPBackboneModal = function (element, options) {
    24         // Set settings
    25         let settings = $.extend({}, $.GWPBackboneModal.defaultOptions, options)
    26 
    27         if (settings.template) {
    28             new $.GWPBackboneModal.View({
    29                 target : settings.template,
    30                 string : settings.data
    31             })
    32         }
    33     }
    34 
    35     /**
    36      * Set default options
    37      *
    38      * @type {object}
    39      */
    40     $.GWPBackboneModal.defaultOptions = {
    41         template : '',
    42         data     : {}
    43     }
    44 
    45     /**
    46      * Create the Backbone Modal
    47      *
    48      * @return {null}
    49      */
    50     $.GWPBackboneModal.View = Backbone.View.extend({
    51         tagName       : 'div',
    52         id            : 'gwp-backbone-modal-dialog',
    53         _target       : undefined,
    54         _string       : undefined,
    55         events        : {
    56             'click .modal-close' : 'closeButton',
    57             'click #btn-ok'      : 'addButton',
    58             'click #send-ajax'   : 'sendAjax',
    59             'touchstart #btn-ok' : 'addButton',
    60             'keydown'            : 'keyboardActions',
    61             'change :radio'      : 'optionChange'
    62         },
    63         resizeContent : function () {
    64             let $content = $('.gwp-backbone-modal-content').find('article')
    65             let max_h    = $(window).height() * 0.75
    66 
    67             $content.css({
    68                 'max-height' : max_h + 'px'
    69             })
    70         },
    71         initialize    : function (data) {
    72             let view     = this
    73             this._target = data.target
    74             this._string = data.string
    75             _.bindAll(this, 'render')
    76             this.render()
    77 
    78             $(window).resize(function () {
    79                 view.resizeContent()
    80             })
    81         },
    82         render        : function () {
    83             var template = wp.template(this._target)
    84 
    85             this.$el.append(
    86                 template(this._string)
    87             )
    88 
    89             $(document.body).css({
    90                 'overflow' : 'hidden'
    91             }).append(this.$el)
    92 
    93             this.resizeContent()
    94             this.$('.gwp-backbone-modal-content').attr('tabindex', '0').focus()
    95 
    96             // $( document.body ).trigger( 'init_tooltips' );
    97 
    98             $(document.body).trigger('gwp_backbone_modal_loaded', this._target)
    99         },
    100         closeButton   : function (e) {
    101             e.preventDefault()
    102             $(document.body).trigger('gwp_backbone_modal_before_remove', this._target)
    103             this.undelegateEvents()
    104             $(document).off('focusin')
    105             $(document.body).css({
    106                 'overflow' : 'auto'
    107             })
    108             this.remove()
    109             $(document.body).trigger('gwp_backbone_modal_removed', this._target)
    110         },
    111 
    112         addButton : function (e) {
    113             $(document.body).trigger('gwp_backbone_modal_response', [this._target, this.getFormData()])
    114             this.closeButton(e)
    115         },
    116 
    117         sendAjax : function (event) {
    118 
    119             event.preventDefault()
    120 
    121             let form   = this.getFormData()
    122             let data   = this._string
    123             let action = `${form.action}_by_${form.plugin}`
    124 
    125             if (typeof form['reason_type'] === 'undefined') {
    126                 this.closeButton(event)
    127                 return
    128             }
    129 
    130             $(event.target).prop('disabled', true).text($(event.target).data('deactivating')).next().addClass('visible')
    131 
    132             wp.ajax.send(action, {
    133                 data    : form,
    134                 success : (response) => {
    135                     window.location.replace(data.deactivate_link)
    136                     this.closeButton(event)
    137                 },
    138                 error   : () => {
    139                     console.error('Deactivation Not logged.')
    140                     window.location.replace(data.deactivate_link)
    141                     this.closeButton(event)
    142                 }
    143             })
    144         },
    145 
    146         optionChange : function (event) {
    147 
    148             $(event.target).closest('.feedback-dialog-form-body').find('.feedback-text').prop('disabled', true).hide()
    149 
    150             $(event.target).nextAll('.feedback-text').prop('disabled', false).show().focus()
    151 
    152         },
    153 
    154         getFormData     : function () {
    155             let data = {}
    156 
    157             $(document.body).trigger('gwp_backbone_modal_before_update', this._target)
    158 
    159             $.each($('form', this.$el).serializeArray(), function (index, item) {
    160                 if (item.name.indexOf('[]') !== -1) {
    161                     item.name       = item.name.replace('[]', '')
    162                     data[item.name] = $.makeArray(data[item.name])
    163                     data[item.name].push(item.value)
    164                 }
    165                 else {
    166                     data[item.name] = item.value
    167                 }
    168             })
    169 
    170             return data
    171         },
    172         keyboardActions : function (e) {
    173             let button = e.keyCode || e.which
    174 
    175             // Enter key
    176             if (13 === button && !(e.target.tagName && (e.target.tagName.toLowerCase() === 'input' || e.target.tagName.toLowerCase() === 'textarea'))) {
    177                 this.addButton(e)
    178             }
    179 
    180             // ESC key
    181             if (27 === button) {
    182                 this.closeButton(e)
    183             }
    184         }
    185     })
     4    'use strict'
     5
     6    /**
     7     * GWP Backbone Modal plugin
     8     *
     9     * @param {object} options
     10     */
     11    $.fn.GWPBackboneModal = function (options) {
     12        return this.each(function () {
     13            (new $.GWPBackboneModal($(this), options))
     14        })
     15    }
     16
     17    /**
     18     * Initialize the Backbone Modal
     19     *
     20     * @param {object} element [description]
     21     * @param {object} options [description]
     22     */
     23    $.GWPBackboneModal = function (element, options) {
     24        // Set settings
     25        let settings = $.extend({}, $.GWPBackboneModal.defaultOptions, options)
     26
     27        if (settings.template) {
     28            new $.GWPBackboneModal.View({
     29                target: settings.template,
     30                string: settings.data,
     31            })
     32        }
     33    }
     34
     35    /**
     36     * Set default options
     37     *
     38     * @type {object}
     39     */
     40    $.GWPBackboneModal.defaultOptions = {
     41        template: '',
     42        data: {},
     43    }
     44
     45    /**
     46     * Create the Backbone Modal
     47     *
     48     * @return {null}
     49     */
     50    $.GWPBackboneModal.View = Backbone.View.extend({
     51        tagName: 'div',
     52        id: 'gwp-backbone-modal-dialog',
     53        _target: undefined,
     54        _string: undefined,
     55        events: {
     56            'click .modal-close': 'closeButton',
     57            'click #btn-ok': 'addButton',
     58            'click #send-ajax': 'sendAjax',
     59            'touchstart #btn-ok': 'addButton',
     60            'keydown': 'keyboardActions',
     61            'change :radio': 'optionChange',
     62        },
     63        resizeContent: function () {
     64            let $content = $('.gwp-backbone-modal-content').find('article')
     65            let max_h = $(window).height() * 0.75
     66
     67            $content.css({
     68                'max-height': max_h + 'px',
     69            })
     70        },
     71        initialize: function (data) {
     72            let view = this
     73            this._target = data.target
     74            this._string = data.string
     75            _.bindAll(this, 'render')
     76            this.render()
     77
     78            $(window).resize(function () {
     79                view.resizeContent()
     80            })
     81        },
     82        render: function () {
     83            var template = wp.template(this._target)
     84
     85            this.$el.append(
     86                template(this._string),
     87            )
     88
     89            $(document.body).css({
     90                'overflow': 'hidden',
     91            }).append(this.$el)
     92
     93            this.resizeContent()
     94            this.$('.gwp-backbone-modal-content').attr('tabindex', '0').focus()
     95
     96            // $( document.body ).trigger( 'init_tooltips' );
     97
     98            $(document.body).trigger('gwp_backbone_modal_loaded', this._target)
     99        },
     100        closeButton: function (e) {
     101            e.preventDefault()
     102            $(document.body).trigger('gwp_backbone_modal_before_remove', this._target)
     103            this.undelegateEvents()
     104            $(document).off('focusin')
     105            $(document.body).css({
     106                'overflow': 'auto',
     107            })
     108            this.remove()
     109            $(document.body).trigger('gwp_backbone_modal_removed', this._target)
     110        },
     111
     112        addButton: function (e) {
     113            $(document.body).trigger('gwp_backbone_modal_response', [this._target, this.getFormData()])
     114            this.closeButton(e)
     115        },
     116
     117        sendAjax: function (event) {
     118
     119            event.preventDefault()
     120
     121            let form = this.getFormData()
     122            let data = this._string
     123            let action = `${form.action}_by_${form.plugin}`
     124
     125            if (typeof form['reason_type'] === 'undefined') {
     126                this.closeButton(event)
     127                return
     128            }
     129
     130            $(event.target).prop('disabled', true).text($(event.target).data('deactivating')).next().addClass('visible')
     131
     132            wp.ajax.send(action, {
     133                data: form,
     134                success: (response) => {
     135                    window.location.replace(data.deactivate_link)
     136                    this.closeButton(event)
     137                },
     138                error: () => {
     139                    console.error('Deactivation Not logged.')
     140                    window.location.replace(data.deactivate_link)
     141                    this.closeButton(event)
     142                },
     143            })
     144        },
     145
     146        optionChange: function (event) {
     147
     148            $(event.target).closest('.feedback-dialog-form-body').find('.feedback-text').prop('disabled', true).hide()
     149
     150            $(event.target).nextAll('.feedback-text').prop('disabled', false).show().focus()
     151
     152        },
     153
     154        getFormData: function () {
     155            let data = {}
     156
     157            $(document.body).trigger('gwp_backbone_modal_before_update', this._target)
     158
     159            $.each($('form', this.$el).serializeArray(), function (index, item) {
     160                if (item.name.indexOf('[]') !== -1) {
     161                    item.name = item.name.replace('[]', '')
     162                    data[item.name] = $.makeArray(data[item.name])
     163                    data[item.name].push(item.value)
     164                } else {
     165                    data[item.name] = item.value
     166                }
     167            })
     168
     169            return data
     170        },
     171        keyboardActions: function (e) {
     172            let button = e.keyCode || e.which
     173
     174            // Enter key
     175            if (13 === button && !(e.target.tagName && (e.target.tagName.toLowerCase() === 'input' || e.target.tagName.toLowerCase() === 'textarea'))) {
     176                this.addButton(e)
     177            }
     178
     179            // ESC key
     180            if (27 === button) {
     181                this.closeButton(e)
     182            }
     183        },
     184    })
    186185
    187186}(jQuery, Backbone, _))
    188187
    189188const GWPAdminHelper = (($) => {
    190     return class GWPAdminHelper {
    191 
    192         static ResetPopupData(pluginslug) {
    193             let id      = `#gwp-plugin-deactivate-feedback-dialog-wrapper-${pluginslug}`
    194             let $button = $('.feedback-dialog-form-button-send', id)
    195             $button.prop('disabled', false).text($button.data('defaultvalue')).next().removeClass('visible')
    196         }
    197 
    198         static DeactivatePopup(pluginslug) {
    199 
    200             let id = `#gwp-plugin-deactivate-feedback-dialog-wrapper-${pluginslug}`
    201 
    202             $('.wp-list-table.plugins').find('[data-slug="' + pluginslug + '"].active').each(function () {
    203 
    204                 let deactivate_link = $(this).find('.deactivate a').prop('href')
    205 
    206                 $(this).data('deactivate_link', deactivate_link)
    207 
    208                 $(this).find('.deactivate a').on('click', (event) => {
    209                     event.preventDefault()
    210 
    211                     $(this).GWPBackboneModal({
    212                         template : `gwp-deactive-feedback-dialog-${pluginslug}`,
    213                         data     : {
    214                             deactivate_link : deactivate_link,
    215                             plugin          : pluginslug
    216                         }
    217                     })
    218                 })
    219             })
    220         }
    221 
    222         static ProPopup() {
    223 
    224             // let id = `#gwp-pro-dialog-wrapper-${pluginslug}`;
    225             $('.getwooplugins-admin-form-table .is-pro a.pro-modal, .getwooplugins-admin-form-table a.help-modal').each(function () {
    226 
    227                 $(this).on('click', (event) => {
    228                     event.preventDefault()
    229                     // event.stopPropagation();
    230 
    231                     let template_id = $(this).data('template')
    232                     //let template = `#${template_id}`
    233 
    234                     $(this).GWPBackboneModal({
    235                         template : template_id,
    236                         data     : {}
    237                     })
    238 
    239                 })
    240             })
    241         }
    242 
    243     }
    244 })(jQuery);
     189    return class GWPAdminHelper {
     190
     191        static ResetPopupData (pluginslug) {
     192            let id = `#gwp-plugin-deactivate-feedback-dialog-wrapper-${pluginslug}`
     193            let $button = $('.feedback-dialog-form-button-send', id)
     194            $button.prop('disabled', false).text($button.data('defaultvalue')).next().removeClass('visible')
     195        }
     196
     197        static DeactivatePopup (pluginslug) {
     198
     199            let id = `#gwp-plugin-deactivate-feedback-dialog-wrapper-${pluginslug}`
     200
     201            $('.wp-list-table.plugins').find('[data-slug="' + pluginslug + '"].active').each(function () {
     202
     203                let deactivate_link = $(this).find('.deactivate a').prop('href')
     204
     205                $(this).data('deactivate_link', deactivate_link)
     206
     207                $(this).find('.deactivate a').on('click', (event) => {
     208                    event.preventDefault()
     209
     210                    $(this).GWPBackboneModal({
     211                        template: `gwp-deactive-feedback-dialog-${pluginslug}`,
     212                        data: {
     213                            deactivate_link: deactivate_link,
     214                            plugin: pluginslug,
     215                        },
     216                    })
     217                })
     218            })
     219        }
     220
     221        static ProPopup () {
     222
     223            // let id = `#gwp-pro-dialog-wrapper-${pluginslug}`;
     224            $('.getwooplugins-admin-form-table .is-pro a.pro-modal, .getwooplugins-admin-form-table a.help-modal').each(function () {
     225
     226                $(this).on('click', (event) => {
     227                    event.preventDefault()
     228                    // event.stopPropagation();
     229
     230                    let template_id = $(this).data('template')
     231                    //let template = `#${template_id}`
     232
     233                    $(this).GWPBackboneModal({
     234                        template: template_id,
     235                        data: {},
     236                    })
     237
     238                })
     239            })
     240        }
     241
     242    }
     243})(jQuery)
     244
     245const GWPDirtySettingSaveWarningHandler = (event) => {
     246    // Recommended
     247    event.preventDefault()
     248
     249    event.returnValue = getwooplugins_settings_params.i18n_nav_warning
     250    return getwooplugins_settings_params.i18n_nav_warning
     251}
    245252
    246253(function ($, params, wp) {
    247     $(function () {
    248 
    249         // Color picker with alpha support
    250         if ($().wpColorPicker) {
    251             $('.color-picker-alpha').wpColorPicker({
    252                 change : function (event, ui) {
    253                     window.onbeforeunload = function () {
    254                         return params.i18n_nav_warning
    255                     }
    256                 },
    257             })
    258         }
    259 
    260         // Edit prompt
    261         $(function () {
    262             var changed = false
    263 
    264             $(':input:not(.no-track)').on('change', function () {
    265                 if (!changed) {
    266                     window.onbeforeunload = function () {
    267                         return params.i18n_nav_warning
    268                     }
    269                     changed               = true
    270                 }
    271             })
    272 
    273             $('.submit :input').on('click', function () {
    274                 window.onbeforeunload = ''
    275             })
    276         })
    277 
    278         $(document.body).on('init_tooltips', function () {
    279 
    280             if (!jQuery().tipTip) {
    281                 return false;
    282             }
    283 
    284             $('.tips, .help_tip, .woocommerce-help-tip, .getwooplugins-help-tip').tipTip({
    285                 'attribute' : 'data-tip',
    286                 'fadeIn'    : 50,
    287                 'fadeOut'   : 50,
    288                 'delay'     : 200,
    289                 'keepAlive' : true
    290             })
    291 
    292             $('.column-wc_actions .wc-action-button').tipTip({
    293                 'fadeIn'  : 50,
    294                 'fadeOut' : 50,
    295                 'delay'   : 200
    296             })
    297 
    298             // Add tiptip to parent element for widefat tables
    299             $('.parent-tips').each(function () {
    300                 $(this).closest('a, th').attr('data-tip', $(this).data('tip')).tipTip({
    301                     'attribute' : 'data-tip',
    302                     'fadeIn'    : 50,
    303                     'fadeOut'   : 50,
    304                     'delay'     : 200,
    305                     'keepAlive' : true
    306                 }).css('cursor', 'help')
    307             })
    308         })
    309 
    310         // Tooltips
    311         $(document.body).trigger('init_tooltips')
    312 
    313         try {
    314             $(document.body).on('init_form_field_dependency', function () {
    315                 $('[data-gwp_dependency]').GWPFormFieldDependency()
    316             }).trigger('init_form_field_dependency')
    317 
    318         }
    319         catch (err) {
    320             // If failed (conflict?) log the error but don't stop other scripts breaking.
    321             window.console.log(err);
    322         }
    323 
    324         GWPAdminHelper.ProPopup()
    325 
    326     })
     254    $(function () {
     255
     256        // Color picker with alpha support
     257        if ($().wpColorPicker) {
     258            $('.color-picker-alpha').wpColorPicker({
     259                change: function (event, ui) {
     260                    window.onbeforeunload = function () {
     261                        return params.i18n_nav_warning
     262                    }
     263                },
     264            })
     265        }
     266
     267        // Edit prompt
     268        $(function () {
     269            let changed = false
     270
     271            $('.getwooplugins-settings-form :input:not(.no-track)').on('change', function () {
     272                if (!changed) {
     273
     274                    window.addEventListener('beforeunload', GWPDirtySettingSaveWarningHandler)
     275                    changed = true
     276                }
     277            })
     278
     279            $('.submit :input').on('click', function () {
     280                window.removeEventListener('beforeunload', GWPDirtySettingSaveWarningHandler)
     281            })
     282        })
     283
     284        $(document.body).on('init_tooltips', function () {
     285
     286            if (!jQuery().tipTip) {
     287                return false
     288            }
     289
     290            $('.tips, .help_tip, .woocommerce-help-tip, .getwooplugins-help-tip').tipTip({
     291                'attribute': 'data-tip',
     292                'fadeIn': 50,
     293                'fadeOut': 50,
     294                'delay': 200,
     295                'keepAlive': true,
     296            })
     297
     298            $('.column-wc_actions .wc-action-button').tipTip({
     299                'fadeIn': 50,
     300                'fadeOut': 50,
     301                'delay': 200,
     302            })
     303
     304            // Add tiptip to parent element for widefat tables
     305            $('.parent-tips').each(function () {
     306                $(this).closest('a, th').attr('data-tip', $(this).data('tip')).tipTip({
     307                    'attribute': 'data-tip',
     308                    'fadeIn': 50,
     309                    'fadeOut': 50,
     310                    'delay': 200,
     311                    'keepAlive': true,
     312                }).css('cursor', 'help')
     313            })
     314        })
     315
     316        // Tooltips
     317        $(document.body).trigger('init_tooltips')
     318
     319        try {
     320            $(document.body).on('init_form_field_dependency', function () {
     321                $('[data-gwp_dependency]').GWPFormFieldDependency()
     322            }).trigger('init_form_field_dependency')
     323
     324        } catch (err) {
     325            // If failed (conflict?) log the error but don't stop other scripts breaking.
     326            window.console.log(err)
     327        }
     328
     329        GWPAdminHelper.ProPopup()
     330
     331    })
    327332})(jQuery, getwooplugins_settings_params, wp)
  • woo-variation-swatches/trunk/languages/woo-variation-swatches.pot

    r3143748 r3206298  
    88"Content-Transfer-Encoding: 8bit\n"
    99"Language-Team: Emran Ahmed <emran.bd.08@gmail.com>\n"
    10 "POT-Creation-Date: 2024-08-29 12:38+0000\n"
     10"POT-Creation-Date: 2024-12-11 11:29+0000\n"
    1111"X-Poedit-Basepath: ..\n"
    1212"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
  • woo-variation-swatches/trunk/woo-variation-swatches.php

    r3143748 r3206298  
    55     * Description: Beautiful colors, images and buttons variation swatches for woocommerce product attributes. Requires WooCommerce 7.5+
    66     * Author: Emran Ahmed
    7      * Version: 2.1.2
     7     * Version: 2.1.3
    88     * Requires PHP: 7.4
    99     * Requires at least: 5.9
    10      * Tested up to: 6.6
     10     * Tested up to: 6.7
    1111     * WC requires at least: 7.5
    12      * WC tested up to: 9.2
     12     * WC tested up to: 9.4
    1313     * Text Domain: woo-variation-swatches
    1414     * Domain Path: /languages
     
    2222
    2323if ( ! defined( 'WOO_VARIATION_SWATCHES_PLUGIN_VERSION' ) ) {
    24     define( 'WOO_VARIATION_SWATCHES_PLUGIN_VERSION', '2.1.2' );
     24    define( 'WOO_VARIATION_SWATCHES_PLUGIN_VERSION', '2.1.3' );
    2525}
    2626
Note: See TracChangeset for help on using the changeset viewer.