YITH WooCommerce Ajax Product Filter - Version 4.2.0

Version Description

  • Released on 24 September 2021 =

  • New: support for WooCommerce 5.7

  • Update: YITH plugin framework

  • Tweak: improved plugin's internal cache management

  • Tweak: improved integration with YITH WooCommerce Color & Label Variations, when showing variations on loop

  • Tweak: suppress plugin's filters when retrieving in-stock products

  • Tweak: better compatibility with products query (supports queries with more than one post type)

  • Tweak: avoid duplicated ID for select filters

  • Tweak: add filtered body class via JS, immediately after filtering action takes place

  • Tweak: improved terms hierarchy appearance on RTL

  • Tweak: delete plugin transients when C&L configuration changes

  • Fix: apply changes to the query even when it retrieves a product taxonomy

  • Fix: set correct 'include' parameter when retrieving terms' children

  • Fix: prevent possible notice when handling terms hierarchy with use_all_terms enabled

  • Fix: allow system to retrieve C&L term configuration, when Use all Terms is enabled

  • Dev: Reset Filters button now has its own set of filters, distinct from ones used for Apply Filters button

  • Dev: added yith_wcan_filter_tax_label_image_size and yith_wcan_filter_tax_color_image_size filters

  • Dev: added yith_wcan_filter_tax_label_image_attr and yith_wcan_filter_tax_color_image_attr filters

  • Dev: added yith_wcan_supported_filters_parameters trigger

  • Dev: added yith_wcan_doing_filters function to check if system is performing filters

  • Dev: added yith_wcan_suppress_cache filter

Download this release

Release Info

Developer yithemes
Plugin Icon 128x128 YITH WooCommerce Ajax Product Filter
Version 4.2.0
Comparing to
See all releases

Code changes from version 4.1.0 to 4.2.0

Files changed (69) hide show
  1. README.txt +42 -3
  2. assets/css/shortcodes.css +9 -4
  3. assets/css/shortcodes.css.map +1 -1
  4. assets/js/shortcodes/modules/yith-wcan-filter.js +34 -11
  5. assets/js/shortcodes/modules/yith-wcan-preset.js +36 -5
  6. assets/js/yith-wcan-admin-filters.js +23 -18
  7. assets/js/yith-wcan-admin-filters.min.js +1 -1
  8. assets/js/yith-wcan-shortcodes.js +61 -26
  9. assets/js/yith-wcan-shortcodes.js.map +1 -1
  10. assets/js/yith-wcan-shortcodes.min.js +1 -1
  11. assets/scss/shortcodes.scss +15 -2
  12. includes/{class.yith-wcan-admin.php → class-yith-wcan-admin.php} +52 -50
  13. includes/class-yith-wcan-cache-helper.php +295 -0
  14. includes/{class.yith-wcan-filter-factory.php → class-yith-wcan-filter-factory.php} +2 -2
  15. includes/{class.yith-wcan-filter.php → class-yith-wcan-filter.php} +20 -20
  16. includes/{class.yith-wcan-frontend.php → class-yith-wcan-frontend.php} +75 -60
  17. includes/{class.yith-wcan-install.php → class-yith-wcan-install.php} +18 -18
  18. includes/{class.yith-wcan-preset-factory.php → class-yith-wcan-preset-factory.php} +1 -1
  19. includes/{class.yith-wcan-preset.php → class-yith-wcan-preset.php} +6 -6
  20. includes/{class.yith-wcan-presets.php → class-yith-wcan-presets.php} +53 -53
  21. includes/{class.yith-wcan-query.php → class-yith-wcan-query.php} +108 -228
  22. includes/{class.yith-wcan-shortcodes.php → class-yith-wcan-shortcodes.php} +12 -12
  23. includes/{class.yith-wcan-widgets.php → class-yith-wcan-widgets.php} +11 -11
  24. includes/{class.yith-wcan.php → class-yith-wcan.php} +36 -33
  25. includes/compatibility/plugins/qtranslate-x/qtranslate-x.php +1 -1
  26. includes/compatibility/plugins/ultimate-member/ultimate-member.php +1 -1
  27. includes/compatibility/plugins/wpml/wpml.php +4 -4
  28. includes/compatibility/plugins/yith-woocommerce-booking/yith-woocommerce-booking.php +13 -9
  29. includes/compatibility/plugins/yith-woocommerce-colors-label-variations/yith-woocommerce-colors-label-variations.php +109 -0
  30. includes/compatibility/themes/hello-elementor/hello-elementor.php +1 -1
  31. includes/data-stores/{class.yith-wcan-preset-data-store.php → class-yith-wcan-preset-data-store.php} +11 -11
  32. includes/elementor/{class.yith-wcan-elementor-filters.php → class-yith-wcan-elementor-filters.php} +3 -3
  33. includes/elementor/{class.yith-wcan-elementor-reset-button.php → class-yith-wcan-elementor-reset-button.php} +16 -16
  34. includes/filters/{class.yith-wcan-filter-tax.php → class-yith-wcan-filter-tax.php} +52 -49
  35. includes/{functions.yith-wcan.php → functions-yith-wcan.php} +75 -50
  36. includes/shortcodes/{class.yith-wcan-shortcode-filters.php → class-yith-wcan-shortcode-filters.php} +6 -6
  37. includes/shortcodes/{class.yith-wcan-shortcode-reset-button.php → class-yith-wcan-shortcode-reset-button.php} +2 -2
  38. includes/tables/{class.yith-wcan-filter-presets-table.php → class-yith-wcan-filter-presets-table.php} +17 -10
  39. includes/widgets/{class.yith-wcan-filters-widget.php → class-yith-wcan-filters-widget.php} +8 -8
  40. includes/widgets/{class.yith-wcan-navigation-widget.php → class-yith-wcan-navigation-widget.php} +78 -72
  41. includes/widgets/{class.yith-wcan-reset-navigation-widget.php → class-yith-wcan-reset-navigation-widget.php} +17 -16
  42. init.php +6 -6
  43. languages/yith-woocommerce-ajax-navigation-de_DE.mo +0 -0
  44. languages/yith-woocommerce-ajax-navigation-de_DE.po +183 -184
  45. languages/yith-woocommerce-ajax-navigation-de_DE_formal.mo +0 -0
  46. languages/yith-woocommerce-ajax-navigation-de_DE_formal.po +183 -184
  47. languages/yith-woocommerce-ajax-navigation-el.mo +0 -0
  48. languages/yith-woocommerce-ajax-navigation-el.po +183 -184
  49. languages/yith-woocommerce-ajax-navigation-es_ES.mo +0 -0
  50. languages/yith-woocommerce-ajax-navigation-es_ES.po +183 -184
  51. languages/yith-woocommerce-ajax-navigation-fr_FR.mo +0 -0
  52. languages/yith-woocommerce-ajax-navigation-fr_FR.po +179 -184
  53. languages/yith-woocommerce-ajax-navigation-it_IT.mo +0 -0
  54. languages/yith-woocommerce-ajax-navigation-it_IT.po +184 -184
  55. languages/yith-woocommerce-ajax-navigation-nl_NL.mo +0 -0
  56. languages/yith-woocommerce-ajax-navigation-nl_NL.po +183 -184
  57. languages/yith-woocommerce-ajax-navigation-tr_TR.mo +0 -0
  58. languages/yith-woocommerce-ajax-navigation-tr_TR.po +185 -186
  59. languages/yith-woocommerce-ajax-navigation.pot +179 -184
  60. plugin-fw/assets/css/metaboxes.css +6 -6
  61. plugin-fw/assets/css/yit-plugin-panel.css +44 -33
  62. plugin-fw/assets/css/yith-fields.css +34 -7
  63. plugin-fw/assets/css/yith-plugin-ui.css +84 -2
  64. plugin-fw/assets/js/wp-pages.js +2 -0
  65. plugin-fw/assets/js/wp-pages.min.js +1 -1
  66. plugin-fw/assets/js/yith-enhanced-select.js +0 -63
  67. plugin-fw/assets/js/yith-enhanced-select.min.js +1 -1
  68. plugin-fw/assets/js/yith-fields.js +304 -272
  69. plugin-fw/assets/js/yith-fields.min.js +1 -1
README.txt CHANGED
@@ -2,9 +2,9 @@
2
 
3
  Contributors: yithemes
4
  Tags: woocommerce ajax product filter download, woocommerce, widget, ajax, ajax filtered nav, ajax navigation, ajax filtered navigation, woocommerce layered navigation, woocommerce layered nav, product filter, product filters, ajax product filter, woocommerce ajax product filter, woocommerce filters, sidebar filter, sidebar ajax filter, ajax price filter, price filter, product sorting, woocommerce filter, taxonomy filter, attribute filter, attributes filter, woocommerce product sort, ajax sort, woocommerce ajax product filter, advanced product filters, ajax product filters, filters, woocommerce ajax product filters, woocommerce product filters, woocommerce product filters, category filter, attribute filters, woocommerce products filter, woocommerce price filter, yit, yith, yithemes
5
- Requires at least: 5.3
6
- Tested up to: 5.7
7
- Stable tag: 4.1.0
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -152,6 +152,45 @@ If none of the previous listed actions helps you solve the problem, then, submit
152
 
153
  == Changelog ==
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  = 4.1.0 - Released on 18 June 2021 =
156
 
157
  * New: support for WooCommerce 5.4
2
 
3
  Contributors: yithemes
4
  Tags: woocommerce ajax product filter download, woocommerce, widget, ajax, ajax filtered nav, ajax navigation, ajax filtered navigation, woocommerce layered navigation, woocommerce layered nav, product filter, product filters, ajax product filter, woocommerce ajax product filter, woocommerce filters, sidebar filter, sidebar ajax filter, ajax price filter, price filter, product sorting, woocommerce filter, taxonomy filter, attribute filter, attributes filter, woocommerce product sort, ajax sort, woocommerce ajax product filter, advanced product filters, ajax product filters, filters, woocommerce ajax product filters, woocommerce product filters, woocommerce product filters, category filter, attribute filters, woocommerce products filter, woocommerce price filter, yit, yith, yithemes
5
+ Requires at least: 5.6
6
+ Tested up to: 5.8
7
+ Stable tag: 4.2.0
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
152
 
153
  == Changelog ==
154
 
155
+ = 4.2.0 - Released on 24 September 2021 =
156
+
157
+ * New: support for WooCommerce 5.7
158
+ * Update: YITH plugin framework
159
+ * Tweak: improved plugin's internal cache management
160
+ * Tweak: improved integration with YITH WooCommerce Color & Label Variations, when showing variations on loop
161
+ * Tweak: suppress plugin's filters when retrieving in-stock products
162
+ * Tweak: better compatibility with products query (supports queries with more than one post type)
163
+ * Tweak: avoid duplicated ID for select filters
164
+ * Tweak: add filtered body class via JS, immediately after filtering action takes place
165
+ * Tweak: improved terms hierarchy appearance on RTL
166
+ * Tweak: delete plugin transients when C&L configuration changes
167
+ * Fix: apply changes to the query even when it retrieves a product taxonomy
168
+ * Fix: set correct 'include' parameter when retrieving terms' children
169
+ * Fix: prevent possible notice when handling terms hierarchy with use_all_terms enabled
170
+ * Fix: allow system to retrieve C&L term configuration, when Use all Terms is enabled
171
+ * Dev: Reset Filters button now has its own set of filters, distinct from ones used for Apply Filters button
172
+ * Dev: added yith_wcan_filter_tax_label_image_size and yith_wcan_filter_tax_color_image_size filters
173
+ * Dev: added yith_wcan_filter_tax_label_image_attr and yith_wcan_filter_tax_color_image_attr filters
174
+ * Dev: added yith_wcan_supported_filters_parameters trigger
175
+ * Dev: added yith_wcan_doing_filters function to check if system is performing filters
176
+ * Dev: added yith_wcan_suppress_cache filter
177
+
178
+ = 4.1.1 - Released on 04 August 2021 =
179
+
180
+ * New: support for WordPress 5.8
181
+ * New: support for WooCommerce 5.6
182
+ * Update: YITH plugin framework
183
+ * Tweak: code refactoring
184
+ * Tweak: avoid caching query_vars until wp performed main query, to be sure to include all parameters available
185
+ * Tweak: avoid possible error with Tax queries without terms
186
+ * Fix: prevent possible error on preset edit page when running PHP 8
187
+ * Fix: populateFilter method causing issues when loading more terms on backend
188
+ * Fix: avoid possible notice when shop has product taxonomies with no rewrite defined
189
+ * Fix: empty terms when using AutoPopulate options
190
+ * Fix: plugin can now disable filters with numeric slugs
191
+ * Dev: added second parameter to yith_wcan_filter_tax_additional_item_classes filter
192
+ * Dev: added yith_wcan_pre_reduce_tax_query filter, to allow programmatically skip reduce_tax_query execution
193
+
194
  = 4.1.0 - Released on 18 June 2021 =
195
 
196
  * New: support for WooCommerce 5.4
assets/css/shortcodes.css CHANGED
@@ -800,7 +800,7 @@
800
  .yith-wcan-filters.filters-modal .close-button {
801
  color: var(--yith-wcan-anchors_style_text, #434343);
802
  cursor: pointer;
803
- font-size: 2.5em;
804
  height: 35px;
805
  line-height: 1;
806
  position: absolute;
@@ -889,17 +889,17 @@
889
  margin-bottom: 0;
890
  margin-right: 15px;
891
  }
892
- .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items {
893
  max-height: 200px;
894
  overflow-y: scroll;
895
  overflow-x: hidden;
896
  padding: 5px 2px 0 0;
897
  }
898
- .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items::-webkit-scrollbar {
899
  -webkit-appearance: none;
900
  width: 6px;
901
  }
902
- .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-items::-webkit-scrollbar-thumb {
903
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
904
  border-radius: 4px;
905
  }
@@ -939,6 +939,11 @@ body.yith-wcan-preset-modal-open:after.admin-bar {
939
  top: 32px;
940
  }
941
 
 
 
 
 
 
942
  @media (max-width: 991px) {
943
  body.filters-in-modal .yith-wcan-filters {
944
  display: none;
800
  .yith-wcan-filters.filters-modal .close-button {
801
  color: var(--yith-wcan-anchors_style_text, #434343);
802
  cursor: pointer;
803
+ font-size: 1.5em;
804
  height: 35px;
805
  line-height: 1;
806
  position: absolute;
889
  margin-bottom: 0;
890
  margin-right: 15px;
891
  }
892
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items {
893
  max-height: 200px;
894
  overflow-y: scroll;
895
  overflow-x: hidden;
896
  padding: 5px 2px 0 0;
897
  }
898
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items::-webkit-scrollbar {
899
  -webkit-appearance: none;
900
  width: 6px;
901
  }
902
+ .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-content > .filter-items::-webkit-scrollbar-thumb {
903
  background-color: var(--yith-wcan-filters_colors_accent, #4e8ba2);
904
  border-radius: 4px;
905
  }
939
  top: 32px;
940
  }
941
 
942
+ body.rtl .yith-wcan-filters .yith-wcan-filter .filter-items.level-0 ul {
943
+ padding-left: 0;
944
+ padding-right: 15px;
945
+ }
946
+
947
  @media (max-width: 991px) {
948
  body.filters-in-modal .yith-wcan-filters {
949
  display: none;
assets/css/shortcodes.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/shortcodes.scss"],"names":[],"mappings":"AAwJA;AAEA;EACC;EACA;;AAGC;EACC;;AAIF;EACC;;AAGA;EACC;;AAEA;EAjJF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AA2HG;EACC;;AAGD;EACC;;AAMH;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;;AAIA;EACC;EACA;;AAIF;EACC;;AAGD;EAEC;EACA;;AAGA;EAEC,OA9NU;EA+NV;;AAGD;EAEC;;AAGD;EACC;;AAGD;EAEC,OAzOY;EA0OZ;;AAGD;EAEC;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EAEC;;AAGD;EACC;EACA;EACA;;AAEA;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC,cArTQ;;AAyTV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,cArUQ;;AAwUT;EACC;EACA;;AAIF;EAEC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAKD;EACC,cAjWS;;AAoWV;EAlSJ,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAwRG;EACC;EACA;EACA,eAzWW;EA0WX;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAEA;EAzTL,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4SM;EACA;;AAIF;EAEC;EACA,OAtYS;;AAyYV;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,OAzaQ;;AA2aR;EACC;;AAQF;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAzbJ;;AA6bI;EAjcJ;;AAqcI;EACC;;AAKF;EACC,OArfY;EAsfZ;;AAID;EAjfH;EACA;EACA;EACA;;AAmfG;EACC,kBArgBU;EAsgBV,cAtgBU;;AAwgBX;EACC,kBAzgBU;;AA6Ib;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAyYC;EACC;;AAID;EAjbD,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4aE;EACA;EACA;;AA5aF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAgaC;AAAA;EACC;EACA;;AAIF;EACC;;AAEA;EACC;;AAMD;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAIF;EACC;;AAEA;AAAA;EAEC;EACA;EACA;;AAIF;AAAA;EAEC;EACA,eAjmBY;;AAomBb;EACC,kBAzmBW;;AA4mBZ;EACC;EACA,kBA9mBW;EA+mBX;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;AAAA;AAAA;EAthBF,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAmhBG;;AAjhBH;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;;AAkgBE;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMH;EACC;EACA,eA3oBa;EA4oBb;EA3nBF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AAsmBE;EACC;EACA;EACA,eAnpBY;EAopBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;AAEA;EACC,cA1qBQ;EA2qBR;EACA,eA5qBQ;;AAgrBV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;;AAjpBN;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AA0sBZ;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC,OArtBS;;AA0tBZ;EACC;;AAEA;EAhtBH;EACA;EACA;EACA;;AAktBE;EACC;EACA;;AAEA;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA,eAzwBY;EA0wBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA,kBA7xBW;EA8xBX,cA9xBW;EA+xBX;EACA;;AAIF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBAt0BW;EAu0BX;;AAIF;EACC,OAt0BU;;AA20BZ;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC,YA71BU;EA81BV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAn0BF;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAy3Bb;EACC;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA,eAt4Ba;EAu4Bb;EACA;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC,OAj6BY;EAk6BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,OAj7BW;;AAq7Bb;EACC,kBAt7BY;EAu7BZ,cAv7BY;EAw7BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,eA/8BY;EAg9BZ;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIF;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA,eA3+BY;EA4+BZ;EACA;EACA;EACA;EACA,SA1+BM;;AA4+BN;EACC,kBA/+Ba;EAg/Bb;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAMH;EACC;EACA;EACA;EACA;;AA19BH;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAihCb;EACC;;AAKA;EACC;;AAEA;EACC;;AAKD;EACC;;AAMJ;EACC;;;AAKH;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SArjCS;;AAujCT;EACC;;;AAIF;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EA5gCD;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAogCE;;AAEA;EAriCF,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAyhCE;EA7lCF;EACA;EACA;EACA;EA4lCG;;AAKH;EACC;;AAGD;EACC,OAjnCW;;AAonCZ;EApiCA;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4hCC,kBA7nCa;EA8nCb;;AAEA;EACC;EACA;;;AAKH;AAEA;EACC;EACA,eAvoCe;EAwoCf;EACA,OA5oCc;EA6oCd;EACA,eA/oCc;;AAipCd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,YA9pCa;EA+pCb,cA/pCa;EAgqCb;;AAEA;EACC","file":"shortcodes.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../scss/shortcodes.scss"],"names":[],"mappings":"AAwJA;AAEA;EACC;EACA;;AAGC;EACC;;AAIF;EACC;;AAGA;EACC;;AAEA;EAjJF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AA2HG;EACC;;AAGD;EACC;;AAMH;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;;AAIA;EACC;EACA;;AAIF;EACC;;AAGD;EAEC;EACA;;AAGA;EAEC,OA9NU;EA+NV;;AAGD;EAEC;;AAGD;EACC;;AAGD;EAEC,OAzOY;EA0OZ;;AAGD;EAEC;;AAID;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EAEC;EACA;;AAGD;EAEC;;AAGD;EACC;EACA;EACA;;AAEA;AAAA;EAEC;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC,cArTQ;;AAyTV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,cArUQ;;AAwUT;EACC;EACA;;AAIF;EAEC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAKD;EACC,cAjWS;;AAoWV;EAlSJ,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAwRG;EACC;EACA;EACA,eAzWW;EA0WX;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAEA;EAzTL,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4SM;EACA;;AAIF;EAEC;EACA,OAtYS;;AAyYV;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;;AAEA;AAAA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,OAzaQ;;AA2aR;EACC;;AAQF;EACC;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAzbJ;;AA6bI;EAjcJ;;AAqcI;EACC;;AAKF;EACC,OArfY;EAsfZ;;AAID;EAjfH;EACA;EACA;EACA;;AAmfG;EACC,kBArgBU;EAsgBV,cAtgBU;;AAwgBX;EACC,kBAzgBU;;AA6Ib;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAKC;EARD;EACA;EACA;EACA;;AAyYC;EACC;;AAID;EAjbD,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EA4aE;EACA;EACA;;AA5aF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAgaC;AAAA;EACC;EACA;;AAIF;EACC;;AAEA;EACC;;AAMD;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAIF;EACC;;AAEA;AAAA;EAEC;EACA;EACA;;AAIF;AAAA;EAEC;EACA,eAjmBY;;AAomBb;EACC,kBAzmBW;;AA4mBZ;EACC;EACA,kBA9mBW;EA+mBX;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;AAAA;AAAA;EAthBF,kBArGc;EAsGd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAmhBG;;AAjhBH;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;;AAkgBE;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAMH;EACC;EACA,eA3oBa;EA4oBb;EA3nBF;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAeA;;AAXA;EAOA;;AAsmBE;EACC;EACA;EACA,eAnpBY;EAopBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;EACA;;AAEA;EACC,cA1qBQ;EA2qBR;EACA,eA5qBQ;;AAgrBV;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;;AAjpBN;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AA0sBZ;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC,OArtBS;;AA0tBZ;EACC;;AAEA;EAhtBH;EACA;EACA;EACA;;AAktBE;EACC;EACA;;AAEA;EACC;;AAMH;EACC;EACA;EACA;EACA;;AAMD;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA,eAzwBY;EA0wBZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA,kBA7xBW;EA8xBX,cA9xBW;EA+xBX;EACA;;AAIF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,kBAt0BW;EAu0BX;;AAIF;EACC,OAt0BU;;AA20BZ;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAEA;EACC,YA71BU;EA81BV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAn0BF;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAy3Bb;EACC;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA,eAt4Ba;EAu4Bb;EACA;;AAEA;EACC;;AAEA;EACC;;AAIF;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC,OAj6BY;EAk6BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,OAj7BW;;AAq7Bb;EACC,kBAt7BY;EAu7BZ,cAv7BY;EAw7BZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA,eA/8BY;EAg9BZ;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAIF;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA,eA3+BY;EA4+BZ;EACA;EACA;EACA;EACA,SA1+BM;;AA4+BN;EACC,kBA/+Ba;EAg/Bb;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;EAEA;EACA;;AAMH;EACC;EACA;EACA;EACA;;AA19BH;EACC;EACA;;AAGD;EACC,kBA5Da;EA6Db,eAzDc;;AAihCb;EACC;;AAKA;EACC;;AAEA;EACC;;AAKD;EACC;;AAMJ;EACC;;;AAKH;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SArjCS;;AAujCT;EACC;;;AAQE;EACC;EACA;;;AAOL;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AAEA;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EAzhCD;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAihCE;;AAEA;EAljCF,kBAlEc;EAmEd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAsiCE;EA1mCF;EACA;EACA;EACA;EAymCG;;AAKH;EACC;;AAGD;EACC,OA9nCW;;AAioCZ;EAjjCA;EACA;EACA,OAvFc;EAwFd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAyiCC,kBA1oCa;EA2oCb;;AAEA;EACC;EACA;;;AAKH;AAEA;EACC;EACA,eAppCe;EAqpCf;EACA,OAzpCc;EA0pCd;EACA,eA5pCc;;AA8pCd;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC,YA3qCa;EA4qCb,cA5qCa;EA6qCb;;AAEA;EACC","file":"shortcodes.css"}
assets/js/shortcodes/modules/yith-wcan-filter.js CHANGED
@@ -96,6 +96,12 @@ export default class YITH_WCAN_Filter {
96
  }
97
  );
98
 
 
 
 
 
 
 
99
  $( window ).trigger( 'scroll' );
100
 
101
  $( document )
@@ -277,6 +283,9 @@ export default class YITH_WCAN_Filter {
277
  params = $.extend(
278
  {
279
  url,
 
 
 
280
  },
281
  params
282
  );
@@ -319,17 +328,31 @@ export default class YITH_WCAN_Filter {
319
  // checks if param is one used by layared nav to filter products.
320
  isFilterParam( param ) {
321
  let supportedParams = [
322
- 'rating_filter',
323
- 'min_price',
324
- 'max_price',
325
- 'price_ranges',
326
- 'onsale_filter',
327
- 'instock_filter',
328
- 'featured_filter',
329
- 'orderby',
330
- 'product-page',
331
- yith_wcan_shortcodes.query_param,
332
- ].concat(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  yith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>
334
  i.replace( 'pa_', 'filter_' )
335
  )
96
  }
97
  );
98
 
99
+ if ( filters && !! Object.keys( filters ).length ) {
100
+ $( 'body' ).addClass( 'filtered' );
101
+ } else {
102
+ $( 'body' ).removeClass( 'filtered' );
103
+ }
104
+
105
  $( window ).trigger( 'scroll' );
106
 
107
  $( document )
283
  params = $.extend(
284
  {
285
  url,
286
+ headers: {
287
+ 'X-YITH-WCAN': 1,
288
+ },
289
  },
290
  params
291
  );
328
  // checks if param is one used by layared nav to filter products.
329
  isFilterParam( param ) {
330
  let supportedParams = [
331
+ 'rating_filter',
332
+ 'min_price',
333
+ 'max_price',
334
+ 'price_ranges',
335
+ 'onsale_filter',
336
+ 'instock_filter',
337
+ 'featured_filter',
338
+ 'orderby',
339
+ 'product-page',
340
+ yith_wcan_shortcodes.query_param,
341
+ ],
342
+ customParams;
343
+
344
+ // filter properties
345
+ customParams = $(
346
+ document
347
+ ).triggerHandler( 'yith_wcan_supported_filters_parameters', [
348
+ supportedParams,
349
+ ] );
350
+
351
+ if ( !! customParams ) {
352
+ supportedParams = customParams;
353
+ }
354
+
355
+ supportedParams = supportedParams.concat(
356
  yith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>
357
  i.replace( 'pa_', 'filter_' )
358
  )
assets/js/shortcodes/modules/yith-wcan-preset.js CHANGED
@@ -436,6 +436,7 @@ export default class YITH_WCAN_Preset {
436
 
437
  $toggle.off( 'click' ).on( 'click', ( ev ) => {
438
  ev.stopPropagation();
 
439
 
440
  $target.slideToggle( 400, () => {
441
  $container.toggleClass( 'opened' ).toggleClass( 'closed' );
@@ -597,6 +598,21 @@ export default class YITH_WCAN_Preset {
597
  } );
598
  }
599
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
600
  // close all collpasable before showing modal
601
  _closeAllCollapsables() {
602
  this.$filters
@@ -731,7 +747,10 @@ export default class YITH_WCAN_Preset {
731
  .length;
732
  break;
733
  case 'price_slider':
734
- const min = parseFloat(
 
 
 
735
  $filter.find( '.price-slider' ).data( 'min' )
736
  ),
737
  max = parseFloat(
@@ -744,7 +763,9 @@ export default class YITH_WCAN_Preset {
744
  $filter.find( '.price-slider-max' ).val()
745
  );
746
 
747
- active = currentMin > min || currentMax < max;
 
 
748
  break;
749
  case 'orderby':
750
  active =
@@ -1160,7 +1181,10 @@ export default class YITH_WCAN_Preset {
1160
  $dropdown.find( 'option' ).each( function () {
1161
  const $option = $( this );
1162
 
1163
- if ( $option.val() === properties[ taxonomy ] ) {
 
 
 
1164
  $option.prop( 'selected', false );
1165
  }
1166
  } );
@@ -1181,7 +1205,10 @@ export default class YITH_WCAN_Preset {
1181
  ? $label.find( ':input' ).val()
1182
  : $anchor.data( 'term-slug' );
1183
 
1184
- if ( value === properties[ taxonomy ] ) {
 
 
 
1185
  $item.children( 'label' ).children( 'a' ).click();
1186
  $item.removeClass( 'active' );
1187
  }
@@ -1396,7 +1423,11 @@ export default class YITH_WCAN_Preset {
1396
  return;
1397
  }
1398
 
1399
- this._closeAllCollapsables();
 
 
 
 
1400
 
1401
  $( 'body' )
1402
  .css( 'overflow', 'hidden' )
436
 
437
  $toggle.off( 'click' ).on( 'click', ( ev ) => {
438
  ev.stopPropagation();
439
+ ev.preventDefault();
440
 
441
  $target.slideToggle( 400, () => {
442
  $container.toggleClass( 'opened' ).toggleClass( 'closed' );
598
  } );
599
  }
600
 
601
+ // close all collpasable before showing modal
602
+ _openAllCollapsables() {
603
+ this.$filters
604
+ .not( '.no-title' )
605
+ .not( ( i, v ) => {
606
+ return this.isFilterActive( $( v ) );
607
+ } )
608
+ .find( '.filter-content' )
609
+ .show()
610
+ .end()
611
+ .find( '.filter-title' )
612
+ .removeClass( 'closed' )
613
+ .addClass( 'opened' );
614
+ }
615
+
616
  // close all collpasable before showing modal
617
  _closeAllCollapsables() {
618
  this.$filters
747
  .length;
748
  break;
749
  case 'price_slider':
750
+ const step = parseFloat(
751
+ $filter.find( '.price-slider' ).data( 'step' )
752
+ ),
753
+ min = parseFloat(
754
  $filter.find( '.price-slider' ).data( 'min' )
755
  ),
756
  max = parseFloat(
763
  $filter.find( '.price-slider-max' ).val()
764
  );
765
 
766
+ active =
767
+ Math.abs( currentMin - min ) >= step ||
768
+ Math.abs( currentMax - max ) >= step;
769
  break;
770
  case 'orderby':
771
  active =
1181
  $dropdown.find( 'option' ).each( function () {
1182
  const $option = $( this );
1183
 
1184
+ if (
1185
+ $option.val().toString() ===
1186
+ properties[ taxonomy ].toString()
1187
+ ) {
1188
  $option.prop( 'selected', false );
1189
  }
1190
  } );
1205
  ? $label.find( ':input' ).val()
1206
  : $anchor.data( 'term-slug' );
1207
 
1208
+ if (
1209
+ value.toString() ===
1210
+ properties[ taxonomy ].toString()
1211
+ ) {
1212
  $item.children( 'label' ).children( 'a' ).click();
1213
  $item.removeClass( 'active' );
1214
  }
1423
  return;
1424
  }
1425
 
1426
+ if ( yith_wcan_shortcodes.toggles_open_on_modal ) {
1427
+ this._openAllCollapsables();
1428
+ } else {
1429
+ this._closeAllCollapsables();
1430
+ }
1431
 
1432
  $( 'body' )
1433
  .css( 'overflow', 'hidden' )
assets/js/yith-wcan-admin-filters.js CHANGED
@@ -414,8 +414,6 @@ function YITH_WCAN_Filters( $ ) {
414
  continue;
415
  }
416
 
417
- console.log( 'not found' );
418
-
419
  $filterDesign.append(
420
  $( '<option/>', {
421
  value: design,
@@ -815,16 +813,21 @@ function YITH_WCAN_Filters( $ ) {
815
  self.populateFilter = function ( $filter, filterData ) {
816
  for ( const i in filterData ) {
817
  const row_id = self.getRowIndex( $filter ),
818
- nameId = `filters_${ row_id }_${ i }`,
819
- $input = $filter.find( `#${ nameId }` ),
820
  value = filterData[ i ];
821
 
 
 
 
 
 
 
822
  if ( ! $input.length && 'price_ranges' !== i ) {
823
  continue;
824
  }
825
 
826
  if ( 'terms' === i ) {
827
  const terms = value;
 
828
  if ( 'object' !== typeof terms ) {
829
  continue;
830
  }
@@ -847,12 +850,12 @@ function YITH_WCAN_Filters( $ ) {
847
  $input.change();
848
 
849
  // update term boxes
850
- self.updateTerms( $filter );
851
 
852
  // populate options for each filter
853
  for ( const j in terms ) {
854
  for ( const k in terms[ j ] ) {
855
- const termId = `${ nameId }_${ j }_${ k }`,
856
  $termInput = $filter.find( `#${ termId }` );
857
 
858
  if ( ! $termInput.length ) {
@@ -1225,16 +1228,18 @@ function YITH_WCAN_Filters( $ ) {
1225
  self.initTerm( $( this ) );
1226
  } );
1227
 
1228
- $orderBy.on( 'change', function () {
1229
- const $t = $( this ),
1230
- v = $t.val(),
1231
- methodToRun =
1232
- 'include' === v
1233
- ? 'initTermsDragDrop'
1234
- : 'destroyTermsDragDrop';
1235
-
1236
- self[ methodToRun ]( $filter );
1237
- } );
 
 
1238
  };
1239
 
1240
  self.initTerm = function ( $term ) {
@@ -1414,10 +1419,10 @@ function YITH_WCAN_Filters( $ ) {
1414
  .show();
1415
  };
1416
 
1417
- self.updateTerms = function ( $filter ) {
1418
  const $termsContainer = $filter.find( '.terms-wrapper' );
1419
 
1420
- if ( ! $termsContainer.is( ':visible' ) ) {
1421
  return;
1422
  }
1423
 
414
  continue;
415
  }
416
 
 
 
417
  $filterDesign.append(
418
  $( '<option/>', {
419
  value: design,
813
  self.populateFilter = function ( $filter, filterData ) {
814
  for ( const i in filterData ) {
815
  const row_id = self.getRowIndex( $filter ),
 
 
816
  value = filterData[ i ];
817
 
818
+ let nameId =
819
+ 'terms' === i
820
+ ? `filters_${ row_id }_term_ids`
821
+ : `filters_${ row_id }_${ i }`,
822
+ $input = $filter.find( `#${ nameId }` );
823
+
824
  if ( ! $input.length && 'price_ranges' !== i ) {
825
  continue;
826
  }
827
 
828
  if ( 'terms' === i ) {
829
  const terms = value;
830
+
831
  if ( 'object' !== typeof terms ) {
832
  continue;
833
  }
850
  $input.change();
851
 
852
  // update term boxes
853
+ self.updateTerms( $filter, true );
854
 
855
  // populate options for each filter
856
  for ( const j in terms ) {
857
  for ( const k in terms[ j ] ) {
858
+ const termId = `filters_${ row_id }_terms_${ j }_${ k }`,
859
  $termInput = $filter.find( `#${ termId }` );
860
 
861
  if ( ! $termInput.length ) {
1228
  self.initTerm( $( this ) );
1229
  } );
1230
 
1231
+ $orderBy
1232
+ .on( 'change', function () {
1233
+ const $t = $( this ),
1234
+ v = $t.val(),
1235
+ methodToRun =
1236
+ 'include' === v
1237
+ ? 'initTermsDragDrop'
1238
+ : 'destroyTermsDragDrop';
1239
+
1240
+ self[ methodToRun ]( $filter );
1241
+ } )
1242
+ .change();
1243
  };
1244
 
1245
  self.initTerm = function ( $term ) {
1419
  .show();
1420
  };
1421
 
1422
+ self.updateTerms = function ( $filter, ignoreVisibility ) {
1423
  const $termsContainer = $filter.find( '.terms-wrapper' );
1424
 
1425
+ if ( ! ignoreVisibility && ! $termsContainer.is( ':visible' ) ) {
1426
  return;
1427
  }
1428
 
assets/js/yith-wcan-admin-filters.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";function YITH_WCAN_Filters(e){const t=this;t.rowIndex=0,t.dependencies={taxonomy:{type:"tax"},use_all_terms:{type:"tax"},term_ids:{type:"tax",use_all_terms:"!:checked"},filter_design:{type:["tax","review","price_range"]},label_position:{filter_design:["label","color"]},column_number:{filter_design:["label","color"],label_position:["below","hide"]},customize_terms:{type:"tax",use_all_terms:"!:checked"},terms_options:{term_ids:e=>!!e,customize_terms:":checked"},show_search:{type:"tax",filter_design:"select"},price_ranges:{type:"price_range"},price_slider_adaptive_limits:{type:"price_slider"},price_slider_design:{type:"price_slider"},price_slider_min:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_max:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_step:{type:"price_slider"},order_options:{type:"orderby"},show_stock_filter:{type:"stock_sale"},show_sale_filter:{type:"stock_sale"},show_featured_filter:{type:"stock_sale"},toggle_style:{show_toggle:":checked"},order_by:{type:"tax"},order:{type:"tax"},show_count:{type:["tax","price_range","review","stock_sale"]},hierarchical:{type:"tax",filter_design:["checkbox","radio","text"]},multiple:{type:["tax","review","price_range"],filter_design:"!radio"},relation:{type:"tax",multiple:":checked"},adoptive:{type:["tax","price_range","review","stock_sale"]}},t.$form=e("#plugin-fw-wc"),t.$mainAddNewFilterButton=e("#add_new_filter"),t.$addNewFilterButtons=e(".add-new-filter"),t.$loadMoreFiltersButtons=e(".load-more-filters"),t.$filtersContainer=e(".preset-filters"),t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.$layout=e("#preset_layout"),t.$page=e("#paged"),t.$submit=e("#submit"),t.init=function(){t.initFilters(),t.initAddFilter(),t.initLoadMoreFilters(),t.initLayout(),t.initSubmit()},t.initAddFilter=function(){t.$addNewFilterButtons.on("click",(function(e){e.preventDefault(),t.addFilter()}))},t.initLoadMoreFilters=function(){t.$loadMoreFiltersButtons.on("click",(function(e){e.preventDefault(),t.loadMoreFilters()}))},t.initSubmit=function(){t.$submit.on("click",(()=>!!t.$form.get(0).reportValidity()&&(!!t.validateFilters()&&void t.block(t.$form))))},t.initLayout=function(){t.$layout.on("change","input",(()=>{t.afterLayoutChange()})).find("input").first().change()},t.initFilters=function(){t.initFiltersDragDrop(),t.$filters.each((function(){t.initFilter(e(this))}))},t.initFiltersDragDrop=function(){t.$filtersContainer.sortable({cursor:"move",handle:".yith-toggle-title",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0})},t.initFilter=function(e){e.hasClass("initialized")||(t.initFilterTitle(e),t.initFilterToggle(e),t.initFilterFieldsDependencies(e),t.initFilterFields(e),t.initFilterSave(e),t.initFilterDelete(e),t.initFilterClone(e),t.initTerms(e),t.initRanges(e),e.addClass("initialized"))},t.initFilterFields=function(e){t.initFilterTermSearch(e),t.initFilterCustomizeTerms(e),t.initTaxonomy(e),t.initFilterType(e),t.initFilterDesign(e),t.initFilterCurrencyFields(e),t.clearFilterErrors(e),t.initInvalidFields(e)},t.initFilterFieldsDependencies=function(e){e.find(":input").on("change",(()=>{t._applyFilterDependencies(e)})).first().change()},t.initFilterTermSearch=function(i){const n=i.find(".term-search").first(),o=i.find(".taxonomy").first(),r=n.closest(".yith-plugin-fw-field-wrapper"),a=function(e){return{term:e.term,all:void 0!==e.all?e.all:0,taxonomy:o.val(),selected:n.val(),action:"yith_wcan_search_term",security:yith_wcan_admin.nonce.search_term}},l={placeholder:e(this).data("placeholder"),minimumInputLength:"1",templateSelection:e=>t.removeHierarchyFromString(e.text),templateResult:e=>e.text.replace("&amp;","&"),ajax:{url:ajaxurl,dataType:"json",delay:250,data:a,processResults(t){const i=[];return t&&e.each(t,(function(e,t){i.push({id:e,text:t})})),{results:i}},cache:!0},sorter:e=>e};n.selectWoo(l),n.on("change",(()=>{t.updateTerms(i)})),r.find(".yith-plugin-fw-select-all").on("click",(function(i){return i.preventDefault(),!!t._confirmAddAllTerms(o)&&(t.block(r),e.get(ajaxurl,a({term:"",all:1})).then((i=>{let o=n.val();o||(o=[]),n.find("option").not(":selected").remove(),e.each(i,(function(t,i){o.push(t),n.append(e("<option/>",{value:t,text:i}))})),n.val(o).change(),t.unblock(r)})),!1)})),r.find(".yith-plugin-fw-deselect-all").on("click",(function(e){return e.preventDefault(),n.find("option").remove().end().val("").change(),!1}))},t.initFilterCustomizeTerms=function(e){const i=e.find(".customize-terms").find("input"),n=e.find(".order-by");i.on("change",(()=>{n.find('[value="include"]').prop("disabled",!i.is(":checked")),n.removeClass("enhanced").trigger("wc-enhanced-select-init"),!n.val()&&n.val("name"),t.updateTerms(e)})).change()},t.initTaxonomy=function(e){const i=e.find(".taxonomy").first(),n=e.find(".filter-design").first();i.on("change",(()=>{t.afterTaxonomyChange(e)})),n.on("change",(()=>{t.customizeTermsNotice(e)}))},t.initFilterType=function(t){const i=t.find(".filter-type"),n=t.find(".filter-design");i.on("change",(()=>{switch(i.val()){case"review":case"price_range":n.find('[value="color"]').remove().end().find('[value="label"]').remove();break;default:for(let t in yith_wcan_admin.supported_designs)yith_wcan_admin.supported_designs.hasOwnProperty(t)&&(n.find(`[value="${t}"]`).length||(console.log("not found"),n.append(e("<option/>",{value:t,text:yith_wcan_admin.supported_designs[t]}))))}n.change()})).change()},t.initFilterDesign=function(e){e.find(".filter-design").on("change",(()=>{t.updateTermFields(e,t.getTermsType(e))})).change()},t.initFilterTitle=function(e){const t=e.find(".heading-field").first(),i=e.find("h3.title");i.length&&t.length&&t.on("keyup",(()=>{const e=t.val();i.html(e||'<span class="no-title">'+yith_wcan_admin.labels.no_title+"</span>")}))},t.initFilterSave=function(e){e.find(".save").on("click",(function(i){return i.stopPropagation(),t.saveFilter(e),!1}))},t.initFilterDelete=function(e){e.find(".delete").on("click",(function(i){return i.stopPropagation(),t.removeFilter(e),!1}))},t.initFilterClone=function(e){e.find(".clone").on("click",(function(i){return i.stopPropagation(),t.cloneFilter(e),!1}))},t.initFilterToggle=function(i){i.find(".yith-toggle-title").on("click",(function(i){const n=e(i.target);if(i.preventDefault(),n.is(".yith-plugin-fw-onoff")){const e=n.prev('input[type="checkbox"]');return e.prop("checked",!e.prop("checked")),!1}const o=e(this).parent();return o.hasClass("yith-toggle-row-opened")?t.closeFilter(o):t.openFilter(o),!1}))},t.initFilterCurrencyFields=function(t){t.find("[data-currency]").each((function(){const t=e(this),i=e("<span/>",{text:t.data("currency"),class:"currency"});t.after(i)}))},t.initInvalidFields=function(i){i.find(":input").on("invalid",(n=>{const o=n.target,r=e(o);n.preventDefault(),t.goToFilter(i,r).done((()=>{t.addInputValidationMessage(r,o.validationMessage)}))}))},t.afterAddFilter=function(e){t.closeAllFilters(),t.openFilter(e),t.updateFilters(),t.maybeHideEmptyBox(t.$filtersContainer,t.$filters),t.$mainAddNewFilterButton.show(),e.trigger("yith_fields_init"),t.initFilter(e)},t.afterRemoveFilter=function(){t.updateFilters(),t.maybeShowEmptyBox(t.$filtersContainer,t.$filters),t.$filters.length||t.$mainAddNewFilterButton.hide()},t.afterTaxonomyChange=function(e){e.find(".term-search").first().find("option").remove().end().change(),t.customizeTermsNotice(e)},t.afterLayoutChange=function(){const i=t.$layout.find(":checked").val();t.$filters.each(((t,n)=>{const o=e(n),r=o.find(".show-toggle"),a=r.closest(".yith-toggle-content-row");"horizontal"===i?(r.find(":input").prop("checked",!1).removeClass("onoffchecked").change(),a.hide(),o.find(".term-tooltip").hide()):(a.show(),o.find(".term-tooltip").show())}))},t.customizeTermsNotice=function(e){const t=e.find(".taxonomy").first(),i=e.find(".filter-design").first(),n=e.find(".customize-terms").parent(),o=n.closest(".yith-toggle-content-row"),r=n.next(".description"),a=n.find("input"),l=r.find(".wccl-notice"),s=r.find(".images-notice"),c=t.data("taxonomies"),d=t.val(),f=i.val();yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?l.show():l.hide(),c[d]?.supports_images&&"label"===f?s.show():s.hide(),"color"!==f||yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?o.removeClass("disabled"):(a.prop("checked",!0),o.addClass("disabled"))},t.clearFilterErrors=function(t){t.on("change keydown",":input",(function(){const t=e(this);t.hasClass("validation-error")&&(t.removeClass("validation-error").removeClass("required-field-empty"),t.next(".validation-message").remove())}))},t._findFilterField=function(e,t,i=!0){let n;switch(t){case"terms_options":n=e.find(".terms-wrapper");break;case"price_ranges":n=e.find(".ranges-wrapper");break;default:n=e.find(':input[name*="['+t+']"]')}return n.length?i?n.closest(".yith-toggle-content-row"):n:null},t._applyFilterDependencies=function(i){e.each(t.dependencies,(function(e,n){const o=t._findFilterField(i,e);t._checkFilterFieldConditions(i,n)?o?.css({display:"table"}):o?.hide()}))},t._checkFilterFieldConditions=function(i,n){let o=!0;return e.each(n,(function(e,n){let r,a;o&&(r=t._findFilterField(i,e,!1),r?.length&&(a=r.first().is('input[type="radio"]')?r.filter(":checked").val().toString():r?.val()?.toString(),o=Array.isArray(n)?n.includes(a):"function"==typeof n?n(a):0===n.indexOf(":")?r.is(n):0===n.indexOf("!:")?!r.is(n.toString().substring(1)):0===n.indexOf("!")?n.toString().substring(1)!==a:n.toString()===a,void 0!==t.dependencies[e]&&(o=o&&t._checkFilterFieldConditions(i,t.dependencies[e]))))})),o},t._confirmAddAllTerms=function(e){let t=e.val(),i=e.data("taxonomies"),n=yith_wcan_admin.messages.confirm_add_all_terms;return!(i[t]?.terms_count&&i[t]?.terms_count>1)||(n=n.replace("%s",i[t]?.terms_count),confirm(n))},t.addFilter=function(){const i=wp.template("yith-wcan-filter")({id:t.nextRowIndex()}),n=e(i);return t.$filtersContainer.append(n),t.afterAddFilter(n),n},t.removeFilter=function(e){confirm(yith_wcan_admin.messages.confirm_delete)&&t.ajaxDeleteFilter(e).done((()=>{e.remove(),t.afterRemoveFilter()}))},t.getFilterData=function(i){return t.serialize(i,(e=>e.replace(/filters\[[0-9]+]\[([a-z_-]+)]/,"$1")),((t,i)=>!e(i).is('select[name*="terms"]')))},t.populateFilter=function(i,n){for(const o in n){const r=`filters_${t.getRowIndex(i)}_${o}`,a=i.find(`#${r}`),l=n[o];if(a.length||"price_ranges"===o)if("terms"===o){const n=l;if("object"!=typeof n)continue;for(const t in n){if(!n[t]?.label)continue;const i=e("<option/>",{value:t,text:n[t]?.label,selected:!0});a.append(i)}a.change(),t.updateTerms(i);for(const e in n)for(const t in n[e]){const o=`${r}_${e}_${t}`,a=i.find(`#${o}`);a.length&&a.val(n[e][t])}}else if("price_ranges"===o){const e=l;if("object"!=typeof e)continue;for(const n in e){const o=e[n];t.addRange(i,o.min,o.max,o.unlimited)}}else a.is(":checkbox")?a.prop("checked","yes"===l).change():a.is('[data-type="radio"]')?a.find(":input").prop("checked",!1).filter('[value="'+l+'"]').prop("checked",!0).change():"title"===o?a.val(n[o]).keyup():a.val(n[o]).change()}},t.cloneFilter=function(i){t.closeAllFilters((()=>{const n=t.addFilter(),o=t.getRowIndex(i),r=t.currentRowIndex();i.find(":input").each((function(){let i,a,l=e(this),s=l.attr("id");void 0!==s&&(a=s.replace("filters_"+o+"_","filters_"+r+"_"),i=n.find("#"+a),i.length&&(i.is('input[type="radio"]')||i.is('input[type="checkbox"]')?i.prop("checked",l.is(":checked")):i.is("select")?(i.find("option").length||l.find("option").clone().appendTo(i),i.val(l.val())):i.val(l.val()),-1===a.indexOf("color_2")||l.prop("disabled")||t.showTermAdditionalColor(i.closest(".term-box")),-1!==a.indexOf("mode")&&t.showTermTab(i.closest(".term-box"),i.val()),-1!==a.indexOf("image")&&i.val()&&i.closest(".image-selector").find(".placeholder-image").hide().end().find(".selected-image").show().append(l.closest(".image-selector").find(".selected-image").find("img").clone()),i.change().keyup()))}))}))},t.saveFilter=function(e){if(!t.validateFilter(e))return!1;t.ajaxSaveFilter(e).done((i=>{t.maybeSetPresetId(i.id),t.closeFilter(e)}))},t.isFilterOpen=function(e){return e.hasClass("yith-toggle-row-opened")},t.openFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_down"),e.addClass("yith-toggle-row-opened").find(".yith-toggle-content").slideDown().promise()},t.isFilterClosed=function(e){return!t.isFilterOpen(e)},t.closeFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_right"),e.find(".yith-toggle-content").slideUp(400,(function(){e.removeClass("yith-toggle-row-opened")})).promise()},t.closeAllFilters=function(e){t.closeFilter(t.$filters).done((()=>{"function"==typeof e&&e()}))},t.loadMoreFilters=function(){let i=t.$page.val();t.doAjax("yith_wcan_load_more_filters",{preset:t.getPresetId(),page:++i,_wpnonce:yith_wcan_admin.nonce.load_more_filters},t.$loadMoreFiltersButtons,{method:"get"}).done((n=>{if(n){if(n.filters)for(const i in n.filters){const o=n.filters[i],r=wp.template("yith-wcan-filter")({id:i}),a=e(r);t.populateFilter(a,o),t.$filtersContainer.append(a),t.afterAddFilter(a),a.find(".heading-field").keyup()}n.has_more?t.$page.val(i):(t.$loadMoreFiltersButtons.remove(),t.$page.remove(),t.$page=null),t.updateFilters()}}))},t.updateFilters=function(){t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.updateRowIndex()},t.validateFilters=function(){let i=!0;return t.$filters.each((function(){if(!i)return;let n=e(this);i=t.validateFilter(n)})),i},t.validateFilter=function(e){const i=t.$layout.find(":checked").val(),n=e.find(".filter-title"),o=n?.val();if("horizontal"===i&&!o)return t.addInputValidationMessage(n,yith_wcan_admin.messages.filter_title_required),t.goToFilter(e),!1;let r=!0;return e.find(":input").each((function(){r&&(r=this.reportValidity())})),r},t.goToFilter=function(i,n){return t.isFilterOpen(i)?(n=n||i,e("html, body").stop(!0).animate({scrollTop:n.offset().top-100}).promise()):e("html, body").stop(!0).animate({scrollTop:i.offset().top-100}).promise().done((()=>{t.openFilter(i),n&&n.length&&e("html, body").animate({scrollTop:n.offset().top-100})}))},t.getRowIndex=function(e){const t=e.data("item_key");return t?parseInt(t):0},t.updateRowIndex=function(){let i=0;t.$filters.each((function(t){const n=e(this).data("item_key");i=i<n?n:i})),t.rowIndex=i},t.nextRowIndex=function(){return t.rowIndex||t.updateRowIndex(),++t.rowIndex},t.currentRowIndex=function(){return t.rowIndex||t.updateRowIndex(),t.rowIndex},t.getTerms=function(e){return e.find(".term-box")},t.getTermsType=function(e){const t=e.find(".filter-design")?.val();return"label"!==t&&"color"!==t?"labels_only":"color"===t?"complete":"image_only"},t.initTerms=function(i){const n=i.find(".term-box"),o=i.find(".order-by");n.each((function(){t.initTerm(e(this))})),o.on("change",(function(){const n=e(this).val();t["include"===n?"initTermsDragDrop":"destroyTermsDragDrop"](i)}))},t.initTerm=function(e){t.initTermTabs(e),t.initTermImageSelector(e),t.initTermAdditionalColor(e)},t.initTermTabs=function(i){i.find(".term-tab-header").on("click",(function(n){const o=e(this).data("tab");n.preventDefault(),t.showTermTab(i,o)})),t.showTermTab(i,i.find(".term-mode").val())},t.initTermAdditionalColor=function(i){i.find(".term-add-second-color").on("click",(function(n){e(this);n.preventDefault(),t.showTermAdditionalColor(i)})),i.find(".term-hide-second-color").on("click",(function(n){e(this);n.preventDefault(),t.hideTermAdditionalColor(i)}))},t.initTermImageSelector=function(i){let n,o=i.find(".image-selector"),r=o.find(".placeholder-image"),a=o.find(".selected-image"),l=a.find("img"),s=o.find(".term-image"),c=a.find(".clear-image");r.off("click").on("click",(function(){t.block(r),n||(n=wp.media({title:yith_wcan_admin.labels.upload_media,button:{text:yith_wcan_admin.labels.confirm_media},multiple:!1}),n.on("select",(function(){const i=n.state().get("selection").first().toJSON();l.remove(),l=e("<img/>",{src:i.url}),a.prepend(l),s.val(i.id),t.unblock(r),r.hide(),a.show()})),n.on("close",(function(){t.unblock(r)}))),n.open()})),c.off("click").on("click",(function(e){e.preventDefault(),s.val(""),a.hide(),r.show()}))},t.initTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone"})}catch(e){}},t.destroyTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable("destroy")}catch(e){}},t.showTermTab=function(e,t,i){const n=e.find(".term-tab-header"),o=e.find(".tab"),r=o.filter(".tab-"+t);if(!r.length||!n.is(":visible")&&!i)return;const a=e.find(".term-mode");n.removeClass("active").filter('[data-tab="'+t+'"]').addClass("active"),o.hide(),r.show(),a.val(t)},t.showTermAdditionalColor=function(e){e.find(".term-add-second-color").parent().hide().next(".additional-color").show().find(".wp-color-picker").prop("disabled",!1)},t.hideTermAdditionalColor=function(e){e.find(".term-hide-second-color").parent().find(".wp-color-picker").prop("disabled",!0).end().hide().prev("p").show()},t.updateTerms=function(i){const n=i.find(".terms-wrapper");if(!n.is(":visible"))return;const o=t._getSelectedTerms(i),r=n.find(".term-box"),a=[];o&&e.each(o,(function(n,o){const l=r.filter('[data-term_id="'+o.id+'"]');if(l.length)a.push(l);else{const n=wp.template("yith-wcan-filter-term")({id:t.getRowIndex(i),term_id:o.id,name:o.name,label:o.name,tooltip:""}),r=e(n);a.push(r)}})),r.detach(),a.length&&e.each(a,(function(e,i){n.append(i),t.afterAddTerm(i)})),t.updateTermFields(i,t.getTermsType(i)),i.trigger("yith_fields_init")},t.updateTermFields=function(i,n){const o=i.find(".term-box");switch(n){case"complete":o.find(".term-tab-headers").show().find('a[data-tab="color"], span').show(),o.find(".tab.tab-color").show(),o.find(".tab.tab-image").show(),o.each((function(){const i=e(this);t.showTermTab(i,i.find(".term-mode").val(),!0)}));break;case"colors_only":o.find(".term-tab-headers").show().find('a[data-tab="image"], span').hide(),o.find(".tab.tab-color").show(),o.find(".tab.tab-image").hide(),t.showTermTab(o,"image",!0);break;case"image_only":o.find(".term-tab-headers").show().find('a[data-tab="color"], span').hide(),o.find(".tab.tab-color").hide(),o.find(".tab.tab-image").show(),t.showTermTab(o,"image",!0);break;case"labels_only":default:o.find(".term-tab-headers").hide(),o.find(".tab.tab-color").hide(),o.find(".tab.tab-image").hide()}},t.afterAddTerm=function(e){t.initTerm(e)},t._getSelectedTerms=function(i){const n=i.find(".term-search").first(),o=[];if(!n.length)return o;const r=n.val();return r?(e.each(r,(function(e,i){const r=n.find('option[value="'+i+'"]');r.length&&o.push({id:i,name:t.removeHierarchyFromString(r.text())})})),o):o},t.initRanges=function(i){const n=i.find(".range-box");t.initAddRange(i),t.initRangesPosition(i),t.initRangesDragDrop(i),n.each((function(){t.initRange(e(this))}))},t.initRange=function(e){t.initRangeDependencies(e),t.initRangeRemove(e)},t.initAddRange=function(e){e.find(".add-price-range").on("click",(function(i){i.preventDefault(),t.addRange(e),t.initRangesPosition(e)}))},t.initRangeRemove=function(e){e.find("a.range-remove").on("click",(i=>{const n=t.getItemFilter(e);i.preventDefault(),e.remove(),t.initRangesPosition(n)}))},t.initRangeDependencies=function(t){t.find('[name*="unlimited"]').on("change",(function(){const t=e(this),i=t.closest(".range-box").find(".max");t.is(":checked")?i.hide():i.show()})).change()},t.initRangesPosition=function(t){t.find(".range-box").each((function(){const t=e(this),i=t.find(".unlimited"),n=i.find(":input");t.is(":last-child")?i.show():(n.prop("checked",!1).change(),i.hide())}))},t.initRangesDragDrop=function(i){i.find(".ranges-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop(){e(this).find(".range-box").each((function(t){e(this).data("range_id",t).find(":input").attr("name",(function(){return e(this).attr("name").replace(/\[price_ranges]\[[0-9]+]/,"[price_ranges]["+t+"]")})).attr("id",(function(){return e(this).attr("id").replace(/price_ranges_[0-9]+/,"price_ranges_"+t)}))})),t.initRangesPosition(i)}})},t.addRange=function(i,n="",o="",r=!1){const a=wp.template("yith-wcan-filter-range")({id:t.getRowIndex(i),range_id:t.getNextRangeIndex(i),min:0,max:0}),l=e(a);return l.find(".min").find(":input").val(n),l.find(".max").find(":input").val(o),l.find(".unlimited").find(":input").prop("checked",r),i.find(".ranges-wrapper").append(l),t.afterAddRange(l),l},t.afterAddRange=function(e){t.initRange(e)},t.getNextRangeIndex=function(e){let t=e.find(".ranges-wrapper"),i=t.data("index"),n=0;return i||(i=t.find(".range-box").length),n=++i,t.data("index",n),n},t.ajaxSaveFilter=function(i){const n=t.getPresetId(),o=t.getFilterData(i),r=i.attr("id").replace("filter_","");return o.terms_order=t.getTerms(i).toArray().map((t=>e(t).data("term_id"))),t.doAjax("yith_wcan_save_preset_filter",{preset:n,filter:o,filter_id:r,_wpnonce:yith_wcan_admin.nonce.save_preset_filter},i)},t.ajaxDeleteFilter=function(e){const i=t.getPresetId();if(!i)return jQuery.Deferred().resolve();const n=e.attr("id").replace("filter_","");return t.doAjax("yith_wcan_delete_preset_filter",{preset:i,filter_id:n,_wpnonce:yith_wcan_admin.nonce.delete_preset_filter})},t.doAjax=function(i,n,o,r){n||(n={}),n.action=i;let a={beforeSend:()=>{o&&o.length&&t.block(o)},complete:()=>{o&&o.length&&t.unblock(o)},data:n,method:"post",dataType:"json",url:ajaxurl};return r&&(a=e.extend(a,r)),e.ajax(a)},t.getItemFilter=function(e){return e.closest(".yith-toggle-row")},t.maybeShowEmptyBox=function(e,i){const n=e.children(".yith-wcan-admin-no-post");!n.length||n.is(":visible")||i.length||t.$loadMoreFiltersButtons.length||n.show()},t.maybeHideEmptyBox=function(e,t){const i=e.children(".yith-wcan-admin-no-post");i.length&&i.is(":visible")&&t.length&&i.hide()},t.block=function(t){void 0!==e.fn.block&&t.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},t.unblock=function(t){void 0!==e.fn.unblock&&t.unblock()},t.serialize=function(t,i,n){let o={},r=t.find(":input").not("[disabled]");return"function"==typeof n&&(r=r.filter(n)),r.each((function(){let t,n=e(this),r=n.attr("name");if(r&&(r=r.replace(/^(.*)\[]$/,"$1"),"function"==typeof i&&(r=i(r)),(!n.is('[type="checkbox"]')||n.is(":checked"))&&(!n.is('[type="radio"]')||n.is(":checked"))))if(t=n.val(),-1!==r.indexOf("[")){const i=r.split("[").map((e=>e.replace(/[\[, \]]/g,""))),n=i.shift(),a=i.reverse().reduce(((e,t)=>({[t]:e})),t);void 0===o[n]?o[n]=a:o[n]=e.extend(!0,o[n],a)}else o[r]=t})),o},t.getPresetId=function(){return e("#preset_id").val()},t.maybeSetPresetId=function(i){!t.getPresetId()&&i&&e("#preset_id").val(i)},t.removeHierarchyFromString=function(e){return e.replace(/^(.*>)([^>]+)$/,"$2").replace("&amp;","&").trim()},t.addInputValidationMessage=function(t,i){const n=e("<span/>",{class:"validation-message",text:i});t.addClass("required-field-empty").addClass("validation-error").next(".validation-message").remove().end().after(n)},t.init()}
1
+ "use strict";function YITH_WCAN_Filters(e){const t=this;t.rowIndex=0,t.dependencies={taxonomy:{type:"tax"},use_all_terms:{type:"tax"},term_ids:{type:"tax",use_all_terms:"!:checked"},filter_design:{type:["tax","review","price_range"]},label_position:{filter_design:["label","color"]},column_number:{filter_design:["label","color"],label_position:["below","hide"]},customize_terms:{type:"tax",use_all_terms:"!:checked"},terms_options:{term_ids:e=>!!e,customize_terms:":checked"},show_search:{type:"tax",filter_design:"select"},price_ranges:{type:"price_range"},price_slider_adaptive_limits:{type:"price_slider"},price_slider_design:{type:"price_slider"},price_slider_min:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_max:{type:"price_slider",price_slider_adaptive_limits:"!:checked"},price_slider_step:{type:"price_slider"},order_options:{type:"orderby"},show_stock_filter:{type:"stock_sale"},show_sale_filter:{type:"stock_sale"},show_featured_filter:{type:"stock_sale"},toggle_style:{show_toggle:":checked"},order_by:{type:"tax"},order:{type:"tax"},show_count:{type:["tax","price_range","review","stock_sale"]},hierarchical:{type:"tax",filter_design:["checkbox","radio","text"]},multiple:{type:["tax","review","price_range"],filter_design:"!radio"},relation:{type:"tax",multiple:":checked"},adoptive:{type:["tax","price_range","review","stock_sale"]}},t.$form=e("#plugin-fw-wc"),t.$mainAddNewFilterButton=e("#add_new_filter"),t.$addNewFilterButtons=e(".add-new-filter"),t.$loadMoreFiltersButtons=e(".load-more-filters"),t.$filtersContainer=e(".preset-filters"),t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.$layout=e("#preset_layout"),t.$page=e("#paged"),t.$submit=e("#submit"),t.init=function(){t.initFilters(),t.initAddFilter(),t.initLoadMoreFilters(),t.initLayout(),t.initSubmit()},t.initAddFilter=function(){t.$addNewFilterButtons.on("click",(function(e){e.preventDefault(),t.addFilter()}))},t.initLoadMoreFilters=function(){t.$loadMoreFiltersButtons.on("click",(function(e){e.preventDefault(),t.loadMoreFilters()}))},t.initSubmit=function(){t.$submit.on("click",(()=>!!t.$form.get(0).reportValidity()&&(!!t.validateFilters()&&void t.block(t.$form))))},t.initLayout=function(){t.$layout.on("change","input",(()=>{t.afterLayoutChange()})).find("input").first().change()},t.initFilters=function(){t.initFiltersDragDrop(),t.$filters.each((function(){t.initFilter(e(this))}))},t.initFiltersDragDrop=function(){t.$filtersContainer.sortable({cursor:"move",handle:".yith-toggle-title",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0})},t.initFilter=function(e){e.hasClass("initialized")||(t.initFilterTitle(e),t.initFilterToggle(e),t.initFilterFieldsDependencies(e),t.initFilterFields(e),t.initFilterSave(e),t.initFilterDelete(e),t.initFilterClone(e),t.initTerms(e),t.initRanges(e),e.addClass("initialized"))},t.initFilterFields=function(e){t.initFilterTermSearch(e),t.initFilterCustomizeTerms(e),t.initTaxonomy(e),t.initFilterType(e),t.initFilterDesign(e),t.initFilterCurrencyFields(e),t.clearFilterErrors(e),t.initInvalidFields(e)},t.initFilterFieldsDependencies=function(e){e.find(":input").on("change",(()=>{t._applyFilterDependencies(e)})).first().change()},t.initFilterTermSearch=function(i){const n=i.find(".term-search").first(),r=i.find(".taxonomy").first(),o=n.closest(".yith-plugin-fw-field-wrapper"),a=function(e){return{term:e.term,all:void 0!==e.all?e.all:0,taxonomy:r.val(),selected:n.val(),action:"yith_wcan_search_term",security:yith_wcan_admin.nonce.search_term}},l={placeholder:e(this).data("placeholder"),minimumInputLength:"1",templateSelection:e=>t.removeHierarchyFromString(e.text),templateResult:e=>e.text.replace("&amp;","&"),ajax:{url:ajaxurl,dataType:"json",delay:250,data:a,processResults(t){const i=[];return t&&e.each(t,(function(e,t){i.push({id:e,text:t})})),{results:i}},cache:!0},sorter:e=>e};n.selectWoo(l),n.on("change",(()=>{t.updateTerms(i)})),o.find(".yith-plugin-fw-select-all").on("click",(function(i){return i.preventDefault(),!!t._confirmAddAllTerms(r)&&(t.block(o),e.get(ajaxurl,a({term:"",all:1})).then((i=>{let r=n.val();r||(r=[]),n.find("option").not(":selected").remove(),e.each(i,(function(t,i){r.push(t),n.append(e("<option/>",{value:t,text:i}))})),n.val(r).change(),t.unblock(o)})),!1)})),o.find(".yith-plugin-fw-deselect-all").on("click",(function(e){return e.preventDefault(),n.find("option").remove().end().val("").change(),!1}))},t.initFilterCustomizeTerms=function(e){const i=e.find(".customize-terms").find("input"),n=e.find(".order-by");i.on("change",(()=>{n.find('[value="include"]').prop("disabled",!i.is(":checked")),n.removeClass("enhanced").trigger("wc-enhanced-select-init"),!n.val()&&n.val("name"),t.updateTerms(e)})).change()},t.initTaxonomy=function(e){const i=e.find(".taxonomy").first(),n=e.find(".filter-design").first();i.on("change",(()=>{t.afterTaxonomyChange(e)})),n.on("change",(()=>{t.customizeTermsNotice(e)}))},t.initFilterType=function(t){const i=t.find(".filter-type"),n=t.find(".filter-design");i.on("change",(()=>{switch(i.val()){case"review":case"price_range":n.find('[value="color"]').remove().end().find('[value="label"]').remove();break;default:for(let t in yith_wcan_admin.supported_designs)yith_wcan_admin.supported_designs.hasOwnProperty(t)&&(n.find(`[value="${t}"]`).length||n.append(e("<option/>",{value:t,text:yith_wcan_admin.supported_designs[t]})))}n.change()})).change()},t.initFilterDesign=function(e){e.find(".filter-design").on("change",(()=>{t.updateTermFields(e,t.getTermsType(e))})).change()},t.initFilterTitle=function(e){const t=e.find(".heading-field").first(),i=e.find("h3.title");i.length&&t.length&&t.on("keyup",(()=>{const e=t.val();i.html(e||'<span class="no-title">'+yith_wcan_admin.labels.no_title+"</span>")}))},t.initFilterSave=function(e){e.find(".save").on("click",(function(i){return i.stopPropagation(),t.saveFilter(e),!1}))},t.initFilterDelete=function(e){e.find(".delete").on("click",(function(i){return i.stopPropagation(),t.removeFilter(e),!1}))},t.initFilterClone=function(e){e.find(".clone").on("click",(function(i){return i.stopPropagation(),t.cloneFilter(e),!1}))},t.initFilterToggle=function(i){i.find(".yith-toggle-title").on("click",(function(i){const n=e(i.target);if(i.preventDefault(),n.is(".yith-plugin-fw-onoff")){const e=n.prev('input[type="checkbox"]');return e.prop("checked",!e.prop("checked")),!1}const r=e(this).parent();return r.hasClass("yith-toggle-row-opened")?t.closeFilter(r):t.openFilter(r),!1}))},t.initFilterCurrencyFields=function(t){t.find("[data-currency]").each((function(){const t=e(this),i=e("<span/>",{text:t.data("currency"),class:"currency"});t.after(i)}))},t.initInvalidFields=function(i){i.find(":input").on("invalid",(n=>{const r=n.target,o=e(r);n.preventDefault(),t.goToFilter(i,o).done((()=>{t.addInputValidationMessage(o,r.validationMessage)}))}))},t.afterAddFilter=function(e){t.closeAllFilters(),t.openFilter(e),t.updateFilters(),t.maybeHideEmptyBox(t.$filtersContainer,t.$filters),t.$mainAddNewFilterButton.show(),e.trigger("yith_fields_init"),t.initFilter(e)},t.afterRemoveFilter=function(){t.updateFilters(),t.maybeShowEmptyBox(t.$filtersContainer,t.$filters),t.$filters.length||t.$mainAddNewFilterButton.hide()},t.afterTaxonomyChange=function(e){e.find(".term-search").first().find("option").remove().end().change(),t.customizeTermsNotice(e)},t.afterLayoutChange=function(){const i=t.$layout.find(":checked").val();t.$filters.each(((t,n)=>{const r=e(n),o=r.find(".show-toggle"),a=o.closest(".yith-toggle-content-row");"horizontal"===i?(o.find(":input").prop("checked",!1).removeClass("onoffchecked").change(),a.hide(),r.find(".term-tooltip").hide()):(a.show(),r.find(".term-tooltip").show())}))},t.customizeTermsNotice=function(e){const t=e.find(".taxonomy").first(),i=e.find(".filter-design").first(),n=e.find(".customize-terms").parent(),r=n.closest(".yith-toggle-content-row"),o=n.next(".description"),a=n.find("input"),l=o.find(".wccl-notice"),s=o.find(".images-notice"),c=t.data("taxonomies"),d=t.val(),f=i.val();yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?l.show():l.hide(),c[d]?.supports_images&&"label"===f?s.show():s.hide(),"color"!==f||yith_wcan_admin.yith_wccl_enabled&&c[d]?.is_attribute?r.removeClass("disabled"):(a.prop("checked",!0),r.addClass("disabled"))},t.clearFilterErrors=function(t){t.on("change keydown",":input",(function(){const t=e(this);t.hasClass("validation-error")&&(t.removeClass("validation-error").removeClass("required-field-empty"),t.next(".validation-message").remove())}))},t._findFilterField=function(e,t,i=!0){let n;switch(t){case"terms_options":n=e.find(".terms-wrapper");break;case"price_ranges":n=e.find(".ranges-wrapper");break;default:n=e.find(':input[name*="['+t+']"]')}return n.length?i?n.closest(".yith-toggle-content-row"):n:null},t._applyFilterDependencies=function(i){e.each(t.dependencies,(function(e,n){const r=t._findFilterField(i,e);t._checkFilterFieldConditions(i,n)?r?.css({display:"table"}):r?.hide()}))},t._checkFilterFieldConditions=function(i,n){let r=!0;return e.each(n,(function(e,n){let o,a;r&&(o=t._findFilterField(i,e,!1),o?.length&&(a=o.first().is('input[type="radio"]')?o.filter(":checked").val().toString():o?.val()?.toString(),r=Array.isArray(n)?n.includes(a):"function"==typeof n?n(a):0===n.indexOf(":")?o.is(n):0===n.indexOf("!:")?!o.is(n.toString().substring(1)):0===n.indexOf("!")?n.toString().substring(1)!==a:n.toString()===a,void 0!==t.dependencies[e]&&(r=r&&t._checkFilterFieldConditions(i,t.dependencies[e]))))})),r},t._confirmAddAllTerms=function(e){let t=e.val(),i=e.data("taxonomies"),n=yith_wcan_admin.messages.confirm_add_all_terms;return!(i[t]?.terms_count&&i[t]?.terms_count>1)||(n=n.replace("%s",i[t]?.terms_count),confirm(n))},t.addFilter=function(){const i=wp.template("yith-wcan-filter")({id:t.nextRowIndex()}),n=e(i);return t.$filtersContainer.append(n),t.afterAddFilter(n),n},t.removeFilter=function(e){confirm(yith_wcan_admin.messages.confirm_delete)&&t.ajaxDeleteFilter(e).done((()=>{e.remove(),t.afterRemoveFilter()}))},t.getFilterData=function(i){return t.serialize(i,(e=>e.replace(/filters\[[0-9]+]\[([a-z_-]+)]/,"$1")),((t,i)=>!e(i).is('select[name*="terms"]')))},t.populateFilter=function(i,n){for(const r in n){const o=t.getRowIndex(i),a=n[r];let l="terms"===r?`filters_${o}_term_ids`:`filters_${o}_${r}`,s=i.find(`#${l}`);if(s.length||"price_ranges"===r)if("terms"===r){const n=a;if("object"!=typeof n)continue;for(const t in n){if(!n[t]?.label)continue;const i=e("<option/>",{value:t,text:n[t]?.label,selected:!0});s.append(i)}s.change(),t.updateTerms(i,!0);for(const e in n)for(const t in n[e]){const r=`filters_${o}_terms_${e}_${t}`,a=i.find(`#${r}`);a.length&&a.val(n[e][t])}}else if("price_ranges"===r){const e=a;if("object"!=typeof e)continue;for(const n in e){const r=e[n];t.addRange(i,r.min,r.max,r.unlimited)}}else s.is(":checkbox")?s.prop("checked","yes"===a).change():s.is('[data-type="radio"]')?s.find(":input").prop("checked",!1).filter('[value="'+a+'"]').prop("checked",!0).change():"title"===r?s.val(n[r]).keyup():s.val(n[r]).change()}},t.cloneFilter=function(i){t.closeAllFilters((()=>{const n=t.addFilter(),r=t.getRowIndex(i),o=t.currentRowIndex();i.find(":input").each((function(){let i,a,l=e(this),s=l.attr("id");void 0!==s&&(a=s.replace("filters_"+r+"_","filters_"+o+"_"),i=n.find("#"+a),i.length&&(i.is('input[type="radio"]')||i.is('input[type="checkbox"]')?i.prop("checked",l.is(":checked")):i.is("select")?(i.find("option").length||l.find("option").clone().appendTo(i),i.val(l.val())):i.val(l.val()),-1===a.indexOf("color_2")||l.prop("disabled")||t.showTermAdditionalColor(i.closest(".term-box")),-1!==a.indexOf("mode")&&t.showTermTab(i.closest(".term-box"),i.val()),-1!==a.indexOf("image")&&i.val()&&i.closest(".image-selector").find(".placeholder-image").hide().end().find(".selected-image").show().append(l.closest(".image-selector").find(".selected-image").find("img").clone()),i.change().keyup()))}))}))},t.saveFilter=function(e){if(!t.validateFilter(e))return!1;t.ajaxSaveFilter(e).done((i=>{t.maybeSetPresetId(i.id),t.closeFilter(e)}))},t.isFilterOpen=function(e){return e.hasClass("yith-toggle-row-opened")},t.openFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_down"),e.addClass("yith-toggle-row-opened").find(".yith-toggle-content").slideDown().promise()},t.isFilterClosed=function(e){return!t.isFilterOpen(e)},t.closeFilter=function(e){return e.find(".yith-toggle-title").find(".title-arrow").text("keyboard_arrow_right"),e.find(".yith-toggle-content").slideUp(400,(function(){e.removeClass("yith-toggle-row-opened")})).promise()},t.closeAllFilters=function(e){t.closeFilter(t.$filters).done((()=>{"function"==typeof e&&e()}))},t.loadMoreFilters=function(){let i=t.$page.val();t.doAjax("yith_wcan_load_more_filters",{preset:t.getPresetId(),page:++i,_wpnonce:yith_wcan_admin.nonce.load_more_filters},t.$loadMoreFiltersButtons,{method:"get"}).done((n=>{if(n){if(n.filters)for(const i in n.filters){const r=n.filters[i],o=wp.template("yith-wcan-filter")({id:i}),a=e(o);t.populateFilter(a,r),t.$filtersContainer.append(a),t.afterAddFilter(a),a.find(".heading-field").keyup()}n.has_more?t.$page.val(i):(t.$loadMoreFiltersButtons.remove(),t.$page.remove(),t.$page=null),t.updateFilters()}}))},t.updateFilters=function(){t.$filters=t.$filtersContainer.find(".yith-toggle-row"),t.updateRowIndex()},t.validateFilters=function(){let i=!0;return t.$filters.each((function(){if(!i)return;let n=e(this);i=t.validateFilter(n)})),i},t.validateFilter=function(e){const i=t.$layout.find(":checked").val(),n=e.find(".filter-title"),r=n?.val();if("horizontal"===i&&!r)return t.addInputValidationMessage(n,yith_wcan_admin.messages.filter_title_required),t.goToFilter(e),!1;let o=!0;return e.find(":input").each((function(){o&&(o=this.reportValidity())})),o},t.goToFilter=function(i,n){return t.isFilterOpen(i)?(n=n||i,e("html, body").stop(!0).animate({scrollTop:n.offset().top-100}).promise()):e("html, body").stop(!0).animate({scrollTop:i.offset().top-100}).promise().done((()=>{t.openFilter(i),n&&n.length&&e("html, body").animate({scrollTop:n.offset().top-100})}))},t.getRowIndex=function(e){const t=e.data("item_key");return t?parseInt(t):0},t.updateRowIndex=function(){let i=0;t.$filters.each((function(t){const n=e(this).data("item_key");i=i<n?n:i})),t.rowIndex=i},t.nextRowIndex=function(){return t.rowIndex||t.updateRowIndex(),++t.rowIndex},t.currentRowIndex=function(){return t.rowIndex||t.updateRowIndex(),t.rowIndex},t.getTerms=function(e){return e.find(".term-box")},t.getTermsType=function(e){const t=e.find(".filter-design")?.val();return"label"!==t&&"color"!==t?"labels_only":"color"===t?"complete":"image_only"},t.initTerms=function(i){const n=i.find(".term-box"),r=i.find(".order-by");n.each((function(){t.initTerm(e(this))})),r.on("change",(function(){const n=e(this).val();t["include"===n?"initTermsDragDrop":"destroyTermsDragDrop"](i)})).change()},t.initTerm=function(e){t.initTermTabs(e),t.initTermImageSelector(e),t.initTermAdditionalColor(e)},t.initTermTabs=function(i){i.find(".term-tab-header").on("click",(function(n){const r=e(this).data("tab");n.preventDefault(),t.showTermTab(i,r)})),t.showTermTab(i,i.find(".term-mode").val())},t.initTermAdditionalColor=function(i){i.find(".term-add-second-color").on("click",(function(n){e(this);n.preventDefault(),t.showTermAdditionalColor(i)})),i.find(".term-hide-second-color").on("click",(function(n){e(this);n.preventDefault(),t.hideTermAdditionalColor(i)}))},t.initTermImageSelector=function(i){let n,r=i.find(".image-selector"),o=r.find(".placeholder-image"),a=r.find(".selected-image"),l=a.find("img"),s=r.find(".term-image"),c=a.find(".clear-image");o.off("click").on("click",(function(){t.block(o),n||(n=wp.media({title:yith_wcan_admin.labels.upload_media,button:{text:yith_wcan_admin.labels.confirm_media},multiple:!1}),n.on("select",(function(){const i=n.state().get("selection").first().toJSON();l.remove(),l=e("<img/>",{src:i.url}),a.prepend(l),s.val(i.id),t.unblock(o),o.hide(),a.show()})),n.on("close",(function(){t.unblock(o)}))),n.open()})),c.off("click").on("click",(function(e){e.preventDefault(),s.val(""),a.hide(),o.show()}))},t.initTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone"})}catch(e){}},t.destroyTermsDragDrop=function(e){try{e.find(".terms-wrapper").sortable("destroy")}catch(e){}},t.showTermTab=function(e,t,i){const n=e.find(".term-tab-header"),r=e.find(".tab"),o=r.filter(".tab-"+t);if(!o.length||!n.is(":visible")&&!i)return;const a=e.find(".term-mode");n.removeClass("active").filter('[data-tab="'+t+'"]').addClass("active"),r.hide(),o.show(),a.val(t)},t.showTermAdditionalColor=function(e){e.find(".term-add-second-color").parent().hide().next(".additional-color").show().find(".wp-color-picker").prop("disabled",!1)},t.hideTermAdditionalColor=function(e){e.find(".term-hide-second-color").parent().find(".wp-color-picker").prop("disabled",!0).end().hide().prev("p").show()},t.updateTerms=function(i,n){const r=i.find(".terms-wrapper");if(!n&&!r.is(":visible"))return;const o=t._getSelectedTerms(i),a=r.find(".term-box"),l=[];o&&e.each(o,(function(n,r){const o=a.filter('[data-term_id="'+r.id+'"]');if(o.length)l.push(o);else{const n=wp.template("yith-wcan-filter-term")({id:t.getRowIndex(i),term_id:r.id,name:r.name,label:r.name,tooltip:""}),o=e(n);l.push(o)}})),a.detach(),l.length&&e.each(l,(function(e,i){r.append(i),t.afterAddTerm(i)})),t.updateTermFields(i,t.getTermsType(i)),i.trigger("yith_fields_init")},t.updateTermFields=function(i,n){const r=i.find(".term-box");switch(n){case"complete":r.find(".term-tab-headers").show().find('a[data-tab="color"], span').show(),r.find(".tab.tab-color").show(),r.find(".tab.tab-image").show(),r.each((function(){const i=e(this);t.showTermTab(i,i.find(".term-mode").val(),!0)}));break;case"colors_only":r.find(".term-tab-headers").show().find('a[data-tab="image"], span').hide(),r.find(".tab.tab-color").show(),r.find(".tab.tab-image").hide(),t.showTermTab(r,"image",!0);break;case"image_only":r.find(".term-tab-headers").show().find('a[data-tab="color"], span').hide(),r.find(".tab.tab-color").hide(),r.find(".tab.tab-image").show(),t.showTermTab(r,"image",!0);break;case"labels_only":default:r.find(".term-tab-headers").hide(),r.find(".tab.tab-color").hide(),r.find(".tab.tab-image").hide()}},t.afterAddTerm=function(e){t.initTerm(e)},t._getSelectedTerms=function(i){const n=i.find(".term-search").first(),r=[];if(!n.length)return r;const o=n.val();return o?(e.each(o,(function(e,i){const o=n.find('option[value="'+i+'"]');o.length&&r.push({id:i,name:t.removeHierarchyFromString(o.text())})})),r):r},t.initRanges=function(i){const n=i.find(".range-box");t.initAddRange(i),t.initRangesPosition(i),t.initRangesDragDrop(i),n.each((function(){t.initRange(e(this))}))},t.initRange=function(e){t.initRangeDependencies(e),t.initRangeRemove(e)},t.initAddRange=function(e){e.find(".add-price-range").on("click",(function(i){i.preventDefault(),t.addRange(e),t.initRangesPosition(e)}))},t.initRangeRemove=function(e){e.find("a.range-remove").on("click",(i=>{const n=t.getItemFilter(e);i.preventDefault(),e.remove(),t.initRangesPosition(n)}))},t.initRangeDependencies=function(t){t.find('[name*="unlimited"]').on("change",(function(){const t=e(this),i=t.closest(".range-box").find(".max");t.is(":checked")?i.hide():i.show()})).change()},t.initRangesPosition=function(t){t.find(".range-box").each((function(){const t=e(this),i=t.find(".unlimited"),n=i.find(":input");t.is(":last-child")?i.show():(n.prop("checked",!1).change(),i.hide())}))},t.initRangesDragDrop=function(i){i.find(".ranges-wrapper").sortable({cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop(){e(this).find(".range-box").each((function(t){e(this).data("range_id",t).find(":input").attr("name",(function(){return e(this).attr("name").replace(/\[price_ranges]\[[0-9]+]/,"[price_ranges]["+t+"]")})).attr("id",(function(){return e(this).attr("id").replace(/price_ranges_[0-9]+/,"price_ranges_"+t)}))})),t.initRangesPosition(i)}})},t.addRange=function(i,n="",r="",o=!1){const a=wp.template("yith-wcan-filter-range")({id:t.getRowIndex(i),range_id:t.getNextRangeIndex(i),min:0,max:0}),l=e(a);return l.find(".min").find(":input").val(n),l.find(".max").find(":input").val(r),l.find(".unlimited").find(":input").prop("checked",o),i.find(".ranges-wrapper").append(l),t.afterAddRange(l),l},t.afterAddRange=function(e){t.initRange(e)},t.getNextRangeIndex=function(e){let t=e.find(".ranges-wrapper"),i=t.data("index"),n=0;return i||(i=t.find(".range-box").length),n=++i,t.data("index",n),n},t.ajaxSaveFilter=function(i){const n=t.getPresetId(),r=t.getFilterData(i),o=i.attr("id").replace("filter_","");return r.terms_order=t.getTerms(i).toArray().map((t=>e(t).data("term_id"))),t.doAjax("yith_wcan_save_preset_filter",{preset:n,filter:r,filter_id:o,_wpnonce:yith_wcan_admin.nonce.save_preset_filter},i)},t.ajaxDeleteFilter=function(e){const i=t.getPresetId();if(!i)return jQuery.Deferred().resolve();const n=e.attr("id").replace("filter_","");return t.doAjax("yith_wcan_delete_preset_filter",{preset:i,filter_id:n,_wpnonce:yith_wcan_admin.nonce.delete_preset_filter})},t.doAjax=function(i,n,r,o){n||(n={}),n.action=i;let a={beforeSend:()=>{r&&r.length&&t.block(r)},complete:()=>{r&&r.length&&t.unblock(r)},data:n,method:"post",dataType:"json",url:ajaxurl};return o&&(a=e.extend(a,o)),e.ajax(a)},t.getItemFilter=function(e){return e.closest(".yith-toggle-row")},t.maybeShowEmptyBox=function(e,i){const n=e.children(".yith-wcan-admin-no-post");!n.length||n.is(":visible")||i.length||t.$loadMoreFiltersButtons.length||n.show()},t.maybeHideEmptyBox=function(e,t){const i=e.children(".yith-wcan-admin-no-post");i.length&&i.is(":visible")&&t.length&&i.hide()},t.block=function(t){void 0!==e.fn.block&&t.block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},t.unblock=function(t){void 0!==e.fn.unblock&&t.unblock()},t.serialize=function(t,i,n){let r={},o=t.find(":input").not("[disabled]");return"function"==typeof n&&(o=o.filter(n)),o.each((function(){let t,n=e(this),o=n.attr("name");if(o&&(o=o.replace(/^(.*)\[]$/,"$1"),"function"==typeof i&&(o=i(o)),(!n.is('[type="checkbox"]')||n.is(":checked"))&&(!n.is('[type="radio"]')||n.is(":checked"))))if(t=n.val(),-1!==o.indexOf("[")){const i=o.split("[").map((e=>e.replace(/[\[, \]]/g,""))),n=i.shift(),a=i.reverse().reduce(((e,t)=>({[t]:e})),t);void 0===r[n]?r[n]=a:r[n]=e.extend(!0,r[n],a)}else r[o]=t})),r},t.getPresetId=function(){return e("#preset_id").val()},t.maybeSetPresetId=function(i){!t.getPresetId()&&i&&e("#preset_id").val(i)},t.removeHierarchyFromString=function(e){return e.replace(/^(.*>)([^>]+)$/,"$2").replace("&amp;","&").trim()},t.addInputValidationMessage=function(t,i){const n=e("<span/>",{class:"validation-message",text:i});t.addClass("required-field-empty").addClass("validation-error").next(".validation-message").remove().end().after(n)},t.init()}
assets/js/yith-wcan-shortcodes.js CHANGED
@@ -106,6 +106,13 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
106
  $('.woocommerce-ordering').on('change', 'select.orderby', function () {
107
  $(this).closest('form').submit();
108
  });
 
 
 
 
 
 
 
109
  $(window).trigger('scroll');
110
  $(document).trigger('yith-wcan-ajax-filtered', [response, filters]).trigger('yith_wcwl_reload_fragments');
111
  } // build url to show
@@ -258,7 +265,10 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
258
  }
259
 
260
  params = $.extend({
261
- url: url
 
 
 
262
  }, params);
263
  this.xhr = $.ajax(params);
264
  return this.xhr;
@@ -301,7 +311,16 @@ var YITH_WCAN_Filter = /*#__PURE__*/function () {
301
  }, {
302
  key: "isFilterParam",
303
  value: function isFilterParam(param) {
304
- var supportedParams = ['rating_filter', 'min_price', 'max_price', 'price_ranges', 'onsale_filter', 'instock_filter', 'featured_filter', 'orderby', 'product-page', yith_wcan_shortcodes.query_param].concat(yith_wcan_shortcodes.supported_taxonomies.map(function (i) {
 
 
 
 
 
 
 
 
 
305
  return i.replace('pa_', 'filter_');
306
  }));
307
 
@@ -1391,6 +1410,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1391
 
1392
  $toggle.off('click').on('click', function (ev) {
1393
  ev.stopPropagation();
 
1394
  $target.slideToggle(400, function () {
1395
  $container.toggleClass('opened').toggleClass('closed');
1396
  });
@@ -1547,12 +1567,22 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1547
  } // close all collpasable before showing modal
1548
 
1549
  }, {
1550
- key: "_closeAllCollapsables",
1551
- value: function _closeAllCollapsables() {
1552
  var _this5 = this;
1553
 
1554
  this.$filters.not('.no-title').not(function (i, v) {
1555
  return _this5.isFilterActive($(v));
 
 
 
 
 
 
 
 
 
 
1556
  }).find('.filter-content').hide().end().find('.filter-title').addClass('closed').removeClass('opened');
1557
  } // update status change flag, if filters have changed
1558
 
@@ -1590,13 +1620,13 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1590
  value: function filter() {
1591
  var _window,
1592
  _filter$doFilter,
1593
- _this6 = this;
1594
 
1595
  var filter = (_window = window) === null || _window === void 0 ? void 0 : _window.product_filter;
1596
  filter === null || filter === void 0 ? void 0 : (_filter$doFilter = filter.doFilter(this.getFiltersProperties(), this.target, this.preset)) === null || _filter$doFilter === void 0 ? void 0 : _filter$doFilter.done(function () {
1597
- var newPreset = $(_this6.preset);
1598
 
1599
- if (!_this6.isMobile && newPreset.length && yith_wcan_shortcodes.scroll_top) {
1600
  var targetOffset = newPreset.offset().top;
1601
 
1602
  if (!!yith_wcan_shortcodes.scroll_target) {
@@ -1610,8 +1640,8 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1610
  } // register new filters, clear status flag
1611
 
1612
 
1613
- _this6.originalFilters = _this6.getFiltersProperties();
1614
- _this6.dirty = false;
1615
  });
1616
 
1617
  if (this.isMobile) {
@@ -1674,11 +1704,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1674
  break;
1675
 
1676
  case 'price_slider':
1677
- var min = parseFloat($filter.find('.price-slider').data('min')),
 
1678
  max = parseFloat($filter.find('.price-slider').data('max')),
1679
  currentMin = parseFloat($filter.find('.price-slider-min').val()),
1680
  currentMax = parseFloat($filter.find('.price-slider-max').val());
1681
- active = currentMin > min || currentMax < max;
1682
  break;
1683
 
1684
  case 'orderby':
@@ -1940,7 +1971,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1940
  }, {
1941
  key: "maybeShowClearFilter",
1942
  value: function maybeShowClearFilter($filter) {
1943
- var _this7 = this;
1944
 
1945
  if (!this.isFilterActive($filter) || !yith_wcan_shortcodes.show_clear_filter) {
1946
  return;
@@ -1956,12 +1987,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1956
  }).prependTo($filter.find('.filter-content')).on('click', function (ev) {
1957
  ev.preventDefault();
1958
 
1959
- _this7.deactivateFilter($filter, false, yith_wcan_shortcodes.instant_filters);
1960
 
1961
- _this7.maybeHideClearFilter($filter);
1962
 
1963
  if (yith_wcan_shortcodes.instant_filters) {
1964
- _this7.closeModal();
1965
  }
1966
  });
1967
  } // show clearAll anchor, when on mobile layout
@@ -1969,7 +2000,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1969
  }, {
1970
  key: "maybeShowClearAllFilters",
1971
  value: function maybeShowClearAllFilters() {
1972
- var _this8 = this;
1973
 
1974
  if (!this.isAnyFilterActive() || !this.isMobile) {
1975
  return;
@@ -1985,12 +2016,12 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
1985
  }).prependTo(this.$preset.find('.filters-container')).on('click', function (ev) {
1986
  ev.preventDefault();
1987
 
1988
- _this8.deactivateAllFilters(yith_wcan_shortcodes.instant_filters);
1989
 
1990
- _this8.maybeHideClearAllFilters();
1991
 
1992
  if (yith_wcan_shortcodes.instant_filters) {
1993
- _this8.closeModal();
1994
  }
1995
  });
1996
  } // hide clear selection anchor
@@ -2036,7 +2067,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
2036
  $dropdown.find('option').each(function () {
2037
  var $option = $(this);
2038
 
2039
- if ($option.val() === properties[taxonomy]) {
2040
  $option.prop('selected', false);
2041
  }
2042
  });
@@ -2054,7 +2085,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
2054
  value;
2055
  value = $label.length ? $label.find(':input').val() : $anchor.data('term-slug');
2056
 
2057
- if (value === properties[taxonomy]) {
2058
  $item.children('label').children('a').click();
2059
  $item.removeClass('active');
2060
  }
@@ -2220,25 +2251,29 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
2220
  }, {
2221
  key: "openModal",
2222
  value: function openModal() {
2223
- var _this9 = this;
2224
 
2225
  if (!this.isMobile) {
2226
  return;
2227
  }
2228
 
2229
- this._closeAllCollapsables();
 
 
 
 
2230
 
2231
  $('body').css('overflow', 'hidden').addClass('yith-wcan-preset-modal-open');
2232
  this.$preset.show();
2233
  setTimeout(function () {
2234
- _this9.$preset.addClass('open');
2235
  }, 100);
2236
  } // close filters modal, when in mobile layout
2237
 
2238
  }, {
2239
  key: "closeModal",
2240
  value: function closeModal() {
2241
- var _this10 = this;
2242
 
2243
  if (!this.isMobile) {
2244
  return;
@@ -2246,7 +2281,7 @@ var YITH_WCAN_Preset = /*#__PURE__*/function () {
2246
 
2247
  this.$preset.removeClass('open');
2248
  setTimeout(function () {
2249
- _this10.$preset.hide();
2250
 
2251
  $('body').css('overflow', 'auto').removeClass('yith-wcan-preset-modal-open');
2252
  }, 300);
106
  $('.woocommerce-ordering').on('change', 'select.orderby', function () {
107
  $(this).closest('form').submit();
108
  });
109
+
110
+ if (filters && !!Object.keys(filters).length) {
111
+ $('body').addClass('filtered');
112
+ } else {
113
+ $('body').removeClass('filtered');
114
+ }
115
+
116
  $(window).trigger('scroll');
117
  $(document).trigger('yith-wcan-ajax-filtered', [response, filters]).trigger('yith_wcwl_reload_fragments');
118
  } // build url to show
265
  }
266
 
267
  params = $.extend({
268
+ url: url,
269
+ headers: {
270
+ 'X-YITH-WCAN': 1
271
+ }
272
  }, params);
273
  this.xhr = $.ajax(params);
274
  return this.xhr;
311
  }, {
312
  key: "isFilterParam",
313
  value: function isFilterParam(param) {
314
+ var supportedParams = ['rating_filter', 'min_price', 'max_price', 'price_ranges', 'onsale_filter', 'instock_filter', 'featured_filter', 'orderby', 'product-page', yith_wcan_shortcodes.query_param],
315
+ customParams; // filter properties
316
+
317
+ customParams = $(document).triggerHandler('yith_wcan_supported_filters_parameters', [supportedParams]);
318
+
319
+ if (!!customParams) {
320
+ supportedParams = customParams;
321
+ }
322
+
323
+ supportedParams = supportedParams.concat(yith_wcan_shortcodes.supported_taxonomies.map(function (i) {
324
  return i.replace('pa_', 'filter_');
325
  }));
326
 
1410
 
1411
  $toggle.off('click').on('click', function (ev) {
1412
  ev.stopPropagation();
1413
+ ev.preventDefault();
1414
  $target.slideToggle(400, function () {
1415
  $container.toggleClass('opened').toggleClass('closed');
1416
  });
1567
  } // close all collpasable before showing modal
1568
 
1569
  }, {
1570
+ key: "_openAllCollapsables",
1571
+ value: function _openAllCollapsables() {
1572
  var _this5 = this;
1573
 
1574
  this.$filters.not('.no-title').not(function (i, v) {
1575
  return _this5.isFilterActive($(v));
1576
+ }).find('.filter-content').show().end().find('.filter-title').removeClass('closed').addClass('opened');
1577
+ } // close all collpasable before showing modal
1578
+
1579
+ }, {
1580
+ key: "_closeAllCollapsables",
1581
+ value: function _closeAllCollapsables() {
1582
+ var _this6 = this;
1583
+
1584
+ this.$filters.not('.no-title').not(function (i, v) {
1585
+ return _this6.isFilterActive($(v));
1586
  }).find('.filter-content').hide().end().find('.filter-title').addClass('closed').removeClass('opened');
1587
  } // update status change flag, if filters have changed
1588
 
1620
  value: function filter() {
1621
  var _window,
1622
  _filter$doFilter,
1623
+ _this7 = this;
1624
 
1625
  var filter = (_window = window) === null || _window === void 0 ? void 0 : _window.product_filter;
1626
  filter === null || filter === void 0 ? void 0 : (_filter$doFilter = filter.doFilter(this.getFiltersProperties(), this.target, this.preset)) === null || _filter$doFilter === void 0 ? void 0 : _filter$doFilter.done(function () {
1627
+ var newPreset = $(_this7.preset);
1628
 
1629
+ if (!_this7.isMobile && newPreset.length && yith_wcan_shortcodes.scroll_top) {
1630
  var targetOffset = newPreset.offset().top;
1631
 
1632
  if (!!yith_wcan_shortcodes.scroll_target) {
1640
  } // register new filters, clear status flag
1641
 
1642
 
1643
+ _this7.originalFilters = _this7.getFiltersProperties();
1644
+ _this7.dirty = false;
1645
  });
1646
 
1647
  if (this.isMobile) {
1704
  break;
1705
 
1706
  case 'price_slider':
1707
+ var step = parseFloat($filter.find('.price-slider').data('step')),
1708
+ min = parseFloat($filter.find('.price-slider').data('min')),
1709
  max = parseFloat($filter.find('.price-slider').data('max')),
1710
  currentMin = parseFloat($filter.find('.price-slider-min').val()),
1711
  currentMax = parseFloat($filter.find('.price-slider-max').val());
1712
+ active = Math.abs(currentMin - min) >= step || Math.abs(currentMax - max) >= step;
1713
  break;
1714
 
1715
  case 'orderby':
1971
  }, {
1972
  key: "maybeShowClearFilter",
1973
  value: function maybeShowClearFilter($filter) {
1974
+ var _this8 = this;
1975
 
1976
  if (!this.isFilterActive($filter) || !yith_wcan_shortcodes.show_clear_filter) {
1977
  return;
1987
  }).prependTo($filter.find('.filter-content')).on('click', function (ev) {
1988
  ev.preventDefault();
1989
 
1990
+ _this8.deactivateFilter($filter, false, yith_wcan_shortcodes.instant_filters);
1991
 
1992
+ _this8.maybeHideClearFilter($filter);
1993
 
1994
  if (yith_wcan_shortcodes.instant_filters) {
1995
+ _this8.closeModal();
1996
  }
1997
  });
1998
  } // show clearAll anchor, when on mobile layout
2000
  }, {
2001
  key: "maybeShowClearAllFilters",
2002
  value: function maybeShowClearAllFilters() {
2003
+ var _this9 = this;
2004
 
2005
  if (!this.isAnyFilterActive() || !this.isMobile) {
2006
  return;
2016
  }).prependTo(this.$preset.find('.filters-container')).on('click', function (ev) {
2017
  ev.preventDefault();
2018
 
2019
+ _this9.deactivateAllFilters(yith_wcan_shortcodes.instant_filters);
2020
 
2021
+ _this9.maybeHideClearAllFilters();
2022
 
2023
  if (yith_wcan_shortcodes.instant_filters) {
2024
+ _this9.closeModal();
2025
  }
2026
  });
2027
  } // hide clear selection anchor
2067
  $dropdown.find('option').each(function () {
2068
  var $option = $(this);
2069
 
2070
+ if ($option.val().toString() === properties[taxonomy].toString()) {
2071
  $option.prop('selected', false);
2072
  }
2073
  });
2085
  value;
2086
  value = $label.length ? $label.find(':input').val() : $anchor.data('term-slug');
2087
 
2088
+ if (value.toString() === properties[taxonomy].toString()) {
2089
  $item.children('label').children('a').click();
2090
  $item.removeClass('active');
2091
  }
2251
  }, {
2252
  key: "openModal",
2253
  value: function openModal() {
2254
+ var _this10 = this;
2255
 
2256
  if (!this.isMobile) {
2257
  return;
2258
  }
2259
 
2260
+ if (yith_wcan_shortcodes.toggles_open_on_modal) {
2261
+ this._openAllCollapsables();
2262
+ } else {
2263
+ this._closeAllCollapsables();
2264
+ }
2265
 
2266
  $('body').css('overflow', 'hidden').addClass('yith-wcan-preset-modal-open');
2267
  this.$preset.show();
2268
  setTimeout(function () {
2269
+ _this10.$preset.addClass('open');
2270
  }, 100);
2271
  } // close filters modal, when in mobile layout
2272
 
2273
  }, {
2274
  key: "closeModal",
2275
  value: function closeModal() {
2276
+ var _this11 = this;
2277
 
2278
  if (!this.isMobile) {
2279
  return;
2281
 
2282
  this.$preset.removeClass('open');
2283
  setTimeout(function () {
2284
+ _this11.$preset.hide();
2285
 
2286
  $('body').css('overflow', 'auto').removeClass('yith-wcan-preset-modal-open');
2287
  }, 300);
assets/js/yith-wcan-shortcodes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/config.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-filter.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-reset-button.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-dropdown.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-preset.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/index.js"],"names":["$","jQuery","YITH_WCAN_Filter","location","search","head","html","pageTitle","document","title","alternativeUrl","searchAlternativeUrl","doingAjax","initialized","yith_wcan_shortcodes","ajax_filters","pushUrlToHistory","filters","target","preset","targetUrl","$target","customFilters","triggerHandler","block","buildUrl","window","_doAjax","done","response","_beforeFilter","refreshFragments","unblock","_afterFilter","trigger","on","closest","submit","queryParam","query_param","params","url","base_url","origin","pathname","self","haveFilters","Object","keys","length","session_param","replace","RegExp","originalSearch","searchParams","split","reduce","a","v","items","isFilterParam","i","_cleanParam","defaultUrl","matches","indexOf","match","change_browser_url","navigator","userAgent","history","pushState","responseDom","createElement","$response","innerHTML","$preset","$destination","find","replaceWith","first","content","param","process_sanitize","skip_sanitize","encodeURIComponent","xhr","abort","$el","background","loader","message","overlayCSS","opacity","supportedParams","concat","supported_taxonomies","map","YITH_WCAN_Reset_Button","el","$reset","ev","preventDefault","each","data","deactivateAllFilters","closeModal","addClass","YITH_WCAN_Dropdown","opts","$originalSelect","is","defaultPerPage","defaultOrder","defaultAll","defaults","showSearch","paginate","perPage","order","getElements","labels","emptyLabel","empty_option","searchPlaceholder","search_placeholder","noItemsFound","no_items","showMore","show_more","options","_hideSelect","_initTemplate","_initActions","hide","$mainSpan","$labelSpan","getLabel","$dropdownSpan","$matchingItemsList","append","_initSearchTemplate","_initShowMoreTemplate","after","$_main","$_label","$_dropdown","$_items","$dropdwonSpan","$container","$search","name","type","placeholder","prependTo","$_search","$showMore","text","loadNextPage","bind","$_showMore","stopPropagation","toggleDropdown","_populateItems","$li","value","isActive","hasClass","isValueSelected","toggleClass","_changeItemStatus","siblings","removeClass","input","parent","prop","change","selfOriginated","_selectItem","_deselectItem","updateLabel","closeDropdown","_afterDropdownOpen","dropdowns","filter","select","_closeOtherDropdowns","val","limit","matchingElements","$options","getOptions","promise","Promise","resolve","t","label","regex","show","test","push","then","retrievedElements","_formatItems","indexes","hasMore","sort","b","mod","slice","active","option","getOptionByValue","$item","attr","$anchor","template","count","href","$checkbox","$label","prepend","page","parseInt","getMatchingElements","resultSet","matchingItems","_emptyItems","_hideLoadMore","currentPage","unshift","_generateItem","_showLoadMore","status","$option","hasSelectedValues","getSelectedLabels","join","getSelectedOptions","found","getSelectedValues","toString","values","YITH_WCAN_Preset","_regiterStatus","_initFilterButton","_initResponsive","_initFilters","getFilters","$filter","_initFilter","maybeShowClearAllFilters","$filterButtons","modal_on_mobile","media","matchMedia","mobile_media_query","isMobile","_afterLayoutChange","resize","handleChange","$currentFilter","multiple","$items","not","children","activeFilters","maybeFilter","maybeToggleClearAllFilters","maybeToggleClearFilter","delegateTarget","call","$input","_initTooltip","_initPriceSlider","_initDropdown","_initCollapsable","maybeShowClearFilter","_initCustomInput","position","th","tooltip","wrapperWidth","outerWidth","left","width","container","css","toFixed","fadeIn","fadeOut","remove","$dropdown","selectWoo","_initDropdownObject","terms_per_page","$minInput","$maxInput","min","parseFloat","max","currentMin","currentMax","step","handleSliderChange","sliderTimeout","clearTimeout","setTimeout","ionRangeSlider","skin","from","to","min_interval","values_separator","prettify","formatPrice","onChange","onFinish","add","off","_initTitleCollapsable","_initHierarchyCollapsable","$title","_initToggle","parents","show_current_children","$t","$toggle","appendTo","slideToggle","containerClass","wrap","originalFilters","getFiltersProperties","_addCloseModalButton","_addApplyFiltersModalButton","_switchToCollapsables","removeAttr","_removeCloseModalButton","_removeApplyFiltersModalButton","_switchBackCollapsables","$closeButton","close","modalElements","closeButton","$filterButton","show_results","applyFiltersButton","removeData","$filters","isFilterActive","end","currentFilters","currentStr","JSON","stringify","originalStr","dirty","$initiator","maybeRegisterStatusChange","instant_filters","product_filter","doFilter","newPreset","scroll_top","targetOffset","offset","top","scroll_target","scrollTarget","animate","scrollTop","getActiveFilters","filterType","filteredActive","properties","filteredProperties","$active","activeTerms","taxonomy","isAttr","relation","get","pop","glue","rating_filter","price_ranges","min_price","max_price","onsale_filter","instock_filter","featured_filter","orderby","filterProperties","getFilterProperties","mergeProperties","hasProp","includes","maybeHideClearFilter","isAnyFilterActive","maybeHideClearAllFilters","show_clear_filter","clear_selection","role","deactivateFilter","clear_all_selections","$activeItems","click","formattedRange","$priceSlider","getFiltersByProperties","_closeAllCollapsables","price","accounting","formatMoney","symbol","currency_format","decimal","thousand","precision","format","set1","set2","hasOwnProperty","newValue","index","arr","queryTypeParam","globalThis"],"mappings":"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","file":"yith-wcan-shortcodes.js","sourcesContent":["'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nconst $ = jQuery; // we can do this as WebPack will compact all together inside a closure.\n\nexport { $ };\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Filter {\n\t// currently executing xhr\n\txhr = null;\n\n\t// flag set during ajax call handling\n\tdoingAjax = false;\n\n\t// register original url search param\n\toriginalSearch = location.search;\n\n\t// flag set once init has executed\n\tinitialized = false;\n\n\t// init object\n\tconstructor() {\n\t\tconst head = $( 'head' ).html(),\n\t\t\tpageTitle = document.title,\n\t\t\talternativeUrl = this.searchAlternativeUrl( head );\n\n\t\talternativeUrl &&\n\t\t\t! this.doingAjax &&\n\t\t\t! this.initialized &&\n\t\t\t! yith_wcan_shortcodes.ajax_filters &&\n\t\t\tthis.pushUrlToHistory( alternativeUrl, pageTitle );\n\n\t\tthis.initialized = true;\n\t}\n\n\t// execute call to filter products in current view\n\tdoFilter( filters, target, preset ) {\n\t\tlet targetUrl,\n\t\t\t$target = target ? $( target ) : $( 'body' ),\n\t\t\tcustomFilters;\n\n\t\t// filter properties\n\t\tcustomFilters = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );\n\n\t\tif ( !! customFilters ) {\n\t\t\tfilters = customFilters;\n\t\t}\n\n\t\t// block elements before filtering\n\t\t$target && this.block( $target );\n\n\t\t// calculate target url\n\t\ttargetUrl = this.buildUrl( filters );\n\n\t\t// if no ajax, simply change page url\n\t\tif ( ! yith_wcan_shortcodes.ajax_filters ) {\n\t\t\twindow.location = targetUrl;\n\t\t\treturn;\n\t\t}\n\n\t\t// start doing ajax\n\t\tthis.doingAjax = true;\n\n\t\treturn this._doAjax( targetUrl ).done( ( response ) => {\n\t\t\ttargetUrl = this.searchAlternativeUrl( response, targetUrl );\n\n\t\t\tthis._beforeFilter( response, filters );\n\n\t\t\tthis.refreshFragments( target, preset, response );\n\t\t\tthis.pushUrlToHistory( targetUrl, response.pageTitle );\n\n\t\t\t$target && this.unblock( $target );\n\n\t\t\tthis._afterFilter( response, filters );\n\n\t\t\tthis.doingAjax = false;\n\t\t} );\n\t}\n\n\t// actions performed before filter\n\t_beforeFilter( response, filters ) {\n\t\t$( document ).trigger( 'yith-wcan-ajax-loading', [\n\t\t\tresponse,\n\t\t\tfilters,\n\t\t] );\n\t}\n\n\t// actions performed after filter\n\t_afterFilter( response, filters ) {\n\t\t$( '.woocommerce-ordering' ).on(\n\t\t\t'change',\n\t\t\t'select.orderby',\n\t\t\tfunction () {\n\t\t\t\t$( this ).closest( 'form' ).submit();\n\t\t\t}\n\t\t);\n\n\t\t$( window ).trigger( 'scroll' );\n\n\t\t$( document )\n\t\t\t.trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )\n\t\t\t.trigger( 'yith_wcwl_reload_fragments' );\n\t}\n\n\t// build url to show\n\tbuildUrl( filters ) {\n\t\tlet queryParam = yith_wcan_shortcodes.query_param,\n\t\t\tparams = {},\n\t\t\tlocation = window.location,\n\t\t\turl = !! yith_wcan_shortcodes.base_url\n\t\t\t\t? yith_wcan_shortcodes.base_url\n\t\t\t\t: location?.origin + location?.pathname,\n\t\t\tsearch = '',\n\t\t\tself = this;\n\n\t\tconst haveFilters =\n\t\t\ttypeof filters === 'object' && Object.keys( filters ).length;\n\n\t\t// remove filter session from current url, if any\n\t\tif ( !! yith_wcan_shortcodes.session_param ) {\n\t\t\turl = url.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t'/' + yith_wcan_shortcodes.session_param + '/[^/]*/'\n\t\t\t\t),\n\t\t\t\t''\n\t\t\t);\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams[ queryParam ] = 1;\n\t\t}\n\n\t\tif ( !! this.originalSearch ) {\n\t\t\tconst searchParams = this.originalSearch\n\t\t\t\t.replace( '?', '' )\n\t\t\t\t.split( '&' )\n\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\tconst items = v.split( '=' );\n\n\t\t\t\t\tif ( items.length === 2 ) {\n\t\t\t\t\t\tif ( this.isFilterParam( items[ 0 ] ) ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta[ items[ 0 ] ] = items[ 1 ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn a;\n\t\t\t\t}, {} );\n\n\t\t\tparams = $.extend( params, searchParams );\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams = $.extend( params, filters );\n\t\t}\n\n\t\tsearch = Object.keys( params )\n\t\t\t.reduce( function ( a, i ) {\n\t\t\t\tconst v = params[ i ];\n\n\t\t\t\tif ( ! v || ! i ) {\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\n\t\t\t\ta += self._cleanParam( i ) + '=' + self._cleanParam( v ) + '&';\n\n\t\t\t\treturn a;\n\t\t\t}, '?' )\n\t\t\t.replace( /&$/g, '' )\n\t\t\t.replace( /%2B/g, '+' )\n\t\t\t.replace( /%2C/g, ',' );\n\n\t\tif ( search.length > 1 ) {\n\t\t\turl += search;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t// retrieves alternative sharing url in response body\n\tsearchAlternativeUrl( response, defaultUrl = '' ) {\n\t\tlet url = defaultUrl,\n\t\t\tmatches;\n\n\t\tif ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tmatches = response.match(\n\t\t\t/<meta name=\"yith_wcan:sharing_url\" content=\"([^\"]*)\">/\n\t\t);\n\t\turl = matches && 1 in matches ? matches[ 1 ] : url;\n\n\t\treturn url;\n\t}\n\n\t// push url to browser history\n\tpushUrlToHistory( url, title ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes.change_browser_url ||\n\t\t\tnavigator.userAgent.match( /msie/i )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.history.pushState(\n\t\t\t{\n\t\t\t\tpageTitle: title,\n\t\t\t},\n\t\t\t'',\n\t\t\turl\n\t\t);\n\t}\n\n\t// replaces elements in the page with refreshed ones\n\trefreshFragments( target, preset, response ) {\n\t\tconst responseDom = document.createElement( 'html' ),\n\t\t\t$response = $( responseDom );\n\n\t\tresponseDom.innerHTML = response;\n\n\t\tif ( target ) {\n\t\t\tlet $preset = $( preset ),\n\t\t\t\t$target = $( target ),\n\t\t\t\t$destination;\n\n\t\t\tif ( $preset.length ) {\n\t\t\t\t$destination = $response.find( preset );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$preset.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $target.length ) {\n\t\t\t\t$destination = $response.find( target );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$target.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst content = $( yith_wcan_shortcodes.content );\n\n\t\t\tif ( content.length ) {\n\t\t\t\tcontent.replaceWith(\n\t\t\t\t\t$response.find( yith_wcan_shortcodes.content )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t$( 'body' ).replaceWith( $response.find( 'body' ) );\n\t\t\t}\n\t\t}\n\n\t\t$( document ).trigger( 'yith_wcan_init_shortcodes' );\n\t}\n\n\t// clean url parameters\n\t_cleanParam( param ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes?.process_sanitize ||\n\t\t\tyith_wcan_shortcodes?.skip_sanitize\n\t\t) {\n\t\t\treturn param;\n\t\t}\n\n\t\treturn encodeURIComponent( param );\n\t}\n\n\t// executes Ajax calls\n\t_doAjax( url, params ) {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tparams = $.extend(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t},\n\t\t\tparams\n\t\t);\n\n\t\tthis.xhr = $.ajax( params );\n\n\t\treturn this.xhr;\n\t}\n\n\t// block dom elements\n\tblock( $el ) {\n\t\tif ( typeof $.fn.block === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet background = '#fff center center no-repeat';\n\n\t\tif ( yith_wcan_shortcodes?.loader ) {\n\t\t\tbackground = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;\n\t\t}\n\n\t\t$el.block( {\n\t\t\tmessage: null,\n\t\t\toverlayCSS: {\n\t\t\t\tbackground,\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t} );\n\t}\n\n\t// unblock dom elements\n\tunblock( $el ) {\n\t\tif ( typeof $.fn.unblock === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$el.unblock();\n\t}\n\n\t// checks if param is one used by layared nav to filter products.\n\tisFilterParam( param ) {\n\t\tlet supportedParams = [\n\t\t\t'rating_filter',\n\t\t\t'min_price',\n\t\t\t'max_price',\n\t\t\t'price_ranges',\n\t\t\t'onsale_filter',\n\t\t\t'instock_filter',\n\t\t\t'featured_filter',\n\t\t\t'orderby',\n\t\t\t'product-page',\n\t\t\tyith_wcan_shortcodes.query_param,\n\t\t].concat(\n\t\t\tyith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>\n\t\t\t\ti.replace( 'pa_', 'filter_' )\n\t\t\t)\n\t\t);\n\n\t\tif ( -1 !== supportedParams.indexOf( param ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'filter_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'query_type_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Reset_Button {\n\t// current button\n\t$reset = null;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// current button\n\t\tthis.$reset = el;\n\n\t\tthis.$reset.on( 'click', function ( ev ) {\n\t\t\tev.preventDefault();\n\n\t\t\t$( '.yith-wcan-filters' ).each( function () {\n\t\t\t\tconst preset = $( this ).data( 'preset' );\n\n\t\t\t\tpreset.deactivateAllFilters( true );\n\t\t\t\tpreset.closeModal();\n\t\t\t} );\n\t\t} );\n\n\t\tthis.$reset.data( 'reset', this ).addClass( 'enhanced' );\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Dropdown {\n\t// current button\n\t$originalSelect = null;\n\n\t// main element\n\t$_main = null;\n\n\t// label element\n\t$_label = null;\n\n\t// dropdown\n\t$_dropdown = null;\n\n\t// search input\n\t$_search = null;\n\n\t// show more link\n\t$_showMore = null;\n\n\t// items list\n\t$_items = null;\n\n\t// current page\n\tcurrentPage = 1;\n\n\t// options\n\toptions = {};\n\n\t// init object\n\tconstructor( el, opts ) {\n\t\tthis.$originalSelect = el;\n\n\t\tif ( ! this.$originalSelect.is( 'select' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPerPage = this.$originalSelect.data( 'per_page' ),\n\t\t\tdefaultOrder = this.$originalSelect.data( 'order' ),\n\t\t\tdefaultAll = this.$originalSelect.data( 'all-label' ),\n\t\t\tdefaults = {\n\t\t\t\tshowSearch: this.$originalSelect.data( 'show_search' ),\n\t\t\t\tpaginate: this.$originalSelect.data( 'paginate' ),\n\t\t\t\tperPage: defaultPerPage ? defaultPerPage : 10,\n\t\t\t\torder: defaultOrder ? defaultOrder : 'ASC',\n\t\t\t\tgetElements: null,\n\t\t\t\tlabels: {\n\t\t\t\t\temptyLabel: defaultAll\n\t\t\t\t\t\t? defaultAll\n\t\t\t\t\t\t: yith_wcan_shortcodes.labels.empty_option,\n\t\t\t\t\tsearchPlaceholder:\n\t\t\t\t\t\tyith_wcan_shortcodes.labels.search_placeholder,\n\t\t\t\t\tnoItemsFound: yith_wcan_shortcodes.labels.no_items,\n\t\t\t\t\tshowMore: yith_wcan_shortcodes.labels.show_more,\n\t\t\t\t},\n\t\t\t};\n\n\t\tthis.options = $.extend( defaults, opts );\n\n\t\tthis._hideSelect();\n\t\tthis._initTemplate();\n\t\tthis._initActions();\n\n\t\tthis.$originalSelect.data( 'dropdown', this ).addClass( 'enhanced' );\n\t}\n\n\t// hide select\n\t_hideSelect() {\n\t\tthis.$originalSelect.hide();\n\t}\n\n\t// create dropdown\n\t_initTemplate() {\n\t\tconst $mainSpan = $( '<div/>', {\n\t\t\t\tclass: 'yith-wcan-dropdown closed',\n\t\t\t} ),\n\t\t\t$labelSpan = $( '<div/>', {\n\t\t\t\tclass: 'dropdown-label',\n\t\t\t\thtml: this.getLabel(),\n\t\t\t} ),\n\t\t\t$dropdownSpan = $( '<div>', {\n\t\t\t\tclass: 'dropdown-wrapper',\n\t\t\t} ),\n\t\t\t$matchingItemsList = $( '<ul/>', {\n\t\t\t\tclass: 'matching-items filter-items',\n\t\t\t} );\n\n\t\t$dropdownSpan.append( $matchingItemsList );\n\t\t$mainSpan.append( $labelSpan ).append( $dropdownSpan );\n\n\t\tif ( this.options.showSearch ) {\n\t\t\tthis._initSearchTemplate( $dropdownSpan );\n\t\t}\n\n\t\tif ( this.options.paginate ) {\n\t\t\tthis._initShowMoreTemplate( $dropdownSpan );\n\t\t}\n\n\t\tthis.$originalSelect.after( $mainSpan );\n\t\tthis.$_main = $mainSpan;\n\t\tthis.$_label = $labelSpan;\n\t\tthis.$_dropdown = $dropdownSpan;\n\t\tthis.$_items = $matchingItemsList;\n\t}\n\n\t// create search field\n\t_initSearchTemplate( $dropdwonSpan ) {\n\t\tconst $container = $( '<div/>', {\n\t\t\t\tclass: 'search-field-container',\n\t\t\t} ),\n\t\t\t$search = $( '<input/>', {\n\t\t\t\tname: 's',\n\t\t\t\tclass: 'search-field',\n\t\t\t\ttype: 'search',\n\t\t\t\tplaceholder: this.options.labels.searchPlaceholder,\n\t\t\t} );\n\n\t\t$container.append( $search ).prependTo( $dropdwonSpan );\n\t\tthis.$_search = $search;\n\t}\n\n\t// create showMore field\n\t_initShowMoreTemplate( $dropdwonSpan ) {\n\t\tconst $showMore = $( '<a/>', {\n\t\t\tclass: 'show-more',\n\t\t\ttext: this.options.labels.showMore.replace(\n\t\t\t\t'%d',\n\t\t\t\tthis.options.perPage\n\t\t\t),\n\t\t} );\n\n\t\t$showMore.on( 'click', this.loadNextPage.bind( this ) ).hide();\n\n\t\t$dropdwonSpan.append( $showMore );\n\t\tthis.$_showMore = $showMore;\n\t}\n\n\t// init actions performed over dropdown elements\n\t_initActions() {\n\t\tconst self = this;\n\n\t\t// main open event\n\t\tthis.$_main?.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tself.toggleDropdown();\n\t\t} );\n\t\tthis.$_dropdown.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t} );\n\n\t\t// search event\n\t\tthis.$_search?.on( 'keyup search', () => {\n\t\t\tself._populateItems();\n\t\t} );\n\n\t\t// select event\n\t\tthis.$_items.on( 'change', ':input', function () {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tif ( isActive ) {\n\t\t\t\t$li.siblings().removeClass( 'active' );\n\t\t\t}\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'label > a', function ( ev ) {\n\t\t\tconst input = $( this ).parent().find( ':input' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\tinput.is( '[type=\"radio\"]' ) ||\n\t\t\t\tinput.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\tinput.prop( 'checked', ! input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\tinput.change();\n\t\t} );\n\n\t\t// select change\n\t\tthis.$originalSelect.on( 'change', ( ev, selfOriginated ) => {\n\t\t\tif ( selfOriginated ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.$_items.find( 'li' ).each( function () {\n\t\t\t\tconst value = $( this ).data( 'value' );\n\n\t\t\t\tif ( self.isValueSelected( value ) ) {\n\t\t\t\t\tself._selectItem( value );\n\t\t\t\t} else {\n\t\t\t\t\tself._deselectItem( value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tself.updateLabel();\n\t\t} );\n\n\t\t// close dropdown on external click\n\t\t$( document ).on( 'click', this.closeDropdown.bind( this ) );\n\t}\n\n\t// open dropdown\n\topenDropdown() {\n\t\tthis.$_main?.addClass( 'open' ).removeClass( 'closed' );\n\t\tthis._afterDropdownOpen();\n\t}\n\n\t// close dropdown\n\tcloseDropdown() {\n\t\tthis.$_main?.removeClass( 'open' ).addClass( 'closed' );\n\t}\n\n\t// close other dropdowns\n\t_closeOtherDropdowns() {\n\t\tconst self = this,\n\t\t\tdropdowns = $( document )\n\t\t\t\t.find( 'select.enhanced' )\n\t\t\t\t.filter( function ( i, select ) {\n\t\t\t\t\tconst $el = $( select );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! $el.data( 'dropdown' ) &&\n\t\t\t\t\t\t! $el.is( self.$originalSelect )\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\tdropdowns.each( function () {\n\t\t\t$( this ).data( 'dropdown' ).closeDropdown();\n\t\t} );\n\t}\n\n\t// toggle dropdown\n\ttoggleDropdown() {\n\t\tthis.$_main?.toggleClass( 'open' ).toggleClass( 'closed' );\n\n\t\tif ( this.$_main?.hasClass( 'open' ) ) {\n\t\t\tthis._afterDropdownOpen();\n\t\t}\n\t}\n\n\t// perform operations after dropdown is open\n\t_afterDropdownOpen() {\n\t\tthis._closeOtherDropdowns();\n\n\t\tif ( this.$_search?.length ) {\n\t\t\tthis.$_search.val( '' );\n\t\t}\n\n\t\tthis._populateItems();\n\t}\n\n\t// get elements\n\tgetMatchingElements( search, limit ) {\n\t\tlet matchingElements = [],\n\t\t\t$options = this.getOptions(),\n\t\t\tpromise;\n\n\t\tpromise = new Promise( ( resolve ) => {\n\t\t\t// first of all, search across select option\n\t\t\t$options.each( function () {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\tvalue = t.val(),\n\t\t\t\t\tlabel = t.html(),\n\t\t\t\t\tregex = new RegExp( '.*' + search + '.*', 'i' ),\n\t\t\t\t\tshow =\n\t\t\t\t\t\t! search || regex.test( value ) || regex.test( label );\n\n\t\t\t\tif ( show ) {\n\t\t\t\t\tmatchingElements.push( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// then retrieve additional items\n\t\t\tif ( this.options.getElements ) {\n\t\t\t\t// we're expecting key => value pairs\n\t\t\t\tthis.options\n\t\t\t\t\t.getElements( search )\n\t\t\t\t\t.then( ( retrievedElements ) => {\n\t\t\t\t\t\tif ( retrievedElements ) {\n\t\t\t\t\t\t\t// reformat retrieved array\n\t\t\t\t\t\t\tretrievedElements = retrievedElements.reduce(\n\t\t\t\t\t\t\t\t( a, v, i ) => {\n\t\t\t\t\t\t\t\t\ta.push( { label: i, value: v } );\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// merge found results with options\n\t\t\t\t\t\t\tmatchingElements = $.extend(\n\t\t\t\t\t\t\t\tmatchingElements,\n\t\t\t\t\t\t\t\tretrievedElements\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t}\n\t\t} );\n\n\t\treturn promise;\n\t}\n\n\t// format items as key/value pairs for further processing\n\t_formatItems( items, limit ) {\n\t\tlet indexes = [],\n\t\t\thasMore = false;\n\n\t\t// remove duplicates and sort array of results\n\t\titems\n\t\t\t.filter( ( v ) => {\n\t\t\t\tif ( -1 === indexes.indexOf( v.value ) ) {\n\t\t\t\t\tindexes.push( v.value );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\tconst order = this.options.order,\n\t\t\t\t\tmod = order === 'ASC' ? 1 : -1;\n\n\t\t\t\tif ( a.value < b.value ) {\n\t\t\t\t\treturn -1 * mod;\n\t\t\t\t} else if ( a.value > b.value ) {\n\t\t\t\t\treturn mod;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t} );\n\n\t\t// paginate when needed\n\t\tif ( limit ) {\n\t\t\thasMore = limit < Object.keys( items ).length;\n\t\t\titems = items.slice( 0, limit );\n\t\t}\n\n\t\treturn {\n\t\t\titems,\n\t\t\thasMore,\n\t\t};\n\t}\n\n\t// generate item to append to items list\n\t_generateItem( value, label ) {\n\t\tlet active = this.isValueSelected( value ),\n\t\t\toption = this.getOptionByValue( value ),\n\t\t\t$item = $( '<li/>', {\n\t\t\t\t'data-value': value,\n\t\t\t\tclass: option.length ? option.attr( 'class' ) : '',\n\t\t\t} ),\n\t\t\t$anchor;\n\n\t\tif ( option.length ) {\n\t\t\tconst template = option.data( 'template' ),\n\t\t\t\tcount = option.data( 'count' );\n\n\t\t\tlabel = template ? template : label;\n\n\t\t\tif ( !! count ) {\n\t\t\t\tlabel += count;\n\t\t\t}\n\t\t}\n\n\t\t$anchor = $( '<a/>', {\n\t\t\thref: option.length ? option.data( 'filter_url' ) : '#',\n\t\t\thtml: label,\n\t\t\t'data-title': option.length ? option.data( 'title' ) : '',\n\t\t} );\n\n\t\tif ( this.$originalSelect.prop( 'multiple' ) ) {\n\t\t\tconst $checkbox = $( '<input/>', {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue,\n\t\t\t\t} ),\n\t\t\t\t$label = $( '<label>' );\n\n\t\t\t$checkbox.prop( 'checked', active );\n\t\t\t$label.prepend( $checkbox ).append( $anchor );\n\t\t\t$item.append( $label ).addClass( 'checkbox' );\n\t\t} else {\n\t\t\t$item.append( $anchor );\n\t\t}\n\n\t\tactive ? $item.addClass( 'active' ) : $item.removeClass( 'active' );\n\n\t\treturn $item;\n\t}\n\n\t// populate items list\n\t_populateItems( page ) {\n\t\tlet search = this.$_search?.length ? this.$_search.val() : '',\n\t\t\tperPage = this.options.paginate ? this.options.perPage : 0,\n\t\t\tlimit;\n\n\t\tpage = page ? parseInt( page ) : 1;\n\t\tlimit = page * perPage;\n\n\t\tthis.getMatchingElements( search, limit ).then( ( resultSet ) => {\n\t\t\tlet matchingItems = resultSet.items,\n\t\t\t\titems = [],\n\t\t\t\thasMore = false;\n\n\t\t\t// remove all previous items\n\t\t\tthis._emptyItems();\n\t\t\tthis._hideLoadMore();\n\n\t\t\tif ( ! matchingItems.length ) {\n\t\t\t\titems.push(\n\t\t\t\t\t$( '<li/>', { text: this.options.labels.noItemsFound } )\n\t\t\t\t);\n\n\t\t\t\tthis.currentPage = 1;\n\t\t\t} else {\n\t\t\t\tfor ( const v of matchingItems ) {\n\t\t\t\t\tif ( v.value === '' ) {\n\t\t\t\t\t\titems.unshift( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\titems.push( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.currentPage = page;\n\t\t\t\thasMore = resultSet.hasMore;\n\t\t\t}\n\n\t\t\tthis.$_items.append( items );\n\n\t\t\t$( document ).trigger( 'yith_wcan_dropdown_updated' );\n\n\t\t\tif ( hasMore ) {\n\t\t\t\tthis._showLoadMore();\n\t\t\t}\n\t\t} );\n\t}\n\n\t// load next page of items\n\tloadNextPage() {\n\t\tconst page = this.currentPage + 1;\n\n\t\tthis._populateItems( page );\n\t}\n\n\t// set an item as active\n\t_selectItem( value ) {\n\t\treturn this._changeItemStatus( value, true );\n\t}\n\n\t// disable an item\n\t_deselectItem( value ) {\n\t\treturn this._changeItemStatus( value, false );\n\t}\n\n\t// change item status\n\t_changeItemStatus( value, status ) {\n\t\tconst $option = this.$originalSelect.find(\n\t\t\t`option[value=\"${ value }\"]`\n\t\t);\n\n\t\tif ( $option.length ) {\n\t\t\t$option.prop( 'selected', status );\n\n\t\t\tthis.closeDropdown();\n\t\t\tthis.updateLabel();\n\n\t\t\tthis.$originalSelect.trigger( 'change', [ true ] );\n\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// empty items list\n\t_emptyItems() {\n\t\tthis.$_items.html( '' );\n\t}\n\n\t// show \"Load more\" link\n\t_showLoadMore() {\n\t\tthis.$_showMore.show();\n\t}\n\n\t// hide \"Load more\" link\n\t_hideLoadMore() {\n\t\tthis.$_showMore.hide();\n\t}\n\n\t// returns select label\n\tgetLabel() {\n\t\treturn this.hasSelectedValues()\n\t\t\t? this.getSelectedLabels().join( ', ' )\n\t\t\t: this.options.labels.emptyLabel;\n\t}\n\n\t// update label to match new selection\n\tupdateLabel() {\n\t\tconst label = this.getLabel();\n\n\t\tthis.$_label?.html( label );\n\t}\n\n\t// returns select options\n\tgetOptions() {\n\t\treturn this.$originalSelect.find( 'option' );\n\t}\n\n\t// checks whether select has selected values\n\thasSelectedValues() {\n\t\treturn this.getSelectedOptions().length;\n\t}\n\n\t// checks whether a value is selected\n\tisValueSelected( value ) {\n\t\tconst found = this.getSelectedValues().indexOf( value.toString() );\n\n\t\treturn -1 !== found;\n\t}\n\n\t// retrieve selected options\n\tgetSelectedOptions() {\n\t\treturn this.$originalSelect.find( 'option' ).filter( ':selected' );\n\t}\n\n\t// retrieves an option node by value\n\tgetOptionByValue( value ) {\n\t\treturn this.$originalSelect.find( `option[value=\"${ value }\"]` );\n\t}\n\n\t// retrieve labels for selected options\n\tgetSelectedLabels() {\n\t\tconst labels = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tlet $option = $( this ),\n\t\t\t\ttemplate = $option.data( 'template' );\n\n\t\t\ttemplate = template\n\t\t\t\t? template\n\t\t\t\t: $option.html().replace( /\\([0-9]*\\)/, '' );\n\n\t\t\tlabels.push( template );\n\t\t} );\n\n\t\treturn labels;\n\t}\n\n\t// retrieve values for selected options\n\tgetSelectedValues() {\n\t\tconst values = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tvalues.push( $( this ).val() );\n\t\t} );\n\n\t\treturn values;\n\t}\n\n\tdestroy() {\n\t\t// TBD\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\nimport YITH_WCAN_Dropdown from './yith-wcan-dropdown';\n\nexport default class YITH_WCAN_Preset {\n\t// main preset node\n\tpreset = false;\n\t$preset = false;\n\n\t// target of the filter, if any\n\ttarget = false;\n\t$target = false;\n\n\t// filters node\n\t$filters = false;\n\n\t// filter button\n\t$filterButtons = false;\n\n\t// nodes created just for modal layout\n\tmodalElements = {};\n\n\t// retains current status of filters\n\tactiveFilters = false;\n\n\t// mobile flag\n\tisMobile = false;\n\n\t// slider timeout\n\tsliderTimeout = false;\n\n\t// registers when status has changed\n\toriginalFilters = null;\n\tdirty = false;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// main preset node\n\t\tthis.preset = '#' + el.attr( 'id' );\n\t\tthis.$preset = el;\n\n\t\t// target of the filter, if any\n\t\tthis.target = this.$preset.data( 'target' );\n\t\tthis.$target = this.target ? $( this.target ) : false;\n\n\t\tthis._regiterStatus();\n\t\tthis._initFilterButton();\n\t\tthis._initResponsive();\n\t\tthis._initFilters();\n\t\tthis._initActions();\n\n\t\tthis.$preset\n\t\t\t.data( 'preset', this )\n\t\t\t.addClass( 'enhanced' )\n\t\t\t.trigger( 'yith_wcan_preset_initialized', [ this ] );\n\t}\n\n\t// init filters\n\t_initFilters() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself._initFilter( $filter );\n\t\t} );\n\n\t\tthis.maybeShowClearAllFilters();\n\t}\n\n\t// init filter button\n\t_initFilterButton() {\n\t\tthis.$filterButtons = this.$preset.find( '.apply-filters' );\n\n\t\tif ( ! this.$filterButtons.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// manage filter button\n\t\tthis.$filterButtons\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthis.filter();\n\t\t\t} )\n\t\t\t.hide();\n\t}\n\n\t// init generic actions\n\t_initActions() {\n\t\tthis.$preset.find( 'form' ).on( 'submit', ( ev ) => {\n\t\t\tev.preventDefault();\n\t\t} );\n\t}\n\n\t// init responsive\n\t_initResponsive() {\n\t\tif ( ! yith_wcan_shortcodes.modal_on_mobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = window.matchMedia(\n\t\t\t`(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`\n\t\t);\n\n\t\t$( window )\n\t\t\t.on( 'resize', () => {\n\t\t\t\tconst isMobile = !! media.matches;\n\n\t\t\t\tif ( isMobile !== this.isMobile ) {\n\t\t\t\t\tthis.isMobile = isMobile;\n\t\t\t\t\tthis._afterLayoutChange();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.resize();\n\t}\n\n\t// init filter\n\t_initFilter( $filter ) {\n\t\tconst self = this,\n\t\t\thandleChange = function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$currentFilter = t.closest( '.yith-wcan-filter' ),\n\t\t\t\t\tmultiple = $currentFilter.length\n\t\t\t\t\t\t? 'yes' === $currentFilter.data( 'multiple' )\n\t\t\t\t\t\t: false,\n\t\t\t\t\t$item = t.closest( '.filter-item' ),\n\t\t\t\t\t$items = $item.length\n\t\t\t\t\t\t? $currentFilter.find( '.filter-item' ).not( $item )\n\t\t\t\t\t\t: [];\n\n\t\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tev.preventDefault();\n\n\t\t\t\t$items.length &&\n\t\t\t\t\t! multiple &&\n\t\t\t\t\t$items\n\t\t\t\t\t\t.removeClass( 'active' )\n\t\t\t\t\t\t.children( 'label' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.parent( '.checked' )\n\t\t\t\t\t\t.removeClass( 'checked' );\n\t\t\t\t$item.length && $item.toggleClass( 'active' );\n\n\t\t\t\t// reset active filters.\n\t\t\t\tself.activeFilters = false;\n\n\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\tself.maybeToggleClearAllFilters();\n\t\t\t\tself.maybeToggleClearFilter( $currentFilter );\n\t\t\t};\n\n\t\t// handle filter activation/deactivation by click on label (no input involved)\n\t\t$filter\n\t\t\t.find( '.filter-item' )\n\t\t\t.not( '.checkbox' )\n\t\t\t.not( '.radio' )\n\t\t\t.on( 'click', 'a', function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\t\tif ( ! $( ev?.delegateTarget ).is( $item ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\thandleChange.call( this, ev );\n\t\t\t} );\n\n\t\t// handle filter activation/deactivation from input change\n\t\t$filter.find( ':input' ).on( 'change', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\tt.prop( 'checked', false );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\thandleChange.call( this, ev );\n\t\t} );\n\n\t\t// handle filter activation/deactivation by click on label (there is an input whose state can be switched)\n\t\t$filter.find( 'label > a' ).on( 'click', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst $input = t.parent().find( ':input' );\n\n\t\t\tif (\n\t\t\t\t$input.is( '[type=\"radio\"]' ) ||\n\t\t\t\t$input.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\t$input.prop( 'checked', ! $input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\t$input.change();\n\t\t} );\n\n\t\t// init tooltip\n\t\tthis._initTooltip( $filter );\n\n\t\t// init price slider\n\t\tthis._initPriceSlider( $filter );\n\n\t\t// init dropdown\n\t\tthis._initDropdown( $filter );\n\n\t\t// init collapsable\n\t\tthis._initCollapsable( $filter );\n\n\t\t// init clear anchors\n\t\tthis.maybeShowClearFilter( $filter );\n\n\t\t// init custom inputs\n\t\tif ( this.$preset?.hasClass( 'custom-style' ) ) {\n\t\t\tthis._initCustomInput( $filter );\n\t\t}\n\t}\n\n\t// init tooltip\n\t_initTooltip( $filter, position ) {\n\t\t$filter.find( '[data-title]' ).each( function () {\n\t\t\tconst t = $( this );\n\n\t\t\tif ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tt.on( 'mouseenter', function () {\n\t\t\t\tlet th = $( this ),\n\t\t\t\t\ttooltip = null,\n\t\t\t\t\twrapperWidth = th.outerWidth(),\n\t\t\t\t\tleft = 0,\n\t\t\t\t\twidth = 0;\n\n\t\t\t\tif (\n\t\t\t\t\t! position ||\n\t\t\t\t\t( 'top' !== position && 'right' !== position )\n\t\t\t\t) {\n\t\t\t\t\tconst container = th.closest( '.filter-item' );\n\n\t\t\t\t\tposition =\n\t\t\t\t\t\tcontainer.hasClass( 'color' ) ||\n\t\t\t\t\t\tcontainer.hasClass( 'label' )\n\t\t\t\t\t\t\t? 'top'\n\t\t\t\t\t\t\t: 'right';\n\t\t\t\t}\n\n\t\t\t\ttooltip = $( '<span>', {\n\t\t\t\t\tclass: 'yith-wcan-tooltip',\n\t\t\t\t\thtml: th.data( 'title' ),\n\t\t\t\t} );\n\n\t\t\t\tth.append( tooltip );\n\n\t\t\t\twidth = tooltip.outerWidth() + 6;\n\t\t\t\ttooltip.outerWidth( width );\n\n\t\t\t\tif ( 'top' === position ) {\n\t\t\t\t\tleft = ( wrapperWidth - width ) / 2;\n\t\t\t\t} else {\n\t\t\t\t\tleft = wrapperWidth + 15;\n\t\t\t\t}\n\n\t\t\t\ttooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );\n\n\t\t\t\tth.addClass( 'with-tooltip' );\n\t\t\t} ).on( 'mouseleave', function () {\n\t\t\t\tconst th = $( this );\n\n\t\t\t\tth.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {\n\t\t\t\t\tth.removeClass( 'with-tooltip' )\n\t\t\t\t\t\t.find( '.yith-wcan-tooltip' )\n\t\t\t\t\t\t.remove();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tt.addClass( 'tooltip-added' );\n\t\t} );\n\t}\n\n\t// init dropdown\n\t_initDropdown( $filter ) {\n\t\tconst $dropdown = $filter.find( 'select.filter-dropdown' );\n\n\t\tif ( ! $dropdown.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t$dropdown.hasClass( 'select2-hidden-accessible' ) &&\n\t\t\t'undefined' !== typeof $.fn.selectWoo\n\t\t) {\n\t\t\t$dropdown.selectWoo( 'destroy' );\n\t\t}\n\n\t\tthis._initDropdownObject( $dropdown, {\n\t\t\tpaginate: true,\n\t\t\tperPage: yith_wcan_shortcodes.terms_per_page,\n\t\t} );\n\t}\n\n\t// init dropdown object\n\t_initDropdownObject( $dropdown, opts ) {\n\t\treturn new YITH_WCAN_Dropdown( $dropdown, opts );\n\t}\n\n\t// init price slider\n\t_initPriceSlider( $filter ) {\n\t\tif ( ! $filter.hasClass( 'filter-price-slider' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst self = this,\n\t\t\t$container = $filter.find( '.price-slider' ),\n\t\t\t$minInput = $container.find( '.price-slider-min' ),\n\t\t\t$maxInput = $container.find( '.price-slider-max' ),\n\t\t\tmin = parseFloat( $container.data( 'min' ) ),\n\t\t\tmax = parseFloat( $container.data( 'max' ) ),\n\t\t\tcurrentMin = parseFloat( $minInput.val() ),\n\t\t\tcurrentMax = parseFloat( $maxInput.val() ),\n\t\t\tstep = parseFloat( $container.data( 'step' ) ),\n\t\t\thandleSliderChange = function () {\n\t\t\t\tif ( self.sliderTimeout ) {\n\t\t\t\t\tclearTimeout( self.sliderTimeout );\n\t\t\t\t}\n\n\t\t\t\tself.sliderTimeout = setTimeout( () => {\n\t\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\t}, 200 );\n\t\t\t};\n\n\t\t$filter.find( '.price-slider-ui' ).ionRangeSlider( {\n\t\t\tskin: 'round',\n\t\t\ttype: 'double',\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tfrom: currentMin,\n\t\t\tto: currentMax,\n\t\t\tmin_interval: step,\n\t\t\tvalues_separator: ' - ',\n\t\t\tprettify: ( v ) => this.formatPrice( v ),\n\t\t\tonChange: ( data ) => {\n\t\t\t\t$minInput.val( data.from );\n\t\t\t\t$maxInput.val( data.to );\n\t\t\t},\n\t\t\tonFinish: handleSliderChange,\n\t\t} );\n\n\t\t$minInput\n\t\t\t.add( $maxInput )\n\t\t\t.off( 'change' )\n\t\t\t.on( 'keyup', () => {\n\t\t\t\tif ( ! $minInput.val() || ! $maxInput.val() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleSliderChange();\n\t\t\t} );\n\t}\n\n\t// init collapsable\n\t_initCollapsable( $filter ) {\n\t\tthis._initTitleCollapsable( $filter );\n\t\tthis._initHierarchyCollapsable( $filter );\n\t}\n\n\t// init toggle on click of the title\n\t_initTitleCollapsable( $filter ) {\n\t\tconst $title = $filter.find( '.collapsable' );\n\n\t\tif ( ! $title.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initToggle( $title, $title, $filter.find( '.filter-content' ) );\n\t}\n\n\t// init toggle on click of the parent li\n\t_initHierarchyCollapsable( $filter ) {\n\t\tconst $items = $filter.find( '.hierarchy-collapsable' );\n\n\t\tif ( ! $items.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// set parents of currently active term as open\n\t\tconst self = this,\n\t\t\tactive = $filter.find( '.active' );\n\n\t\tif ( active.length ) {\n\t\t\tactive\n\t\t\t\t.parents( '.hierarchy-collapsable' )\n\t\t\t\t.removeClass( 'closed' )\n\t\t\t\t.addClass( 'opened' );\n\n\t\t\tif (\n\t\t\t\tactive.hasClass( 'hierarchy-collapsable' ) &&\n\t\t\t\tyith_wcan_shortcodes.show_current_children\n\t\t\t) {\n\t\t\t\tactive.removeClass( 'closed' ).addClass( 'opened' );\n\t\t\t}\n\t\t}\n\n\t\t$items.each( function () {\n\t\t\tconst $t = $( this ),\n\t\t\t\t$toggle = $( '<span/>', {\n\t\t\t\t\tclass: 'toggle-handle',\n\t\t\t\t} );\n\n\t\t\t$toggle.appendTo( $t );\n\n\t\t\tself._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );\n\t\t} );\n\t}\n\n\t// init toggle to generic toggle/target pair\n\t_initToggle( $toggle, $container, $target ) {\n\t\tif ( $container.hasClass( 'closed' ) ) {\n\t\t\t$target.hide();\n\t\t}\n\n\t\t$toggle.off( 'click' ).on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\n\t\t\t$target.slideToggle( 400, () => {\n\t\t\t\t$container.toggleClass( 'opened' ).toggleClass( 'closed' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// init custom input\n\t_initCustomInput( $filter ) {\n\t\t$filter.find( ':input' ).each( function () {\n\t\t\tlet input = $( this ),\n\t\t\t\ttype = input.attr( 'type' ),\n\t\t\t\tcontainerClass = `${ type }button`,\n\t\t\t\tcontainer;\n\n\t\t\tif ( 'checkbox' !== type && 'radio' !== type ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.closest( `.${ containerClass }` ).length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.is( ':checked' ) ) {\n\t\t\t\tcontainerClass += ' checked';\n\t\t\t}\n\n\t\t\tcontainer = $( '<span/>', {\n\t\t\t\tclass: containerClass,\n\t\t\t} );\n\n\t\t\tinput.wrap( container ).on( 'change', function () {\n\t\t\t\tconst t = $( this );\n\n\t\t\t\tt.prop( 'checked' )\n\t\t\t\t\t? t.parent().addClass( 'checked' )\n\t\t\t\t\t: t.parent().removeClass( 'checked' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// register initial status\n\t_regiterStatus() {\n\t\tthis.originalFilters = this.getFiltersProperties();\n\t}\n\n\t// trigger handling after layout change\n\t_afterLayoutChange() {\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset\n\t\t\t\t.addClass( 'filters-modal' )\n\t\t\t\t.attr( 'role', 'dialog' )\n\t\t\t\t.attr( 'tabindex', '-1' )\n\t\t\t\t.hide();\n\n\t\t\tthis._addCloseModalButton();\n\t\t\tthis._addApplyFiltersModalButton();\n\t\t\tthis._switchToCollapsables();\n\n\t\t\tthis.$filterButtons?.hide();\n\t\t} else {\n\t\t\tthis.$preset\n\t\t\t\t.removeClass( 'filters-modal' )\n\t\t\t\t.removeClass( 'open' )\n\t\t\t\t.removeAttr( 'role' )\n\t\t\t\t.removeAttr( 'tabindex' )\n\t\t\t\t.show();\n\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\n\t\t\tthis._removeCloseModalButton();\n\t\t\tthis._removeApplyFiltersModalButton();\n\t\t\tthis._switchBackCollapsables();\n\n\t\t\tthis.$filterButtons?.show();\n\t\t}\n\t}\n\n\t// add modal close button\n\t_addCloseModalButton() {\n\t\tconst $closeButton = $( '<a/>', {\n\t\t\tclass: 'close-button',\n\t\t\thtml: '&times;',\n\t\t\t'data-dismiss': 'modal',\n\t\t\t'aria-label': yith_wcan_shortcodes.labels.close,\n\t\t} );\n\n\t\t$closeButton\n\t\t\t.prependTo( this.$preset )\n\t\t\t.on( 'click', this.closeModal.bind( this ) );\n\t\tthis.modalElements.closeButton = $closeButton;\n\t}\n\n\t// remove modal close button\n\t_removeCloseModalButton() {\n\t\tthis.modalElements?.closeButton?.remove();\n\t}\n\n\t// show main filter button for the modal\n\t_addApplyFiltersModalButton() {\n\t\tconst $filterButton = $( '<button/>', {\n\t\t\tclass: 'apply-filters main-modal-button',\n\t\t\thtml: yith_wcan_shortcodes.labels.show_results,\n\t\t\t'data-dismiss': 'modal',\n\t\t} );\n\n\t\t$filterButton.appendTo( this.$preset ).on( 'click', () => {\n\t\t\tthis.filter();\n\t\t\tthis.closeModal();\n\t\t} );\n\t\tthis.modalElements.applyFiltersButton = $filterButton;\n\t}\n\n\t// hide main filter button for the modal\n\t_removeApplyFiltersModalButton() {\n\t\tthis.modalElements?.applyFiltersButton?.remove();\n\t}\n\n\t// convert all filters to collapsable\n\t_switchToCollapsables() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif ( ! $title.length || $title.hasClass( 'collapsable' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title.addClass( 'collapsable' ).data( 'disable-collapse', true );\n\n\t\t\tself._initTitleCollapsable( $filter );\n\t\t} );\n\t}\n\n\t// switch back filters to their previous collapsable state\n\t_switchBackCollapsables() {\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif (\n\t\t\t\t! $title.length ||\n\t\t\t\t! $title.hasClass( 'collapsable' ) ||\n\t\t\t\t! $title.data( 'disable-collapse' )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title\n\t\t\t\t.removeClass( 'collapsable' )\n\t\t\t\t.removeData( 'disable-collapse', true )\n\t\t\t\t.off( 'click' );\n\n\t\t\t$filter.find( '.filter-content' ).show();\n\t\t} );\n\t}\n\n\t// close all collpasable before showing modal\n\t_closeAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.hide()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.addClass( 'closed' )\n\t\t\t.removeClass( 'opened' );\n\t}\n\n\t// update status change flag, if filters have changed\n\tmaybeRegisterStatusChange() {\n\t\tconst currentFilters = this.getFiltersProperties(),\n\t\t\tcurrentStr = JSON.stringify( currentFilters ),\n\t\t\toriginalStr = JSON.stringify( this.originalFilters );\n\n\t\tthis.dirty = currentStr !== originalStr;\n\t}\n\n\t// apply filters when possible\n\tmaybeFilter( $initiator ) {\n\t\t// register status change\n\t\tthis.maybeRegisterStatusChange();\n\n\t\t// filter, or show filter button.\n\t\tif ( yith_wcan_shortcodes.instant_filters && ! this.isMobile ) {\n\t\t\tthis.filter();\n\t\t} else if (\n\t\t\t! yith_wcan_shortcodes.instant_filters &&\n\t\t\t! this.isMobile\n\t\t) {\n\t\t\tthis.dirty\n\t\t\t\t? this.$filterButtons?.show()\n\t\t\t\t: this.$filterButtons?.hide();\n\t\t} else if ( this.isMobile && this.dirty ) {\n\t\t\tthis.$preset.addClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.show();\n\t\t}\n\t}\n\n\t// main filtering method\n\tfilter() {\n\t\tconst filter = window?.product_filter;\n\n\t\tfilter\n\t\t\t?.doFilter( this.getFiltersProperties(), this.target, this.preset )\n\t\t\t?.done( () => {\n\t\t\t\tlet newPreset = $( this.preset );\n\n\t\t\t\tif (\n\t\t\t\t\t! this.isMobile &&\n\t\t\t\t\tnewPreset.length &&\n\t\t\t\t\tyith_wcan_shortcodes.scroll_top\n\t\t\t\t) {\n\t\t\t\t\tlet targetOffset = newPreset.offset().top;\n\n\t\t\t\t\tif ( !! yith_wcan_shortcodes.scroll_target ) {\n\t\t\t\t\t\tconst scrollTarget = $(\n\t\t\t\t\t\t\tyith_wcan_shortcodes.scroll_target\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttargetOffset = scrollTarget.length\n\t\t\t\t\t\t\t? scrollTarget.offset().top\n\t\t\t\t\t\t\t: targetOffset;\n\t\t\t\t\t}\n\t\t\t\t\t$( 'body, html' ).animate( {\n\t\t\t\t\t\tscrollTop: targetOffset - 100,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// register new filters, clear status flag\n\t\t\t\tthis.originalFilters = this.getFiltersProperties();\n\t\t\t\tthis.dirty = false;\n\t\t\t} );\n\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset.removeClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.hide();\n\t\t}\n\t}\n\n\t// get all filter nodes\n\tgetFilters() {\n\t\tif ( false === this.$filters ) {\n\t\t\tthis.$filters = this.$preset.find( '.yith-wcan-filter' );\n\t\t}\n\n\t\treturn this.$filters;\n\t}\n\n\t// retrieves all filters that we want to apply\n\tgetActiveFilters() {\n\t\tif ( false === this.activeFilters ) {\n\t\t\tthis.activeFilters = this.getFiltersProperties();\n\t\t}\n\n\t\treturn this.activeFilters;\n\t}\n\n\t// check whether there is any filter active\n\tisAnyFilterActive() {\n\t\treturn !! Object.keys( this.getActiveFilters() ).length;\n\t}\n\n\t// checks whether current filter is active\n\tisFilterActive( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tactive,\n\t\t\tfilteredActive;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tactive = 'object' === typeof val ? !! val?.length : !! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tactive = $filter.find( '.filter-item' ).filter( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst min = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'min' )\n\t\t\t\t\t),\n\t\t\t\t\tmax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'max' )\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t\t);\n\n\t\t\t\tactive = currentMin > min || currentMax < max;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tactive =\n\t\t\t\t\t'menu_order' !== $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tactive = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredActive = $filter.triggerHandler( 'yith_wcan_is_filter_active', [\n\t\t\tactive,\n\t\t\tthis,\n\t\t] );\n\t\tactive =\n\t\t\ttypeof filteredActive !== 'undefined' ? filteredActive : active;\n\n\t\treturn active;\n\t}\n\n\t// count the number of active items per filter\n\tcountActiveItems( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tcount;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tcount = 'object' === typeof val ? val?.length : +!! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tcount = $filter.find( '.filter-items' ).find( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tif ( this.isFilterActive( $filter ) ) {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\tdefault:\n\t\t\t\tcount = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t// retrieves filter properties for the filter\n\tgetFilterProperties( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tmultiple = 'yes' === $filter.data( 'multiple' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' ),\n\t\t\tproperties = {},\n\t\t\tfilteredProperties,\n\t\t\t$active;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tlet activeTerms = [],\n\t\t\t\t\ttaxonomy = $filter.data( 'taxonomy' ),\n\t\t\t\t\tisAttr = 0 === taxonomy.indexOf( 'filter' ),\n\t\t\t\t\trelation = $filter.data( 'relation' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tactiveTerms = $dropdown.val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTerms.push( $dropdown.val() );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tactiveTerms = $active.get().reduce( function ( a, v ) {\n\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t: v.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\treturn a;\n\t\t\t\t\t}, activeTerms );\n\t\t\t\t}\n\n\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.pop();\n\t\t\t\t} else {\n\t\t\t\t\tconst glue = ! isAttr && 'and' === relation ? '+' : ',';\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.join( glue );\n\t\t\t\t}\n\n\t\t\t\tif ( isAttr ) {\n\t\t\t\t\tproperties[\n\t\t\t\t\t\ttaxonomy.replace( 'filter_', 'query_type_' )\n\t\t\t\t\t] = relation;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tproperties.rating_filter = $dropdown.val();\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\t\t$active = $active.first();\n\t\t\t\t\t\tproperties.rating_filter = $active.is( 'label' )\n\t\t\t\t\t\t\t? $active.find( ':input' ).val()\n\t\t\t\t\t\t\t: $active.data( 'rating' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.rating_filter = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( function ( a, v ) {\n\t\t\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t\t\t: v.data( 'rating' );\n\n\t\t\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $dropdown.val().join( ',' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 0 ];\n\t\t\t\t\t\tproperties.max_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 1 ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\t\t\t\tlet min = $( v ).data( 'range-min' ),\n\t\t\t\t\t\t\t\t\tmax = $( v ).data( 'range-max' );\n\n\t\t\t\t\t\t\t\ta += ( max ? `${ min }-${ max }` : min ) + ',';\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, '' )\n\t\t\t\t\t\t\t.replace( /^(.*),$/, '$1' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-min' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-max' )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t);\n\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.onsale_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.instock_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-featured' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.featured_filter = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tproperties.orderby = $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredProperties = $filter.triggerHandler(\n\t\t\t'yith_wcan_filter_properties',\n\t\t\t[ properties, self ]\n\t\t);\n\t\tproperties =\n\t\t\ttypeof filteredProperties !== 'undefined'\n\t\t\t\t? filteredProperties\n\t\t\t\t: properties;\n\n\t\treturn properties;\n\t}\n\n\t// retrieves properties for all filters of the preset\n\tgetFiltersProperties() {\n\t\tlet properties = {};\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tconst filterProperties = self.getFilterProperties( $filter );\n\n\t\t\t\tproperties = self.mergeProperties(\n\t\t\t\t\tproperties,\n\t\t\t\t\tfilterProperties,\n\t\t\t\t\t$filter\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn properties;\n\t}\n\n\t// retrieve filters matching any of the properties passed\n\tgetFiltersByProperties( properties ) {\n\t\tconst self = this;\n\n\t\treturn this.getFilters().filter( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tlet filterProperties = self.getFilterProperties( $filter ),\n\t\t\t\t\thasProp = false;\n\n\t\t\t\tfor ( const prop in properties ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[ 'min_price', 'max_price', 'price_ranges' ].includes(\n\t\t\t\t\t\t\tprop\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t( filterProperties.min_price ||\n\t\t\t\t\t\t\tfilterProperties.price_ranges )\n\t\t\t\t\t) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if ( filterProperties[ prop ] ) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasProp;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t// show clear selection anchor\n\tmaybeToggleClearFilter( $filter ) {\n\t\tif ( ! this.isFilterActive( $filter ) ) {\n\t\t\tthis.maybeHideClearFilter( $filter );\n\t\t} else {\n\t\t\tthis.maybeShowClearFilter( $filter );\n\t\t}\n\t}\n\n\t// show clear all selections anchor\n\tmaybeToggleClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() ) {\n\t\t\tthis.maybeHideClearAllFilters();\n\t\t} else {\n\t\t\tthis.maybeShowClearAllFilters();\n\t\t}\n\t}\n\n\t// show clear selection anchor\n\tmaybeShowClearFilter( $filter ) {\n\t\tif (\n\t\t\t! this.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\t$filter.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_selection,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( $filter.find( '.filter-content' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateFilter(\n\t\t\t\t\t$filter,\n\t\t\t\t\tfalse,\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearFilter( $filter );\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeShowClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() || ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\tthis.$preset.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_all_selections,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( this.$preset.find( '.filters-container' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateAllFilters(\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearAllFilters();\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// hide clear selection anchor\n\tmaybeHideClearFilter( $filter ) {\n\t\tif (\n\t\t\tthis.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\t$filter.find( '.clear-selection' ).remove();\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeHideClearAllFilters() {\n\t\tif ( this.isAnyFilterActive() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\tthis.$preset\n\t\t\t.find( '.filters-container' )\n\t\t\t.children( '.clear-selection' )\n\t\t\t.remove();\n\t}\n\n\t// deactivate filter\n\tdeactivateFilter( $filter, properties, doFilter ) {\n\t\tconst filterType = $filter.data( 'filter-type' ),\n\t\t\t$items = $filter.find( '.filter-item' ),\n\t\t\t$activeItems = $items.filter( '.active' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' );\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tconst taxonomy = $filter.data( 'taxonomy' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties[ taxonomy ] ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( value === properties[ taxonomy ] ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties.rating_filter ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'rating' );\n\n\t\t\t\t\t\tif ( value === properties.rating_filter ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this ),\n\t\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t\t? `-${ properties.max_price }`\n\t\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\t\tif ( $option.val() === formattedRange ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tformattedRange,\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'min_price' ) +\n\t\t\t\t\t\t\t ( $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t? '-' + $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\tif ( properties.min_price ) {\n\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t? '-' + properties.max_price\n\t\t\t\t\t\t\t\t\t: '' );\n\t\t\t\t\t\t} else if ( properties.price_ranges ) {\n\t\t\t\t\t\t\tformattedRange = properties.price_ranges;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( value === formattedRange ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst $priceSlider = $filter.find( '.price-slider' );\n\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-min' )\n\t\t\t\t\t.val( $priceSlider.data( 'min' ) );\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-max' )\n\t\t\t\t\t.val( $priceSlider.data( 'max' ) )\n\t\t\t\t\t.change();\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\t$filter.find( 'select' ).val( 'menu_order' );\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\n\t\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\tif ( properties?.instock_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.onsale_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.featured_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate all filters\n\tdeactivateAllFilters( doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFilters();\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter );\n\t\t} );\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate filters that matches a specific set of properties\n\tdeactivateFilterByProperties( properties, doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFiltersByProperties( properties );\n\n\t\tif ( ! $filters.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter, properties, doFilter );\n\t\t} );\n\t}\n\n\t// open filters as a modal, when in mobile layout\n\topenModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._closeAllCollapsables();\n\n\t\t$( 'body' )\n\t\t\t.css( 'overflow', 'hidden' )\n\t\t\t.addClass( 'yith-wcan-preset-modal-open' );\n\n\t\tthis.$preset.show();\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.addClass( 'open' );\n\t\t}, 100 );\n\t}\n\n\t// close filters modal, when in mobile layout\n\tcloseModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$preset.removeClass( 'open' );\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.hide();\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\t\t}, 300 );\n\t}\n\n\t// utility that formats the price according to store configuration.\n\tformatPrice( price ) {\n\t\tif ( 'undefined' !== typeof accounting ) {\n\t\t\tprice = accounting.formatMoney( price, {\n\t\t\t\tsymbol: yith_wcan_shortcodes.currency_format.symbol,\n\t\t\t\tdecimal: yith_wcan_shortcodes.currency_format.decimal,\n\t\t\t\tthousand: yith_wcan_shortcodes.currency_format.thousand,\n\t\t\t\tprecision: 0,\n\t\t\t\tformat: yith_wcan_shortcodes.currency_format.format,\n\t\t\t} );\n\t\t}\n\n\t\treturn price;\n\t}\n\n\t// utility that merges together sets of filter properties\n\tmergeProperties( set1, set2, $filter ) {\n\t\t// search for common properties\n\t\tfor ( const prop in set2 ) {\n\t\t\tif ( ! set2.hasOwnProperty( prop ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !! set1[ prop ] ) {\n\t\t\t\tswitch ( prop ) {\n\t\t\t\t\tcase 'rating_filter':\n\t\t\t\t\tcase 'min_price':\n\t\t\t\t\tcase 'max_price':\n\t\t\t\t\tcase 'onsale_filter':\n\t\t\t\t\tcase 'instock_filter':\n\t\t\t\t\tcase 'orderby':\n\t\t\t\t\t\t// just override default value\n\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif ( 0 === prop.indexOf( 'query_type_' ) ) {\n\t\t\t\t\t\t\t// query_type param\n\t\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// we're dealing with taxonomy\n\t\t\t\t\t\t\tconst isAttr = 0 === prop.indexOf( 'filter_' ),\n\t\t\t\t\t\t\t\tglue = isAttr ? ',' : '+';\n\n\t\t\t\t\t\t\tlet newValue =\n\t\t\t\t\t\t\t\tset1[ prop ].replace( ',', glue ) +\n\t\t\t\t\t\t\t\tglue +\n\t\t\t\t\t\t\t\tset2[ prop ].replace( ',', glue );\n\n\t\t\t\t\t\t\tnewValue = newValue\n\t\t\t\t\t\t\t\t.split( glue )\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t( value, index, arr ) =>\n\t\t\t\t\t\t\t\t\t\tarr.indexOf( value ) === index\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( glue );\n\n\t\t\t\t\t\t\tset1[ prop ] = newValue;\n\n\t\t\t\t\t\t\tif ( isAttr ) {\n\t\t\t\t\t\t\t\tconst queryTypeParam = prop.replace(\n\t\t\t\t\t\t\t\t\t'filter_',\n\t\t\t\t\t\t\t\t\t'query_type_'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tset1[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t\tset2[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdelete set2[ prop ];\n\t\t\t}\n\t\t}\n\n\t\t$.extend( set1, set2 );\n\n\t\treturn set1;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport YITH_WCAN_Filter from './modules/yith-wcan-filter';\nimport YITH_WCAN_Reset_Button from './modules/yith-wcan-reset-button';\nimport YITH_WCAN_Preset from './modules/yith-wcan-preset';\n\njQuery( function ( $ ) {\n\t$( document )\n\t\t.on(\n\t\t\t'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',\n\t\t\tfunction () {\n\t\t\t\t$( '.yith-wcan-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Preset( $( this ) );\n\t\t\t\t\t} );\n\n\t\t\t\t$( '.yith-wcan-reset-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Reset_Button( $( this ) );\n\t\t\t\t\t} );\n\t\t\t}\n\t\t)\n\t\t.trigger( 'yith_wcan_init_shortcodes' );\n\n\tglobalThis.product_filter = new YITH_WCAN_Filter();\n} );\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/config.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-filter.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-reset-button.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-dropdown.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/modules/yith-wcan-preset.js","webpack://yith-woocommerce-ajax-navigation/./assets/js/shortcodes/index.js"],"names":["$","jQuery","YITH_WCAN_Filter","location","search","head","html","pageTitle","document","title","alternativeUrl","searchAlternativeUrl","doingAjax","initialized","yith_wcan_shortcodes","ajax_filters","pushUrlToHistory","filters","target","preset","targetUrl","$target","customFilters","triggerHandler","block","buildUrl","window","_doAjax","done","response","_beforeFilter","refreshFragments","unblock","_afterFilter","trigger","on","closest","submit","Object","keys","length","addClass","removeClass","queryParam","query_param","params","url","base_url","origin","pathname","self","haveFilters","session_param","replace","RegExp","originalSearch","searchParams","split","reduce","a","v","items","isFilterParam","i","_cleanParam","defaultUrl","matches","indexOf","match","change_browser_url","navigator","userAgent","history","pushState","responseDom","createElement","$response","innerHTML","$preset","$destination","find","replaceWith","first","content","param","process_sanitize","skip_sanitize","encodeURIComponent","xhr","abort","headers","$el","background","loader","message","overlayCSS","opacity","supportedParams","customParams","concat","supported_taxonomies","map","YITH_WCAN_Reset_Button","el","$reset","ev","preventDefault","each","data","deactivateAllFilters","closeModal","YITH_WCAN_Dropdown","opts","$originalSelect","is","defaultPerPage","defaultOrder","defaultAll","defaults","showSearch","paginate","perPage","order","getElements","labels","emptyLabel","empty_option","searchPlaceholder","search_placeholder","noItemsFound","no_items","showMore","show_more","options","_hideSelect","_initTemplate","_initActions","hide","$mainSpan","$labelSpan","getLabel","$dropdownSpan","$matchingItemsList","append","_initSearchTemplate","_initShowMoreTemplate","after","$_main","$_label","$_dropdown","$_items","$dropdwonSpan","$container","$search","name","type","placeholder","prependTo","$_search","$showMore","text","loadNextPage","bind","$_showMore","stopPropagation","toggleDropdown","_populateItems","$li","value","isActive","hasClass","isValueSelected","toggleClass","_changeItemStatus","siblings","input","parent","prop","change","selfOriginated","_selectItem","_deselectItem","updateLabel","closeDropdown","_afterDropdownOpen","dropdowns","filter","select","_closeOtherDropdowns","val","limit","matchingElements","$options","getOptions","promise","Promise","resolve","t","label","regex","show","test","push","then","retrievedElements","_formatItems","indexes","hasMore","sort","b","mod","slice","active","option","getOptionByValue","$item","attr","$anchor","template","count","href","$checkbox","$label","prepend","page","parseInt","getMatchingElements","resultSet","matchingItems","_emptyItems","_hideLoadMore","currentPage","unshift","_generateItem","_showLoadMore","status","$option","hasSelectedValues","getSelectedLabels","join","getSelectedOptions","found","getSelectedValues","toString","values","YITH_WCAN_Preset","_regiterStatus","_initFilterButton","_initResponsive","_initFilters","getFilters","$filter","_initFilter","maybeShowClearAllFilters","$filterButtons","modal_on_mobile","media","matchMedia","mobile_media_query","isMobile","_afterLayoutChange","resize","handleChange","$currentFilter","multiple","$items","not","children","activeFilters","maybeFilter","maybeToggleClearAllFilters","maybeToggleClearFilter","delegateTarget","call","$input","_initTooltip","_initPriceSlider","_initDropdown","_initCollapsable","maybeShowClearFilter","_initCustomInput","position","th","tooltip","wrapperWidth","outerWidth","left","width","container","css","toFixed","fadeIn","fadeOut","remove","$dropdown","selectWoo","_initDropdownObject","terms_per_page","$minInput","$maxInput","min","parseFloat","max","currentMin","currentMax","step","handleSliderChange","sliderTimeout","clearTimeout","setTimeout","ionRangeSlider","skin","from","to","min_interval","values_separator","prettify","formatPrice","onChange","onFinish","add","off","_initTitleCollapsable","_initHierarchyCollapsable","$title","_initToggle","parents","show_current_children","$t","$toggle","appendTo","slideToggle","containerClass","wrap","originalFilters","getFiltersProperties","_addCloseModalButton","_addApplyFiltersModalButton","_switchToCollapsables","removeAttr","_removeCloseModalButton","_removeApplyFiltersModalButton","_switchBackCollapsables","$closeButton","close","modalElements","closeButton","$filterButton","show_results","applyFiltersButton","removeData","$filters","isFilterActive","end","currentFilters","currentStr","JSON","stringify","originalStr","dirty","$initiator","maybeRegisterStatusChange","instant_filters","product_filter","doFilter","newPreset","scroll_top","targetOffset","offset","top","scroll_target","scrollTarget","animate","scrollTop","getActiveFilters","filterType","filteredActive","Math","abs","properties","filteredProperties","$active","activeTerms","taxonomy","isAttr","relation","get","pop","glue","rating_filter","price_ranges","min_price","max_price","onsale_filter","instock_filter","featured_filter","orderby","filterProperties","getFilterProperties","mergeProperties","hasProp","includes","maybeHideClearFilter","isAnyFilterActive","maybeHideClearAllFilters","show_clear_filter","clear_selection","role","deactivateFilter","clear_all_selections","$activeItems","click","formattedRange","$priceSlider","getFiltersByProperties","toggles_open_on_modal","_openAllCollapsables","_closeAllCollapsables","price","accounting","formatMoney","symbol","currency_format","decimal","thousand","precision","format","set1","set2","hasOwnProperty","newValue","index","arr","queryTypeParam","globalThis"],"mappings":"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","file":"yith-wcan-shortcodes.js","sourcesContent":["'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nconst $ = jQuery; // we can do this as WebPack will compact all together inside a closure.\n\nexport { $ };\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Filter {\n\t// currently executing xhr\n\txhr = null;\n\n\t// flag set during ajax call handling\n\tdoingAjax = false;\n\n\t// register original url search param\n\toriginalSearch = location.search;\n\n\t// flag set once init has executed\n\tinitialized = false;\n\n\t// init object\n\tconstructor() {\n\t\tconst head = $( 'head' ).html(),\n\t\t\tpageTitle = document.title,\n\t\t\talternativeUrl = this.searchAlternativeUrl( head );\n\n\t\talternativeUrl &&\n\t\t\t! this.doingAjax &&\n\t\t\t! this.initialized &&\n\t\t\t! yith_wcan_shortcodes.ajax_filters &&\n\t\t\tthis.pushUrlToHistory( alternativeUrl, pageTitle );\n\n\t\tthis.initialized = true;\n\t}\n\n\t// execute call to filter products in current view\n\tdoFilter( filters, target, preset ) {\n\t\tlet targetUrl,\n\t\t\t$target = target ? $( target ) : $( 'body' ),\n\t\t\tcustomFilters;\n\n\t\t// filter properties\n\t\tcustomFilters = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_filters_parameters', [ filters ] );\n\n\t\tif ( !! customFilters ) {\n\t\t\tfilters = customFilters;\n\t\t}\n\n\t\t// block elements before filtering\n\t\t$target && this.block( $target );\n\n\t\t// calculate target url\n\t\ttargetUrl = this.buildUrl( filters );\n\n\t\t// if no ajax, simply change page url\n\t\tif ( ! yith_wcan_shortcodes.ajax_filters ) {\n\t\t\twindow.location = targetUrl;\n\t\t\treturn;\n\t\t}\n\n\t\t// start doing ajax\n\t\tthis.doingAjax = true;\n\n\t\treturn this._doAjax( targetUrl ).done( ( response ) => {\n\t\t\ttargetUrl = this.searchAlternativeUrl( response, targetUrl );\n\n\t\t\tthis._beforeFilter( response, filters );\n\n\t\t\tthis.refreshFragments( target, preset, response );\n\t\t\tthis.pushUrlToHistory( targetUrl, response.pageTitle );\n\n\t\t\t$target && this.unblock( $target );\n\n\t\t\tthis._afterFilter( response, filters );\n\n\t\t\tthis.doingAjax = false;\n\t\t} );\n\t}\n\n\t// actions performed before filter\n\t_beforeFilter( response, filters ) {\n\t\t$( document ).trigger( 'yith-wcan-ajax-loading', [\n\t\t\tresponse,\n\t\t\tfilters,\n\t\t] );\n\t}\n\n\t// actions performed after filter\n\t_afterFilter( response, filters ) {\n\t\t$( '.woocommerce-ordering' ).on(\n\t\t\t'change',\n\t\t\t'select.orderby',\n\t\t\tfunction () {\n\t\t\t\t$( this ).closest( 'form' ).submit();\n\t\t\t}\n\t\t);\n\n\t\tif ( filters && !! Object.keys( filters ).length ) {\n\t\t\t$( 'body' ).addClass( 'filtered' );\n\t\t} else {\n\t\t\t$( 'body' ).removeClass( 'filtered' );\n\t\t}\n\n\t\t$( window ).trigger( 'scroll' );\n\n\t\t$( document )\n\t\t\t.trigger( 'yith-wcan-ajax-filtered', [ response, filters ] )\n\t\t\t.trigger( 'yith_wcwl_reload_fragments' );\n\t}\n\n\t// build url to show\n\tbuildUrl( filters ) {\n\t\tlet queryParam = yith_wcan_shortcodes.query_param,\n\t\t\tparams = {},\n\t\t\tlocation = window.location,\n\t\t\turl = !! yith_wcan_shortcodes.base_url\n\t\t\t\t? yith_wcan_shortcodes.base_url\n\t\t\t\t: location?.origin + location?.pathname,\n\t\t\tsearch = '',\n\t\t\tself = this;\n\n\t\tconst haveFilters =\n\t\t\ttypeof filters === 'object' && Object.keys( filters ).length;\n\n\t\t// remove filter session from current url, if any\n\t\tif ( !! yith_wcan_shortcodes.session_param ) {\n\t\t\turl = url.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t'/' + yith_wcan_shortcodes.session_param + '/[^/]*/'\n\t\t\t\t),\n\t\t\t\t''\n\t\t\t);\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams[ queryParam ] = 1;\n\t\t}\n\n\t\tif ( !! this.originalSearch ) {\n\t\t\tconst searchParams = this.originalSearch\n\t\t\t\t.replace( '?', '' )\n\t\t\t\t.split( '&' )\n\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\tconst items = v.split( '=' );\n\n\t\t\t\t\tif ( items.length === 2 ) {\n\t\t\t\t\t\tif ( this.isFilterParam( items[ 0 ] ) ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta[ items[ 0 ] ] = items[ 1 ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn a;\n\t\t\t\t}, {} );\n\n\t\t\tparams = $.extend( params, searchParams );\n\t\t}\n\n\t\tif ( haveFilters ) {\n\t\t\tparams = $.extend( params, filters );\n\t\t}\n\n\t\tsearch = Object.keys( params )\n\t\t\t.reduce( function ( a, i ) {\n\t\t\t\tconst v = params[ i ];\n\n\t\t\t\tif ( ! v || ! i ) {\n\t\t\t\t\treturn a;\n\t\t\t\t}\n\n\t\t\t\ta += self._cleanParam( i ) + '=' + self._cleanParam( v ) + '&';\n\n\t\t\t\treturn a;\n\t\t\t}, '?' )\n\t\t\t.replace( /&$/g, '' )\n\t\t\t.replace( /%2B/g, '+' )\n\t\t\t.replace( /%2C/g, ',' );\n\n\t\tif ( search.length > 1 ) {\n\t\t\turl += search;\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t// retrieves alternative sharing url in response body\n\tsearchAlternativeUrl( response, defaultUrl = '' ) {\n\t\tlet url = defaultUrl,\n\t\t\tmatches;\n\n\t\tif ( -1 === response.indexOf( 'yith_wcan:sharing_url' ) ) {\n\t\t\treturn url;\n\t\t}\n\n\t\tmatches = response.match(\n\t\t\t/<meta name=\"yith_wcan:sharing_url\" content=\"([^\"]*)\">/\n\t\t);\n\t\turl = matches && 1 in matches ? matches[ 1 ] : url;\n\n\t\treturn url;\n\t}\n\n\t// push url to browser history\n\tpushUrlToHistory( url, title ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes.change_browser_url ||\n\t\t\tnavigator.userAgent.match( /msie/i )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.history.pushState(\n\t\t\t{\n\t\t\t\tpageTitle: title,\n\t\t\t},\n\t\t\t'',\n\t\t\turl\n\t\t);\n\t}\n\n\t// replaces elements in the page with refreshed ones\n\trefreshFragments( target, preset, response ) {\n\t\tconst responseDom = document.createElement( 'html' ),\n\t\t\t$response = $( responseDom );\n\n\t\tresponseDom.innerHTML = response;\n\n\t\tif ( target ) {\n\t\t\tlet $preset = $( preset ),\n\t\t\t\t$target = $( target ),\n\t\t\t\t$destination;\n\n\t\t\tif ( $preset.length ) {\n\t\t\t\t$destination = $response.find( preset );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$preset.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( $target.length ) {\n\t\t\t\t$destination = $response.find( target );\n\n\t\t\t\tif ( $destination.length ) {\n\t\t\t\t\t$target.replaceWith( $destination.first() );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst content = $( yith_wcan_shortcodes.content );\n\n\t\t\tif ( content.length ) {\n\t\t\t\tcontent.replaceWith(\n\t\t\t\t\t$response.find( yith_wcan_shortcodes.content )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t$( 'body' ).replaceWith( $response.find( 'body' ) );\n\t\t\t}\n\t\t}\n\n\t\t$( document ).trigger( 'yith_wcan_init_shortcodes' );\n\t}\n\n\t// clean url parameters\n\t_cleanParam( param ) {\n\t\tif (\n\t\t\t! yith_wcan_shortcodes?.process_sanitize ||\n\t\t\tyith_wcan_shortcodes?.skip_sanitize\n\t\t) {\n\t\t\treturn param;\n\t\t}\n\n\t\treturn encodeURIComponent( param );\n\t}\n\n\t// executes Ajax calls\n\t_doAjax( url, params ) {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tparams = $.extend(\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\theaders: {\n\t\t\t\t\t'X-YITH-WCAN': 1,\n\t\t\t\t},\n\t\t\t},\n\t\t\tparams\n\t\t);\n\n\t\tthis.xhr = $.ajax( params );\n\n\t\treturn this.xhr;\n\t}\n\n\t// block dom elements\n\tblock( $el ) {\n\t\tif ( typeof $.fn.block === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet background = '#fff center center no-repeat';\n\n\t\tif ( yith_wcan_shortcodes?.loader ) {\n\t\t\tbackground = `url('${ yith_wcan_shortcodes.loader }') ${ background }`;\n\t\t}\n\n\t\t$el.block( {\n\t\t\tmessage: null,\n\t\t\toverlayCSS: {\n\t\t\t\tbackground,\n\t\t\t\topacity: 0.7,\n\t\t\t},\n\t\t} );\n\t}\n\n\t// unblock dom elements\n\tunblock( $el ) {\n\t\tif ( typeof $.fn.unblock === 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$el.unblock();\n\t}\n\n\t// checks if param is one used by layared nav to filter products.\n\tisFilterParam( param ) {\n\t\tlet supportedParams = [\n\t\t\t\t'rating_filter',\n\t\t\t\t'min_price',\n\t\t\t\t'max_price',\n\t\t\t\t'price_ranges',\n\t\t\t\t'onsale_filter',\n\t\t\t\t'instock_filter',\n\t\t\t\t'featured_filter',\n\t\t\t\t'orderby',\n\t\t\t\t'product-page',\n\t\t\t\tyith_wcan_shortcodes.query_param,\n\t\t\t],\n\t\t\tcustomParams;\n\n\t\t// filter properties\n\t\tcustomParams = $(\n\t\t\tdocument\n\t\t).triggerHandler( 'yith_wcan_supported_filters_parameters', [\n\t\t\tsupportedParams,\n\t\t] );\n\n\t\tif ( !! customParams ) {\n\t\t\tsupportedParams = customParams;\n\t\t}\n\n\t\tsupportedParams = supportedParams.concat(\n\t\t\tyith_wcan_shortcodes.supported_taxonomies.map( ( i ) =>\n\t\t\t\ti.replace( 'pa_', 'filter_' )\n\t\t\t)\n\t\t);\n\n\t\tif ( -1 !== supportedParams.indexOf( param ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'filter_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( -1 !== param.indexOf( 'query_type_' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Reset_Button {\n\t// current button\n\t$reset = null;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// current button\n\t\tthis.$reset = el;\n\n\t\tthis.$reset.on( 'click', function ( ev ) {\n\t\t\tev.preventDefault();\n\n\t\t\t$( '.yith-wcan-filters' ).each( function () {\n\t\t\t\tconst preset = $( this ).data( 'preset' );\n\n\t\t\t\tpreset.deactivateAllFilters( true );\n\t\t\t\tpreset.closeModal();\n\t\t\t} );\n\t\t} );\n\n\t\tthis.$reset.data( 'reset', this ).addClass( 'enhanced' );\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\n\nexport default class YITH_WCAN_Dropdown {\n\t// current button\n\t$originalSelect = null;\n\n\t// main element\n\t$_main = null;\n\n\t// label element\n\t$_label = null;\n\n\t// dropdown\n\t$_dropdown = null;\n\n\t// search input\n\t$_search = null;\n\n\t// show more link\n\t$_showMore = null;\n\n\t// items list\n\t$_items = null;\n\n\t// current page\n\tcurrentPage = 1;\n\n\t// options\n\toptions = {};\n\n\t// init object\n\tconstructor( el, opts ) {\n\t\tthis.$originalSelect = el;\n\n\t\tif ( ! this.$originalSelect.is( 'select' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPerPage = this.$originalSelect.data( 'per_page' ),\n\t\t\tdefaultOrder = this.$originalSelect.data( 'order' ),\n\t\t\tdefaultAll = this.$originalSelect.data( 'all-label' ),\n\t\t\tdefaults = {\n\t\t\t\tshowSearch: this.$originalSelect.data( 'show_search' ),\n\t\t\t\tpaginate: this.$originalSelect.data( 'paginate' ),\n\t\t\t\tperPage: defaultPerPage ? defaultPerPage : 10,\n\t\t\t\torder: defaultOrder ? defaultOrder : 'ASC',\n\t\t\t\tgetElements: null,\n\t\t\t\tlabels: {\n\t\t\t\t\temptyLabel: defaultAll\n\t\t\t\t\t\t? defaultAll\n\t\t\t\t\t\t: yith_wcan_shortcodes.labels.empty_option,\n\t\t\t\t\tsearchPlaceholder:\n\t\t\t\t\t\tyith_wcan_shortcodes.labels.search_placeholder,\n\t\t\t\t\tnoItemsFound: yith_wcan_shortcodes.labels.no_items,\n\t\t\t\t\tshowMore: yith_wcan_shortcodes.labels.show_more,\n\t\t\t\t},\n\t\t\t};\n\n\t\tthis.options = $.extend( defaults, opts );\n\n\t\tthis._hideSelect();\n\t\tthis._initTemplate();\n\t\tthis._initActions();\n\n\t\tthis.$originalSelect.data( 'dropdown', this ).addClass( 'enhanced' );\n\t}\n\n\t// hide select\n\t_hideSelect() {\n\t\tthis.$originalSelect.hide();\n\t}\n\n\t// create dropdown\n\t_initTemplate() {\n\t\tconst $mainSpan = $( '<div/>', {\n\t\t\t\tclass: 'yith-wcan-dropdown closed',\n\t\t\t} ),\n\t\t\t$labelSpan = $( '<div/>', {\n\t\t\t\tclass: 'dropdown-label',\n\t\t\t\thtml: this.getLabel(),\n\t\t\t} ),\n\t\t\t$dropdownSpan = $( '<div>', {\n\t\t\t\tclass: 'dropdown-wrapper',\n\t\t\t} ),\n\t\t\t$matchingItemsList = $( '<ul/>', {\n\t\t\t\tclass: 'matching-items filter-items',\n\t\t\t} );\n\n\t\t$dropdownSpan.append( $matchingItemsList );\n\t\t$mainSpan.append( $labelSpan ).append( $dropdownSpan );\n\n\t\tif ( this.options.showSearch ) {\n\t\t\tthis._initSearchTemplate( $dropdownSpan );\n\t\t}\n\n\t\tif ( this.options.paginate ) {\n\t\t\tthis._initShowMoreTemplate( $dropdownSpan );\n\t\t}\n\n\t\tthis.$originalSelect.after( $mainSpan );\n\t\tthis.$_main = $mainSpan;\n\t\tthis.$_label = $labelSpan;\n\t\tthis.$_dropdown = $dropdownSpan;\n\t\tthis.$_items = $matchingItemsList;\n\t}\n\n\t// create search field\n\t_initSearchTemplate( $dropdwonSpan ) {\n\t\tconst $container = $( '<div/>', {\n\t\t\t\tclass: 'search-field-container',\n\t\t\t} ),\n\t\t\t$search = $( '<input/>', {\n\t\t\t\tname: 's',\n\t\t\t\tclass: 'search-field',\n\t\t\t\ttype: 'search',\n\t\t\t\tplaceholder: this.options.labels.searchPlaceholder,\n\t\t\t} );\n\n\t\t$container.append( $search ).prependTo( $dropdwonSpan );\n\t\tthis.$_search = $search;\n\t}\n\n\t// create showMore field\n\t_initShowMoreTemplate( $dropdwonSpan ) {\n\t\tconst $showMore = $( '<a/>', {\n\t\t\tclass: 'show-more',\n\t\t\ttext: this.options.labels.showMore.replace(\n\t\t\t\t'%d',\n\t\t\t\tthis.options.perPage\n\t\t\t),\n\t\t} );\n\n\t\t$showMore.on( 'click', this.loadNextPage.bind( this ) ).hide();\n\n\t\t$dropdwonSpan.append( $showMore );\n\t\tthis.$_showMore = $showMore;\n\t}\n\n\t// init actions performed over dropdown elements\n\t_initActions() {\n\t\tconst self = this;\n\n\t\t// main open event\n\t\tthis.$_main?.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tself.toggleDropdown();\n\t\t} );\n\t\tthis.$_dropdown.on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t} );\n\n\t\t// search event\n\t\tthis.$_search?.on( 'keyup search', () => {\n\t\t\tself._populateItems();\n\t\t} );\n\n\t\t// select event\n\t\tthis.$_items.on( 'change', ':input', function () {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'li:not(.checkbox) a', function ( ev ) {\n\t\t\tlet $li = $( this ).closest( 'li' ),\n\t\t\t\tvalue = $li.data( 'value' ),\n\t\t\t\tisActive = false;\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\t$li.hasClass( 'disabled' ) &&\n\t\t\t\t! self.isValueSelected( value )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t$li.toggleClass( 'active' );\n\t\t\tisActive = $li.hasClass( 'active' );\n\n\t\t\tif ( isActive ) {\n\t\t\t\t$li.siblings().removeClass( 'active' );\n\t\t\t}\n\n\t\t\tself._changeItemStatus( value, isActive );\n\t\t} );\n\t\tthis.$_items.on( 'click', 'label > a', function ( ev ) {\n\t\t\tconst input = $( this ).parent().find( ':input' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif (\n\t\t\t\tinput.is( '[type=\"radio\"]' ) ||\n\t\t\t\tinput.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\tinput.prop( 'checked', ! input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\tinput.change();\n\t\t} );\n\n\t\t// select change\n\t\tthis.$originalSelect.on( 'change', ( ev, selfOriginated ) => {\n\t\t\tif ( selfOriginated ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.$_items.find( 'li' ).each( function () {\n\t\t\t\tconst value = $( this ).data( 'value' );\n\n\t\t\t\tif ( self.isValueSelected( value ) ) {\n\t\t\t\t\tself._selectItem( value );\n\t\t\t\t} else {\n\t\t\t\t\tself._deselectItem( value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tself.updateLabel();\n\t\t} );\n\n\t\t// close dropdown on external click\n\t\t$( document ).on( 'click', this.closeDropdown.bind( this ) );\n\t}\n\n\t// open dropdown\n\topenDropdown() {\n\t\tthis.$_main?.addClass( 'open' ).removeClass( 'closed' );\n\t\tthis._afterDropdownOpen();\n\t}\n\n\t// close dropdown\n\tcloseDropdown() {\n\t\tthis.$_main?.removeClass( 'open' ).addClass( 'closed' );\n\t}\n\n\t// close other dropdowns\n\t_closeOtherDropdowns() {\n\t\tconst self = this,\n\t\t\tdropdowns = $( document )\n\t\t\t\t.find( 'select.enhanced' )\n\t\t\t\t.filter( function ( i, select ) {\n\t\t\t\t\tconst $el = $( select );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! $el.data( 'dropdown' ) &&\n\t\t\t\t\t\t! $el.is( self.$originalSelect )\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\tdropdowns.each( function () {\n\t\t\t$( this ).data( 'dropdown' ).closeDropdown();\n\t\t} );\n\t}\n\n\t// toggle dropdown\n\ttoggleDropdown() {\n\t\tthis.$_main?.toggleClass( 'open' ).toggleClass( 'closed' );\n\n\t\tif ( this.$_main?.hasClass( 'open' ) ) {\n\t\t\tthis._afterDropdownOpen();\n\t\t}\n\t}\n\n\t// perform operations after dropdown is open\n\t_afterDropdownOpen() {\n\t\tthis._closeOtherDropdowns();\n\n\t\tif ( this.$_search?.length ) {\n\t\t\tthis.$_search.val( '' );\n\t\t}\n\n\t\tthis._populateItems();\n\t}\n\n\t// get elements\n\tgetMatchingElements( search, limit ) {\n\t\tlet matchingElements = [],\n\t\t\t$options = this.getOptions(),\n\t\t\tpromise;\n\n\t\tpromise = new Promise( ( resolve ) => {\n\t\t\t// first of all, search across select option\n\t\t\t$options.each( function () {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\tvalue = t.val(),\n\t\t\t\t\tlabel = t.html(),\n\t\t\t\t\tregex = new RegExp( '.*' + search + '.*', 'i' ),\n\t\t\t\t\tshow =\n\t\t\t\t\t\t! search || regex.test( value ) || regex.test( label );\n\n\t\t\t\tif ( show ) {\n\t\t\t\t\tmatchingElements.push( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// then retrieve additional items\n\t\t\tif ( this.options.getElements ) {\n\t\t\t\t// we're expecting key => value pairs\n\t\t\t\tthis.options\n\t\t\t\t\t.getElements( search )\n\t\t\t\t\t.then( ( retrievedElements ) => {\n\t\t\t\t\t\tif ( retrievedElements ) {\n\t\t\t\t\t\t\t// reformat retrieved array\n\t\t\t\t\t\t\tretrievedElements = retrievedElements.reduce(\n\t\t\t\t\t\t\t\t( a, v, i ) => {\n\t\t\t\t\t\t\t\t\ta.push( { label: i, value: v } );\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// merge found results with options\n\t\t\t\t\t\t\tmatchingElements = $.extend(\n\t\t\t\t\t\t\t\tmatchingElements,\n\t\t\t\t\t\t\t\tretrievedElements\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tresolve( this._formatItems( matchingElements, limit ) );\n\t\t\t}\n\t\t} );\n\n\t\treturn promise;\n\t}\n\n\t// format items as key/value pairs for further processing\n\t_formatItems( items, limit ) {\n\t\tlet indexes = [],\n\t\t\thasMore = false;\n\n\t\t// remove duplicates and sort array of results\n\t\titems\n\t\t\t.filter( ( v ) => {\n\t\t\t\tif ( -1 === indexes.indexOf( v.value ) ) {\n\t\t\t\t\tindexes.push( v.value );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\tconst order = this.options.order,\n\t\t\t\t\tmod = order === 'ASC' ? 1 : -1;\n\n\t\t\t\tif ( a.value < b.value ) {\n\t\t\t\t\treturn -1 * mod;\n\t\t\t\t} else if ( a.value > b.value ) {\n\t\t\t\t\treturn mod;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t} );\n\n\t\t// paginate when needed\n\t\tif ( limit ) {\n\t\t\thasMore = limit < Object.keys( items ).length;\n\t\t\titems = items.slice( 0, limit );\n\t\t}\n\n\t\treturn {\n\t\t\titems,\n\t\t\thasMore,\n\t\t};\n\t}\n\n\t// generate item to append to items list\n\t_generateItem( value, label ) {\n\t\tlet active = this.isValueSelected( value ),\n\t\t\toption = this.getOptionByValue( value ),\n\t\t\t$item = $( '<li/>', {\n\t\t\t\t'data-value': value,\n\t\t\t\tclass: option.length ? option.attr( 'class' ) : '',\n\t\t\t} ),\n\t\t\t$anchor;\n\n\t\tif ( option.length ) {\n\t\t\tconst template = option.data( 'template' ),\n\t\t\t\tcount = option.data( 'count' );\n\n\t\t\tlabel = template ? template : label;\n\n\t\t\tif ( !! count ) {\n\t\t\t\tlabel += count;\n\t\t\t}\n\t\t}\n\n\t\t$anchor = $( '<a/>', {\n\t\t\thref: option.length ? option.data( 'filter_url' ) : '#',\n\t\t\thtml: label,\n\t\t\t'data-title': option.length ? option.data( 'title' ) : '',\n\t\t} );\n\n\t\tif ( this.$originalSelect.prop( 'multiple' ) ) {\n\t\t\tconst $checkbox = $( '<input/>', {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue,\n\t\t\t\t} ),\n\t\t\t\t$label = $( '<label>' );\n\n\t\t\t$checkbox.prop( 'checked', active );\n\t\t\t$label.prepend( $checkbox ).append( $anchor );\n\t\t\t$item.append( $label ).addClass( 'checkbox' );\n\t\t} else {\n\t\t\t$item.append( $anchor );\n\t\t}\n\n\t\tactive ? $item.addClass( 'active' ) : $item.removeClass( 'active' );\n\n\t\treturn $item;\n\t}\n\n\t// populate items list\n\t_populateItems( page ) {\n\t\tlet search = this.$_search?.length ? this.$_search.val() : '',\n\t\t\tperPage = this.options.paginate ? this.options.perPage : 0,\n\t\t\tlimit;\n\n\t\tpage = page ? parseInt( page ) : 1;\n\t\tlimit = page * perPage;\n\n\t\tthis.getMatchingElements( search, limit ).then( ( resultSet ) => {\n\t\t\tlet matchingItems = resultSet.items,\n\t\t\t\titems = [],\n\t\t\t\thasMore = false;\n\n\t\t\t// remove all previous items\n\t\t\tthis._emptyItems();\n\t\t\tthis._hideLoadMore();\n\n\t\t\tif ( ! matchingItems.length ) {\n\t\t\t\titems.push(\n\t\t\t\t\t$( '<li/>', { text: this.options.labels.noItemsFound } )\n\t\t\t\t);\n\n\t\t\t\tthis.currentPage = 1;\n\t\t\t} else {\n\t\t\t\tfor ( const v of matchingItems ) {\n\t\t\t\t\tif ( v.value === '' ) {\n\t\t\t\t\t\titems.unshift( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\titems.push( this._generateItem( v.value, v.label ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.currentPage = page;\n\t\t\t\thasMore = resultSet.hasMore;\n\t\t\t}\n\n\t\t\tthis.$_items.append( items );\n\n\t\t\t$( document ).trigger( 'yith_wcan_dropdown_updated' );\n\n\t\t\tif ( hasMore ) {\n\t\t\t\tthis._showLoadMore();\n\t\t\t}\n\t\t} );\n\t}\n\n\t// load next page of items\n\tloadNextPage() {\n\t\tconst page = this.currentPage + 1;\n\n\t\tthis._populateItems( page );\n\t}\n\n\t// set an item as active\n\t_selectItem( value ) {\n\t\treturn this._changeItemStatus( value, true );\n\t}\n\n\t// disable an item\n\t_deselectItem( value ) {\n\t\treturn this._changeItemStatus( value, false );\n\t}\n\n\t// change item status\n\t_changeItemStatus( value, status ) {\n\t\tconst $option = this.$originalSelect.find(\n\t\t\t`option[value=\"${ value }\"]`\n\t\t);\n\n\t\tif ( $option.length ) {\n\t\t\t$option.prop( 'selected', status );\n\n\t\t\tthis.closeDropdown();\n\t\t\tthis.updateLabel();\n\n\t\t\tthis.$originalSelect.trigger( 'change', [ true ] );\n\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// empty items list\n\t_emptyItems() {\n\t\tthis.$_items.html( '' );\n\t}\n\n\t// show \"Load more\" link\n\t_showLoadMore() {\n\t\tthis.$_showMore.show();\n\t}\n\n\t// hide \"Load more\" link\n\t_hideLoadMore() {\n\t\tthis.$_showMore.hide();\n\t}\n\n\t// returns select label\n\tgetLabel() {\n\t\treturn this.hasSelectedValues()\n\t\t\t? this.getSelectedLabels().join( ', ' )\n\t\t\t: this.options.labels.emptyLabel;\n\t}\n\n\t// update label to match new selection\n\tupdateLabel() {\n\t\tconst label = this.getLabel();\n\n\t\tthis.$_label?.html( label );\n\t}\n\n\t// returns select options\n\tgetOptions() {\n\t\treturn this.$originalSelect.find( 'option' );\n\t}\n\n\t// checks whether select has selected values\n\thasSelectedValues() {\n\t\treturn this.getSelectedOptions().length;\n\t}\n\n\t// checks whether a value is selected\n\tisValueSelected( value ) {\n\t\tconst found = this.getSelectedValues().indexOf( value.toString() );\n\n\t\treturn -1 !== found;\n\t}\n\n\t// retrieve selected options\n\tgetSelectedOptions() {\n\t\treturn this.$originalSelect.find( 'option' ).filter( ':selected' );\n\t}\n\n\t// retrieves an option node by value\n\tgetOptionByValue( value ) {\n\t\treturn this.$originalSelect.find( `option[value=\"${ value }\"]` );\n\t}\n\n\t// retrieve labels for selected options\n\tgetSelectedLabels() {\n\t\tconst labels = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tlet $option = $( this ),\n\t\t\t\ttemplate = $option.data( 'template' );\n\n\t\t\ttemplate = template\n\t\t\t\t? template\n\t\t\t\t: $option.html().replace( /\\([0-9]*\\)/, '' );\n\n\t\t\tlabels.push( template );\n\t\t} );\n\n\t\treturn labels;\n\t}\n\n\t// retrieve values for selected options\n\tgetSelectedValues() {\n\t\tconst values = [];\n\n\t\tthis.getSelectedOptions().each( function () {\n\t\t\tvalues.push( $( this ).val() );\n\t\t} );\n\n\t\treturn values;\n\t}\n\n\tdestroy() {\n\t\t// TBD\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport { $ } from '../config.js';\nimport YITH_WCAN_Dropdown from './yith-wcan-dropdown';\n\nexport default class YITH_WCAN_Preset {\n\t// main preset node\n\tpreset = false;\n\t$preset = false;\n\n\t// target of the filter, if any\n\ttarget = false;\n\t$target = false;\n\n\t// filters node\n\t$filters = false;\n\n\t// filter button\n\t$filterButtons = false;\n\n\t// nodes created just for modal layout\n\tmodalElements = {};\n\n\t// retains current status of filters\n\tactiveFilters = false;\n\n\t// mobile flag\n\tisMobile = false;\n\n\t// slider timeout\n\tsliderTimeout = false;\n\n\t// registers when status has changed\n\toriginalFilters = null;\n\tdirty = false;\n\n\t// init object\n\tconstructor( el ) {\n\t\t// main preset node\n\t\tthis.preset = '#' + el.attr( 'id' );\n\t\tthis.$preset = el;\n\n\t\t// target of the filter, if any\n\t\tthis.target = this.$preset.data( 'target' );\n\t\tthis.$target = this.target ? $( this.target ) : false;\n\n\t\tthis._regiterStatus();\n\t\tthis._initFilterButton();\n\t\tthis._initResponsive();\n\t\tthis._initFilters();\n\t\tthis._initActions();\n\n\t\tthis.$preset\n\t\t\t.data( 'preset', this )\n\t\t\t.addClass( 'enhanced' )\n\t\t\t.trigger( 'yith_wcan_preset_initialized', [ this ] );\n\t}\n\n\t// init filters\n\t_initFilters() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself._initFilter( $filter );\n\t\t} );\n\n\t\tthis.maybeShowClearAllFilters();\n\t}\n\n\t// init filter button\n\t_initFilterButton() {\n\t\tthis.$filterButtons = this.$preset.find( '.apply-filters' );\n\n\t\tif ( ! this.$filterButtons.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// manage filter button\n\t\tthis.$filterButtons\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthis.filter();\n\t\t\t} )\n\t\t\t.hide();\n\t}\n\n\t// init generic actions\n\t_initActions() {\n\t\tthis.$preset.find( 'form' ).on( 'submit', ( ev ) => {\n\t\t\tev.preventDefault();\n\t\t} );\n\t}\n\n\t// init responsive\n\t_initResponsive() {\n\t\tif ( ! yith_wcan_shortcodes.modal_on_mobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst media = window.matchMedia(\n\t\t\t`(max-width: ${ yith_wcan_shortcodes.mobile_media_query }px)`\n\t\t);\n\n\t\t$( window )\n\t\t\t.on( 'resize', () => {\n\t\t\t\tconst isMobile = !! media.matches;\n\n\t\t\t\tif ( isMobile !== this.isMobile ) {\n\t\t\t\t\tthis.isMobile = isMobile;\n\t\t\t\t\tthis._afterLayoutChange();\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.resize();\n\t}\n\n\t// init filter\n\t_initFilter( $filter ) {\n\t\tconst self = this,\n\t\t\thandleChange = function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$currentFilter = t.closest( '.yith-wcan-filter' ),\n\t\t\t\t\tmultiple = $currentFilter.length\n\t\t\t\t\t\t? 'yes' === $currentFilter.data( 'multiple' )\n\t\t\t\t\t\t: false,\n\t\t\t\t\t$item = t.closest( '.filter-item' ),\n\t\t\t\t\t$items = $item.length\n\t\t\t\t\t\t? $currentFilter.find( '.filter-item' ).not( $item )\n\t\t\t\t\t\t: [];\n\n\t\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tev.preventDefault();\n\n\t\t\t\t$items.length &&\n\t\t\t\t\t! multiple &&\n\t\t\t\t\t$items\n\t\t\t\t\t\t.removeClass( 'active' )\n\t\t\t\t\t\t.children( 'label' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.parent( '.checked' )\n\t\t\t\t\t\t.removeClass( 'checked' );\n\t\t\t\t$item.length && $item.toggleClass( 'active' );\n\n\t\t\t\t// reset active filters.\n\t\t\t\tself.activeFilters = false;\n\n\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\tself.maybeToggleClearAllFilters();\n\t\t\t\tself.maybeToggleClearFilter( $currentFilter );\n\t\t\t};\n\n\t\t// handle filter activation/deactivation by click on label (no input involved)\n\t\t$filter\n\t\t\t.find( '.filter-item' )\n\t\t\t.not( '.checkbox' )\n\t\t\t.not( '.radio' )\n\t\t\t.on( 'click', 'a', function ( ev ) {\n\t\t\t\tconst t = $( this ),\n\t\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\t\tif ( ! $( ev?.delegateTarget ).is( $item ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\thandleChange.call( this, ev );\n\t\t\t} );\n\n\t\t// handle filter activation/deactivation from input change\n\t\t$filter.find( ':input' ).on( 'change', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\tt.prop( 'checked', false );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\thandleChange.call( this, ev );\n\t\t} );\n\n\t\t// handle filter activation/deactivation by click on label (there is an input whose state can be switched)\n\t\t$filter.find( 'label > a' ).on( 'click', function ( ev ) {\n\t\t\tconst t = $( this ),\n\t\t\t\t$item = t.closest( '.filter-item' );\n\n\t\t\tev.preventDefault();\n\n\t\t\tif ( $item.is( '.disabled' ) && ! $item.is( '.active' ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst $input = t.parent().find( ':input' );\n\n\t\t\tif (\n\t\t\t\t$input.is( '[type=\"radio\"]' ) ||\n\t\t\t\t$input.is( '[type=\"checkbox\"]' )\n\t\t\t) {\n\t\t\t\t$input.prop( 'checked', ! $input.prop( 'checked' ) );\n\t\t\t}\n\n\t\t\t$input.change();\n\t\t} );\n\n\t\t// init tooltip\n\t\tthis._initTooltip( $filter );\n\n\t\t// init price slider\n\t\tthis._initPriceSlider( $filter );\n\n\t\t// init dropdown\n\t\tthis._initDropdown( $filter );\n\n\t\t// init collapsable\n\t\tthis._initCollapsable( $filter );\n\n\t\t// init clear anchors\n\t\tthis.maybeShowClearFilter( $filter );\n\n\t\t// init custom inputs\n\t\tif ( this.$preset?.hasClass( 'custom-style' ) ) {\n\t\t\tthis._initCustomInput( $filter );\n\t\t}\n\t}\n\n\t// init tooltip\n\t_initTooltip( $filter, position ) {\n\t\t$filter.find( '[data-title]' ).each( function () {\n\t\t\tconst t = $( this );\n\n\t\t\tif ( t.hasClass( 'tooltip-added' ) || ! t.data( 'title' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tt.on( 'mouseenter', function () {\n\t\t\t\tlet th = $( this ),\n\t\t\t\t\ttooltip = null,\n\t\t\t\t\twrapperWidth = th.outerWidth(),\n\t\t\t\t\tleft = 0,\n\t\t\t\t\twidth = 0;\n\n\t\t\t\tif (\n\t\t\t\t\t! position ||\n\t\t\t\t\t( 'top' !== position && 'right' !== position )\n\t\t\t\t) {\n\t\t\t\t\tconst container = th.closest( '.filter-item' );\n\n\t\t\t\t\tposition =\n\t\t\t\t\t\tcontainer.hasClass( 'color' ) ||\n\t\t\t\t\t\tcontainer.hasClass( 'label' )\n\t\t\t\t\t\t\t? 'top'\n\t\t\t\t\t\t\t: 'right';\n\t\t\t\t}\n\n\t\t\t\ttooltip = $( '<span>', {\n\t\t\t\t\tclass: 'yith-wcan-tooltip',\n\t\t\t\t\thtml: th.data( 'title' ),\n\t\t\t\t} );\n\n\t\t\t\tth.append( tooltip );\n\n\t\t\t\twidth = tooltip.outerWidth() + 6;\n\t\t\t\ttooltip.outerWidth( width );\n\n\t\t\t\tif ( 'top' === position ) {\n\t\t\t\t\tleft = ( wrapperWidth - width ) / 2;\n\t\t\t\t} else {\n\t\t\t\t\tleft = wrapperWidth + 15;\n\t\t\t\t}\n\n\t\t\t\ttooltip.css( { left: left.toFixed( 0 ) + 'px' } ).fadeIn( 200 );\n\n\t\t\t\tth.addClass( 'with-tooltip' );\n\t\t\t} ).on( 'mouseleave', function () {\n\t\t\t\tconst th = $( this );\n\n\t\t\t\tth.find( '.yith-wcan-tooltip' ).fadeOut( 200, function () {\n\t\t\t\t\tth.removeClass( 'with-tooltip' )\n\t\t\t\t\t\t.find( '.yith-wcan-tooltip' )\n\t\t\t\t\t\t.remove();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tt.addClass( 'tooltip-added' );\n\t\t} );\n\t}\n\n\t// init dropdown\n\t_initDropdown( $filter ) {\n\t\tconst $dropdown = $filter.find( 'select.filter-dropdown' );\n\n\t\tif ( ! $dropdown.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t$dropdown.hasClass( 'select2-hidden-accessible' ) &&\n\t\t\t'undefined' !== typeof $.fn.selectWoo\n\t\t) {\n\t\t\t$dropdown.selectWoo( 'destroy' );\n\t\t}\n\n\t\tthis._initDropdownObject( $dropdown, {\n\t\t\tpaginate: true,\n\t\t\tperPage: yith_wcan_shortcodes.terms_per_page,\n\t\t} );\n\t}\n\n\t// init dropdown object\n\t_initDropdownObject( $dropdown, opts ) {\n\t\treturn new YITH_WCAN_Dropdown( $dropdown, opts );\n\t}\n\n\t// init price slider\n\t_initPriceSlider( $filter ) {\n\t\tif ( ! $filter.hasClass( 'filter-price-slider' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst self = this,\n\t\t\t$container = $filter.find( '.price-slider' ),\n\t\t\t$minInput = $container.find( '.price-slider-min' ),\n\t\t\t$maxInput = $container.find( '.price-slider-max' ),\n\t\t\tmin = parseFloat( $container.data( 'min' ) ),\n\t\t\tmax = parseFloat( $container.data( 'max' ) ),\n\t\t\tcurrentMin = parseFloat( $minInput.val() ),\n\t\t\tcurrentMax = parseFloat( $maxInput.val() ),\n\t\t\tstep = parseFloat( $container.data( 'step' ) ),\n\t\t\thandleSliderChange = function () {\n\t\t\t\tif ( self.sliderTimeout ) {\n\t\t\t\t\tclearTimeout( self.sliderTimeout );\n\t\t\t\t}\n\n\t\t\t\tself.sliderTimeout = setTimeout( () => {\n\t\t\t\t\tself.maybeFilter( $filter );\n\t\t\t\t}, 200 );\n\t\t\t};\n\n\t\t$filter.find( '.price-slider-ui' ).ionRangeSlider( {\n\t\t\tskin: 'round',\n\t\t\ttype: 'double',\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tstep,\n\t\t\tfrom: currentMin,\n\t\t\tto: currentMax,\n\t\t\tmin_interval: step,\n\t\t\tvalues_separator: ' - ',\n\t\t\tprettify: ( v ) => this.formatPrice( v ),\n\t\t\tonChange: ( data ) => {\n\t\t\t\t$minInput.val( data.from );\n\t\t\t\t$maxInput.val( data.to );\n\t\t\t},\n\t\t\tonFinish: handleSliderChange,\n\t\t} );\n\n\t\t$minInput\n\t\t\t.add( $maxInput )\n\t\t\t.off( 'change' )\n\t\t\t.on( 'keyup', () => {\n\t\t\t\tif ( ! $minInput.val() || ! $maxInput.val() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thandleSliderChange();\n\t\t\t} );\n\t}\n\n\t// init collapsable\n\t_initCollapsable( $filter ) {\n\t\tthis._initTitleCollapsable( $filter );\n\t\tthis._initHierarchyCollapsable( $filter );\n\t}\n\n\t// init toggle on click of the title\n\t_initTitleCollapsable( $filter ) {\n\t\tconst $title = $filter.find( '.collapsable' );\n\n\t\tif ( ! $title.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._initToggle( $title, $title, $filter.find( '.filter-content' ) );\n\t}\n\n\t// init toggle on click of the parent li\n\t_initHierarchyCollapsable( $filter ) {\n\t\tconst $items = $filter.find( '.hierarchy-collapsable' );\n\n\t\tif ( ! $items.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// set parents of currently active term as open\n\t\tconst self = this,\n\t\t\tactive = $filter.find( '.active' );\n\n\t\tif ( active.length ) {\n\t\t\tactive\n\t\t\t\t.parents( '.hierarchy-collapsable' )\n\t\t\t\t.removeClass( 'closed' )\n\t\t\t\t.addClass( 'opened' );\n\n\t\t\tif (\n\t\t\t\tactive.hasClass( 'hierarchy-collapsable' ) &&\n\t\t\t\tyith_wcan_shortcodes.show_current_children\n\t\t\t) {\n\t\t\t\tactive.removeClass( 'closed' ).addClass( 'opened' );\n\t\t\t}\n\t\t}\n\n\t\t$items.each( function () {\n\t\t\tconst $t = $( this ),\n\t\t\t\t$toggle = $( '<span/>', {\n\t\t\t\t\tclass: 'toggle-handle',\n\t\t\t\t} );\n\n\t\t\t$toggle.appendTo( $t );\n\n\t\t\tself._initToggle( $toggle, $t, $t.children( 'ul.filter-items' ) );\n\t\t} );\n\t}\n\n\t// init toggle to generic toggle/target pair\n\t_initToggle( $toggle, $container, $target ) {\n\t\tif ( $container.hasClass( 'closed' ) ) {\n\t\t\t$target.hide();\n\t\t}\n\n\t\t$toggle.off( 'click' ).on( 'click', ( ev ) => {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\n\t\t\t$target.slideToggle( 400, () => {\n\t\t\t\t$container.toggleClass( 'opened' ).toggleClass( 'closed' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// init custom input\n\t_initCustomInput( $filter ) {\n\t\t$filter.find( ':input' ).each( function () {\n\t\t\tlet input = $( this ),\n\t\t\t\ttype = input.attr( 'type' ),\n\t\t\t\tcontainerClass = `${ type }button`,\n\t\t\t\tcontainer;\n\n\t\t\tif ( 'checkbox' !== type && 'radio' !== type ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.closest( `.${ containerClass }` ).length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( input.is( ':checked' ) ) {\n\t\t\t\tcontainerClass += ' checked';\n\t\t\t}\n\n\t\t\tcontainer = $( '<span/>', {\n\t\t\t\tclass: containerClass,\n\t\t\t} );\n\n\t\t\tinput.wrap( container ).on( 'change', function () {\n\t\t\t\tconst t = $( this );\n\n\t\t\t\tt.prop( 'checked' )\n\t\t\t\t\t? t.parent().addClass( 'checked' )\n\t\t\t\t\t: t.parent().removeClass( 'checked' );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// register initial status\n\t_regiterStatus() {\n\t\tthis.originalFilters = this.getFiltersProperties();\n\t}\n\n\t// trigger handling after layout change\n\t_afterLayoutChange() {\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset\n\t\t\t\t.addClass( 'filters-modal' )\n\t\t\t\t.attr( 'role', 'dialog' )\n\t\t\t\t.attr( 'tabindex', '-1' )\n\t\t\t\t.hide();\n\n\t\t\tthis._addCloseModalButton();\n\t\t\tthis._addApplyFiltersModalButton();\n\t\t\tthis._switchToCollapsables();\n\n\t\t\tthis.$filterButtons?.hide();\n\t\t} else {\n\t\t\tthis.$preset\n\t\t\t\t.removeClass( 'filters-modal' )\n\t\t\t\t.removeClass( 'open' )\n\t\t\t\t.removeAttr( 'role' )\n\t\t\t\t.removeAttr( 'tabindex' )\n\t\t\t\t.show();\n\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\n\t\t\tthis._removeCloseModalButton();\n\t\t\tthis._removeApplyFiltersModalButton();\n\t\t\tthis._switchBackCollapsables();\n\n\t\t\tthis.$filterButtons?.show();\n\t\t}\n\t}\n\n\t// add modal close button\n\t_addCloseModalButton() {\n\t\tconst $closeButton = $( '<a/>', {\n\t\t\tclass: 'close-button',\n\t\t\thtml: '&times;',\n\t\t\t'data-dismiss': 'modal',\n\t\t\t'aria-label': yith_wcan_shortcodes.labels.close,\n\t\t} );\n\n\t\t$closeButton\n\t\t\t.prependTo( this.$preset )\n\t\t\t.on( 'click', this.closeModal.bind( this ) );\n\t\tthis.modalElements.closeButton = $closeButton;\n\t}\n\n\t// remove modal close button\n\t_removeCloseModalButton() {\n\t\tthis.modalElements?.closeButton?.remove();\n\t}\n\n\t// show main filter button for the modal\n\t_addApplyFiltersModalButton() {\n\t\tconst $filterButton = $( '<button/>', {\n\t\t\tclass: 'apply-filters main-modal-button',\n\t\t\thtml: yith_wcan_shortcodes.labels.show_results,\n\t\t\t'data-dismiss': 'modal',\n\t\t} );\n\n\t\t$filterButton.appendTo( this.$preset ).on( 'click', () => {\n\t\t\tthis.filter();\n\t\t\tthis.closeModal();\n\t\t} );\n\t\tthis.modalElements.applyFiltersButton = $filterButton;\n\t}\n\n\t// hide main filter button for the modal\n\t_removeApplyFiltersModalButton() {\n\t\tthis.modalElements?.applyFiltersButton?.remove();\n\t}\n\n\t// convert all filters to collapsable\n\t_switchToCollapsables() {\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif ( ! $title.length || $title.hasClass( 'collapsable' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title.addClass( 'collapsable' ).data( 'disable-collapse', true );\n\n\t\t\tself._initTitleCollapsable( $filter );\n\t\t} );\n\t}\n\n\t// switch back filters to their previous collapsable state\n\t_switchBackCollapsables() {\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this ),\n\t\t\t\t$title = $filter.find( '.filter-title' );\n\n\t\t\tif (\n\t\t\t\t! $title.length ||\n\t\t\t\t! $title.hasClass( 'collapsable' ) ||\n\t\t\t\t! $title.data( 'disable-collapse' )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$title\n\t\t\t\t.removeClass( 'collapsable' )\n\t\t\t\t.removeData( 'disable-collapse', true )\n\t\t\t\t.off( 'click' );\n\n\t\t\t$filter.find( '.filter-content' ).show();\n\t\t} );\n\t}\n\n\t// close all collpasable before showing modal\n\t_openAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.show()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.removeClass( 'closed' )\n\t\t\t.addClass( 'opened' );\n\t}\n\n\t// close all collpasable before showing modal\n\t_closeAllCollapsables() {\n\t\tthis.$filters\n\t\t\t.not( '.no-title' )\n\t\t\t.not( ( i, v ) => {\n\t\t\t\treturn this.isFilterActive( $( v ) );\n\t\t\t} )\n\t\t\t.find( '.filter-content' )\n\t\t\t.hide()\n\t\t\t.end()\n\t\t\t.find( '.filter-title' )\n\t\t\t.addClass( 'closed' )\n\t\t\t.removeClass( 'opened' );\n\t}\n\n\t// update status change flag, if filters have changed\n\tmaybeRegisterStatusChange() {\n\t\tconst currentFilters = this.getFiltersProperties(),\n\t\t\tcurrentStr = JSON.stringify( currentFilters ),\n\t\t\toriginalStr = JSON.stringify( this.originalFilters );\n\n\t\tthis.dirty = currentStr !== originalStr;\n\t}\n\n\t// apply filters when possible\n\tmaybeFilter( $initiator ) {\n\t\t// register status change\n\t\tthis.maybeRegisterStatusChange();\n\n\t\t// filter, or show filter button.\n\t\tif ( yith_wcan_shortcodes.instant_filters && ! this.isMobile ) {\n\t\t\tthis.filter();\n\t\t} else if (\n\t\t\t! yith_wcan_shortcodes.instant_filters &&\n\t\t\t! this.isMobile\n\t\t) {\n\t\t\tthis.dirty\n\t\t\t\t? this.$filterButtons?.show()\n\t\t\t\t: this.$filterButtons?.hide();\n\t\t} else if ( this.isMobile && this.dirty ) {\n\t\t\tthis.$preset.addClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.show();\n\t\t}\n\t}\n\n\t// main filtering method\n\tfilter() {\n\t\tconst filter = window?.product_filter;\n\n\t\tfilter\n\t\t\t?.doFilter( this.getFiltersProperties(), this.target, this.preset )\n\t\t\t?.done( () => {\n\t\t\t\tlet newPreset = $( this.preset );\n\n\t\t\t\tif (\n\t\t\t\t\t! this.isMobile &&\n\t\t\t\t\tnewPreset.length &&\n\t\t\t\t\tyith_wcan_shortcodes.scroll_top\n\t\t\t\t) {\n\t\t\t\t\tlet targetOffset = newPreset.offset().top;\n\n\t\t\t\t\tif ( !! yith_wcan_shortcodes.scroll_target ) {\n\t\t\t\t\t\tconst scrollTarget = $(\n\t\t\t\t\t\t\tyith_wcan_shortcodes.scroll_target\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttargetOffset = scrollTarget.length\n\t\t\t\t\t\t\t? scrollTarget.offset().top\n\t\t\t\t\t\t\t: targetOffset;\n\t\t\t\t\t}\n\t\t\t\t\t$( 'body, html' ).animate( {\n\t\t\t\t\t\tscrollTop: targetOffset - 100,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// register new filters, clear status flag\n\t\t\t\tthis.originalFilters = this.getFiltersProperties();\n\t\t\t\tthis.dirty = false;\n\t\t\t} );\n\n\t\tif ( this.isMobile ) {\n\t\t\tthis.$preset.removeClass( 'with-filter-button' );\n\t\t\tthis.modalElements.applyFiltersButton?.hide();\n\t\t}\n\t}\n\n\t// get all filter nodes\n\tgetFilters() {\n\t\tif ( false === this.$filters ) {\n\t\t\tthis.$filters = this.$preset.find( '.yith-wcan-filter' );\n\t\t}\n\n\t\treturn this.$filters;\n\t}\n\n\t// retrieves all filters that we want to apply\n\tgetActiveFilters() {\n\t\tif ( false === this.activeFilters ) {\n\t\t\tthis.activeFilters = this.getFiltersProperties();\n\t\t}\n\n\t\treturn this.activeFilters;\n\t}\n\n\t// check whether there is any filter active\n\tisAnyFilterActive() {\n\t\treturn !! Object.keys( this.getActiveFilters() ).length;\n\t}\n\n\t// checks whether current filter is active\n\tisFilterActive( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tactive,\n\t\t\tfilteredActive;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tactive = 'object' === typeof val ? !! val?.length : !! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tactive = $filter.find( '.filter-item' ).filter( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst step = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'step' )\n\t\t\t\t\t),\n\t\t\t\t\tmin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'min' )\n\t\t\t\t\t),\n\t\t\t\t\tmax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider' ).data( 'max' )\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMin = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t\t),\n\t\t\t\t\tcurrentMax = parseFloat(\n\t\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t\t);\n\n\t\t\t\tactive =\n\t\t\t\t\tMath.abs( currentMin - min ) >= step ||\n\t\t\t\t\tMath.abs( currentMax - max ) >= step;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tactive =\n\t\t\t\t\t'menu_order' !== $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tactive = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredActive = $filter.triggerHandler( 'yith_wcan_is_filter_active', [\n\t\t\tactive,\n\t\t\tthis,\n\t\t] );\n\t\tactive =\n\t\t\ttypeof filteredActive !== 'undefined' ? filteredActive : active;\n\n\t\treturn active;\n\t}\n\n\t// count the number of active items per filter\n\tcountActiveItems( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tcount;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\tcase 'review':\n\t\t\tcase 'price_range':\n\t\t\t\tconst $dropdown = $filter.find( '.filter-dropdown' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tconst val = $dropdown.val();\n\n\t\t\t\t\tcount = 'object' === typeof val ? val?.length : +!! val;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// if we use type other than dropdown, fallthrough\n\t\t\tcase 'stock_sale':\n\t\t\t\tcount = $filter.find( '.filter-items' ).find( '.active' )\n\t\t\t\t\t.length;\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tif ( this.isFilterActive( $filter ) ) {\n\t\t\t\t\tcount = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\tdefault:\n\t\t\t\tcount = 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t// retrieves filter properties for the filter\n\tgetFilterProperties( $filter ) {\n\t\tlet filterType = $filter.data( 'filter-type' ),\n\t\t\tmultiple = 'yes' === $filter.data( 'multiple' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' ),\n\t\t\tproperties = {},\n\t\t\tfilteredProperties,\n\t\t\t$active;\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tlet activeTerms = [],\n\t\t\t\t\ttaxonomy = $filter.data( 'taxonomy' ),\n\t\t\t\t\tisAttr = 0 === taxonomy.indexOf( 'filter' ),\n\t\t\t\t\trelation = $filter.data( 'relation' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tactiveTerms = $dropdown.val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTerms.push( $dropdown.val() );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tactiveTerms = $active.get().reduce( function ( a, v ) {\n\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t: v.data( 'term-slug' );\n\n\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\treturn a;\n\t\t\t\t\t}, activeTerms );\n\t\t\t\t}\n\n\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.pop();\n\t\t\t\t} else {\n\t\t\t\t\tconst glue = ! isAttr && 'and' === relation ? '+' : ',';\n\t\t\t\t\tproperties[ taxonomy ] = activeTerms.join( glue );\n\t\t\t\t}\n\n\t\t\t\tif ( isAttr ) {\n\t\t\t\t\tproperties[\n\t\t\t\t\t\ttaxonomy.replace( 'filter_', 'query_type_' )\n\t\t\t\t\t] = relation;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tproperties.rating_filter = $dropdown.val();\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( ! multiple ) {\n\t\t\t\t\t\t$active = $active.first();\n\t\t\t\t\t\tproperties.rating_filter = $active.is( 'label' )\n\t\t\t\t\t\t\t? $active.find( ':input' ).val()\n\t\t\t\t\t\t\t: $active.data( 'rating' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.rating_filter = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( function ( a, v ) {\n\t\t\t\t\t\t\t\tlet val;\n\n\t\t\t\t\t\t\t\tv = $( v );\n\t\t\t\t\t\t\t\tval = v.is( 'label' )\n\t\t\t\t\t\t\t\t\t? v.find( ':input' ).val()\n\t\t\t\t\t\t\t\t\t: v.data( 'rating' );\n\n\t\t\t\t\t\t\t\tif ( ! val ) {\n\t\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ta.push( val );\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, [] )\n\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $dropdown.val().join( ',' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 0 ];\n\t\t\t\t\t\tproperties.max_price = $dropdown\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.split( '-' )[ 1 ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$active = $filter\n\t\t\t\t\t\t.find( '.filter-item' )\n\t\t\t\t\t\t.filter( '.active' )\n\t\t\t\t\t\t.children( 'a, label' );\n\n\t\t\t\t\tif ( multiple ) {\n\t\t\t\t\t\tproperties.price_ranges = $active\n\t\t\t\t\t\t\t.get()\n\t\t\t\t\t\t\t.reduce( ( a, v ) => {\n\t\t\t\t\t\t\t\tlet min = $( v ).data( 'range-min' ),\n\t\t\t\t\t\t\t\t\tmax = $( v ).data( 'range-max' );\n\n\t\t\t\t\t\t\t\ta += ( max ? `${ min }-${ max }` : min ) + ',';\n\n\t\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\t\t}, '' )\n\t\t\t\t\t\t\t.replace( /^(.*),$/, '$1' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-min' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t\t\t$active.first().data( 'range-max' )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tproperties.min_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-min' ).val()\n\t\t\t\t);\n\t\t\t\tproperties.max_price = parseFloat(\n\t\t\t\t\t$filter.find( '.price-slider-max' ).val()\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( $filter.find( '.filter-on-sale' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.onsale_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-in-stock' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.instock_filter = 1;\n\t\t\t\t}\n\t\t\t\tif ( $filter.find( '.filter-featured' ).is( '.active' ) ) {\n\t\t\t\t\tproperties.featured_filter = 1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\tproperties.orderby = $filter.find( '.filter-order-by' ).val();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tfilteredProperties = $filter.triggerHandler(\n\t\t\t'yith_wcan_filter_properties',\n\t\t\t[ properties, self ]\n\t\t);\n\t\tproperties =\n\t\t\ttypeof filteredProperties !== 'undefined'\n\t\t\t\t? filteredProperties\n\t\t\t\t: properties;\n\n\t\treturn properties;\n\t}\n\n\t// retrieves properties for all filters of the preset\n\tgetFiltersProperties() {\n\t\tlet properties = {};\n\t\tconst self = this;\n\n\t\tthis.getFilters().each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tconst filterProperties = self.getFilterProperties( $filter );\n\n\t\t\t\tproperties = self.mergeProperties(\n\t\t\t\t\tproperties,\n\t\t\t\t\tfilterProperties,\n\t\t\t\t\t$filter\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn properties;\n\t}\n\n\t// retrieve filters matching any of the properties passed\n\tgetFiltersByProperties( properties ) {\n\t\tconst self = this;\n\n\t\treturn this.getFilters().filter( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tif ( self.isFilterActive( $filter ) ) {\n\t\t\t\tlet filterProperties = self.getFilterProperties( $filter ),\n\t\t\t\t\thasProp = false;\n\n\t\t\t\tfor ( const prop in properties ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[ 'min_price', 'max_price', 'price_ranges' ].includes(\n\t\t\t\t\t\t\tprop\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\t( filterProperties.min_price ||\n\t\t\t\t\t\t\tfilterProperties.price_ranges )\n\t\t\t\t\t) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if ( filterProperties[ prop ] ) {\n\t\t\t\t\t\thasProp = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn hasProp;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t// show clear selection anchor\n\tmaybeToggleClearFilter( $filter ) {\n\t\tif ( ! this.isFilterActive( $filter ) ) {\n\t\t\tthis.maybeHideClearFilter( $filter );\n\t\t} else {\n\t\t\tthis.maybeShowClearFilter( $filter );\n\t\t}\n\t}\n\n\t// show clear all selections anchor\n\tmaybeToggleClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() ) {\n\t\t\tthis.maybeHideClearAllFilters();\n\t\t} else {\n\t\t\tthis.maybeShowClearAllFilters();\n\t\t}\n\t}\n\n\t// show clear selection anchor\n\tmaybeShowClearFilter( $filter ) {\n\t\tif (\n\t\t\t! this.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\t$filter.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_selection,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( $filter.find( '.filter-content' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateFilter(\n\t\t\t\t\t$filter,\n\t\t\t\t\tfalse,\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearFilter( $filter );\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeShowClearAllFilters() {\n\t\tif ( ! this.isAnyFilterActive() || ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link if already added.\n\t\tthis.$preset.find( '.clear-selection' ).remove();\n\n\t\t// add new clear selection link.\n\t\t$( '<a/>', {\n\t\t\tclass: 'clear-selection',\n\t\t\ttext: yith_wcan_shortcodes.labels.clear_all_selections,\n\t\t\trole: 'button',\n\t\t} )\n\t\t\t.prependTo( this.$preset.find( '.filters-container' ) )\n\t\t\t.on( 'click', ( ev ) => {\n\t\t\t\tev.preventDefault();\n\n\t\t\t\tthis.deactivateAllFilters(\n\t\t\t\t\tyith_wcan_shortcodes.instant_filters\n\t\t\t\t);\n\t\t\t\tthis.maybeHideClearAllFilters();\n\n\t\t\t\tif ( yith_wcan_shortcodes.instant_filters ) {\n\t\t\t\t\tthis.closeModal();\n\t\t\t\t}\n\t\t\t} );\n\t}\n\n\t// hide clear selection anchor\n\tmaybeHideClearFilter( $filter ) {\n\t\tif (\n\t\t\tthis.isFilterActive( $filter ) ||\n\t\t\t! yith_wcan_shortcodes.show_clear_filter\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\t$filter.find( '.clear-selection' ).remove();\n\t}\n\n\t// show clearAll anchor, when on mobile layout\n\tmaybeHideClearAllFilters() {\n\t\tif ( this.isAnyFilterActive() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// remove clear selection link.\n\t\tthis.$preset\n\t\t\t.find( '.filters-container' )\n\t\t\t.children( '.clear-selection' )\n\t\t\t.remove();\n\t}\n\n\t// deactivate filter\n\tdeactivateFilter( $filter, properties, doFilter ) {\n\t\tconst filterType = $filter.data( 'filter-type' ),\n\t\t\t$items = $filter.find( '.filter-item' ),\n\t\t\t$activeItems = $items.filter( '.active' ),\n\t\t\t$dropdown = $filter.find( '.filter-dropdown' );\n\n\t\tswitch ( filterType ) {\n\t\t\tcase 'tax':\n\t\t\t\tconst taxonomy = $filter.data( 'taxonomy' );\n\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t$option.val().toString() ===\n\t\t\t\t\t\t\t\tproperties[ taxonomy ].toString()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'term-slug' );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tvalue.toString() ===\n\t\t\t\t\t\t\tproperties[ taxonomy ].toString()\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'review':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this );\n\n\t\t\t\t\t\t\tif ( $option.val() === properties.rating_filter ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'rating' );\n\n\t\t\t\t\t\tif ( value === properties.rating_filter ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_range':\n\t\t\t\tif ( $dropdown.length ) {\n\t\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t\t$dropdown.find( 'option' ).prop( 'selected', false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$dropdown.find( 'option' ).each( function () {\n\t\t\t\t\t\t\tconst $option = $( this ),\n\t\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t\t? `-${ properties.max_price }`\n\t\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\t\tif ( $option.val() === formattedRange ) {\n\t\t\t\t\t\t\t\t$option.prop( 'selected', false );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t$dropdown.change();\n\t\t\t\t} else if ( ! properties ) {\n\t\t\t\t\t$activeItems.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t$activeItems.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\t$activeItems.each( function () {\n\t\t\t\t\t\tlet $item = $( this ),\n\t\t\t\t\t\t\t$label = $item.children( 'label' ),\n\t\t\t\t\t\t\t$anchor = $item.children( 'a' ),\n\t\t\t\t\t\t\tformattedRange,\n\t\t\t\t\t\t\tvalue;\n\n\t\t\t\t\t\tvalue = $label.length\n\t\t\t\t\t\t\t? $label.find( ':input' ).val()\n\t\t\t\t\t\t\t: $anchor.data( 'min_price' ) +\n\t\t\t\t\t\t\t ( $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t? '-' + $anchor.data( 'max_price' )\n\t\t\t\t\t\t\t\t\t: '' );\n\n\t\t\t\t\t\tif ( properties.min_price ) {\n\t\t\t\t\t\t\tformattedRange =\n\t\t\t\t\t\t\t\tproperties.min_price +\n\t\t\t\t\t\t\t\t( properties.max_price\n\t\t\t\t\t\t\t\t\t? '-' + properties.max_price\n\t\t\t\t\t\t\t\t\t: '' );\n\t\t\t\t\t\t} else if ( properties.price_ranges ) {\n\t\t\t\t\t\t\tformattedRange = properties.price_ranges;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( value === formattedRange ) {\n\t\t\t\t\t\t\t$item.children( 'label' ).children( 'a' ).click();\n\t\t\t\t\t\t\t$item.removeClass( 'active' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'price_slider':\n\t\t\t\tconst $priceSlider = $filter.find( '.price-slider' );\n\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-min' )\n\t\t\t\t\t.val( $priceSlider.data( 'min' ) );\n\t\t\t\t$filter\n\t\t\t\t\t.find( '.price-slider-max' )\n\t\t\t\t\t.val( $priceSlider.data( 'max' ) )\n\t\t\t\t\t.change();\n\t\t\t\tbreak;\n\t\t\tcase 'orderby':\n\t\t\t\t$filter.find( 'select' ).val( 'menu_order' );\n\t\t\t\tbreak;\n\t\t\tcase 'stock_sale':\n\t\t\t\tif ( ! properties ) {\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\t\t\t\t\t$filter\n\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t.change();\n\n\t\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\t} else {\n\t\t\t\t\tif ( properties?.instock_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-in-stock' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.onsale_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-on-sale' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( properties?.featured_filter ) {\n\t\t\t\t\t\t$filter\n\t\t\t\t\t\t\t.find( '.filter-featured' )\n\t\t\t\t\t\t\t.find( ':input' )\n\t\t\t\t\t\t\t.prop( 'checked', false )\n\t\t\t\t\t\t\t.change()\n\t\t\t\t\t\t\t.closest( '.filter-item' )\n\t\t\t\t\t\t\t.removeClass( 'active' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t$items.removeClass( 'active' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate all filters\n\tdeactivateAllFilters( doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFilters();\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter );\n\t\t} );\n\n\t\tthis.activeFilters = false;\n\n\t\tif ( doFilter ) {\n\t\t\tthis.filter();\n\t\t}\n\t}\n\n\t// deactivate filters that matches a specific set of properties\n\tdeactivateFilterByProperties( properties, doFilter ) {\n\t\tconst self = this,\n\t\t\t$filters = this.getFiltersByProperties( properties );\n\n\t\tif ( ! $filters.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t$filters.each( function () {\n\t\t\tconst $filter = $( this );\n\n\t\t\tself.deactivateFilter( $filter, properties, doFilter );\n\t\t} );\n\t}\n\n\t// open filters as a modal, when in mobile layout\n\topenModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( yith_wcan_shortcodes.toggles_open_on_modal ) {\n\t\t\tthis._openAllCollapsables();\n\t\t} else {\n\t\t\tthis._closeAllCollapsables();\n\t\t}\n\n\t\t$( 'body' )\n\t\t\t.css( 'overflow', 'hidden' )\n\t\t\t.addClass( 'yith-wcan-preset-modal-open' );\n\n\t\tthis.$preset.show();\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.addClass( 'open' );\n\t\t}, 100 );\n\t}\n\n\t// close filters modal, when in mobile layout\n\tcloseModal() {\n\t\tif ( ! this.isMobile ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.$preset.removeClass( 'open' );\n\n\t\tsetTimeout( () => {\n\t\t\tthis.$preset.hide();\n\t\t\t$( 'body' )\n\t\t\t\t.css( 'overflow', 'auto' )\n\t\t\t\t.removeClass( 'yith-wcan-preset-modal-open' );\n\t\t}, 300 );\n\t}\n\n\t// utility that formats the price according to store configuration.\n\tformatPrice( price ) {\n\t\tif ( 'undefined' !== typeof accounting ) {\n\t\t\tprice = accounting.formatMoney( price, {\n\t\t\t\tsymbol: yith_wcan_shortcodes.currency_format.symbol,\n\t\t\t\tdecimal: yith_wcan_shortcodes.currency_format.decimal,\n\t\t\t\tthousand: yith_wcan_shortcodes.currency_format.thousand,\n\t\t\t\tprecision: 0,\n\t\t\t\tformat: yith_wcan_shortcodes.currency_format.format,\n\t\t\t} );\n\t\t}\n\n\t\treturn price;\n\t}\n\n\t// utility that merges together sets of filter properties\n\tmergeProperties( set1, set2, $filter ) {\n\t\t// search for common properties\n\t\tfor ( const prop in set2 ) {\n\t\t\tif ( ! set2.hasOwnProperty( prop ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !! set1[ prop ] ) {\n\t\t\t\tswitch ( prop ) {\n\t\t\t\t\tcase 'rating_filter':\n\t\t\t\t\tcase 'min_price':\n\t\t\t\t\tcase 'max_price':\n\t\t\t\t\tcase 'onsale_filter':\n\t\t\t\t\tcase 'instock_filter':\n\t\t\t\t\tcase 'orderby':\n\t\t\t\t\t\t// just override default value\n\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif ( 0 === prop.indexOf( 'query_type_' ) ) {\n\t\t\t\t\t\t\t// query_type param\n\t\t\t\t\t\t\tset1[ prop ] = set2[ prop ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// we're dealing with taxonomy\n\t\t\t\t\t\t\tconst isAttr = 0 === prop.indexOf( 'filter_' ),\n\t\t\t\t\t\t\t\tglue = isAttr ? ',' : '+';\n\n\t\t\t\t\t\t\tlet newValue =\n\t\t\t\t\t\t\t\tset1[ prop ].replace( ',', glue ) +\n\t\t\t\t\t\t\t\tglue +\n\t\t\t\t\t\t\t\tset2[ prop ].replace( ',', glue );\n\n\t\t\t\t\t\t\tnewValue = newValue\n\t\t\t\t\t\t\t\t.split( glue )\n\t\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t\t( value, index, arr ) =>\n\t\t\t\t\t\t\t\t\t\tarr.indexOf( value ) === index\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( glue );\n\n\t\t\t\t\t\t\tset1[ prop ] = newValue;\n\n\t\t\t\t\t\t\tif ( isAttr ) {\n\t\t\t\t\t\t\t\tconst queryTypeParam = prop.replace(\n\t\t\t\t\t\t\t\t\t'filter_',\n\t\t\t\t\t\t\t\t\t'query_type_'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tset1[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t\tset2[ queryTypeParam ] = 'and';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdelete set2[ prop ];\n\t\t\t}\n\t\t}\n\n\t\t$.extend( set1, set2 );\n\n\t\treturn set1;\n\t}\n}\n","'use strict';\n\n/* global globalThis, jQuery, yith_wcan_shortcodes, accounting */\n\nimport YITH_WCAN_Filter from './modules/yith-wcan-filter';\nimport YITH_WCAN_Reset_Button from './modules/yith-wcan-reset-button';\nimport YITH_WCAN_Preset from './modules/yith-wcan-preset';\n\njQuery( function ( $ ) {\n\t$( document )\n\t\t.on(\n\t\t\t'yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode',\n\t\t\tfunction () {\n\t\t\t\t$( '.yith-wcan-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Preset( $( this ) );\n\t\t\t\t\t} );\n\n\t\t\t\t$( '.yith-wcan-reset-filters' )\n\t\t\t\t\t.not( '.enhanced' )\n\t\t\t\t\t.each( function () {\n\t\t\t\t\t\tnew YITH_WCAN_Reset_Button( $( this ) );\n\t\t\t\t\t} );\n\t\t\t}\n\t\t)\n\t\t.trigger( 'yith_wcan_init_shortcodes' );\n\n\tglobalThis.product_filter = new YITH_WCAN_Filter();\n} );\n"],"sourceRoot":""}
assets/js/yith-wcan-shortcodes.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e=jQuery;function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var n=function(){function n(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),a(this,"xhr",null),a(this,"doingAjax",!1),a(this,"originalSearch",location.search),a(this,"initialized",!1);var t=e("head").html(),i=document.title,r=this.searchAlternativeUrl(t);r&&!this.doingAjax&&!this.initialized&&!yith_wcan_shortcodes.ajax_filters&&this.pushUrlToHistory(r,i),this.initialized=!0}var r,l,s;return r=n,(l=[{key:"doFilter",value:function(t,i,a){var n,r,l=this,s=e(i||"body");if((r=e(document).triggerHandler("yith_wcan_filters_parameters",[t]))&&(t=r),s&&this.block(s),n=this.buildUrl(t),yith_wcan_shortcodes.ajax_filters)return this.doingAjax=!0,this._doAjax(n).done((function(e){n=l.searchAlternativeUrl(e,n),l._beforeFilter(e,t),l.refreshFragments(i,a,e),l.pushUrlToHistory(n,e.pageTitle),s&&l.unblock(s),l._afterFilter(e,t),l.doingAjax=!1}));window.location=n}},{key:"_beforeFilter",value:function(t,i){e(document).trigger("yith-wcan-ajax-loading",[t,i])}},{key:"_afterFilter",value:function(t,i){e(".woocommerce-ordering").on("change","select.orderby",(function(){e(this).closest("form").submit()})),e(window).trigger("scroll"),e(document).trigger("yith-wcan-ajax-filtered",[t,i]).trigger("yith_wcwl_reload_fragments")}},{key:"buildUrl",value:function(i){var a,n=this,r=yith_wcan_shortcodes.query_param,l={},s=window.location,o=yith_wcan_shortcodes.base_url?yith_wcan_shortcodes.base_url:(null==s?void 0:s.origin)+(null==s?void 0:s.pathname),c=this,h="object"===t(i)&&Object.keys(i).length;if(yith_wcan_shortcodes.session_param&&(o=o.replace(new RegExp("/"+yith_wcan_shortcodes.session_param+"/[^/]*/"),"")),h&&(l[r]=1),this.originalSearch){var d=this.originalSearch.replace("?","").split("&").reduce((function(e,t){var i=t.split("=");if(2===i.length){if(n.isFilterParam(i[0]))return e;e[i[0]]=i[1]}return e}),{});l=e.extend(l,d)}return h&&(l=e.extend(l,i)),(a=Object.keys(l).reduce((function(e,t){var i=l[t];return i&&t?e+=c._cleanParam(t)+"="+c._cleanParam(i)+"&":e}),"?").replace(/&$/g,"").replace(/%2B/g,"+").replace(/%2C/g,",")).length>1&&(o+=a),o}},{key:"searchAlternativeUrl",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=i;return-1===e.indexOf("yith_wcan:sharing_url")?a:a=(t=e.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/))&&1 in t?t[1]:a}},{key:"pushUrlToHistory",value:function(e,t){yith_wcan_shortcodes.change_browser_url&&!navigator.userAgent.match(/msie/i)&&window.history.pushState({pageTitle:t},"",e)}},{key:"refreshFragments",value:function(t,i,a){var n=document.createElement("html"),r=e(n);if(n.innerHTML=a,t){var l,s=e(i),o=e(t);s.length&&(l=r.find(i)).length&&s.replaceWith(l.first()),o.length&&(l=r.find(t)).length&&o.replaceWith(l.first())}else{var c=e(yith_wcan_shortcodes.content);c.length?c.replaceWith(r.find(yith_wcan_shortcodes.content)):e("body").replaceWith(r.find("body"))}e(document).trigger("yith_wcan_init_shortcodes")}},{key:"_cleanParam",value:function(e){var t,i;return null===(t=yith_wcan_shortcodes)||void 0===t||!t.process_sanitize||null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.skip_sanitize?e:encodeURIComponent(e)}},{key:"_doAjax",value:function(t,i){return this.xhr&&this.xhr.abort(),i=e.extend({url:t},i),this.xhr=e.ajax(i),this.xhr}},{key:"block",value:function(t){var i;if(void 0!==e.fn.block){var a="#fff center center no-repeat";null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.loader&&(a="url('".concat(yith_wcan_shortcodes.loader,"') ").concat(a)),t.block({message:null,overlayCSS:{background:a,opacity:.7}})}}},{key:"unblock",value:function(t){void 0!==e.fn.unblock&&t.unblock()}},{key:"isFilterParam",value:function(e){return-1!==["rating_filter","min_price","max_price","price_ranges","onsale_filter","instock_filter","featured_filter","orderby","product-page",yith_wcan_shortcodes.query_param].concat(yith_wcan_shortcodes.supported_taxonomies.map((function(e){return e.replace("pa_","filter_")}))).indexOf(e)||-1!==e.indexOf("filter_")||-1!==e.indexOf("query_type_")}}])&&i(r.prototype,l),s&&i(r,s),n}();var r=function t(i){var a,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=null,(n="$reset")in(a=this)?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,this.$reset=i,this.$reset.on("click",(function(t){t.preventDefault(),e(".yith-wcan-filters").each((function(){var t=e(this).data("preset");t.deactivateAllFilters(!0),t.closeModal()}))})),this.$reset.data("reset",this).addClass("enhanced")};function l(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var a=0,n=function(){};return{s:n,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,r=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw r}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,a=new Array(t);i<t;i++)a[i]=e[i];return a}function o(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var h=function(){function t(i,a){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"$originalSelect",null),c(this,"$_main",null),c(this,"$_label",null),c(this,"$_dropdown",null),c(this,"$_search",null),c(this,"$_showMore",null),c(this,"$_items",null),c(this,"currentPage",1),c(this,"options",{}),this.$originalSelect=i,this.$originalSelect.is("select")){var n=this.$originalSelect.data("per_page"),r=this.$originalSelect.data("order"),l=this.$originalSelect.data("all-label"),s={showSearch:this.$originalSelect.data("show_search"),paginate:this.$originalSelect.data("paginate"),perPage:n||10,order:r||"ASC",getElements:null,labels:{emptyLabel:l||yith_wcan_shortcodes.labels.empty_option,searchPlaceholder:yith_wcan_shortcodes.labels.search_placeholder,noItemsFound:yith_wcan_shortcodes.labels.no_items,showMore:yith_wcan_shortcodes.labels.show_more}};this.options=e.extend(s,a),this._hideSelect(),this._initTemplate(),this._initActions(),this.$originalSelect.data("dropdown",this).addClass("enhanced")}}var i,a,n;return i=t,(a=[{key:"_hideSelect",value:function(){this.$originalSelect.hide()}},{key:"_initTemplate",value:function(){var t=e("<div/>",{class:"yith-wcan-dropdown closed"}),i=e("<div/>",{class:"dropdown-label",html:this.getLabel()}),a=e("<div>",{class:"dropdown-wrapper"}),n=e("<ul/>",{class:"matching-items filter-items"});a.append(n),t.append(i).append(a),this.options.showSearch&&this._initSearchTemplate(a),this.options.paginate&&this._initShowMoreTemplate(a),this.$originalSelect.after(t),this.$_main=t,this.$_label=i,this.$_dropdown=a,this.$_items=n}},{key:"_initSearchTemplate",value:function(t){var i=e("<div/>",{class:"search-field-container"}),a=e("<input/>",{name:"s",class:"search-field",type:"search",placeholder:this.options.labels.searchPlaceholder});i.append(a).prependTo(t),this.$_search=a}},{key:"_initShowMoreTemplate",value:function(t){var i=e("<a/>",{class:"show-more",text:this.options.labels.showMore.replace("%d",this.options.perPage)});i.on("click",this.loadNextPage.bind(this)).hide(),t.append(i),this.$_showMore=i}},{key:"_initActions",value:function(){var t,i,a=this;null===(t=this.$_main)||void 0===t||t.on("click",(function(e){e.stopPropagation(),a.toggleDropdown()})),this.$_dropdown.on("click",(function(e){e.stopPropagation()})),null===(i=this.$_search)||void 0===i||i.on("keyup search",(function(){a._populateItems()})),this.$_items.on("change",":input",(function(){var t,i=e(this).closest("li"),n=i.data("value");if(i.hasClass("disabled")&&!a.isValueSelected(n))return!1;i.toggleClass("active"),t=i.hasClass("active"),a._changeItemStatus(n,t)})),this.$_items.on("click","li:not(.checkbox) a",(function(t){var i,n=e(this).closest("li"),r=n.data("value");if(t.preventDefault(),n.hasClass("disabled")&&!a.isValueSelected(r))return!1;n.toggleClass("active"),(i=n.hasClass("active"))&&n.siblings().removeClass("active"),a._changeItemStatus(r,i)})),this.$_items.on("click","label > a",(function(t){var i=e(this).parent().find(":input");t.preventDefault(),(i.is('[type="radio"]')||i.is('[type="checkbox"]'))&&i.prop("checked",!i.prop("checked")),i.change()})),this.$originalSelect.on("change",(function(t,i){i||(a.$_items.find("li").each((function(){var t=e(this).data("value");a.isValueSelected(t)?a._selectItem(t):a._deselectItem(t)})),a.updateLabel())})),e(document).on("click",this.closeDropdown.bind(this))}},{key:"openDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.addClass("open").removeClass("closed"),this._afterDropdownOpen()}},{key:"closeDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.removeClass("open").addClass("closed")}},{key:"_closeOtherDropdowns",value:function(){var t=this;e(document).find("select.enhanced").filter((function(i,a){var n=e(a);return!!n.data("dropdown")&&!n.is(t.$originalSelect)})).each((function(){e(this).data("dropdown").closeDropdown()}))}},{key:"toggleDropdown",value:function(){var e,t;null===(e=this.$_main)||void 0===e||e.toggleClass("open").toggleClass("closed"),null!==(t=this.$_main)&&void 0!==t&&t.hasClass("open")&&this._afterDropdownOpen()}},{key:"_afterDropdownOpen",value:function(){var e;this._closeOtherDropdowns(),null!==(e=this.$_search)&&void 0!==e&&e.length&&this.$_search.val(""),this._populateItems()}},{key:"getMatchingElements",value:function(t,i){var a=this,n=[],r=this.getOptions();return new Promise((function(l){r.each((function(){var i=e(this),a=i.val(),r=i.html(),l=new RegExp(".*"+t+".*","i");(!t||l.test(a)||l.test(r))&&n.push({value:a,label:r})})),a.options.getElements?a.options.getElements(t).then((function(t){t&&(t=t.reduce((function(e,t,i){return e.push({label:i,value:t}),e}),[]),n=e.extend(n,t)),l(a._formatItems(n,i))})):l(a._formatItems(n,i))}))}},{key:"_formatItems",value:function(e,t){var i=this,a=[],n=!1;return e.filter((function(e){return-1===a.indexOf(e.value)&&(a.push(e.value),!0)})).sort((function(e,t){var a="ASC"===i.options.order?1:-1;return e.value<t.value?-1*a:e.value>t.value?a:0})),t&&(n=t<Object.keys(e).length,e=e.slice(0,t)),{items:e,hasMore:n}}},{key:"_generateItem",value:function(t,i){var a,n=this.isValueSelected(t),r=this.getOptionByValue(t),l=e("<li/>",{"data-value":t,class:r.length?r.attr("class"):""});if(r.length){var s=r.data("template"),o=r.data("count");i=s||i,o&&(i+=o)}if(a=e("<a/>",{href:r.length?r.data("filter_url"):"#",html:i,"data-title":r.length?r.data("title"):""}),this.$originalSelect.prop("multiple")){var c=e("<input/>",{type:"checkbox",value:t}),h=e("<label>");c.prop("checked",n),h.prepend(c).append(a),l.append(h).addClass("checkbox")}else l.append(a);return n?l.addClass("active"):l.removeClass("active"),l}},{key:"_populateItems",value:function(t){var i,a,n=this,r=null!==(i=this.$_search)&&void 0!==i&&i.length?this.$_search.val():"",s=this.options.paginate?this.options.perPage:0;a=(t=t?parseInt(t):1)*s,this.getMatchingElements(r,a).then((function(i){var a=i.items,r=[],s=!1;if(n._emptyItems(),n._hideLoadMore(),a.length){var o,c=l(a);try{for(c.s();!(o=c.n()).done;){var h=o.value;""===h.value?r.unshift(n._generateItem(h.value,h.label)):r.push(n._generateItem(h.value,h.label))}}catch(e){c.e(e)}finally{c.f()}n.currentPage=t,s=i.hasMore}else r.push(e("<li/>",{text:n.options.labels.noItemsFound})),n.currentPage=1;n.$_items.append(r),e(document).trigger("yith_wcan_dropdown_updated"),s&&n._showLoadMore()}))}},{key:"loadNextPage",value:function(){var e=this.currentPage+1;this._populateItems(e)}},{key:"_selectItem",value:function(e){return this._changeItemStatus(e,!0)}},{key:"_deselectItem",value:function(e){return this._changeItemStatus(e,!1)}},{key:"_changeItemStatus",value:function(e,t){var i=this.$originalSelect.find('option[value="'.concat(e,'"]'));return!!i.length&&(i.prop("selected",t),this.closeDropdown(),this.updateLabel(),this.$originalSelect.trigger("change",[!0]),!0)}},{key:"_emptyItems",value:function(){this.$_items.html("")}},{key:"_showLoadMore",value:function(){this.$_showMore.show()}},{key:"_hideLoadMore",value:function(){this.$_showMore.hide()}},{key:"getLabel",value:function(){return this.hasSelectedValues()?this.getSelectedLabels().join(", "):this.options.labels.emptyLabel}},{key:"updateLabel",value:function(){var e,t=this.getLabel();null===(e=this.$_label)||void 0===e||e.html(t)}},{key:"getOptions",value:function(){return this.$originalSelect.find("option")}},{key:"hasSelectedValues",value:function(){return this.getSelectedOptions().length}},{key:"isValueSelected",value:function(e){return-1!==this.getSelectedValues().indexOf(e.toString())}},{key:"getSelectedOptions",value:function(){return this.$originalSelect.find("option").filter(":selected")}},{key:"getOptionByValue",value:function(e){return this.$originalSelect.find('option[value="'.concat(e,'"]'))}},{key:"getSelectedLabels",value:function(){var t=[];return this.getSelectedOptions().each((function(){var i=e(this),a=i.data("template");a=a||i.html().replace(/\([0-9]*\)/,""),t.push(a)})),t}},{key:"getSelectedValues",value:function(){var t=[];return this.getSelectedOptions().each((function(){t.push(e(this).val())})),t}},{key:"destroy",value:function(){}}])&&o(i.prototype,a),n&&o(i,n),t}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var p=function(){function t(i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,"preset",!1),f(this,"$preset",!1),f(this,"target",!1),f(this,"$target",!1),f(this,"$filters",!1),f(this,"$filterButtons",!1),f(this,"modalElements",{}),f(this,"activeFilters",!1),f(this,"isMobile",!1),f(this,"sliderTimeout",!1),f(this,"originalFilters",null),f(this,"dirty",!1),this.preset="#"+i.attr("id"),this.$preset=i,this.target=this.$preset.data("target"),this.$target=!!this.target&&e(this.target),this._regiterStatus(),this._initFilterButton(),this._initResponsive(),this._initFilters(),this._initActions(),this.$preset.data("preset",this).addClass("enhanced").trigger("yith_wcan_preset_initialized",[this])}var i,a,n;return i=t,(a=[{key:"_initFilters",value:function(){var t=this;this.getFilters().each((function(){var i=e(this);t._initFilter(i)})),this.maybeShowClearAllFilters()}},{key:"_initFilterButton",value:function(){var e=this;this.$filterButtons=this.$preset.find(".apply-filters"),this.$filterButtons.length&&this.$filterButtons.on("click",(function(t){t.preventDefault(),e.filter()})).hide()}},{key:"_initActions",value:function(){this.$preset.find("form").on("submit",(function(e){e.preventDefault()}))}},{key:"_initResponsive",value:function(){var t=this;if(yith_wcan_shortcodes.modal_on_mobile){var i=window.matchMedia("(max-width: ".concat(yith_wcan_shortcodes.mobile_media_query,"px)"));e(window).on("resize",(function(){var e=!!i.matches;e!==t.isMobile&&(t.isMobile=e,t._afterLayoutChange())})).resize()}}},{key:"_initFilter",value:function(t){var i,a=this,n=function(i){var n=e(this),r=n.closest(".yith-wcan-filter"),l=!!r.length&&"yes"===r.data("multiple"),s=n.closest(".filter-item"),o=s.length?r.find(".filter-item").not(s):[];if(s.is(".disabled")&&!s.is(".active"))return i.preventDefault(),!1;i.preventDefault(),o.length&&!l&&o.removeClass("active").children("label").find(":input").prop("checked",!1).parent(".checked").removeClass("checked"),s.length&&s.toggleClass("active"),a.activeFilters=!1,a.maybeFilter(t),a.maybeToggleClearAllFilters(),a.maybeToggleClearFilter(r)};t.find(".filter-item").not(".checkbox").not(".radio").on("click","a",(function(t){var i=e(this).closest(".filter-item");if(!e(null==t?void 0:t.delegateTarget).is(i))return!1;n.call(this,t)})),t.find(":input").on("change",(function(t){var i=e(this),a=i.closest(".filter-item");if(a.is(".disabled")&&!a.is(".active"))return i.prop("checked",!1),!1;n.call(this,t)})),t.find("label > a").on("click",(function(t){var i=e(this),a=i.closest(".filter-item");if(t.preventDefault(),a.is(".disabled")&&!a.is(".active"))return!1;var n=i.parent().find(":input");(n.is('[type="radio"]')||n.is('[type="checkbox"]'))&&n.prop("checked",!n.prop("checked")),n.change()})),this._initTooltip(t),this._initPriceSlider(t),this._initDropdown(t),this._initCollapsable(t),this.maybeShowClearFilter(t),null!==(i=this.$preset)&&void 0!==i&&i.hasClass("custom-style")&&this._initCustomInput(t)}},{key:"_initTooltip",value:function(t,i){t.find("[data-title]").each((function(){var t=e(this);!t.hasClass("tooltip-added")&&t.data("title")&&(t.on("mouseenter",(function(){var t,a=e(this),n=null,r=a.outerWidth(),l=0;if(!i||"top"!==i&&"right"!==i){var s=a.closest(".filter-item");i=s.hasClass("color")||s.hasClass("label")?"top":"right"}n=e("<span>",{class:"yith-wcan-tooltip",html:a.data("title")}),a.append(n),t=n.outerWidth()+6,n.outerWidth(t),l="top"===i?(r-t)/2:r+15,n.css({left:l.toFixed(0)+"px"}).fadeIn(200),a.addClass("with-tooltip")})).on("mouseleave",(function(){var t=e(this);t.find(".yith-wcan-tooltip").fadeOut(200,(function(){t.removeClass("with-tooltip").find(".yith-wcan-tooltip").remove()}))})),t.addClass("tooltip-added"))}))}},{key:"_initDropdown",value:function(t){var i=t.find("select.filter-dropdown");i.length&&(i.hasClass("select2-hidden-accessible")&&void 0!==e.fn.selectWoo&&i.selectWoo("destroy"),this._initDropdownObject(i,{paginate:!0,perPage:yith_wcan_shortcodes.terms_per_page}))}},{key:"_initDropdownObject",value:function(e,t){return new h(e,t)}},{key:"_initPriceSlider",value:function(e){var t=this;if(e.hasClass("filter-price-slider")){var i=this,a=e.find(".price-slider"),n=a.find(".price-slider-min"),r=a.find(".price-slider-max"),l=parseFloat(a.data("min")),s=parseFloat(a.data("max")),o=parseFloat(n.val()),c=parseFloat(r.val()),h=parseFloat(a.data("step")),d=function(){i.sliderTimeout&&clearTimeout(i.sliderTimeout),i.sliderTimeout=setTimeout((function(){i.maybeFilter(e)}),200)};e.find(".price-slider-ui").ionRangeSlider({skin:"round",type:"double",min:l,max:s,step:h,from:o,to:c,min_interval:h,values_separator:" - ",prettify:function(e){return t.formatPrice(e)},onChange:function(e){n.val(e.from),r.val(e.to)},onFinish:d}),n.add(r).off("change").on("keyup",(function(){n.val()&&r.val()&&d()}))}}},{key:"_initCollapsable",value:function(e){this._initTitleCollapsable(e),this._initHierarchyCollapsable(e)}},{key:"_initTitleCollapsable",value:function(e){var t=e.find(".collapsable");t.length&&this._initToggle(t,t,e.find(".filter-content"))}},{key:"_initHierarchyCollapsable",value:function(t){var i=t.find(".hierarchy-collapsable");if(i.length){var a=this,n=t.find(".active");n.length&&(n.parents(".hierarchy-collapsable").removeClass("closed").addClass("opened"),n.hasClass("hierarchy-collapsable")&&yith_wcan_shortcodes.show_current_children&&n.removeClass("closed").addClass("opened")),i.each((function(){var t=e(this),i=e("<span/>",{class:"toggle-handle"});i.appendTo(t),a._initToggle(i,t,t.children("ul.filter-items"))}))}}},{key:"_initToggle",value:function(e,t,i){t.hasClass("closed")&&i.hide(),e.off("click").on("click",(function(e){e.stopPropagation(),i.slideToggle(400,(function(){t.toggleClass("opened").toggleClass("closed")}))}))}},{key:"_initCustomInput",value:function(t){t.find(":input").each((function(){var t,i=e(this),a=i.attr("type"),n="".concat(a,"button");"checkbox"!==a&&"radio"!==a||i.closest(".".concat(n)).length||(i.is(":checked")&&(n+=" checked"),t=e("<span/>",{class:n}),i.wrap(t).on("change",(function(){var t=e(this);t.prop("checked")?t.parent().addClass("checked"):t.parent().removeClass("checked")})))}))}},{key:"_regiterStatus",value:function(){this.originalFilters=this.getFiltersProperties()}},{key:"_afterLayoutChange",value:function(){var t,i;this.isMobile?(this.$preset.addClass("filters-modal").attr("role","dialog").attr("tabindex","-1").hide(),this._addCloseModalButton(),this._addApplyFiltersModalButton(),this._switchToCollapsables(),null===(t=this.$filterButtons)||void 0===t||t.hide()):(this.$preset.removeClass("filters-modal").removeClass("open").removeAttr("role").removeAttr("tabindex").show(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open"),this._removeCloseModalButton(),this._removeApplyFiltersModalButton(),this._switchBackCollapsables(),null===(i=this.$filterButtons)||void 0===i||i.show())}},{key:"_addCloseModalButton",value:function(){var t=e("<a/>",{class:"close-button",html:"&times;","data-dismiss":"modal","aria-label":yith_wcan_shortcodes.labels.close});t.prependTo(this.$preset).on("click",this.closeModal.bind(this)),this.modalElements.closeButton=t}},{key:"_removeCloseModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.closeButton)||void 0===t||t.remove()}},{key:"_addApplyFiltersModalButton",value:function(){var t=this,i=e("<button/>",{class:"apply-filters main-modal-button",html:yith_wcan_shortcodes.labels.show_results,"data-dismiss":"modal"});i.appendTo(this.$preset).on("click",(function(){t.filter(),t.closeModal()})),this.modalElements.applyFiltersButton=i}},{key:"_removeApplyFiltersModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.applyFiltersButton)||void 0===t||t.remove()}},{key:"_switchToCollapsables",value:function(){var t=this;this.getFilters().each((function(){var i=e(this),a=i.find(".filter-title");a.length&&!a.hasClass("collapsable")&&(a.addClass("collapsable").data("disable-collapse",!0),t._initTitleCollapsable(i))}))}},{key:"_switchBackCollapsables",value:function(){this.getFilters().each((function(){var t=e(this),i=t.find(".filter-title");i.length&&i.hasClass("collapsable")&&i.data("disable-collapse")&&(i.removeClass("collapsable").removeData("disable-collapse",!0).off("click"),t.find(".filter-content").show())}))}},{key:"_closeAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").hide().end().find(".filter-title").addClass("closed").removeClass("opened")}},{key:"maybeRegisterStatusChange",value:function(){var e=this.getFiltersProperties(),t=JSON.stringify(e),i=JSON.stringify(this.originalFilters);this.dirty=t!==i}},{key:"maybeFilter",value:function(e){if(this.maybeRegisterStatusChange(),yith_wcan_shortcodes.instant_filters&&!this.isMobile)this.filter();else if(yith_wcan_shortcodes.instant_filters||this.isMobile){if(this.isMobile&&this.dirty){var t;this.$preset.addClass("with-filter-button"),null===(t=this.modalElements.applyFiltersButton)||void 0===t||t.show()}}else{var i,a;this.dirty?null===(i=this.$filterButtons)||void 0===i||i.show():null===(a=this.$filterButtons)||void 0===a||a.hide()}}},{key:"filter",value:function(){var t,i,a,n=this,r=null===(t=window)||void 0===t?void 0:t.product_filter;null==r||null===(i=r.doFilter(this.getFiltersProperties(),this.target,this.preset))||void 0===i||i.done((function(){var t=e(n.preset);if(!n.isMobile&&t.length&&yith_wcan_shortcodes.scroll_top){var i=t.offset().top;if(yith_wcan_shortcodes.scroll_target){var a=e(yith_wcan_shortcodes.scroll_target);i=a.length?a.offset().top:i}e("body, html").animate({scrollTop:i-100})}n.originalFilters=n.getFiltersProperties(),n.dirty=!1})),this.isMobile&&(this.$preset.removeClass("with-filter-button"),null===(a=this.modalElements.applyFiltersButton)||void 0===a||a.hide())}},{key:"getFilters",value:function(){return!1===this.$filters&&(this.$filters=this.$preset.find(".yith-wcan-filter")),this.$filters}},{key:"getActiveFilters",value:function(){return!1===this.activeFilters&&(this.activeFilters=this.getFiltersProperties()),this.activeFilters}},{key:"isAnyFilterActive",value:function(){return!!Object.keys(this.getActiveFilters()).length}},{key:"isFilterActive",value:function(e){var t,i;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var a=e.find(".filter-dropdown");if(a.length){var n=a.val();t="object"===d(n)?!(null==n||!n.length):!!n;break}case"stock_sale":t=e.find(".filter-item").filter(".active").length;break;case"price_slider":var r=parseFloat(e.find(".price-slider").data("min")),l=parseFloat(e.find(".price-slider").data("max")),s=parseFloat(e.find(".price-slider-min").val()),o=parseFloat(e.find(".price-slider-max").val());t=s>r||o<l;break;case"orderby":t="menu_order"!==e.find(".filter-order-by").val();break;default:t=!1}return t=void 0!==(i=e.triggerHandler("yith_wcan_is_filter_active",[t,this]))?i:t}},{key:"countActiveItems",value:function(e){var t;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var i=e.find(".filter-dropdown");if(i.length){var a=i.val();t="object"===d(a)?null==a?void 0:a.length:+!!a;break}case"stock_sale":t=e.find(".filter-items").find(".active").length;break;case"orderby":this.isFilterActive(e)&&(t=1);break;case"price_slider":default:t=0}return t}},{key:"getFilterProperties",value:function(t){var i,a,n=t.data("filter-type"),r="yes"===t.data("multiple"),l=t.find(".filter-dropdown"),s={};switch(n){case"tax":var o=[],c=t.data("taxonomy"),h=0===c.indexOf("filter"),d=t.data("relation");if(l.length?r?o=l.val():o.push(l.val()):o=(a=t.find(".filter-item").filter(".active").children("a, label")).get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("term-slug"))?(t.push(a),t):t}),o),r){var u=h||"and"!==d?",":"+";s[c]=o.join(u)}else s[c]=o.pop();h&&(s[c.replace("filter_","query_type_")]=d);break;case"review":l.length?s.rating_filter=l.val():(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.rating_filter=a.get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("rating"))?(t.push(a),t):t}),[]).join(","):(a=a.first(),s.rating_filter=a.is("label")?a.find(":input").val():a.data("rating")));break;case"price_range":l.length?r?s.price_ranges=l.val().join(","):(s.min_price=l.val().split("-")[0],s.max_price=l.val().split("-")[1]):(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.price_ranges=a.get().reduce((function(t,i){var a=e(i).data("range-min"),n=e(i).data("range-max");return t+=(n?"".concat(a,"-").concat(n):a)+","}),"").replace(/^(.*),$/,"$1"):(s.min_price=parseFloat(a.first().data("range-min")),s.max_price=parseFloat(a.first().data("range-max"))));break;case"price_slider":s.min_price=parseFloat(t.find(".price-slider-min").val()),s.max_price=parseFloat(t.find(".price-slider-max").val());break;case"stock_sale":t.find(".filter-on-sale").is(".active")&&(s.onsale_filter=1),t.find(".filter-in-stock").is(".active")&&(s.instock_filter=1),t.find(".filter-featured").is(".active")&&(s.featured_filter=1);break;case"orderby":s.orderby=t.find(".filter-order-by").val()}return s=void 0!==(i=t.triggerHandler("yith_wcan_filter_properties",[s,self]))?i:s}},{key:"getFiltersProperties",value:function(){var t={},i=this;return this.getFilters().each((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a);t=i.mergeProperties(t,n,a)}})),t}},{key:"getFiltersByProperties",value:function(t){var i=this;return this.getFilters().filter((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a),r=!1;for(var l in t){if(["min_price","max_price","price_ranges"].includes(l)&&(n.min_price||n.price_ranges)){r=!0;break}if(n[l]){r=!0;break}}return r}return!1}))}},{key:"maybeToggleClearFilter",value:function(e){this.isFilterActive(e)?this.maybeShowClearFilter(e):this.maybeHideClearFilter(e)}},{key:"maybeToggleClearAllFilters",value:function(){this.isAnyFilterActive()?this.maybeShowClearAllFilters():this.maybeHideClearAllFilters()}},{key:"maybeShowClearFilter",value:function(t){var i=this;this.isFilterActive(t)&&yith_wcan_shortcodes.show_clear_filter&&(t.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_selection,role:"button"}).prependTo(t.find(".filter-content")).on("click",(function(e){e.preventDefault(),i.deactivateFilter(t,!1,yith_wcan_shortcodes.instant_filters),i.maybeHideClearFilter(t),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))}},{key:"maybeShowClearAllFilters",value:function(){var t=this;this.isAnyFilterActive()&&this.isMobile&&(this.$preset.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_all_selections,role:"button"}).prependTo(this.$preset.find(".filters-container")).on("click",(function(e){e.preventDefault(),t.deactivateAllFilters(yith_wcan_shortcodes.instant_filters),t.maybeHideClearAllFilters(),yith_wcan_shortcodes.instant_filters&&t.closeModal()})))}},{key:"maybeHideClearFilter",value:function(e){!this.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&e.find(".clear-selection").remove()}},{key:"maybeHideClearAllFilters",value:function(){this.isAnyFilterActive()||this.$preset.find(".filters-container").children(".clear-selection").remove()}},{key:"deactivateFilter",value:function(t,i,a){var n=t.data("filter-type"),r=t.find(".filter-item"),l=r.filter(".active"),s=t.find(".filter-dropdown");switch(n){case"tax":var o=t.data("taxonomy");s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i[o]&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("term-slug"))===i[o]&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"review":s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i.rating_filter&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("rating"))===i.rating_filter&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_range":s.length?(i?s.find("option").each((function(){var t=e(this),a=i.min_price+(i.max_price?"-".concat(i.max_price):"");t.val()===a&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t,a,n=e(this),r=n.children("label"),l=n.children("a");a=r.length?r.find(":input").val():l.data("min_price")+(l.data("max_price")?"-"+l.data("max_price"):""),i.min_price?t=i.min_price+(i.max_price?"-"+i.max_price:""):i.price_ranges&&(t=i.price_ranges),a===t&&(n.children("label").children("a").click(),n.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_slider":var c=t.find(".price-slider");t.find(".price-slider-min").val(c.data("min")),t.find(".price-slider-max").val(c.data("max")).change();break;case"orderby":t.find("select").val("menu_order");break;case"stock_sale":i?(null!=i&&i.instock_filter&&t.find(".filter-in-stock").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.onsale_filter&&t.find(".filter-on-sale").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.featured_filter&&t.find(".filter-featured").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active")):(t.find(".filter-in-stock").find(":input").prop("checked",!1).change(),t.find(".filter-on-sale").find(":input").prop("checked",!1).change(),t.find(".filter-featured").find(":input").prop("checked",!1).change(),r.removeClass("active"));break;default:r.removeClass("active")}this.activeFilters=!1,a&&this.filter()}},{key:"deactivateAllFilters",value:function(t){var i=this;this.getFilters().each((function(){var t=e(this);i.deactivateFilter(t)})),this.activeFilters=!1,t&&this.filter()}},{key:"deactivateFilterByProperties",value:function(t,i){var a=this,n=this.getFiltersByProperties(t);n.length&&n.each((function(){var n=e(this);a.deactivateFilter(n,t,i)}))}},{key:"openModal",value:function(){var t=this;this.isMobile&&(this._closeAllCollapsables(),e("body").css("overflow","hidden").addClass("yith-wcan-preset-modal-open"),this.$preset.show(),setTimeout((function(){t.$preset.addClass("open")}),100))}},{key:"closeModal",value:function(){var t=this;this.isMobile&&(this.$preset.removeClass("open"),setTimeout((function(){t.$preset.hide(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open")}),300))}},{key:"formatPrice",value:function(e){return"undefined"!=typeof accounting&&(e=accounting.formatMoney(e,{symbol:yith_wcan_shortcodes.currency_format.symbol,decimal:yith_wcan_shortcodes.currency_format.decimal,thousand:yith_wcan_shortcodes.currency_format.thousand,precision:0,format:yith_wcan_shortcodes.currency_format.format})),e}},{key:"mergeProperties",value:function(t,i,a){for(var n in i)if(i.hasOwnProperty(n)&&t[n]){switch(n){case"rating_filter":case"min_price":case"max_price":case"onsale_filter":case"instock_filter":case"orderby":t[n]=i[n];break;default:if(0===n.indexOf("query_type_"))t[n]=i[n];else{var r=0===n.indexOf("filter_"),l=r?",":"+",s=t[n].replace(",",l)+l+i[n].replace(",",l);if(s=s.split(l).filter((function(e,t,i){return i.indexOf(e)===t})).join(l),t[n]=s,r){var o=n.replace("filter_","query_type_");t[o]="and",i[o]="and"}}}delete i[n]}return e.extend(t,i),t}}])&&u(i.prototype,a),n&&u(i,n),t}();jQuery((function(e){e(document).on("yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode",(function(){e(".yith-wcan-filters").not(".enhanced").each((function(){new p(e(this))})),e(".yith-wcan-reset-filters").not(".enhanced").each((function(){new r(e(this))}))})).trigger("yith_wcan_init_shortcodes"),globalThis.product_filter=new n}))})();
1
+ (()=>{"use strict";var e=jQuery;function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var n=function(){function n(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),a(this,"xhr",null),a(this,"doingAjax",!1),a(this,"originalSearch",location.search),a(this,"initialized",!1);var t=e("head").html(),i=document.title,r=this.searchAlternativeUrl(t);r&&!this.doingAjax&&!this.initialized&&!yith_wcan_shortcodes.ajax_filters&&this.pushUrlToHistory(r,i),this.initialized=!0}var r,l,s;return r=n,(l=[{key:"doFilter",value:function(t,i,a){var n,r,l=this,s=e(i||"body");if((r=e(document).triggerHandler("yith_wcan_filters_parameters",[t]))&&(t=r),s&&this.block(s),n=this.buildUrl(t),yith_wcan_shortcodes.ajax_filters)return this.doingAjax=!0,this._doAjax(n).done((function(e){n=l.searchAlternativeUrl(e,n),l._beforeFilter(e,t),l.refreshFragments(i,a,e),l.pushUrlToHistory(n,e.pageTitle),s&&l.unblock(s),l._afterFilter(e,t),l.doingAjax=!1}));window.location=n}},{key:"_beforeFilter",value:function(t,i){e(document).trigger("yith-wcan-ajax-loading",[t,i])}},{key:"_afterFilter",value:function(t,i){e(".woocommerce-ordering").on("change","select.orderby",(function(){e(this).closest("form").submit()})),i&&Object.keys(i).length?e("body").addClass("filtered"):e("body").removeClass("filtered"),e(window).trigger("scroll"),e(document).trigger("yith-wcan-ajax-filtered",[t,i]).trigger("yith_wcwl_reload_fragments")}},{key:"buildUrl",value:function(i){var a,n=this,r=yith_wcan_shortcodes.query_param,l={},s=window.location,o=yith_wcan_shortcodes.base_url?yith_wcan_shortcodes.base_url:(null==s?void 0:s.origin)+(null==s?void 0:s.pathname),c=this,h="object"===t(i)&&Object.keys(i).length;if(yith_wcan_shortcodes.session_param&&(o=o.replace(new RegExp("/"+yith_wcan_shortcodes.session_param+"/[^/]*/"),"")),h&&(l[r]=1),this.originalSearch){var d=this.originalSearch.replace("?","").split("&").reduce((function(e,t){var i=t.split("=");if(2===i.length){if(n.isFilterParam(i[0]))return e;e[i[0]]=i[1]}return e}),{});l=e.extend(l,d)}return h&&(l=e.extend(l,i)),(a=Object.keys(l).reduce((function(e,t){var i=l[t];return i&&t?e+=c._cleanParam(t)+"="+c._cleanParam(i)+"&":e}),"?").replace(/&$/g,"").replace(/%2B/g,"+").replace(/%2C/g,",")).length>1&&(o+=a),o}},{key:"searchAlternativeUrl",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",a=i;return-1===e.indexOf("yith_wcan:sharing_url")?a:a=(t=e.match(/<meta name="yith_wcan:sharing_url" content="([^"]*)">/))&&1 in t?t[1]:a}},{key:"pushUrlToHistory",value:function(e,t){yith_wcan_shortcodes.change_browser_url&&!navigator.userAgent.match(/msie/i)&&window.history.pushState({pageTitle:t},"",e)}},{key:"refreshFragments",value:function(t,i,a){var n=document.createElement("html"),r=e(n);if(n.innerHTML=a,t){var l,s=e(i),o=e(t);s.length&&(l=r.find(i)).length&&s.replaceWith(l.first()),o.length&&(l=r.find(t)).length&&o.replaceWith(l.first())}else{var c=e(yith_wcan_shortcodes.content);c.length?c.replaceWith(r.find(yith_wcan_shortcodes.content)):e("body").replaceWith(r.find("body"))}e(document).trigger("yith_wcan_init_shortcodes")}},{key:"_cleanParam",value:function(e){var t,i;return null===(t=yith_wcan_shortcodes)||void 0===t||!t.process_sanitize||null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.skip_sanitize?e:encodeURIComponent(e)}},{key:"_doAjax",value:function(t,i){return this.xhr&&this.xhr.abort(),i=e.extend({url:t,headers:{"X-YITH-WCAN":1}},i),this.xhr=e.ajax(i),this.xhr}},{key:"block",value:function(t){var i;if(void 0!==e.fn.block){var a="#fff center center no-repeat";null!==(i=yith_wcan_shortcodes)&&void 0!==i&&i.loader&&(a="url('".concat(yith_wcan_shortcodes.loader,"') ").concat(a)),t.block({message:null,overlayCSS:{background:a,opacity:.7}})}}},{key:"unblock",value:function(t){void 0!==e.fn.unblock&&t.unblock()}},{key:"isFilterParam",value:function(t){var i,a=["rating_filter","min_price","max_price","price_ranges","onsale_filter","instock_filter","featured_filter","orderby","product-page",yith_wcan_shortcodes.query_param];return(i=e(document).triggerHandler("yith_wcan_supported_filters_parameters",[a]))&&(a=i),-1!==(a=a.concat(yith_wcan_shortcodes.supported_taxonomies.map((function(e){return e.replace("pa_","filter_")})))).indexOf(t)||-1!==t.indexOf("filter_")||-1!==t.indexOf("query_type_")}}])&&i(r.prototype,l),s&&i(r,s),n}();var r=function t(i){var a,n,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=null,(n="$reset")in(a=this)?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,this.$reset=i,this.$reset.on("click",(function(t){t.preventDefault(),e(".yith-wcan-filters").each((function(){var t=e(this).data("preset");t.deactivateAllFilters(!0),t.closeModal()}))})),this.$reset.data("reset",this).addClass("enhanced")};function l(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);"Object"===i&&e.constructor&&(i=e.constructor.name);if("Map"===i||"Set"===i)return Array.from(e);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var a=0,n=function(){};return{s:n,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return l=e.done,e},e:function(e){o=!0,r=e},f:function(){try{l||null==i.return||i.return()}finally{if(o)throw r}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,a=new Array(t);i<t;i++)a[i]=e[i];return a}function o(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var h=function(){function t(i,a){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"$originalSelect",null),c(this,"$_main",null),c(this,"$_label",null),c(this,"$_dropdown",null),c(this,"$_search",null),c(this,"$_showMore",null),c(this,"$_items",null),c(this,"currentPage",1),c(this,"options",{}),this.$originalSelect=i,this.$originalSelect.is("select")){var n=this.$originalSelect.data("per_page"),r=this.$originalSelect.data("order"),l=this.$originalSelect.data("all-label"),s={showSearch:this.$originalSelect.data("show_search"),paginate:this.$originalSelect.data("paginate"),perPage:n||10,order:r||"ASC",getElements:null,labels:{emptyLabel:l||yith_wcan_shortcodes.labels.empty_option,searchPlaceholder:yith_wcan_shortcodes.labels.search_placeholder,noItemsFound:yith_wcan_shortcodes.labels.no_items,showMore:yith_wcan_shortcodes.labels.show_more}};this.options=e.extend(s,a),this._hideSelect(),this._initTemplate(),this._initActions(),this.$originalSelect.data("dropdown",this).addClass("enhanced")}}var i,a,n;return i=t,(a=[{key:"_hideSelect",value:function(){this.$originalSelect.hide()}},{key:"_initTemplate",value:function(){var t=e("<div/>",{class:"yith-wcan-dropdown closed"}),i=e("<div/>",{class:"dropdown-label",html:this.getLabel()}),a=e("<div>",{class:"dropdown-wrapper"}),n=e("<ul/>",{class:"matching-items filter-items"});a.append(n),t.append(i).append(a),this.options.showSearch&&this._initSearchTemplate(a),this.options.paginate&&this._initShowMoreTemplate(a),this.$originalSelect.after(t),this.$_main=t,this.$_label=i,this.$_dropdown=a,this.$_items=n}},{key:"_initSearchTemplate",value:function(t){var i=e("<div/>",{class:"search-field-container"}),a=e("<input/>",{name:"s",class:"search-field",type:"search",placeholder:this.options.labels.searchPlaceholder});i.append(a).prependTo(t),this.$_search=a}},{key:"_initShowMoreTemplate",value:function(t){var i=e("<a/>",{class:"show-more",text:this.options.labels.showMore.replace("%d",this.options.perPage)});i.on("click",this.loadNextPage.bind(this)).hide(),t.append(i),this.$_showMore=i}},{key:"_initActions",value:function(){var t,i,a=this;null===(t=this.$_main)||void 0===t||t.on("click",(function(e){e.stopPropagation(),a.toggleDropdown()})),this.$_dropdown.on("click",(function(e){e.stopPropagation()})),null===(i=this.$_search)||void 0===i||i.on("keyup search",(function(){a._populateItems()})),this.$_items.on("change",":input",(function(){var t,i=e(this).closest("li"),n=i.data("value");if(i.hasClass("disabled")&&!a.isValueSelected(n))return!1;i.toggleClass("active"),t=i.hasClass("active"),a._changeItemStatus(n,t)})),this.$_items.on("click","li:not(.checkbox) a",(function(t){var i,n=e(this).closest("li"),r=n.data("value");if(t.preventDefault(),n.hasClass("disabled")&&!a.isValueSelected(r))return!1;n.toggleClass("active"),(i=n.hasClass("active"))&&n.siblings().removeClass("active"),a._changeItemStatus(r,i)})),this.$_items.on("click","label > a",(function(t){var i=e(this).parent().find(":input");t.preventDefault(),(i.is('[type="radio"]')||i.is('[type="checkbox"]'))&&i.prop("checked",!i.prop("checked")),i.change()})),this.$originalSelect.on("change",(function(t,i){i||(a.$_items.find("li").each((function(){var t=e(this).data("value");a.isValueSelected(t)?a._selectItem(t):a._deselectItem(t)})),a.updateLabel())})),e(document).on("click",this.closeDropdown.bind(this))}},{key:"openDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.addClass("open").removeClass("closed"),this._afterDropdownOpen()}},{key:"closeDropdown",value:function(){var e;null===(e=this.$_main)||void 0===e||e.removeClass("open").addClass("closed")}},{key:"_closeOtherDropdowns",value:function(){var t=this;e(document).find("select.enhanced").filter((function(i,a){var n=e(a);return!!n.data("dropdown")&&!n.is(t.$originalSelect)})).each((function(){e(this).data("dropdown").closeDropdown()}))}},{key:"toggleDropdown",value:function(){var e,t;null===(e=this.$_main)||void 0===e||e.toggleClass("open").toggleClass("closed"),null!==(t=this.$_main)&&void 0!==t&&t.hasClass("open")&&this._afterDropdownOpen()}},{key:"_afterDropdownOpen",value:function(){var e;this._closeOtherDropdowns(),null!==(e=this.$_search)&&void 0!==e&&e.length&&this.$_search.val(""),this._populateItems()}},{key:"getMatchingElements",value:function(t,i){var a=this,n=[],r=this.getOptions();return new Promise((function(l){r.each((function(){var i=e(this),a=i.val(),r=i.html(),l=new RegExp(".*"+t+".*","i");(!t||l.test(a)||l.test(r))&&n.push({value:a,label:r})})),a.options.getElements?a.options.getElements(t).then((function(t){t&&(t=t.reduce((function(e,t,i){return e.push({label:i,value:t}),e}),[]),n=e.extend(n,t)),l(a._formatItems(n,i))})):l(a._formatItems(n,i))}))}},{key:"_formatItems",value:function(e,t){var i=this,a=[],n=!1;return e.filter((function(e){return-1===a.indexOf(e.value)&&(a.push(e.value),!0)})).sort((function(e,t){var a="ASC"===i.options.order?1:-1;return e.value<t.value?-1*a:e.value>t.value?a:0})),t&&(n=t<Object.keys(e).length,e=e.slice(0,t)),{items:e,hasMore:n}}},{key:"_generateItem",value:function(t,i){var a,n=this.isValueSelected(t),r=this.getOptionByValue(t),l=e("<li/>",{"data-value":t,class:r.length?r.attr("class"):""});if(r.length){var s=r.data("template"),o=r.data("count");i=s||i,o&&(i+=o)}if(a=e("<a/>",{href:r.length?r.data("filter_url"):"#",html:i,"data-title":r.length?r.data("title"):""}),this.$originalSelect.prop("multiple")){var c=e("<input/>",{type:"checkbox",value:t}),h=e("<label>");c.prop("checked",n),h.prepend(c).append(a),l.append(h).addClass("checkbox")}else l.append(a);return n?l.addClass("active"):l.removeClass("active"),l}},{key:"_populateItems",value:function(t){var i,a,n=this,r=null!==(i=this.$_search)&&void 0!==i&&i.length?this.$_search.val():"",s=this.options.paginate?this.options.perPage:0;a=(t=t?parseInt(t):1)*s,this.getMatchingElements(r,a).then((function(i){var a=i.items,r=[],s=!1;if(n._emptyItems(),n._hideLoadMore(),a.length){var o,c=l(a);try{for(c.s();!(o=c.n()).done;){var h=o.value;""===h.value?r.unshift(n._generateItem(h.value,h.label)):r.push(n._generateItem(h.value,h.label))}}catch(e){c.e(e)}finally{c.f()}n.currentPage=t,s=i.hasMore}else r.push(e("<li/>",{text:n.options.labels.noItemsFound})),n.currentPage=1;n.$_items.append(r),e(document).trigger("yith_wcan_dropdown_updated"),s&&n._showLoadMore()}))}},{key:"loadNextPage",value:function(){var e=this.currentPage+1;this._populateItems(e)}},{key:"_selectItem",value:function(e){return this._changeItemStatus(e,!0)}},{key:"_deselectItem",value:function(e){return this._changeItemStatus(e,!1)}},{key:"_changeItemStatus",value:function(e,t){var i=this.$originalSelect.find('option[value="'.concat(e,'"]'));return!!i.length&&(i.prop("selected",t),this.closeDropdown(),this.updateLabel(),this.$originalSelect.trigger("change",[!0]),!0)}},{key:"_emptyItems",value:function(){this.$_items.html("")}},{key:"_showLoadMore",value:function(){this.$_showMore.show()}},{key:"_hideLoadMore",value:function(){this.$_showMore.hide()}},{key:"getLabel",value:function(){return this.hasSelectedValues()?this.getSelectedLabels().join(", "):this.options.labels.emptyLabel}},{key:"updateLabel",value:function(){var e,t=this.getLabel();null===(e=this.$_label)||void 0===e||e.html(t)}},{key:"getOptions",value:function(){return this.$originalSelect.find("option")}},{key:"hasSelectedValues",value:function(){return this.getSelectedOptions().length}},{key:"isValueSelected",value:function(e){return-1!==this.getSelectedValues().indexOf(e.toString())}},{key:"getSelectedOptions",value:function(){return this.$originalSelect.find("option").filter(":selected")}},{key:"getOptionByValue",value:function(e){return this.$originalSelect.find('option[value="'.concat(e,'"]'))}},{key:"getSelectedLabels",value:function(){var t=[];return this.getSelectedOptions().each((function(){var i=e(this),a=i.data("template");a=a||i.html().replace(/\([0-9]*\)/,""),t.push(a)})),t}},{key:"getSelectedValues",value:function(){var t=[];return this.getSelectedOptions().each((function(){t.push(e(this).val())})),t}},{key:"destroy",value:function(){}}])&&o(i.prototype,a),n&&o(i,n),t}();function d(e){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var i=0;i<t.length;i++){var a=t[i];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var p=function(){function t(i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,"preset",!1),f(this,"$preset",!1),f(this,"target",!1),f(this,"$target",!1),f(this,"$filters",!1),f(this,"$filterButtons",!1),f(this,"modalElements",{}),f(this,"activeFilters",!1),f(this,"isMobile",!1),f(this,"sliderTimeout",!1),f(this,"originalFilters",null),f(this,"dirty",!1),this.preset="#"+i.attr("id"),this.$preset=i,this.target=this.$preset.data("target"),this.$target=!!this.target&&e(this.target),this._regiterStatus(),this._initFilterButton(),this._initResponsive(),this._initFilters(),this._initActions(),this.$preset.data("preset",this).addClass("enhanced").trigger("yith_wcan_preset_initialized",[this])}var i,a,n;return i=t,(a=[{key:"_initFilters",value:function(){var t=this;this.getFilters().each((function(){var i=e(this);t._initFilter(i)})),this.maybeShowClearAllFilters()}},{key:"_initFilterButton",value:function(){var e=this;this.$filterButtons=this.$preset.find(".apply-filters"),this.$filterButtons.length&&this.$filterButtons.on("click",(function(t){t.preventDefault(),e.filter()})).hide()}},{key:"_initActions",value:function(){this.$preset.find("form").on("submit",(function(e){e.preventDefault()}))}},{key:"_initResponsive",value:function(){var t=this;if(yith_wcan_shortcodes.modal_on_mobile){var i=window.matchMedia("(max-width: ".concat(yith_wcan_shortcodes.mobile_media_query,"px)"));e(window).on("resize",(function(){var e=!!i.matches;e!==t.isMobile&&(t.isMobile=e,t._afterLayoutChange())})).resize()}}},{key:"_initFilter",value:function(t){var i,a=this,n=function(i){var n=e(this),r=n.closest(".yith-wcan-filter"),l=!!r.length&&"yes"===r.data("multiple"),s=n.closest(".filter-item"),o=s.length?r.find(".filter-item").not(s):[];if(s.is(".disabled")&&!s.is(".active"))return i.preventDefault(),!1;i.preventDefault(),o.length&&!l&&o.removeClass("active").children("label").find(":input").prop("checked",!1).parent(".checked").removeClass("checked"),s.length&&s.toggleClass("active"),a.activeFilters=!1,a.maybeFilter(t),a.maybeToggleClearAllFilters(),a.maybeToggleClearFilter(r)};t.find(".filter-item").not(".checkbox").not(".radio").on("click","a",(function(t){var i=e(this).closest(".filter-item");if(!e(null==t?void 0:t.delegateTarget).is(i))return!1;n.call(this,t)})),t.find(":input").on("change",(function(t){var i=e(this),a=i.closest(".filter-item");if(a.is(".disabled")&&!a.is(".active"))return i.prop("checked",!1),!1;n.call(this,t)})),t.find("label > a").on("click",(function(t){var i=e(this),a=i.closest(".filter-item");if(t.preventDefault(),a.is(".disabled")&&!a.is(".active"))return!1;var n=i.parent().find(":input");(n.is('[type="radio"]')||n.is('[type="checkbox"]'))&&n.prop("checked",!n.prop("checked")),n.change()})),this._initTooltip(t),this._initPriceSlider(t),this._initDropdown(t),this._initCollapsable(t),this.maybeShowClearFilter(t),null!==(i=this.$preset)&&void 0!==i&&i.hasClass("custom-style")&&this._initCustomInput(t)}},{key:"_initTooltip",value:function(t,i){t.find("[data-title]").each((function(){var t=e(this);!t.hasClass("tooltip-added")&&t.data("title")&&(t.on("mouseenter",(function(){var t,a=e(this),n=null,r=a.outerWidth(),l=0;if(!i||"top"!==i&&"right"!==i){var s=a.closest(".filter-item");i=s.hasClass("color")||s.hasClass("label")?"top":"right"}n=e("<span>",{class:"yith-wcan-tooltip",html:a.data("title")}),a.append(n),t=n.outerWidth()+6,n.outerWidth(t),l="top"===i?(r-t)/2:r+15,n.css({left:l.toFixed(0)+"px"}).fadeIn(200),a.addClass("with-tooltip")})).on("mouseleave",(function(){var t=e(this);t.find(".yith-wcan-tooltip").fadeOut(200,(function(){t.removeClass("with-tooltip").find(".yith-wcan-tooltip").remove()}))})),t.addClass("tooltip-added"))}))}},{key:"_initDropdown",value:function(t){var i=t.find("select.filter-dropdown");i.length&&(i.hasClass("select2-hidden-accessible")&&void 0!==e.fn.selectWoo&&i.selectWoo("destroy"),this._initDropdownObject(i,{paginate:!0,perPage:yith_wcan_shortcodes.terms_per_page}))}},{key:"_initDropdownObject",value:function(e,t){return new h(e,t)}},{key:"_initPriceSlider",value:function(e){var t=this;if(e.hasClass("filter-price-slider")){var i=this,a=e.find(".price-slider"),n=a.find(".price-slider-min"),r=a.find(".price-slider-max"),l=parseFloat(a.data("min")),s=parseFloat(a.data("max")),o=parseFloat(n.val()),c=parseFloat(r.val()),h=parseFloat(a.data("step")),d=function(){i.sliderTimeout&&clearTimeout(i.sliderTimeout),i.sliderTimeout=setTimeout((function(){i.maybeFilter(e)}),200)};e.find(".price-slider-ui").ionRangeSlider({skin:"round",type:"double",min:l,max:s,step:h,from:o,to:c,min_interval:h,values_separator:" - ",prettify:function(e){return t.formatPrice(e)},onChange:function(e){n.val(e.from),r.val(e.to)},onFinish:d}),n.add(r).off("change").on("keyup",(function(){n.val()&&r.val()&&d()}))}}},{key:"_initCollapsable",value:function(e){this._initTitleCollapsable(e),this._initHierarchyCollapsable(e)}},{key:"_initTitleCollapsable",value:function(e){var t=e.find(".collapsable");t.length&&this._initToggle(t,t,e.find(".filter-content"))}},{key:"_initHierarchyCollapsable",value:function(t){var i=t.find(".hierarchy-collapsable");if(i.length){var a=this,n=t.find(".active");n.length&&(n.parents(".hierarchy-collapsable").removeClass("closed").addClass("opened"),n.hasClass("hierarchy-collapsable")&&yith_wcan_shortcodes.show_current_children&&n.removeClass("closed").addClass("opened")),i.each((function(){var t=e(this),i=e("<span/>",{class:"toggle-handle"});i.appendTo(t),a._initToggle(i,t,t.children("ul.filter-items"))}))}}},{key:"_initToggle",value:function(e,t,i){t.hasClass("closed")&&i.hide(),e.off("click").on("click",(function(e){e.stopPropagation(),e.preventDefault(),i.slideToggle(400,(function(){t.toggleClass("opened").toggleClass("closed")}))}))}},{key:"_initCustomInput",value:function(t){t.find(":input").each((function(){var t,i=e(this),a=i.attr("type"),n="".concat(a,"button");"checkbox"!==a&&"radio"!==a||i.closest(".".concat(n)).length||(i.is(":checked")&&(n+=" checked"),t=e("<span/>",{class:n}),i.wrap(t).on("change",(function(){var t=e(this);t.prop("checked")?t.parent().addClass("checked"):t.parent().removeClass("checked")})))}))}},{key:"_regiterStatus",value:function(){this.originalFilters=this.getFiltersProperties()}},{key:"_afterLayoutChange",value:function(){var t,i;this.isMobile?(this.$preset.addClass("filters-modal").attr("role","dialog").attr("tabindex","-1").hide(),this._addCloseModalButton(),this._addApplyFiltersModalButton(),this._switchToCollapsables(),null===(t=this.$filterButtons)||void 0===t||t.hide()):(this.$preset.removeClass("filters-modal").removeClass("open").removeAttr("role").removeAttr("tabindex").show(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open"),this._removeCloseModalButton(),this._removeApplyFiltersModalButton(),this._switchBackCollapsables(),null===(i=this.$filterButtons)||void 0===i||i.show())}},{key:"_addCloseModalButton",value:function(){var t=e("<a/>",{class:"close-button",html:"&times;","data-dismiss":"modal","aria-label":yith_wcan_shortcodes.labels.close});t.prependTo(this.$preset).on("click",this.closeModal.bind(this)),this.modalElements.closeButton=t}},{key:"_removeCloseModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.closeButton)||void 0===t||t.remove()}},{key:"_addApplyFiltersModalButton",value:function(){var t=this,i=e("<button/>",{class:"apply-filters main-modal-button",html:yith_wcan_shortcodes.labels.show_results,"data-dismiss":"modal"});i.appendTo(this.$preset).on("click",(function(){t.filter(),t.closeModal()})),this.modalElements.applyFiltersButton=i}},{key:"_removeApplyFiltersModalButton",value:function(){var e,t;null===(e=this.modalElements)||void 0===e||null===(t=e.applyFiltersButton)||void 0===t||t.remove()}},{key:"_switchToCollapsables",value:function(){var t=this;this.getFilters().each((function(){var i=e(this),a=i.find(".filter-title");a.length&&!a.hasClass("collapsable")&&(a.addClass("collapsable").data("disable-collapse",!0),t._initTitleCollapsable(i))}))}},{key:"_switchBackCollapsables",value:function(){this.getFilters().each((function(){var t=e(this),i=t.find(".filter-title");i.length&&i.hasClass("collapsable")&&i.data("disable-collapse")&&(i.removeClass("collapsable").removeData("disable-collapse",!0).off("click"),t.find(".filter-content").show())}))}},{key:"_openAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").show().end().find(".filter-title").removeClass("closed").addClass("opened")}},{key:"_closeAllCollapsables",value:function(){var t=this;this.$filters.not(".no-title").not((function(i,a){return t.isFilterActive(e(a))})).find(".filter-content").hide().end().find(".filter-title").addClass("closed").removeClass("opened")}},{key:"maybeRegisterStatusChange",value:function(){var e=this.getFiltersProperties(),t=JSON.stringify(e),i=JSON.stringify(this.originalFilters);this.dirty=t!==i}},{key:"maybeFilter",value:function(e){if(this.maybeRegisterStatusChange(),yith_wcan_shortcodes.instant_filters&&!this.isMobile)this.filter();else if(yith_wcan_shortcodes.instant_filters||this.isMobile){if(this.isMobile&&this.dirty){var t;this.$preset.addClass("with-filter-button"),null===(t=this.modalElements.applyFiltersButton)||void 0===t||t.show()}}else{var i,a;this.dirty?null===(i=this.$filterButtons)||void 0===i||i.show():null===(a=this.$filterButtons)||void 0===a||a.hide()}}},{key:"filter",value:function(){var t,i,a,n=this,r=null===(t=window)||void 0===t?void 0:t.product_filter;null==r||null===(i=r.doFilter(this.getFiltersProperties(),this.target,this.preset))||void 0===i||i.done((function(){var t=e(n.preset);if(!n.isMobile&&t.length&&yith_wcan_shortcodes.scroll_top){var i=t.offset().top;if(yith_wcan_shortcodes.scroll_target){var a=e(yith_wcan_shortcodes.scroll_target);i=a.length?a.offset().top:i}e("body, html").animate({scrollTop:i-100})}n.originalFilters=n.getFiltersProperties(),n.dirty=!1})),this.isMobile&&(this.$preset.removeClass("with-filter-button"),null===(a=this.modalElements.applyFiltersButton)||void 0===a||a.hide())}},{key:"getFilters",value:function(){return!1===this.$filters&&(this.$filters=this.$preset.find(".yith-wcan-filter")),this.$filters}},{key:"getActiveFilters",value:function(){return!1===this.activeFilters&&(this.activeFilters=this.getFiltersProperties()),this.activeFilters}},{key:"isAnyFilterActive",value:function(){return!!Object.keys(this.getActiveFilters()).length}},{key:"isFilterActive",value:function(e){var t,i;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var a=e.find(".filter-dropdown");if(a.length){var n=a.val();t="object"===d(n)?!(null==n||!n.length):!!n;break}case"stock_sale":t=e.find(".filter-item").filter(".active").length;break;case"price_slider":var r=parseFloat(e.find(".price-slider").data("step")),l=parseFloat(e.find(".price-slider").data("min")),s=parseFloat(e.find(".price-slider").data("max")),o=parseFloat(e.find(".price-slider-min").val()),c=parseFloat(e.find(".price-slider-max").val());t=Math.abs(o-l)>=r||Math.abs(c-s)>=r;break;case"orderby":t="menu_order"!==e.find(".filter-order-by").val();break;default:t=!1}return t=void 0!==(i=e.triggerHandler("yith_wcan_is_filter_active",[t,this]))?i:t}},{key:"countActiveItems",value:function(e){var t;switch(e.data("filter-type")){case"tax":case"review":case"price_range":var i=e.find(".filter-dropdown");if(i.length){var a=i.val();t="object"===d(a)?null==a?void 0:a.length:+!!a;break}case"stock_sale":t=e.find(".filter-items").find(".active").length;break;case"orderby":this.isFilterActive(e)&&(t=1);break;case"price_slider":default:t=0}return t}},{key:"getFilterProperties",value:function(t){var i,a,n=t.data("filter-type"),r="yes"===t.data("multiple"),l=t.find(".filter-dropdown"),s={};switch(n){case"tax":var o=[],c=t.data("taxonomy"),h=0===c.indexOf("filter"),d=t.data("relation");if(l.length?r?o=l.val():o.push(l.val()):o=(a=t.find(".filter-item").filter(".active").children("a, label")).get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("term-slug"))?(t.push(a),t):t}),o),r){var u=h||"and"!==d?",":"+";s[c]=o.join(u)}else s[c]=o.pop();h&&(s[c.replace("filter_","query_type_")]=d);break;case"review":l.length?s.rating_filter=l.val():(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.rating_filter=a.get().reduce((function(t,i){var a;return(a=(i=e(i)).is("label")?i.find(":input").val():i.data("rating"))?(t.push(a),t):t}),[]).join(","):(a=a.first(),s.rating_filter=a.is("label")?a.find(":input").val():a.data("rating")));break;case"price_range":l.length?r?s.price_ranges=l.val().join(","):(s.min_price=l.val().split("-")[0],s.max_price=l.val().split("-")[1]):(a=t.find(".filter-item").filter(".active").children("a, label"),r?s.price_ranges=a.get().reduce((function(t,i){var a=e(i).data("range-min"),n=e(i).data("range-max");return t+=(n?"".concat(a,"-").concat(n):a)+","}),"").replace(/^(.*),$/,"$1"):(s.min_price=parseFloat(a.first().data("range-min")),s.max_price=parseFloat(a.first().data("range-max"))));break;case"price_slider":s.min_price=parseFloat(t.find(".price-slider-min").val()),s.max_price=parseFloat(t.find(".price-slider-max").val());break;case"stock_sale":t.find(".filter-on-sale").is(".active")&&(s.onsale_filter=1),t.find(".filter-in-stock").is(".active")&&(s.instock_filter=1),t.find(".filter-featured").is(".active")&&(s.featured_filter=1);break;case"orderby":s.orderby=t.find(".filter-order-by").val()}return s=void 0!==(i=t.triggerHandler("yith_wcan_filter_properties",[s,self]))?i:s}},{key:"getFiltersProperties",value:function(){var t={},i=this;return this.getFilters().each((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a);t=i.mergeProperties(t,n,a)}})),t}},{key:"getFiltersByProperties",value:function(t){var i=this;return this.getFilters().filter((function(){var a=e(this);if(i.isFilterActive(a)){var n=i.getFilterProperties(a),r=!1;for(var l in t){if(["min_price","max_price","price_ranges"].includes(l)&&(n.min_price||n.price_ranges)){r=!0;break}if(n[l]){r=!0;break}}return r}return!1}))}},{key:"maybeToggleClearFilter",value:function(e){this.isFilterActive(e)?this.maybeShowClearFilter(e):this.maybeHideClearFilter(e)}},{key:"maybeToggleClearAllFilters",value:function(){this.isAnyFilterActive()?this.maybeShowClearAllFilters():this.maybeHideClearAllFilters()}},{key:"maybeShowClearFilter",value:function(t){var i=this;this.isFilterActive(t)&&yith_wcan_shortcodes.show_clear_filter&&(t.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_selection,role:"button"}).prependTo(t.find(".filter-content")).on("click",(function(e){e.preventDefault(),i.deactivateFilter(t,!1,yith_wcan_shortcodes.instant_filters),i.maybeHideClearFilter(t),yith_wcan_shortcodes.instant_filters&&i.closeModal()})))}},{key:"maybeShowClearAllFilters",value:function(){var t=this;this.isAnyFilterActive()&&this.isMobile&&(this.$preset.find(".clear-selection").remove(),e("<a/>",{class:"clear-selection",text:yith_wcan_shortcodes.labels.clear_all_selections,role:"button"}).prependTo(this.$preset.find(".filters-container")).on("click",(function(e){e.preventDefault(),t.deactivateAllFilters(yith_wcan_shortcodes.instant_filters),t.maybeHideClearAllFilters(),yith_wcan_shortcodes.instant_filters&&t.closeModal()})))}},{key:"maybeHideClearFilter",value:function(e){!this.isFilterActive(e)&&yith_wcan_shortcodes.show_clear_filter&&e.find(".clear-selection").remove()}},{key:"maybeHideClearAllFilters",value:function(){this.isAnyFilterActive()||this.$preset.find(".filters-container").children(".clear-selection").remove()}},{key:"deactivateFilter",value:function(t,i,a){var n=t.data("filter-type"),r=t.find(".filter-item"),l=r.filter(".active"),s=t.find(".filter-dropdown");switch(n){case"tax":var o=t.data("taxonomy");s.length?(i?s.find("option").each((function(){var t=e(this);t.val().toString()===i[o].toString()&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("term-slug")).toString()===i[o].toString()&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"review":s.length?(i?s.find("option").each((function(){var t=e(this);t.val()===i.rating_filter&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t=e(this),a=t.children("label"),n=t.children("a");(a.length?a.find(":input").val():n.data("rating"))===i.rating_filter&&(t.children("label").children("a").click(),t.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_range":s.length?(i?s.find("option").each((function(){var t=e(this),a=i.min_price+(i.max_price?"-".concat(i.max_price):"");t.val()===a&&t.prop("selected",!1)})):s.find("option").prop("selected",!1),s.change()):i?l.each((function(){var t,a,n=e(this),r=n.children("label"),l=n.children("a");a=r.length?r.find(":input").val():l.data("min_price")+(l.data("max_price")?"-"+l.data("max_price"):""),i.min_price?t=i.min_price+(i.max_price?"-"+i.max_price:""):i.price_ranges&&(t=i.price_ranges),a===t&&(n.children("label").children("a").click(),n.removeClass("active"))})):(l.children("label").children("a").click(),l.removeClass("active"));break;case"price_slider":var c=t.find(".price-slider");t.find(".price-slider-min").val(c.data("min")),t.find(".price-slider-max").val(c.data("max")).change();break;case"orderby":t.find("select").val("menu_order");break;case"stock_sale":i?(null!=i&&i.instock_filter&&t.find(".filter-in-stock").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.onsale_filter&&t.find(".filter-on-sale").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active"),null!=i&&i.featured_filter&&t.find(".filter-featured").find(":input").prop("checked",!1).change().closest(".filter-item").removeClass("active")):(t.find(".filter-in-stock").find(":input").prop("checked",!1).change(),t.find(".filter-on-sale").find(":input").prop("checked",!1).change(),t.find(".filter-featured").find(":input").prop("checked",!1).change(),r.removeClass("active"));break;default:r.removeClass("active")}this.activeFilters=!1,a&&this.filter()}},{key:"deactivateAllFilters",value:function(t){var i=this;this.getFilters().each((function(){var t=e(this);i.deactivateFilter(t)})),this.activeFilters=!1,t&&this.filter()}},{key:"deactivateFilterByProperties",value:function(t,i){var a=this,n=this.getFiltersByProperties(t);n.length&&n.each((function(){var n=e(this);a.deactivateFilter(n,t,i)}))}},{key:"openModal",value:function(){var t=this;this.isMobile&&(yith_wcan_shortcodes.toggles_open_on_modal?this._openAllCollapsables():this._closeAllCollapsables(),e("body").css("overflow","hidden").addClass("yith-wcan-preset-modal-open"),this.$preset.show(),setTimeout((function(){t.$preset.addClass("open")}),100))}},{key:"closeModal",value:function(){var t=this;this.isMobile&&(this.$preset.removeClass("open"),setTimeout((function(){t.$preset.hide(),e("body").css("overflow","auto").removeClass("yith-wcan-preset-modal-open")}),300))}},{key:"formatPrice",value:function(e){return"undefined"!=typeof accounting&&(e=accounting.formatMoney(e,{symbol:yith_wcan_shortcodes.currency_format.symbol,decimal:yith_wcan_shortcodes.currency_format.decimal,thousand:yith_wcan_shortcodes.currency_format.thousand,precision:0,format:yith_wcan_shortcodes.currency_format.format})),e}},{key:"mergeProperties",value:function(t,i,a){for(var n in i)if(i.hasOwnProperty(n)&&t[n]){switch(n){case"rating_filter":case"min_price":case"max_price":case"onsale_filter":case"instock_filter":case"orderby":t[n]=i[n];break;default:if(0===n.indexOf("query_type_"))t[n]=i[n];else{var r=0===n.indexOf("filter_"),l=r?",":"+",s=t[n].replace(",",l)+l+i[n].replace(",",l);if(s=s.split(l).filter((function(e,t,i){return i.indexOf(e)===t})).join(l),t[n]=s,r){var o=n.replace("filter_","query_type_");t[o]="and",i[o]="and"}}}delete i[n]}return e.extend(t,i),t}}])&&u(i.prototype,a),n&&u(i,n),t}();jQuery((function(e){e(document).on("yith_wcan_init_shortcodes yith_plugin_fw_gutenberg_success_do_shortcode",(function(){e(".yith-wcan-filters").not(".enhanced").each((function(){new p(e(this))})),e(".yith-wcan-reset-filters").not(".enhanced").each((function(){new r(e(this))}))})).trigger("yith_wcan_init_shortcodes"),globalThis.product_filter=new n}))})();
assets/scss/shortcodes.scss CHANGED
@@ -935,7 +935,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
935
  .close-button {
936
  color: $anchor-color;
937
  cursor: pointer;
938
- font-size: 2.5em;
939
  height: 35px;
940
  line-height: 1;
941
  position: absolute;
@@ -1039,7 +1039,7 @@ $z-index: 1001; // value is this high since modal must be on top of Proteo's sti
1039
  }
1040
 
1041
  // filter items
1042
- .filter-items {
1043
  max-height: 200px;
1044
  overflow-y: scroll;
1045
  overflow-x: hidden;
@@ -1097,6 +1097,19 @@ body.yith-wcan-preset-modal-open:after {
1097
  }
1098
  }
1099
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1100
  @media( max-width: 991px ) {
1101
  body.filters-in-modal .yith-wcan-filters {
1102
  display: none;
935
  .close-button {
936
  color: $anchor-color;
937
  cursor: pointer;
938
+ font-size: 1.5em;
939
  height: 35px;
940
  line-height: 1;
941
  position: absolute;
1039
  }
1040
 
1041
  // filter items
1042
+ .filter-content > .filter-items {
1043
  max-height: 200px;
1044
  overflow-y: scroll;
1045
  overflow-x: hidden;
1097
  }
1098
  }
1099
 
1100
+ body.rtl .yith-wcan-filters {
1101
+ .yith-wcan-filter {
1102
+ .filter-items {
1103
+ &.level-0 {
1104
+ ul {
1105
+ padding-left: 0;
1106
+ padding-right: 15px;
1107
+ }
1108
+ }
1109
+ }
1110
+ }
1111
+ }
1112
+
1113
  @media( max-width: 991px ) {
1114
  body.filters-in-modal .yith-wcan-filters {
1115
  display: none;
includes/{class.yith-wcan-admin.php → class-yith-wcan-admin.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Admin class
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.0.0
8
  */
9
 
@@ -25,14 +25,14 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
25
  *
26
  * @var YIT_Plugin_Panel_WooCommerce
27
  */
28
- protected $_panel;
29
 
30
  /**
31
  * Panel page slug
32
  *
33
  * @var string
34
  */
35
- protected $_panel_page = 'yith_wcan_panel';
36
 
37
  /**
38
  * Link to landing page on yithemes.com
@@ -96,23 +96,23 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
96
  'yith_wcan_admin',
97
  'yith_wcan_admin',
98
  array(
99
- 'nonce' => array(
100
  'change_preset_status' => wp_create_nonce( 'change_preset_status' ),
101
- 'search_term' => wp_create_nonce( 'search_term' ),
102
- 'save_preset_filter' => wp_create_nonce( 'save_preset_filter' ),
103
- 'load_more_filters' => wp_create_nonce( 'load_more_filters' ),
104
  'delete_preset_filter' => wp_create_nonce( 'delete_preset_filter' ),
105
  ),
106
- 'messages' => array(
107
- 'confirm_copy' => _x( 'Content copied to your clipboard', '[Admin] Copy confirmation message', 'yith-woocommerce-ajax-navigation' ),
108
- 'confirm_delete' => _x( 'Are you sure you want to delete this item?', '[Admin] Confirm filter delete message', 'yith-woocommerce-ajax-navigation' ),
109
  // translators: 1. Number of items that will be added.
110
  'confirm_add_all_terms' => _x( 'Are you sure you want to proceed? This operation will add %s items', '[Admin] Confirm add all terms message', 'yith-woocommerce-ajax-navigation' ),
111
  'filter_title_required' => _x( '"Filter title" is a required field', '[Admin] Error message', 'yith-woocommerce-ajax-navigation' ),
112
  ),
113
- 'labels' => array(
114
- 'no_title' => _x( '&lt; no title &gt;', '[Admin] Message shown when filter has empty title', 'yith-woocommerce-ajax-navigation' ),
115
- 'upload_media' => _x( 'Select media you want to use', '[Admin] Media library title, when selecting images', 'yith-woocommerce-ajax-navigation' ),
116
  'confirm_media' => _x( 'Use this media', '[Admin] Media library confirm button, when selecting images', 'yith-woocommerce-ajax-navigation' ),
117
  ),
118
  'yith_wccl_enabled' => defined( 'YITH_WCCL' ),
@@ -146,7 +146,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
146
 
147
  wp_enqueue_media();
148
 
149
- if ( ! isset( $_GET['tab'] ) || 'filter-preset' == $_GET['tab'] ) {
150
  wp_enqueue_style( 'yith-wcan-material-icons' );
151
  }
152
  }
@@ -176,7 +176,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
176
  */
177
  public function register_panel() {
178
 
179
- if ( ! empty( $this->_panel ) ) {
180
  return;
181
  }
182
 
@@ -187,7 +187,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
187
  'premium' => _x( 'Premium Version', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' ),
188
  );
189
 
190
- if ( isset( $_GET['tab'] ) && 'legacy' === $_GET['tab'] ) {
191
  $admin_tabs['legacy'] = _x( 'Legacy', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' );
192
  }
193
 
@@ -195,7 +195,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
195
  'create_menu_page' => true,
196
  'parent_slug' => '',
197
  'page_title' => 'WooCommerce Ajax Product Filter',
198
- 'menu_title' => _x( 'Ajax Product Filter', '[Admin] Menu title', 'yith-woocommerce-ajax-navigation' ),
199
  'plugin_description' => _x( 'It allows your users to find the product they are looking for as quickly as possible.', '[Admin] Plugin description', 'yith-woocommerce-ajax-navigation' ),
200
  'capability' => apply_filters( 'yith_wcan_panel_capability', 'manage_woocommerce' ),
201
  'parent' => '',
@@ -205,7 +205,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
205
  'options-path' => YITH_WCAN_DIR . '/plugin-options',
206
  'plugin_slug' => YITH_WCAN_SLUG,
207
  'plugin-url' => YITH_WCAN_URL,
208
- 'page' => $this->_panel_page,
209
  'help_tab' => array(
210
  'main_video' => array(
211
  'desc' => _x( 'Check this video to learn how to <b>create a filter preset and show it on the shop page:</b>', '[HELP TAB] Video title', 'yith-woocommerce-ajax-navigation' ),
@@ -215,17 +215,17 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
215
  'es' => 'https://www.youtube.com/embed/KGnJW_zUBRY',
216
  ),
217
  ),
218
- 'playlists' => array(
219
  'en' => 'https://www.youtube.com/watch?v=icXC7Ei4K7g&list=PLDriKG-6905lqqHc9JR5RJ3vhBn5ktdcj',
220
  'it' => 'https://www.youtube.com/watch?v=QwRkPQFeGOM&list=PL9c19edGMs08ouyniO98Q8S_pr4pHZPqb',
221
  'es' => 'https://www.youtube.com/watch?v=7kX7nxBD2BA&list=PL9Ka3j92PYJOyeFNJRdW9oLPkhfyrXmL1',
222
  ),
223
- 'hc_url' => 'https://support.yithemes.com/hc/en-us/categories/360003474618-YITH-WOOCOMMERCE-AJAX-PRODUCT-FILTER',
224
- 'doc_url' => 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/',
225
  ),
226
  );
227
 
228
- $this->_panel = new YIT_Plugin_Panel_WooCommerce( $args );
229
 
230
  do_action( 'yith_wcan_after_option_panel', $args );
231
  }
@@ -242,7 +242,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
242
  $args = array_merge(
243
  $args,
244
  array(
245
- 'page' => $this->_panel_page,
246
  )
247
  );
248
 
@@ -274,7 +274,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
274
  * @return string Panel Slug.
275
  */
276
  public function get_panel_page() {
277
- return $this->_panel_page;
278
  }
279
 
280
  /**
@@ -290,7 +290,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
290
  if ( is_null( $screen ) ) {
291
  global $pagenow;
292
 
293
- return 'admin.php' === $pagenow && isset( $_GET['page'] ) && $this->_panel_page === $_GET['page'];
294
  }
295
 
296
  // use screen id to check for current page.
@@ -306,13 +306,13 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
306
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
307
  */
308
  public function is_preset_detail_page() {
309
- $action = isset( $_GET['action'] ) ? wc_clean( wp_unslash( $_GET['action'] ) ) : false; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
310
 
311
  if ( ! $action ) {
312
  return false;
313
  }
314
 
315
- return $this->is_panel_page() && in_array( $action, array( 'create', 'edit' ) );
316
  }
317
 
318
  /**
@@ -326,19 +326,19 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
326
  $args = wp_parse_args(
327
  $args,
328
  array(
329
- 'item_name' => _x( 'item', '[Admin] Generic item name, in "You have no x yet"', 'yith-woocommerce-ajax-navigation' ),
330
- 'subtitle' => _x( 'But don\'t worry, here you can create your first one!', '[Admin] Preset table empty message second line', 'yith-woocommerce-ajax-navigation' ),
331
  'button_label' => '',
332
  'button_class' => '',
333
- 'button_url' => '',
334
- 'show_icon' => true,
335
- 'hide' => false,
336
  )
337
  );
338
 
339
  extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
340
 
341
- include( YITH_WCAN_DIR . 'templates/admin/preset-empty-content.php' );
342
  }
343
 
344
  /**
@@ -347,7 +347,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
347
  * @return void
348
  */
349
  public function premium_tab() {
350
- require_once( YITH_WCAN_DIR . 'templates/admin/premium.php' );
351
  }
352
 
353
  /**
@@ -357,8 +357,10 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
357
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
358
  */
359
  public function preset_edit_tab() {
360
- $action = isset( $_GET['action'] ) ? wc_clean( wp_unslash( $_GET['action'] ) ) : false; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
 
361
  $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
 
362
 
363
  if ( 'edit' === $action && $preset ) {
364
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
@@ -366,7 +368,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
366
  $preset = false;
367
  }
368
 
369
- include( YITH_WCAN_DIR . 'templates/admin/preset-edit.php' );
370
  }
371
 
372
  /**
@@ -378,11 +380,11 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
378
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
379
  */
380
  public function filter_terms_field( $field ) {
381
- $id = isset( $field['index'] ) ? $field['index'] : 0;
382
- $terms = isset( $field['value'] ) && $field['filter']->customize_terms() ? $field['value'] : array();
383
  $taxonomy = ! empty( $field['filter'] ) ? $field['filter']->get_taxonomy() : '';
384
 
385
- include( YITH_WCAN_DIR . 'templates/admin/preset-filter-terms.php' );
386
  }
387
 
388
  /**
@@ -398,7 +400,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
398
  */
399
  public function filter_term_field( $id, $term_id, $term_name, $term_options = array() ) {
400
  // just include template, and provide passed terms.
401
- include( YITH_WCAN_DIR . 'templates/admin/preset-filter-term.php' );
402
  }
403
 
404
  /* === AJAX HANDLING === */
@@ -412,9 +414,9 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
412
  public function json_search_term() {
413
  check_ajax_referer( 'search_term', 'security' );
414
 
415
- $term = isset( $_GET['term'] ) ? wc_clean( wp_unslash( $_GET['term'] ) ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
416
  $all = isset( $_GET['all'] ) ? (bool) intval( $_GET['all'] ) : false;
417
- $tax = isset( $_GET['taxonomy'] ) ? wc_clean( wp_unslash( $_GET['taxonomy'] ) ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
418
  $exclude = isset( $_GET['selected'] ) ? array_map( 'intval', $_GET['selected'] ) : array();
419
 
420
  if ( ( ! $term && ! $all ) || ! $tax ) {
@@ -436,7 +438,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
436
 
437
  if ( ! empty( $terms ) ) {
438
  foreach ( $terms as $term_obj ) {
439
- if ( in_array( $term_obj->term_id, $exclude ) ) {
440
  continue;
441
  }
442
 
@@ -478,12 +480,12 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
478
  'name' => _x( 'Clear Product Filter transients', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
479
  'button' => _x( 'Clear', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
480
  'desc' => _x( 'This will clear all transients related to the YITH WooCommerce AJAX Product Filter plugin. It may be useful if you changed your product\'s configuration, and filters do not display the expected results.', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
481
- 'callback' => array( YITH_WCAN_Query(), 'delete_transients' ),
482
  ),
483
- 'run_widget_upgrade' => array(
484
- 'name' => _x( 'Run filter widgets upgrade', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
485
- 'button' => _x( 'Run', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
486
- 'desc' => _x( 'This will create a preset for any sidebar of your shop containing filter widgets; preset will be configured to match widgets specifications', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
487
  'callback' => array( YITH_WCAN_Presets(), 'do_widget_upgrade' ),
488
  ),
489
  );
@@ -509,7 +511,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
509
  * @since 1.0
510
  */
511
  public function action_links( $links ) {
512
- $links = yith_add_action_links( $links, $this->_panel_page, defined( 'YITH_WCAN_PREMIUM' ), YITH_WCAN_SLUG );
513
 
514
  return $links;
515
  }
@@ -530,7 +532,7 @@ if ( ! class_exists( 'YITH_WCAN_Admin' ) ) {
530
  * @use plugin_row_meta
531
  */
532
  public function plugin_row_meta( $new_row_meta_args, $plugin_meta, $plugin_file, $plugin_data, $status, $init_file = 'YITH_WCAN_FREE_INIT' ) {
533
- if ( defined( $init_file ) && constant( $init_file ) == $plugin_file ) {
534
  $new_row_meta_args['slug'] = 'yith-woocommerce-ajax-product-filter';
535
 
536
  if ( 'YITH_WCAN_FREE_INIT' === $init_file ) {
3
  * Admin class
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes
7
  * @version 4.0.0
8
  */
9
 
25
  *
26
  * @var YIT_Plugin_Panel_WooCommerce
27
  */
28
+ protected $panel;
29
 
30
  /**
31
  * Panel page slug
32
  *
33
  * @var string
34
  */
35
+ protected $panel_page = 'yith_wcan_panel';
36
 
37
  /**
38
  * Link to landing page on yithemes.com
96
  'yith_wcan_admin',
97
  'yith_wcan_admin',
98
  array(
99
+ 'nonce' => array(
100
  'change_preset_status' => wp_create_nonce( 'change_preset_status' ),
101
+ 'search_term' => wp_create_nonce( 'search_term' ),
102
+ 'save_preset_filter' => wp_create_nonce( 'save_preset_filter' ),
103
+ 'load_more_filters' => wp_create_nonce( 'load_more_filters' ),
104
  'delete_preset_filter' => wp_create_nonce( 'delete_preset_filter' ),
105
  ),
106
+ 'messages' => array(
107
+ 'confirm_copy' => _x( 'Content copied to your clipboard', '[Admin] Copy confirmation message', 'yith-woocommerce-ajax-navigation' ),
108
+ 'confirm_delete' => _x( 'Are you sure you want to delete this item?', '[Admin] Confirm filter delete message', 'yith-woocommerce-ajax-navigation' ),
109
  // translators: 1. Number of items that will be added.
110
  'confirm_add_all_terms' => _x( 'Are you sure you want to proceed? This operation will add %s items', '[Admin] Confirm add all terms message', 'yith-woocommerce-ajax-navigation' ),
111
  'filter_title_required' => _x( '"Filter title" is a required field', '[Admin] Error message', 'yith-woocommerce-ajax-navigation' ),
112
  ),
113
+ 'labels' => array(
114
+ 'no_title' => _x( '&lt; no title &gt;', '[Admin] Message shown when filter has empty title', 'yith-woocommerce-ajax-navigation' ),
115
+ 'upload_media' => _x( 'Select media you want to use', '[Admin] Media library title, when selecting images', 'yith-woocommerce-ajax-navigation' ),
116
  'confirm_media' => _x( 'Use this media', '[Admin] Media library confirm button, when selecting images', 'yith-woocommerce-ajax-navigation' ),
117
  ),
118
  'yith_wccl_enabled' => defined( 'YITH_WCCL' ),
146
 
147
  wp_enqueue_media();
148
 
149
+ if ( ! isset( $_GET['tab'] ) || 'filter-preset' === $_GET['tab'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
150
  wp_enqueue_style( 'yith-wcan-material-icons' );
151
  }
152
  }
176
  */
177
  public function register_panel() {
178
 
179
+ if ( ! empty( $this->panel ) ) {
180
  return;
181
  }
182
 
187
  'premium' => _x( 'Premium Version', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' ),
188
  );
189
 
190
+ if ( isset( $_GET['tab'] ) && 'legacy' === $_GET['tab'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
191
  $admin_tabs['legacy'] = _x( 'Legacy', '[Admin] tab name', 'yith-woocommerce-ajax-navigation' );
192
  }
193
 
195
  'create_menu_page' => true,
196
  'parent_slug' => '',
197
  'page_title' => 'WooCommerce Ajax Product Filter',
198
+ 'menu_title' => 'Ajax Product Filter',
199
  'plugin_description' => _x( 'It allows your users to find the product they are looking for as quickly as possible.', '[Admin] Plugin description', 'yith-woocommerce-ajax-navigation' ),
200
  'capability' => apply_filters( 'yith_wcan_panel_capability', 'manage_woocommerce' ),
201
  'parent' => '',
205
  'options-path' => YITH_WCAN_DIR . '/plugin-options',
206
  'plugin_slug' => YITH_WCAN_SLUG,
207
  'plugin-url' => YITH_WCAN_URL,
208
+ 'page' => $this->panel_page,
209
  'help_tab' => array(
210
  'main_video' => array(
211
  'desc' => _x( 'Check this video to learn how to <b>create a filter preset and show it on the shop page:</b>', '[HELP TAB] Video title', 'yith-woocommerce-ajax-navigation' ),
215
  'es' => 'https://www.youtube.com/embed/KGnJW_zUBRY',
216
  ),
217
  ),
218
+ 'playlists' => array(
219
  'en' => 'https://www.youtube.com/watch?v=icXC7Ei4K7g&list=PLDriKG-6905lqqHc9JR5RJ3vhBn5ktdcj',
220
  'it' => 'https://www.youtube.com/watch?v=QwRkPQFeGOM&list=PL9c19edGMs08ouyniO98Q8S_pr4pHZPqb',
221
  'es' => 'https://www.youtube.com/watch?v=7kX7nxBD2BA&list=PL9Ka3j92PYJOyeFNJRdW9oLPkhfyrXmL1',
222
  ),
223
+ 'hc_url' => 'https://support.yithemes.com/hc/en-us/categories/360003474618-YITH-WOOCOMMERCE-AJAX-PRODUCT-FILTER',
224
+ 'doc_url' => 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/',
225
  ),
226
  );
227
 
228
+ $this->panel = new YIT_Plugin_Panel_WooCommerce( $args );
229
 
230
  do_action( 'yith_wcan_after_option_panel', $args );
231
  }
242
  $args = array_merge(
243
  $args,
244
  array(
245
+ 'page' => $this->panel_page,
246
  )
247
  );
248
 
274
  * @return string Panel Slug.
275
  */
276
  public function get_panel_page() {
277
+ return $this->panel_page;
278
  }
279
 
280
  /**
290
  if ( is_null( $screen ) ) {
291
  global $pagenow;
292
 
293
+ return 'admin.php' === $pagenow && isset( $_GET['page'] ) && $this->panel_page === $_GET['page']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
294
  }
295
 
296
  // use screen id to check for current page.
306
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
307
  */
308
  public function is_preset_detail_page() {
309
+ $action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
310
 
311
  if ( ! $action ) {
312
  return false;
313
  }
314
 
315
+ return $this->is_panel_page() && in_array( $action, array( 'create', 'edit' ), true );
316
  }
317
 
318
  /**
326
  $args = wp_parse_args(
327
  $args,
328
  array(
329
+ 'item_name' => _x( 'item', '[Admin] Generic item name, in "You have no x yet"', 'yith-woocommerce-ajax-navigation' ),
330
+ 'subtitle' => _x( 'But don\'t worry, here you can create your first one!', '[Admin] Preset table empty message second line', 'yith-woocommerce-ajax-navigation' ),
331
  'button_label' => '',
332
  'button_class' => '',
333
+ 'button_url' => '',
334
+ 'show_icon' => true,
335
+ 'hide' => false,
336
  )
337
  );
338
 
339
  extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
340
 
341
+ include YITH_WCAN_DIR . 'templates/admin/preset-empty-content.php';
342
  }
343
 
344
  /**
347
  * @return void
348
  */
349
  public function premium_tab() {
350
+ require_once YITH_WCAN_DIR . 'templates/admin/premium.php';
351
  }
352
 
353
  /**
357
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
358
  */
359
  public function preset_edit_tab() {
360
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
361
+ $action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : false;
362
  $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
363
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
364
 
365
  if ( 'edit' === $action && $preset ) {
366
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
368
  $preset = false;
369
  }
370
 
371
+ include YITH_WCAN_DIR . 'templates/admin/preset-edit.php';
372
  }
373
 
374
  /**
380
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
381
  */
382
  public function filter_terms_field( $field ) {
383
+ $id = isset( $field['index'] ) ? $field['index'] : 0;
384
+ $terms = isset( $field['value'] ) && $field['filter']->customize_terms() ? $field['value'] : array();
385
  $taxonomy = ! empty( $field['filter'] ) ? $field['filter']->get_taxonomy() : '';
386
 
387
+ include YITH_WCAN_DIR . 'templates/admin/preset-filter-terms.php';
388
  }
389
 
390
  /**
400
  */
401
  public function filter_term_field( $id, $term_id, $term_name, $term_options = array() ) {
402
  // just include template, and provide passed terms.
403
+ include YITH_WCAN_DIR . 'templates/admin/preset-filter-term.php';
404
  }
405
 
406
  /* === AJAX HANDLING === */
414
  public function json_search_term() {
415
  check_ajax_referer( 'search_term', 'security' );
416
 
417
+ $term = isset( $_GET['term'] ) ? sanitize_text_field( wp_unslash( $_GET['term'] ) ) : '';
418
  $all = isset( $_GET['all'] ) ? (bool) intval( $_GET['all'] ) : false;
419
+ $tax = isset( $_GET['taxonomy'] ) ? sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ) : '';
420
  $exclude = isset( $_GET['selected'] ) ? array_map( 'intval', $_GET['selected'] ) : array();
421
 
422
  if ( ( ! $term && ! $all ) || ! $tax ) {
438
 
439
  if ( ! empty( $terms ) ) {
440
  foreach ( $terms as $term_obj ) {
441
+ if ( in_array( (int) $term_obj->term_id, $exclude, true ) ) {
442
  continue;
443
  }
444
 
480
  'name' => _x( 'Clear Product Filter transients', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
481
  'button' => _x( 'Clear', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
482
  'desc' => _x( 'This will clear all transients related to the YITH WooCommerce AJAX Product Filter plugin. It may be useful if you changed your product\'s configuration, and filters do not display the expected results.', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
483
+ 'callback' => array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ),
484
  ),
485
+ 'run_widget_upgrade' => array(
486
+ 'name' => _x( 'Run filter widgets upgrade', '[ADMIN] WooCommerce Tools tab, name of the tool', 'yith-woocommerce-ajax-navigation' ),
487
+ 'button' => _x( 'Run', '[ADMIN] WooCommerce Tools tab, button for the tool', 'yith-woocommerce-ajax-navigation' ),
488
+ 'desc' => _x( 'This will create a preset for any sidebar of your shop containing filter widgets; preset will be configured to match widgets specifications', '[ADMIN] WooCommerce Tools tab, description of the tool', 'yith-woocommerce-ajax-navigation' ),
489
  'callback' => array( YITH_WCAN_Presets(), 'do_widget_upgrade' ),
490
  ),
491
  );
511
  * @since 1.0
512
  */
513
  public function action_links( $links ) {
514
+ $links = yith_add_action_links( $links, $this->panel_page, defined( 'YITH_WCAN_PREMIUM' ), YITH_WCAN_SLUG );
515
 
516
  return $links;
517
  }
532
  * @use plugin_row_meta
533
  */
534
  public function plugin_row_meta( $new_row_meta_args, $plugin_meta, $plugin_file, $plugin_data, $status, $init_file = 'YITH_WCAN_FREE_INIT' ) {
535
+ if ( defined( $init_file ) && constant( $init_file ) === $plugin_file ) {
536
  $new_row_meta_args['slug'] = 'yith-woocommerce-ajax-product-filter';
537
 
538
  if ( 'YITH_WCAN_FREE_INIT' === $init_file ) {
includes/class-yith-wcan-cache-helper.php ADDED
@@ -0,0 +1,295 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Cache class
4
+ *
5
+ * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes
7
+ * @version 4.1.2
8
+ */
9
+
10
+ if ( ! defined( 'YITH_WCAN' ) ) {
11
+ exit;
12
+ } // Exit if accessed directly
13
+
14
+ if ( ! class_exists( 'YITH_WCAN_Cache_Helper' ) ) {
15
+ /**
16
+ * Cache class.
17
+ * This class manage all the cache functionalities.
18
+ *
19
+ * @since 4.1.2
20
+ */
21
+ class YITH_WCAN_Cache_Helper {
22
+ /**
23
+ * Array of available transients
24
+ *
25
+ * @var array
26
+ */
27
+ protected static $transients = array();
28
+
29
+ /**
30
+ * Array of transients that needs to be saved on shutdown
31
+ *
32
+ * @var array
33
+ */
34
+ protected static $need_update = array();
35
+
36
+ /**
37
+ * Bootstrap the cache
38
+ */
39
+ public static function init() {
40
+ // init transients array.
41
+ self::init_transients();
42
+
43
+ // register transients for update.
44
+ add_action( 'shutdown', array( __CLASS__, 'update_transients' ), 10 );
45
+ }
46
+
47
+ /**
48
+ * Returns a specific value in a transient
49
+ *
50
+ * @param string $transient Transient name.
51
+ * @param string $index Optional transient's index to return (assumes transient is an array).
52
+ *
53
+ * @return mixed Value of the transient (or value of the specific index inside transient).
54
+ */
55
+ public static function get( $transient, $index = null ) {
56
+ if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
57
+ return false;
58
+ }
59
+
60
+ if ( ! isset( self::$transients[ $transient ] ) ) {
61
+ return false;
62
+ }
63
+
64
+ if ( ! isset( self::$transients[ $transient ]['value'] ) ) {
65
+ self::$transients[ $transient ]['value'] = get_transient( self::$transients[ $transient ]['name'] );
66
+ }
67
+
68
+ if ( is_null( $index ) ) {
69
+ return self::$transients[ $transient ]['value'];
70
+ }
71
+
72
+ if ( ! isset( self::$transients[ $transient ]['value'][ $index ] ) ) {
73
+ return false;
74
+ }
75
+
76
+ return apply_filters( 'yith_wcan_get_transient', self::$transients[ $transient ]['value'][ $index ], $transient, $index );
77
+ }
78
+
79
+ /**
80
+ * Sets a specific value in a transient
81
+ *
82
+ * @param string $transient Transient name.
83
+ * @param mixed $value Value to set; could be the entire transient value, or value of a specific index of the transient, assuming it is an array.
84
+ * @param string $index Optional transient's index to set (assumes transient is an array).
85
+ * @param bool $now Whether to save transient immediately or allow system to do it at shutdown.
86
+ *
87
+ * @return bool|mixed False on failure, new value otherwise.
88
+ */
89
+ public static function set( $transient, $value, $index = null, $now = false ) {
90
+ if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
91
+ return false;
92
+ }
93
+
94
+ if ( ! isset( self::$transients[ $transient ] ) ) {
95
+ return false;
96
+ }
97
+
98
+ if ( is_null( $index ) ) {
99
+ self::$transients[ $transient ]['value'] = $value;
100
+ } else {
101
+ self::$transients[ $transient ]['value'][ $index ] = $value;
102
+ }
103
+
104
+ if ( $now ) {
105
+ set_transient( self::$transients[ $transient ]['name'], self::$transients[ $transient ]['value'], self::$transients[ $transient ]['duration'] );
106
+ } else {
107
+ self::mark_for_update( $transient );
108
+ }
109
+
110
+ return $value;
111
+ }
112
+
113
+ /**
114
+ * Completely deletes a transient.
115
+ *
116
+ * @param string $transient Transient name.
117
+ * @param bool $now Whether to save transient immediately or allow system to do it at shutdown.
118
+ *
119
+ * @return bool False on failure; true otherwise.
120
+ */
121
+ public static function delete( $transient, $now = false ) {
122
+ if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
123
+ return false;
124
+ }
125
+
126
+ if ( ! isset( self::$transients[ $transient ] ) ) {
127
+ return false;
128
+ }
129
+
130
+ if ( $now ) {
131
+ delete_transient( self::$transients[ $transient ]['name'] );
132
+ } else {
133
+ self::$transients[ $transient ]['value'] = false;
134
+ self::mark_for_update( $transient );
135
+ }
136
+
137
+ return true;
138
+ }
139
+
140
+ /**
141
+ * Update transients at shutdown
142
+ *
143
+ * @return void
144
+ */
145
+ public static function update_transients() {
146
+ if ( apply_filters( 'yith_wcan_suppress_cache', false ) ) {
147
+ return;
148
+ }
149
+
150
+ if ( empty( self::$need_update ) ) {
151
+ return;
152
+ }
153
+
154
+ foreach ( self::$need_update as $transient ) {
155
+ if ( ! isset( self::$transients[ $transient ] ) ) {
156
+ continue;
157
+ }
158
+
159
+ $value = self::$transients[ $transient ]['value'];
160
+
161
+ if ( ! $value ) {
162
+ delete_transient( self::$transients[ $transient ]['name'] );
163
+ } else {
164
+ set_transient( self::$transients[ $transient ]['name'], $value, self::$transients[ $transient ]['duration'] );
165
+ }
166
+ }
167
+
168
+ self::$need_update = array();
169
+ }
170
+
171
+ /**
172
+ * Deletes all plugin transients
173
+ *
174
+ * @return void
175
+ */
176
+ public static function delete_transients() {
177
+ // delete current version of the transients.
178
+ foreach ( self::$transients as $transient_options ) {
179
+ delete_transient( $transient_options['name'] );
180
+ }
181
+
182
+ // delete past versions of the transients.
183
+ self::delete_expired_transients();
184
+
185
+ delete_transient( 'yith_wcan_exclude_from_catalog_product_ids' );
186
+ }
187
+
188
+ /**
189
+ * Deletes old version of the transients still in memory
190
+ *
191
+ * @return void
192
+ */
193
+ public static function delete_expired_transients() {
194
+ global $wpdb;
195
+
196
+ $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
197
+ $to_delete = array();
198
+
199
+ foreach ( self::$transients as $transient_options ) {
200
+ $to_delete[] = str_replace( $cache_version, '%', $transient_options['name'] );
201
+ }
202
+
203
+ $query = "DELETE FROM {$wpdb->options} WHERE 1=1";
204
+ $args = array();
205
+
206
+ $query .= ' AND ( ';
207
+ $first = true;
208
+ foreach ( $to_delete as $transient_name ) {
209
+ if ( ! $first ) {
210
+ $query .= ' OR ';
211
+ }
212
+
213
+ $args[] = "%{$transient_name}%";
214
+
215
+ $query .= 'option_name LIKE %s';
216
+ $first = false;
217
+ }
218
+ $query .= ')';
219
+
220
+ $query .= ' AND option_name NOT LIKE %s';
221
+ $args[] = "%{$cache_version}%";
222
+
223
+ $wpdb->query( $wpdb->prepare( $query, $args ) ); // phpcs:ignore WordPress.DB
224
+ }
225
+
226
+ /**
227
+ * Init supported transients
228
+ *
229
+ * @return void
230
+ */
231
+ protected static function init_transients() {
232
+ $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
233
+ $language_postfix = self::get_language_postfix();
234
+
235
+ $transient_array = array();
236
+ $builtin_transients = array(
237
+ 'queried_products',
238
+ 'object_in_terms',
239
+ 'products_instock',
240
+ );
241
+
242
+ foreach ( $builtin_transients as $transient ) {
243
+ $default_name = "yith_wcan_{$transient}_{$cache_version}{$language_postfix}";
244
+
245
+ $transient_array[ $transient ] = array(
246
+ 'name' => apply_filters( "yith_wcan_{$transient}_name", $default_name ),
247
+ 'duration' => apply_filters( "yith_wcan_{$transient}_duration", 30 * DAY_IN_SECONDS ),
248
+ );
249
+ }
250
+
251
+ // add legacy transients.
252
+ $transient_array['exclude_from_catalog_product_ids'] = array(
253
+ 'name' => 'yith_wcan_exclude_from_catalog_product_ids',
254
+ 'duration' => 30 * DAY_IN_SECONDS,
255
+ );
256
+
257
+ self::$transients = apply_filters( 'yith_wcan_cache_helper_transients', $transient_array );
258
+ }
259
+
260
+ /**
261
+ * Return postfix to be used in transient names, if a multi-language plugin is installed
262
+ *
263
+ * TODO: remove this method, and filter transient names in WPML compatibility class
264
+ *
265
+ * @return string
266
+ */
267
+ protected static function get_language_postfix() {
268
+ $postfix = '';
269
+ $current_lang = apply_filters( 'wpml_current_language', null );
270
+
271
+ if ( ! empty( $current_lang ) ) {
272
+ $postfix = "_{$current_lang}";
273
+ }
274
+
275
+ return $postfix;
276
+ }
277
+
278
+ /**
279
+ * Set a transient as requiring update
280
+ *
281
+ * @param string $transient Transient name.
282
+ *
283
+ * @eturn void
284
+ */
285
+ protected static function mark_for_update( $transient ) {
286
+ if ( in_array( $transient, self::$need_update, true ) ) {
287
+ return;
288
+ }
289
+
290
+ self::$need_update[] = $transient;
291
+ }
292
+ }
293
+ }
294
+
295
+ YITH_WCAN_Cache_Helper::init();
includes/{class.yith-wcan-filter-factory.php → class-yith-wcan-filter-factory.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines a couple of static methods to allow easy access to Filter classes
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0
10
  */
11
 
@@ -30,7 +30,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Factory' ) ) {
30
  $supported_types = self::get_supported_types();
31
  $type_slugs = array_keys( $supported_types );
32
  $default_type = current( $type_slugs );
33
- $type = isset( $filter['type'] ) && in_array( $filter['type'], $type_slugs ) ? $filter['type'] : $default_type;
34
 
35
  $classname = self::get_filter_classname( $type, $filter );
36
 
5
  * Defines a couple of static methods to allow easy access to Filter classes
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes
9
  * @version 4.0
10
  */
11
 
30
  $supported_types = self::get_supported_types();
31
  $type_slugs = array_keys( $supported_types );
32
  $default_type = current( $type_slugs );
33
+ $type = isset( $filter['type'] ) && in_array( $filter['type'], $type_slugs, true ) ? $filter['type'] : $default_type;
34
 
35
  $classname = self::get_filter_classname( $type, $filter );
36
 
includes/{class.yith-wcan-filter.php → class-yith-wcan-filter.php} RENAMED
@@ -6,7 +6,7 @@
6
  * Subclasses may define methods specific to a certain type of filter, and output for the filter
7
  *
8
  * @author YITH
9
- * @package YITH WooCommerce Ajax Product FIlter
10
  * @version 4.0.0
11
  */
12
 
@@ -244,7 +244,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
244
  public function get_formatted_taxonomy( $context = 'view' ) {
245
  $formatted_taxonomy = $this->get_taxonomy( $context );
246
 
247
- if ( in_array( $formatted_taxonomy, wc_get_attribute_taxonomy_names() ) ) {
248
  $formatted_taxonomy = str_replace( 'pa_', 'filter_', $formatted_taxonomy );
249
  }
250
 
@@ -379,8 +379,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
379
  $terms = get_terms(
380
  array_merge(
381
  array(
382
- 'taxonomy' => $taxonomy,
383
- 'fields' => $fields,
384
  'hide_empty' => false,
385
  ),
386
  $this->use_all_terms() ? array() : array(
@@ -400,8 +400,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
400
  } else {
401
  $term_ids = get_terms(
402
  array(
403
- 'taxonomy' => $taxonomy,
404
- 'fields' => 'ids',
405
  'hide_empty' => false,
406
  )
407
  );
@@ -410,7 +410,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
410
  return array();
411
  }
412
 
413
- $terms = array();
414
  $default_term_options = $this->get_default_term_options();
415
 
416
  foreach ( $term_ids as $term_id ) {
@@ -587,7 +587,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
587
  public function is_hierarchical( $context = 'view' ) {
588
  $hierarchical = $this->get_hierarchical( $context );
589
 
590
- return in_array( $hierarchical, array( 'collapsed', 'expanded', 'open' ) );
591
  }
592
 
593
  /**
@@ -865,7 +865,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
865
  * @return array Array of fields
866
  */
867
  public static function get_fields() {
868
- return include( YITH_WCAN_DIR . 'plugin-options/filter-options.php' );
869
  }
870
 
871
  /**
@@ -1005,7 +1005,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1005
  'label',
1006
  );
1007
 
1008
- if ( ! in_array( $filter_design, $supported_designs ) ) {
1009
  return;
1010
  }
1011
 
@@ -1024,7 +1024,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1024
  'hide',
1025
  );
1026
 
1027
- if ( ! in_array( $label_position, $supported_positions ) ) {
1028
  return;
1029
  }
1030
 
@@ -1073,7 +1073,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1073
  'opened',
1074
  );
1075
 
1076
- if ( ! in_array( $toggle_style, $supported_styles ) ) {
1077
  return;
1078
  }
1079
 
@@ -1094,7 +1094,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1094
  'include',
1095
  );
1096
 
1097
- if ( ! in_array( $order_by, $supported_orders ) ) {
1098
  return;
1099
  }
1100
 
@@ -1112,7 +1112,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1112
  'desc',
1113
  );
1114
 
1115
- if ( ! in_array( $order, $supported_orders ) ) {
1116
  return;
1117
  }
1118
 
@@ -1144,7 +1144,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1144
  'open',
1145
  );
1146
 
1147
- if ( ! in_array( $hierarchical, $supported_options ) ) {
1148
  return;
1149
  }
1150
 
@@ -1173,7 +1173,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1173
  'or',
1174
  );
1175
 
1176
- if ( ! in_array( $relation, $supported_relations ) ) {
1177
  return;
1178
  }
1179
 
@@ -1191,7 +1191,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1191
  'or',
1192
  );
1193
 
1194
- if ( ! in_array( $adoptive, $supported_adoptive ) ) {
1195
  return;
1196
  }
1197
 
@@ -1240,7 +1240,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1240
  * @param string $design Slider/Fields or both; if none of them, fallbacks to slider.
1241
  */
1242
  public function set_price_slider_design( $design ) {
1243
- if ( ! in_array( $design, array( 'slider', 'fields', 'both' ) ) ) {
1244
  $design = 'slider';
1245
  }
1246
 
@@ -1387,7 +1387,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1387
  return '';
1388
  }
1389
 
1390
- $title_tag = apply_filters( 'yith_wcan_filter_title_tag', 'h4', $this );
1391
  $additional_classes = array( 'filter-title' );
1392
 
1393
  if ( $this->is_collapsable() ) {
@@ -1414,7 +1414,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter' ) ) {
1414
  $atts = array(
1415
  'preset' => $this->get_preset(),
1416
  'filter' => $this,
1417
- 'count' => $count,
1418
  );
1419
 
1420
  return yith_wcan_get_template( 'filters/global/count.php', $atts, false );
6
  * Subclasses may define methods specific to a certain type of filter, and output for the filter
7
  *
8
  * @author YITH
9
+ * @package YITH\AjaxProductFilter\Classes
10
  * @version 4.0.0
11
  */
12
 
244
  public function get_formatted_taxonomy( $context = 'view' ) {
245
  $formatted_taxonomy = $this->get_taxonomy( $context );
246
 
247
+ if ( in_array( $formatted_taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
248
  $formatted_taxonomy = str_replace( 'pa_', 'filter_', $formatted_taxonomy );
249
  }
250
 
379
  $terms = get_terms(
380
  array_merge(
381
  array(
382
+ 'taxonomy' => $taxonomy,
383
+ 'fields' => $fields,
384
  'hide_empty' => false,
385
  ),
386
  $this->use_all_terms() ? array() : array(
400
  } else {
401
  $term_ids = get_terms(
402
  array(
403
+ 'taxonomy' => $taxonomy,
404
+ 'fields' => 'ids',
405
  'hide_empty' => false,
406
  )
407
  );
410
  return array();
411
  }
412
 
413
+ $terms = array();
414
  $default_term_options = $this->get_default_term_options();
415
 
416
  foreach ( $term_ids as $term_id ) {
587
  public function is_hierarchical( $context = 'view' ) {
588
  $hierarchical = $this->get_hierarchical( $context );
589
 
590
+ return in_array( $hierarchical, array( 'collapsed', 'expanded', 'open' ), true );
591
  }
592
 
593
  /**
865
  * @return array Array of fields
866
  */
867
  public static function get_fields() {
868
+ return include YITH_WCAN_DIR . 'plugin-options/filter-options.php';
869
  }
870
 
871
  /**
1005
  'label',
1006
  );
1007
 
1008
+ if ( ! in_array( $filter_design, $supported_designs, true ) ) {
1009
  return;
1010
  }
1011
 
1024
  'hide',
1025
  );
1026
 
1027
+ if ( ! in_array( $label_position, $supported_positions, true ) ) {
1028
  return;
1029
  }
1030
 
1073
  'opened',
1074
  );
1075
 
1076
+ if ( ! in_array( $toggle_style, $supported_styles, true ) ) {
1077
  return;
1078
  }
1079
 
1094
  'include',
1095
  );
1096
 
1097
+ if ( ! in_array( $order_by, $supported_orders, true ) ) {
1098
  return;
1099
  }
1100
 
1112
  'desc',
1113
  );
1114
 
1115
+ if ( ! in_array( $order, $supported_orders, true ) ) {
1116
  return;
1117
  }
1118
 
1144
  'open',
1145
  );
1146
 
1147
+ if ( ! in_array( $hierarchical, $supported_options, true ) ) {
1148
  return;
1149
  }
1150
 
1173
  'or',
1174
  );
1175
 
1176
+ if ( ! in_array( $relation, $supported_relations, true ) ) {
1177
  return;
1178
  }
1179
 
1191
  'or',
1192
  );
1193
 
1194
+ if ( ! in_array( $adoptive, $supported_adoptive, true ) ) {
1195
  return;
1196
  }
1197
 
1240
  * @param string $design Slider/Fields or both; if none of them, fallbacks to slider.
1241
  */
1242
  public function set_price_slider_design( $design ) {
1243
+ if ( ! in_array( $design, array( 'slider', 'fields', 'both' ), true ) ) {
1244
  $design = 'slider';
1245
  }
1246
 
1387
  return '';
1388
  }
1389
 
1390
+ $title_tag = apply_filters( 'yith_wcan_filter_title_tag', 'h4', $this );
1391
  $additional_classes = array( 'filter-title' );
1392
 
1393
  if ( $this->is_collapsable() ) {
1414
  $atts = array(
1415
  'preset' => $this->get_preset(),
1416
  'filter' => $this,
1417
+ 'count' => $count,
1418
  );
1419
 
1420
  return yith_wcan_get_template( 'filters/global/count.php', $atts, false );
includes/{class.yith-wcan-frontend.php → class-yith-wcan-frontend.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Frontend class
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Navigation
7
  * @version 1.3.2
8
  */
9
 
@@ -70,7 +70,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
70
  *
71
  * @var YITH_WCAN_Query
72
  */
73
- protected $_query = null;
74
 
75
  /**
76
  * Constructor
@@ -80,7 +80,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
80
  */
81
  public function __construct() {
82
  // new query object.
83
- $this->_query = YITH_WCAN_Query();
84
 
85
  // Legacy query methods.
86
  add_filter( 'woocommerce_layered_nav_link', 'yit_plus_character_hack', 99 );
@@ -102,6 +102,17 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
102
 
103
  // YITH WCAN Loaded.
104
  do_action( 'yith_wcan_loaded' );
 
 
 
 
 
 
 
 
 
 
 
105
  }
106
 
107
  /* === LEGACY QUERY METHODS === */
@@ -112,7 +123,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
112
  * @return YITH_WCAN_Query
113
  */
114
  public function get_query() {
115
- return $this->_query;
116
  }
117
 
118
  /**
@@ -150,7 +161,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
150
  $filtered_posts = array();
151
  $queried_post_ids = array();
152
 
153
- $problematic_theme = array(
154
  'basel',
155
  'ux-shop',
156
  'aardvark',
@@ -158,26 +169,26 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
158
 
159
  $wp_theme = wp_get_theme();
160
  $template_name = $wp_theme->get_template();
 
161
 
162
  /**
163
  * Support for Flatsome Theme lower then 3.6.0
164
  */
165
- if ( 'flatsome' === $template_name && version_compare( '3.6.0', $wp_theme->Version, '<' ) ) {
166
- $problematic_theme[] = 'flatsome';
167
  }
168
 
169
- $is_qTranslateX_and_yit_core_1_0_0 = class_exists( 'QTX_Translator' ) && defined( 'YIT_CORE_VERSION' ) && '1.0.0' === YIT_CORE_VERSION;
170
- $is_problematic_theme = in_array( $template_name, $problematic_theme );
171
 
172
- if ( $is_qTranslateX_and_yit_core_1_0_0 || $is_problematic_theme || class_exists( 'SiteOrigin_Panels' ) ) {
173
  add_filter( 'yith_wcan_skip_layered_nav_query', '__return_true' );
174
  }
175
 
176
- $query_filtered_posts = $this->layered_nav_query();
177
 
178
  foreach ( $posts as $post ) {
179
-
180
- if ( in_array( $post->ID, $query_filtered_posts ) ) {
181
  $filtered_posts[] = $post;
182
  $queried_post_ids[] = $post->ID;
183
  }
@@ -203,7 +214,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
203
  'post_type' => 'product',
204
  'numberposts' => - 1,
205
  'post_status' => 'publish',
206
- 'meta_query' => is_object( $current_wp_query ) ? $current_wp_query->meta_query : array(),
207
  'fields' => 'ids',
208
  'no_found_rows' => true,
209
  'update_post_meta_cache' => false,
@@ -214,7 +225,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
214
  )
215
  );
216
 
217
- $hide_out_of_stock_items = apply_filters( 'yith_wcan_hide_out_of_stock_items', 'yes' == get_option( 'woocommerce_hide_out_of_stock_items' ) ? true : false );
218
 
219
  if ( $hide_out_of_stock_items ) {
220
  $unfiltered_args['meta_query'][] = array(
@@ -265,7 +276,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
265
  $queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
266
  $is_product_taxonomy = false;
267
 
268
- if( $queried_object ){
269
  $is_product_taxonomy = array(
270
  'taxonomy' => $queried_object->taxonomy,
271
  'terms' => $queried_object->slug,
@@ -299,7 +310,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
299
  'fields' => 'ids',
300
  'no_found_rows' => true,
301
  'suppress_filters' => true,
302
- 'tax_query' => array(
303
  array(
304
  'taxonomy' => $attribute,
305
  'terms' => $value,
@@ -353,7 +364,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
353
  $this->layered_nav_post__in = $results;
354
  $this->layered_nav_post__in[] = 0;
355
 
356
- if ( count( $filtered_posts ) == 0 ) {
357
  $filtered_posts = $results;
358
  $filtered_posts[] = 0;
359
  } else {
@@ -370,17 +381,20 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
370
  'fields' => 'ids',
371
  'no_found_rows' => true,
372
  'suppress_filters' => true,
373
- 'tax_query' => array(),
374
- 'meta_query' => array(),
375
  );
376
 
377
  if ( $is_product_taxonomy ) {
378
  $args['tax_query'][] = $is_product_taxonomy;
379
  }
380
 
381
- if ( isset( $_GET['min_price'] ) && isset( $_GET['max_price'] ) ) {
382
- $min_price = (float) $_GET['min_price'];
383
- $max_price = (float) $_GET['max_price'];
 
 
 
384
  $args['meta_query'][] = array(
385
  'key' => '_price',
386
  'value' => array( $min_price, $max_price ),
@@ -406,7 +420,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
406
  $this->layered_nav_post__in = $post_ids;
407
  $this->layered_nav_post__in[] = 0;
408
 
409
- if ( count( $filtered_posts ) == 0 ) {
410
  $filtered_posts = $post_ids;
411
  $filtered_posts[] = 0;
412
  } else {
@@ -445,13 +459,13 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
445
  // frontend scripts.
446
  wp_register_script( 'jseldom', YITH_WCAN_URL . 'assets/js/jquery.jseldom' . $suffix . '.js', array( 'jquery' ), '0.0.2', true );
447
  wp_enqueue_script( 'yith-wcan-script', YITH_WCAN_URL . 'assets/js/yith-wcan-frontend' . $suffix . '.js', array( 'jquery', 'jseldom' ), YITH_WCAN_VERSION, true );
448
- wp_localize_script( 'yith-wcan-script', 'yith_wcan', apply_filters( 'yith-wcan-frontend-args', $this->_get_main_localize() ) );
449
  }
450
 
451
  wp_enqueue_style( 'yith-wcan-shortcodes' );
452
- wp_localize_script( 'yith-wcan-shortcodes', 'yith_wcan_shortcodes', $this->_get_shortcodes_localize() );
453
 
454
- $custom_css = $this->_build_custom_css();
455
 
456
  if ( ! empty( $custom_css ) ) {
457
  wp_add_inline_style( 'yith-wcan-shortcodes', $custom_css );
@@ -483,8 +497,8 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
483
  * @return void
484
  */
485
  public function add_meta() {
486
- $enable_seo = 'yes' == yith_wcan_get_option( 'yith_wcan_enable_seo' );
487
- $meta_options = yith_wcan_get_option( 'yith_wcan_seo_value', 'noindex-follow' );
488
 
489
  if ( $enable_seo && 'disabled' !== $meta_options && ( YITH_WCAN_Query()->is_filtered() || yith_wcan_can_be_displayed() && yit_is_filtered_uri() ) ) {
490
  $content = str_replace( '-', ', ', $meta_options );
@@ -499,7 +513,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
499
  *
500
  * @return array Array of parameters.
501
  */
502
- protected function _get_main_localize() {
503
  $current_theme = function_exists( 'wp_get_theme' ) ? wp_get_theme() : null;
504
  $current_template = $current_theme instanceof WP_Theme ? $current_theme->get_template() : '';
505
 
@@ -517,7 +531,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
517
  'is_mobile' => wp_is_mobile(),
518
  'scroll_top' => yith_wcan_get_option( 'yith_wcan_ajax_scroll_top_class', '.yit-wcan-container' ),
519
  'scroll_top_mode' => yith_wcan_get_option( 'yith_wcan_scroll_top_mode', 'mobile' ),
520
- 'change_browser_url' => 'yes' == yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ) ? true : false,
521
  /* === Avada Theme Support === */
522
  'avada' => array(
523
  'is_enabled' => class_exists( 'Avada' ),
@@ -542,12 +556,12 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
542
  * @param string $context What the value is for. Valid values are view and edit.
543
  * @return array Array of parameters.
544
  */
545
- protected function _get_shortcodes_localize( $context = 'view' ) {
546
  $params = array(
547
  'query_param' => YITH_WCAN_Query()->get_query_param(),
548
  'supported_taxonomies' => array_keys( YITH_WCAN_Query()->get_supported_taxonomies() ),
549
  'content' => apply_filters( 'yith_wcan_content_selector', '#content' ),
550
- 'change_browser_url' => in_array( yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ), array( 'yes', 'custom' ) ),
551
  'instant_filters' => true,
552
  'ajax_filters' => true,
553
  'show_clear_filter' => false,
@@ -555,11 +569,12 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
555
  'scroll_target' => false,
556
  'modal_on_mobile' => false,
557
  'session_param' => false,
558
- 'base_url' => $this->get_base_url( is_shop() ? yit_get_woocommerce_layered_nav_link() : '' ),
559
- 'terms_per_page' => apply_filters( 'yith_wcan_dropdown_terms_per_page', 10 ),
560
  'loader' => false,
 
561
  'mobile_media_query' => 991,
562
- 'show_current_children' => false,
 
563
  'currency_format' => apply_filters(
564
  'yith_wcan_shortcodes_script_currency_format',
565
  array(
@@ -573,15 +588,15 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
573
  'labels' => apply_filters(
574
  'yith_wcan_shortcodes_script_labels',
575
  array(
576
- 'empty_option' => _x( 'All', '[FRONTEND] "All" label shown when no term is selected', 'yith-woocommerce-ajax-navigation' ),
577
- 'search_placeholder' => _x( 'Search...', '[FRONTEND] Search placeholder shown in terms dropdown', 'yith-woocommerce-ajax-navigation' ),
578
- 'no_items' => _x( 'No item found', '[FRONTEND] Empty items list in the dropdown', 'yith-woocommerce-ajax-navigation' ),
579
  // translators: 1. Number of items to show.
580
- 'show_more' => _x( 'Show %d more', '[FRONTEND] Show more link on terms dropdown', 'yith-woocommerce-ajax-navigation' ),
581
- 'close' => _x( 'Close', '[FRONTEND] Alt text for modal close button on mobile', 'yith-woocommerce-ajax-navigation' ),
582
- 'save' => _x( 'Save', '[FRONTEND] Label for filter button, on horizontal layout', 'yith-woocommerce-ajax-navigation' ),
583
- 'show_results' => _x( 'Show results', '[FRONTEND] Label for filter button, on mobile modal', 'yith-woocommerce-ajax-navigation' ),
584
- 'clear_selection' => _x( 'Clear', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
585
  'clear_all_selections' => _x( 'Clear All', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
586
  )
587
  ),
@@ -599,13 +614,13 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
599
  *
600
  * @return bool|string Custom CSS template, ro false when no content should be output.
601
  */
602
- protected function _build_custom_css() {
603
  $default_accent_color = apply_filters( 'yith_wcan_default_accent_color', '#A7144C' );
604
 
605
  $variables = array();
606
  $options = array(
607
- 'filters_colors' => array(
608
- 'default' => array(
609
  'titles' => '#434343',
610
  'background' => '#FFFFFF',
611
  'accent' => $default_accent_color,
@@ -624,19 +639,19 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
624
  },
625
  ),
626
  'color_swatches_style' => array(
627
- 'default' => 'round',
628
  'variable' => 'color_swatches_border_radius',
629
  'callback' => function( $raw_value ) {
630
  return 'round' === $raw_value ? '100%' : '5px';
631
  },
632
  ),
633
- 'color_swatches_size' => array(
634
- 'default' => '30',
635
  'callback' => function( $raw_value ) {
636
  return $raw_value . 'px';
637
  },
638
  ),
639
- 'labels_style' => array(
640
  'default' => array(
641
  'background' => '#FFFFFF',
642
  'background_hover' => $default_accent_color,
@@ -646,10 +661,10 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
646
  'text_active' => '#FFFFFF',
647
  ),
648
  ),
649
- 'anchors_style' => array(
650
  'default' => array(
651
- 'text' => '#434343',
652
- 'text_hover' => $default_accent_color,
653
  'text_active' => $default_accent_color,
654
  ),
655
  ),
@@ -704,7 +719,7 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
704
  * @return void
705
  */
706
  public function add_reset_button() {
707
- $show_reset_button = 'yes' === yith_wcan_get_option( 'yith_wcan_show_reset', 'yes' );
708
  $reset_button_position = yith_wcan_get_option( 'yith_wcan_reset_button_position', 'after_filters' );
709
 
710
  if ( ! $show_reset_button ) {
@@ -804,18 +819,18 @@ if ( ! class_exists( 'YITH_WCAN_Frontend' ) ) {
804
  'yith_wcan_before_product_locations',
805
  array(
806
  // before shop.
807
- 'before_shop' => array(
808
- 'hook' => 'woocommerce_before_shop_loop',
809
  'priority' => 10 + $offset,
810
  ),
811
  // before products shortcode.
812
  'shortcode_before_products' => array(
813
- 'hook' => 'woocommerce_shortcode_before_products_loop',
814
  'priority' => 10 + $offset,
815
  ),
816
  // before no_products template.
817
- 'no_products_found' => array(
818
- 'hook' => 'woocommerce_no_products_found',
819
  'priority' => 5 + $offset,
820
  ),
821
  ),
3
  * Frontend class
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes
7
  * @version 1.3.2
8
  */
9
 
70
  *
71
  * @var YITH_WCAN_Query
72
  */
73
+ protected $query = null;
74
 
75
  /**
76
  * Constructor
80
  */
81
  public function __construct() {
82
  // new query object.
83
+ $this->query = YITH_WCAN_Query();
84
 
85
  // Legacy query methods.
86
  add_filter( 'woocommerce_layered_nav_link', 'yit_plus_character_hack', 99 );
102
 
103
  // YITH WCAN Loaded.
104
  do_action( 'yith_wcan_loaded' );
105
+
106
+ // Deprecated filters.
107
+ $deprecated_filters_map = array(
108
+ 'yith-wcan-frontend-args' => array(
109
+ 'since' => '4.1.1',
110
+ 'use' => 'yith_wcan_frontend_args',
111
+ 'params' => 1,
112
+ ),
113
+ );
114
+
115
+ yith_wcan_deprecated_filter( $deprecated_filters_map );
116
  }
117
 
118
  /* === LEGACY QUERY METHODS === */
123
  * @return YITH_WCAN_Query
124
  */
125
  public function get_query() {
126
+ return $this->query;
127
  }
128
 
129
  /**
161
  $filtered_posts = array();
162
  $queried_post_ids = array();
163
 
164
+ $special_handling_themes = array(
165
  'basel',
166
  'ux-shop',
167
  'aardvark',
169
 
170
  $wp_theme = wp_get_theme();
171
  $template_name = $wp_theme->get_template();
172
+ $theme_version = $wp_theme->Version; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
173
 
174
  /**
175
  * Support for Flatsome Theme lower then 3.6.0
176
  */
177
+ if ( 'flatsome' === $template_name && version_compare( '3.6.0', $theme_version, '<' ) ) {
178
+ $special_handling_themes[] = 'flatsome';
179
  }
180
 
181
+ $needs_special_qtranslatex_handling = class_exists( 'QTX_Translator' ) && defined( 'YIT_CORE_VERSION' ) && '1.0.0' === YIT_CORE_VERSION;
182
+ $is_special_handling_theme = in_array( $template_name, $special_handling_themes, true );
183
 
184
+ if ( $needs_special_qtranslatex_handling || $is_special_handling_theme || class_exists( 'SiteOrigin_Panels' ) ) {
185
  add_filter( 'yith_wcan_skip_layered_nav_query', '__return_true' );
186
  }
187
 
188
+ $query_filtered_posts = array_map( 'intval', $this->layered_nav_query() );
189
 
190
  foreach ( $posts as $post ) {
191
+ if ( in_array( $post->ID, $query_filtered_posts, true ) ) {
 
192
  $filtered_posts[] = $post;
193
  $queried_post_ids[] = $post->ID;
194
  }
214
  'post_type' => 'product',
215
  'numberposts' => - 1,
216
  'post_status' => 'publish',
217
+ 'meta_query' => is_object( $current_wp_query ) ? $current_wp_query->meta_query : array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
218
  'fields' => 'ids',
219
  'no_found_rows' => true,
220
  'update_post_meta_cache' => false,
225
  )
226
  );
227
 
228
+ $hide_out_of_stock_items = apply_filters( 'yith_wcan_hide_out_of_stock_items', 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ? true : false );
229
 
230
  if ( $hide_out_of_stock_items ) {
231
  $unfiltered_args['meta_query'][] = array(
276
  $queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
277
  $is_product_taxonomy = false;
278
 
279
+ if ( $queried_object ) {
280
  $is_product_taxonomy = array(
281
  'taxonomy' => $queried_object->taxonomy,
282
  'terms' => $queried_object->slug,
310
  'fields' => 'ids',
311
  'no_found_rows' => true,
312
  'suppress_filters' => true,
313
+ 'tax_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
314
  array(
315
  'taxonomy' => $attribute,
316
  'terms' => $value,
364
  $this->layered_nav_post__in = $results;
365
  $this->layered_nav_post__in[] = 0;
366
 
367
+ if ( ! count( $filtered_posts ) ) {
368
  $filtered_posts = $results;
369
  $filtered_posts[] = 0;
370
  } else {
381
  'fields' => 'ids',
382
  'no_found_rows' => true,
383
  'suppress_filters' => true,
384
+ 'tax_query' => array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
385
+ 'meta_query' => array(), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
386
  );
387
 
388
  if ( $is_product_taxonomy ) {
389
  $args['tax_query'][] = $is_product_taxonomy;
390
  }
391
 
392
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
393
+ $min_price = isset( $_GET['min_price'] ) ? (float) $_GET['min_price'] : false;
394
+ $max_price = isset( $_GET['max_price'] ) ? (float) $_GET['max_price'] : false;
395
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
396
+
397
+ if ( $min_price && $max_price ) {
398
  $args['meta_query'][] = array(
399
  'key' => '_price',
400
  'value' => array( $min_price, $max_price ),
420
  $this->layered_nav_post__in = $post_ids;
421
  $this->layered_nav_post__in[] = 0;
422
 
423
+ if ( ! count( $filtered_posts ) ) {
424
  $filtered_posts = $post_ids;
425
  $filtered_posts[] = 0;
426
  } else {
459
  // frontend scripts.
460
  wp_register_script( 'jseldom', YITH_WCAN_URL . 'assets/js/jquery.jseldom' . $suffix . '.js', array( 'jquery' ), '0.0.2', true );
461
  wp_enqueue_script( 'yith-wcan-script', YITH_WCAN_URL . 'assets/js/yith-wcan-frontend' . $suffix . '.js', array( 'jquery', 'jseldom' ), YITH_WCAN_VERSION, true );
462
+ wp_localize_script( 'yith-wcan-script', 'yith_wcan', apply_filters( 'yith_wcan_frontend_args', $this->get_main_localize() ) );
463
  }
464
 
465
  wp_enqueue_style( 'yith-wcan-shortcodes' );
466
+ wp_localize_script( 'yith-wcan-shortcodes', 'yith_wcan_shortcodes', $this->get_shortcodes_localize() );
467
 
468
+ $custom_css = $this->build_custom_css();
469
 
470
  if ( ! empty( $custom_css ) ) {
471
  wp_add_inline_style( 'yith-wcan-shortcodes', $custom_css );
497
  * @return void
498
  */
499
  public function add_meta() {
500
+ $enable_seo = 'yes' === yith_wcan_get_option( 'yith_wcan_enable_seo' );
501
+ $meta_options = yith_wcan_get_option( 'yith_wcan_seo_value', 'noindex-follow' );
502
 
503
  if ( $enable_seo && 'disabled' !== $meta_options && ( YITH_WCAN_Query()->is_filtered() || yith_wcan_can_be_displayed() && yit_is_filtered_uri() ) ) {
504
  $content = str_replace( '-', ', ', $meta_options );
513
  *
514
  * @return array Array of parameters.
515
  */
516
+ protected function get_main_localize() {
517
  $current_theme = function_exists( 'wp_get_theme' ) ? wp_get_theme() : null;
518
  $current_template = $current_theme instanceof WP_Theme ? $current_theme->get_template() : '';
519
 
531
  'is_mobile' => wp_is_mobile(),
532
  'scroll_top' => yith_wcan_get_option( 'yith_wcan_ajax_scroll_top_class', '.yit-wcan-container' ),
533
  'scroll_top_mode' => yith_wcan_get_option( 'yith_wcan_scroll_top_mode', 'mobile' ),
534
+ 'change_browser_url' => 'yes' === yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ) ? true : false,
535
  /* === Avada Theme Support === */
536
  'avada' => array(
537
  'is_enabled' => class_exists( 'Avada' ),
556
  * @param string $context What the value is for. Valid values are view and edit.
557
  * @return array Array of parameters.
558
  */
559
+ protected function get_shortcodes_localize( $context = 'view' ) {
560
  $params = array(
561
  'query_param' => YITH_WCAN_Query()->get_query_param(),
562
  'supported_taxonomies' => array_keys( YITH_WCAN_Query()->get_supported_taxonomies() ),
563
  'content' => apply_filters( 'yith_wcan_content_selector', '#content' ),
564
+ 'change_browser_url' => in_array( yith_wcan_get_option( 'yith_wcan_change_browser_url', 'yes' ), array( 'yes', 'custom' ), true ),
565
  'instant_filters' => true,
566
  'ajax_filters' => true,
567
  'show_clear_filter' => false,
569
  'scroll_target' => false,
570
  'modal_on_mobile' => false,
571
  'session_param' => false,
572
+ 'show_current_children' => false,
 
573
  'loader' => false,
574
+ 'toggles_open_on_modal' => false,
575
  'mobile_media_query' => 991,
576
+ 'base_url' => $this->get_base_url( is_shop() ? yit_get_woocommerce_layered_nav_link() : '' ),
577
+ 'terms_per_page' => apply_filters( 'yith_wcan_dropdown_terms_per_page', 10 ),
578
  'currency_format' => apply_filters(
579
  'yith_wcan_shortcodes_script_currency_format',
580
  array(
588
  'labels' => apply_filters(
589
  'yith_wcan_shortcodes_script_labels',
590
  array(
591
+ 'empty_option' => _x( 'All', '[FRONTEND] "All" label shown when no term is selected', 'yith-woocommerce-ajax-navigation' ),
592
+ 'search_placeholder' => _x( 'Search...', '[FRONTEND] Search placeholder shown in terms dropdown', 'yith-woocommerce-ajax-navigation' ),
593
+ 'no_items' => _x( 'No item found', '[FRONTEND] Empty items list in the dropdown', 'yith-woocommerce-ajax-navigation' ),
594
  // translators: 1. Number of items to show.
595
+ 'show_more' => _x( 'Show %d more', '[FRONTEND] Show more link on terms dropdown', 'yith-woocommerce-ajax-navigation' ),
596
+ 'close' => _x( 'Close', '[FRONTEND] Alt text for modal close button on mobile', 'yith-woocommerce-ajax-navigation' ),
597
+ 'save' => _x( 'Save', '[FRONTEND] Label for filter button, on horizontal layout', 'yith-woocommerce-ajax-navigation' ),
598
+ 'show_results' => _x( 'Show results', '[FRONTEND] Label for filter button, on mobile modal', 'yith-woocommerce-ajax-navigation' ),
599
+ 'clear_selection' => _x( 'Clear', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
600
  'clear_all_selections' => _x( 'Clear All', '[FRONTEND] Label for clear selection link, that appears above filter after selection', 'yith-woocommerce-ajax-navigation' ),
601
  )
602
  ),
614
  *
615
  * @return bool|string Custom CSS template, ro false when no content should be output.
616
  */
617
+ protected function build_custom_css() {
618
  $default_accent_color = apply_filters( 'yith_wcan_default_accent_color', '#A7144C' );
619
 
620
  $variables = array();
621
  $options = array(
622
+ 'filters_colors' => array(
623
+ 'default' => array(
624
  'titles' => '#434343',
625
  'background' => '#FFFFFF',
626
  'accent' => $default_accent_color,
639
  },
640
  ),
641
  'color_swatches_style' => array(
642
+ 'default' => 'round',
643
  'variable' => 'color_swatches_border_radius',
644
  'callback' => function( $raw_value ) {
645
  return 'round' === $raw_value ? '100%' : '5px';
646
  },
647
  ),
648
+ 'color_swatches_size' => array(
649
+ 'default' => '30',
650
  'callback' => function( $raw_value ) {
651
  return $raw_value . 'px';
652
  },
653
  ),
654
+ 'labels_style' => array(
655
  'default' => array(
656
  'background' => '#FFFFFF',
657
  'background_hover' => $default_accent_color,
661
  'text_active' => '#FFFFFF',
662
  ),
663
  ),
664
+ 'anchors_style' => array(
665
  'default' => array(
666
+ 'text' => '#434343',
667
+ 'text_hover' => $default_accent_color,
668
  'text_active' => $default_accent_color,
669
  ),
670
  ),
719
  * @return void
720
  */
721
  public function add_reset_button() {
722
+ $show_reset_button = 'yes' === yith_wcan_get_option( 'yith_wcan_show_reset', 'yes' );
723
  $reset_button_position = yith_wcan_get_option( 'yith_wcan_reset_button_position', 'after_filters' );
724
 
725
  if ( ! $show_reset_button ) {
819
  'yith_wcan_before_product_locations',
820
  array(
821
  // before shop.
822
+ 'before_shop' => array(
823
+ 'hook' => 'woocommerce_before_shop_loop',
824
  'priority' => 10 + $offset,
825
  ),
826
  // before products shortcode.
827
  'shortcode_before_products' => array(
828
+ 'hook' => 'woocommerce_shortcode_before_products_loop',
829
  'priority' => 10 + $offset,
830
  ),
831
  // before no_products template.
832
+ 'no_products_found' => array(
833
+ 'hook' => 'woocommerce_no_products_found',
834
  'priority' => 5 + $offset,
835
  ),
836
  ),
includes/{class.yith-wcan-install.php → class-yith-wcan-install.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Manage install, and performs all post update operations
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product FIlter
7
  * @version 4.0.0
8
  */
9
 
@@ -31,14 +31,14 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
31
  *
32
  * @var string
33
  */
34
- protected static $_stored_version;
35
 
36
  /**
37
  * Default preset slug
38
  *
39
  * @var string
40
  */
41
- protected static $_default_preset_slug = 'default-preset';
42
 
43
  /**
44
  * Hooks methods required to install/update plugin
@@ -57,9 +57,9 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
57
  * @return void
58
  */
59
  public static function check_version() {
60
- self::$_stored_version = get_option( 'yith_wcan_version' );
61
 
62
- if ( version_compare( self::$_stored_version, YITH_WCAN_VERSION, '<' ) ) {
63
  self::update();
64
  do_action( 'yith_wcan_updated' );
65
  }
@@ -91,9 +91,9 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
91
 
92
  $new_preset = new YITH_WCAN_Preset();
93
 
94
- $new_preset->set_slug( self::$_default_preset_slug );
95
  $new_preset->set_title( _x( 'Default preset', '[ADMIN] Name of default preset that is installed with the plugin', 'yith-woocommerce-ajax-navigation' ) );
96
- $new_preset->set_filters( self::_get_default_filters() );
97
  $new_preset->save();
98
 
99
  update_option( 'yith_wcan_default_preset_created', true );
@@ -122,8 +122,8 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
122
  */
123
  public static function maybe_update_options() {
124
  // do incremental upgrade.
125
- version_compare( self::$_stored_version, '4.0.0', '<' ) && self::_do_400_upgrade();
126
- version_compare( self::$_stored_version, '4.1.0', '<' ) && self::_do_410_upgrade();
127
 
128
  // space for future revisions.
129
 
@@ -145,7 +145,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
145
  * @return bool|YITH_WCAN_Preset
146
  */
147
  public static function get_default_preset() {
148
- return YITH_WCAN_Preset_Factory::get_preset( self::$_default_preset_slug );
149
  }
150
 
151
  /**
@@ -178,7 +178,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
178
  * @return void
179
  */
180
  public static function maybe_flush_rules() {
181
- version_compare( self::$_stored_version, '4.0.0', '<' ) && flush_rewrite_rules();
182
  }
183
 
184
  /**
@@ -201,7 +201,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
201
  *
202
  * @return void.
203
  */
204
- protected static function _do_400_upgrade() {
205
  $old_options = get_option( 'yit_wcan_options' );
206
 
207
  if ( ! $old_options ) {
@@ -229,7 +229,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
229
  *
230
  * @return void.
231
  */
232
- protected static function _do_410_upgrade() {
233
  do_action( 'yith_wcan_did_410_upgrade' );
234
  }
235
 
@@ -238,11 +238,11 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
238
  *
239
  * @return array Array of filters.
240
  */
241
- protected static function _get_default_filters() {
242
  $filters = array();
243
 
244
  // set taxonomies filters.
245
- $filters = array_merge( $filters, self::_get_taxonomies_filters() );
246
 
247
  return apply_filters( 'yith_wcan_default_filters', $filters );
248
  }
@@ -252,7 +252,7 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
252
  *
253
  * @return array Array of filters.
254
  */
255
- protected static function _get_taxonomies_filters() {
256
  $filters = array();
257
 
258
  // start with taxonomy filters.
@@ -271,12 +271,12 @@ if ( ! class_exists( 'YITH_WCAN_Install' ) ) {
271
  continue;
272
  }
273
 
274
- $filter = new YITH_WCAN_Filter_Tax();
275
  $terms_array = array();
276
 
277
  foreach ( $terms as $term ) {
278
  $terms_array[ $term->term_id ] = array(
279
- 'label' => $term->name,
280
  'tooltip' => $term->name,
281
  );
282
  }
3
  * Manage install, and performs all post update operations
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes
7
  * @version 4.0.0
8
  */
9
 
31
  *
32
  * @var string
33
  */
34
+ protected static $stored_version;
35
 
36
  /**
37
  * Default preset slug
38
  *
39
  * @var string
40
  */
41
+ protected static $default_preset_slug = 'default-preset';
42
 
43
  /**
44
  * Hooks methods required to install/update plugin
57
  * @return void
58
  */
59
  public static function check_version() {
60
+ self::$stored_version = get_option( 'yith_wcan_version' );
61
 
62
+ if ( version_compare( self::$stored_version, YITH_WCAN_VERSION, '<' ) ) {
63
  self::update();
64
  do_action( 'yith_wcan_updated' );
65
  }
91
 
92
  $new_preset = new YITH_WCAN_Preset();
93
 
94
+ $new_preset->set_slug( self::$default_preset_slug );
95
  $new_preset->set_title( _x( 'Default preset', '[ADMIN] Name of default preset that is installed with the plugin', 'yith-woocommerce-ajax-navigation' ) );
96
+ $new_preset->set_filters( self::get_default_filters() );
97
  $new_preset->save();
98
 
99
  update_option( 'yith_wcan_default_preset_created', true );
122
  */
123
  public static function maybe_update_options() {
124
  // do incremental upgrade.
125
+ version_compare( self::$stored_version, '4.0.0', '<' ) && self::do_400_upgrade();
126
+ version_compare( self::$stored_version, '4.1.0', '<' ) && self::do_410_upgrade();
127
 
128
  // space for future revisions.
129
 
145
  * @return bool|YITH_WCAN_Preset
146
  */
147
  public static function get_default_preset() {
148
+ return YITH_WCAN_Preset_Factory::get_preset( self::$default_preset_slug );
149
  }
150
 
151
  /**
178
  * @return void
179
  */
180
  public static function maybe_flush_rules() {
181
+ version_compare( self::$stored_version, '4.0.0', '<' ) && flush_rewrite_rules();
182
  }
183
 
184
  /**
201
  *
202
  * @return void.
203
  */
204
+ protected static function do_400_upgrade() {
205
  $old_options = get_option( 'yit_wcan_options' );
206
 
207
  if ( ! $old_options ) {
229
  *
230
  * @return void.
231
  */
232
+ protected static function do_410_upgrade() {
233
  do_action( 'yith_wcan_did_410_upgrade' );
234
  }
235
 
238
  *
239
  * @return array Array of filters.
240
  */
241
+ protected static function get_default_filters() {
242
  $filters = array();
243
 
244
  // set taxonomies filters.
245
+ $filters = array_merge( $filters, self::get_taxonomies_filters() );
246
 
247
  return apply_filters( 'yith_wcan_default_filters', $filters );
248
  }
252
  *
253
  * @return array Array of filters.
254
  */
255
+ protected static function get_taxonomies_filters() {
256
  $filters = array();
257
 
258
  // start with taxonomy filters.
271
  continue;
272
  }
273
 
274
+ $filter = new YITH_WCAN_Filter_Tax();
275
  $terms_array = array();
276
 
277
  foreach ( $terms as $term ) {
278
  $terms_array[ $term->term_id ] = array(
279
+ 'label' => $term->name,
280
  'tooltip' => $term->name,
281
  );
282
  }
includes/{class.yith-wcan-preset-factory.php → class-yith-wcan-preset-factory.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines a couple of static methods to allow easy access to Preset classes
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0
10
  */
11
 
5
  * Defines a couple of static methods to allow easy access to Preset classes
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes\Presets
9
  * @version 4.0
10
  */
11
 
includes/{class.yith-wcan-preset.php → class-yith-wcan-preset.php} RENAMED
@@ -4,7 +4,7 @@
4
  * Offers method to read and set properties of the preset and filters
5
  *
6
  * @author YITH
7
- * @package YITH WooCommerce Ajax Product FIlter
8
  * @version 4.0.0
9
  */
10
 
@@ -97,7 +97,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
97
 
98
  $this->data_store = WC_Data_Store::load( 'filter_preset' );
99
 
100
- if ( $this->get_id() > 0 || $this->get_slug() != '' ) {
101
  $this->data_store->read( $this );
102
  }
103
  }
@@ -228,7 +228,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
228
  * @return array Array of fields
229
  */
230
  public static function get_fields() {
231
- return include( YITH_WCAN_DIR . 'plugin-options/preset-options.php' );
232
  }
233
 
234
  /* === SETTERS === */
@@ -260,7 +260,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
260
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
261
  */
262
  public function set_layout( $layout ) {
263
- $layout = in_array( $layout, array_keys( YITH_WCAN_Preset_Factory::get_supported_layouts() ) ) ? $layout : 'default';
264
 
265
  $this->set_prop( 'layout', $layout );
266
  }
@@ -465,7 +465,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
465
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
466
  */
467
  public function set_filter( $filter_id, $filter ) {
468
- $filters = $this->get_raw_filters();
469
  $filters[ $filter_id ] = $filter;
470
 
471
  $this->set_prop( 'filters', $filters );
@@ -573,7 +573,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset' ) ) {
573
  'read',
574
  );
575
 
576
- if ( ! $default && in_array( $cap, $public ) ) {
577
  $default = true;
578
  }
579
 
4
  * Offers method to read and set properties of the preset and filters
5
  *
6
  * @author YITH
7
+ * @package YITH\AjaxProductFilter\Classes\Presets
8
  * @version 4.0.0
9
  */
10
 
97
 
98
  $this->data_store = WC_Data_Store::load( 'filter_preset' );
99
 
100
+ if ( $this->get_id() > 0 || ! empty( $this->get_slug() ) ) {
101
  $this->data_store->read( $this );
102
  }
103
  }
228
  * @return array Array of fields
229
  */
230
  public static function get_fields() {
231
+ return include YITH_WCAN_DIR . 'plugin-options/preset-options.php';
232
  }
233
 
234
  /* === SETTERS === */
260
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
261
  */
262
  public function set_layout( $layout ) {
263
+ $layout = in_array( $layout, array_keys( YITH_WCAN_Preset_Factory::get_supported_layouts() ), true ) ? $layout : 'default';
264
 
265
  $this->set_prop( 'layout', $layout );
266
  }
465
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
466
  */
467
  public function set_filter( $filter_id, $filter ) {
468
+ $filters = $this->get_raw_filters();
469
  $filters[ $filter_id ] = $filter;
470
 
471
  $this->set_prop( 'filters', $filters );
573
  'read',
574
  );
575
 
576
+ if ( ! $default && in_array( $cap, $public, true ) ) {
577
  $default = true;
578
  }
579
 
includes/{class.yith-wcan-presets.php → class-yith-wcan-presets.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Manage presets, register CPT and offers utility to retrieve them
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product FIlter
7
  * @version 4.0.0
8
  */
9
 
@@ -29,16 +29,16 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
29
  /**
30
  * Presets post type
31
  *
32
- * @var string $_post_type
33
  */
34
- protected $_post_type = 'yith_wcan_preset';
35
 
36
  /**
37
  * Single instance of this class
38
  *
39
  * @var YITH_WCAN_Presets
40
  */
41
- protected static $_instance;
42
 
43
  /**
44
  * Constructor method for this class
@@ -81,7 +81,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
81
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
82
  */
83
  public function get_post_type() {
84
- return apply_filters( 'yith_wcan_presets_post_type', $this->_post_type );
85
  }
86
 
87
  /**
@@ -92,17 +92,17 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
92
  */
93
  public function register_post_type() {
94
  $post_type_labels = array(
95
- 'name' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
96
  'singular_name' => _x( 'Filter preset', '[Admin] singular name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
97
  'add_new_item ' => _x( 'Add new preset', '[Admin] add new filter preset label', 'yith-woocommerce-ajax-navigation' ),
98
  );
99
- $post_type_args = array(
100
- 'label' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
101
- 'labels' => $post_type_labels,
102
- 'public' => false,
103
- 'show_ui' => true,
104
  'show_in_menu' => false,
105
- 'supports' => array( 'title' ),
106
  );
107
 
108
  register_post_type( $this->get_post_type(), $post_type_args );
@@ -152,7 +152,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
152
 
153
  // external urls.
154
  $demo_video_url = ''; // TODO: enter url when video is ready.
155
- $doc_url = 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/premium-settings/general-settings/update-yith-woocommerce-ajax-product-filter-to-version-4-0/';
156
 
157
  // action urls.
158
  $hide_upgrade_note_url = wp_nonce_url( add_query_arg( 'action', 'yith_wcan_hide_upgrade_note', admin_url( 'admin.php' ) ), 'hide_upgrade_note' );
@@ -193,13 +193,13 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
193
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
194
  */
195
  public function save_preset() {
196
- $preset_id = isset( $_POST['id'] ) ? (int) $_POST['id'] : false;
197
- $paged = isset( $_POST['paged'] ) ? (int) $_POST['paged'] : false;
198
  $return_url = YITH_WCAN()->admin->get_panel_url();
199
 
200
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
201
  if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'save_preset' ) ) {
202
- wp_redirect( $return_url );
203
  die;
204
  }
205
 
@@ -207,7 +207,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
207
  try {
208
  $preset = new YITH_WCAN_Preset( $preset_id );
209
  } catch ( Exception $e ) {
210
- wp_redirect( $return_url );
211
  die;
212
  }
213
 
@@ -228,7 +228,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
228
  $to_save = array();
229
 
230
  foreach ( $filters as $filter ) {
231
- $cleaned_filter = $this->_clear_preset_filter( $filter );
232
 
233
  if ( ! $cleaned_filter ) {
234
  continue;
@@ -260,7 +260,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
260
  )
261
  );
262
 
263
- wp_redirect( $return_url );
264
  die;
265
  }
266
 
@@ -272,19 +272,19 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
272
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
273
  */
274
  public function clone_preset() {
275
- $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
276
  $return_url = YITH_WCAN()->admin->get_panel_url();
277
 
278
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
279
  if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'clone_preset' ) ) {
280
- wp_redirect( $return_url );
281
  die;
282
  }
283
 
284
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
285
 
286
  if ( ! $preset || ! $preset->current_user_can( 'clone' ) ) {
287
- wp_redirect( $return_url );
288
  die;
289
  }
290
 
@@ -294,7 +294,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
294
  wc_caught_exception( $e, __FUNCTION__, func_get_args() );
295
  }
296
 
297
- wp_redirect( $return_url );
298
  die;
299
  }
300
 
@@ -306,19 +306,19 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
306
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
307
  */
308
  public function delete_preset() {
309
- $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
310
  $return_url = YITH_WCAN()->admin->get_panel_url();
311
 
312
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
313
  if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'delete_preset' ) ) {
314
- wp_redirect( $return_url );
315
  die;
316
  }
317
 
318
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
319
 
320
  if ( ! $preset || ! $preset->current_user_can( 'delete' ) ) {
321
- wp_redirect( $return_url );
322
  die;
323
  }
324
 
@@ -328,7 +328,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
328
  wc_caught_exception( $e, __FUNCTION__, func_get_args() );
329
  }
330
 
331
- wp_redirect( $return_url );
332
  die;
333
  }
334
 
@@ -346,7 +346,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
346
  update_option( 'yith_wcan_upgrade_note_status', 0 );
347
  }
348
 
349
- wp_redirect( $return_url );
350
  die;
351
  }
352
 
@@ -362,7 +362,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
362
 
363
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
364
  if ( ! isset( $_REQUEST['_wpnonce'] ) || ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'do_widget_upgrade' ) && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'debug_action' ) ) ) {
365
- wp_redirect( $return_url );
366
  die;
367
  }
368
 
@@ -408,7 +408,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
408
  }
409
 
410
  $widget_instance = $options[ $widget_name ][ $widget_id ];
411
- $filter = false;
412
 
413
  switch ( $widget_name ) {
414
  case 'yith-woo-ajax-navigation-list-price-filter':
@@ -474,7 +474,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
474
 
475
  foreach ( $terms as $term ) {
476
  $terms_array[ $term->term_id ] = array(
477
- 'label' => $term->name,
478
  'tooltip' => $term->name,
479
  );
480
  }
@@ -516,13 +516,13 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
516
  }
517
  break;
518
  case 'tags':
519
- $option_value = array_keys( $widget_instance['tags_list'] );
520
- $exclude = 'exclude' === $widget_instance['tags_list_query'];
521
- $include = ! $exclude;
522
 
523
  foreach ( $terms_array as $term_id => $term_options ) {
524
  // if exclude and term exists in the option, or include and term doesn't exist in the option, unset it.
525
- $found = in_array( $term_id, $option_value );
526
 
527
  if ( $include && ! $found || $exclude && $found ) {
528
  unset( $terms_array[ $term_id ] );
@@ -570,7 +570,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
570
 
571
  if ( $filter ) {
572
  $filter->set_title( $widget_instance['title'] );
573
- $filter->set_show_count( isset( $widget_instance['show_count'] ) && ! $widget_instance['show_count'] && ! in_array( $widget_instance['type'], array( 'color', 'multicolor', 'label' ) ) );
574
 
575
  if ( ! empty( $widget_instance['dropdown'] ) ) {
576
  $filter->set_show_toggle( 'yes' );
@@ -593,7 +593,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
593
  // we're done, hide upgrade note.
594
  update_option( 'yith_wcan_upgrade_note_status', 0 );
595
 
596
- wp_redirect( $return_url );
597
  die;
598
  }
599
 
@@ -605,20 +605,20 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
605
  * @return array Cleared data.
606
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
607
  */
608
- protected function _clear_preset_filter( $filter ) {
609
  // set missing information.
610
- $filter['enabled'] = isset( $filter['enabled'] ) ? 'yes' : 'no';
611
- $filter['show_toggle'] = isset( $filter['show_toggle'] ) ? 'yes' : 'no';
612
- $filter['show_count'] = isset( $filter['show_count'] ) ? 'yes' : 'no';
613
- $filter['show_search'] = isset( $filter['show_search'] ) ? 'yes' : 'no';
614
- $filter['multiple'] = isset( $filter['multiple'] ) ? 'yes' : 'no';
615
- $filter['show_stock_filter'] = isset( $filter['show_stock_filter'] ) ? 'yes' : 'no';
616
- $filter['show_sale_filter'] = isset( $filter['show_sale_filter'] ) ? 'yes' : 'no';
617
  $filter['show_featured_filter'] = isset( $filter['show_featured_filter'] ) ? 'yes' : 'no';
618
- $filter['customize_terms'] = isset( $filter['customize_terms'] ) ? 'yes' : 'no';
619
 
620
  if ( isset( $filter['terms_order'] ) ) {
621
- $filter['terms'] = $this->_get_sorted_terms( $filter['terms'], array_map( 'intval', $filter['terms_order'] ) );
622
  unset( $filter['terms_order'] );
623
  }
624
 
@@ -641,7 +641,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
641
  *
642
  * @return array Array of sorted terms
643
  */
644
- protected function _get_sorted_terms( $terms, $order ) {
645
  $ordered_terms = array();
646
 
647
  foreach ( $order as $term_id ) {
@@ -733,7 +733,7 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
733
 
734
  $preset_id = isset( $_POST['preset'] ) ? (int) $_POST['preset'] : false;
735
  $filter_id = isset( $_POST['filter_id'] ) ? (int) $_POST['filter_id'] : false;
736
- $filter = isset( $_POST['filter'] ) ? $this->_clear_preset_filter( $_POST['filter'] ) : false; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
737
 
738
  if ( ! $filter ) {
739
  die( '-1' );
@@ -798,11 +798,11 @@ if ( ! class_exists( 'YITH_WCAN_Presets' ) ) {
798
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
799
  */
800
  public static function instance() {
801
- if ( is_null( self::$_instance ) ) {
802
- self::$_instance = new self();
803
  }
804
 
805
- return self::$_instance;
806
  }
807
  }
808
  }
@@ -815,7 +815,7 @@ if ( ! function_exists( 'YITH_WCAN_Presets' ) ) {
815
  * @since 4.0.0
816
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
817
  */
818
- function YITH_WCAN_Presets() {
819
  return YITH_WCAN_Presets::instance();
820
  }
821
  }
3
  * Manage presets, register CPT and offers utility to retrieve them
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Presets
7
  * @version 4.0.0
8
  */
9
 
29
  /**
30
  * Presets post type
31
  *
32
+ * @var string $post_type
33
  */
34
+ protected $post_type = 'yith_wcan_preset';
35
 
36
  /**
37
  * Single instance of this class
38
  *
39
  * @var YITH_WCAN_Presets
40
  */
41
+ protected static $instance;
42
 
43
  /**
44
  * Constructor method for this class
81
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
82
  */
83
  public function get_post_type() {
84
+ return apply_filters( 'yith_wcan_presets_post_type', $this->post_type );
85
  }
86
 
87
  /**
92
  */
93
  public function register_post_type() {
94
  $post_type_labels = array(
95
+ 'name' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
96
  'singular_name' => _x( 'Filter preset', '[Admin] singular name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
97
  'add_new_item ' => _x( 'Add new preset', '[Admin] add new filter preset label', 'yith-woocommerce-ajax-navigation' ),
98
  );
99
+ $post_type_args = array(
100
+ 'label' => _x( 'Filter presets', '[Admin] name of presets custom post type', 'yith-woocommerce-ajax-navigation' ),
101
+ 'labels' => $post_type_labels,
102
+ 'public' => false,
103
+ 'show_ui' => true,
104
  'show_in_menu' => false,
105
+ 'supports' => array( 'title' ),
106
  );
107
 
108
  register_post_type( $this->get_post_type(), $post_type_args );
152
 
153
  // external urls.
154
  $demo_video_url = ''; // TODO: enter url when video is ready.
155
+ $doc_url = 'https://docs.yithemes.com/yith-woocommerce-ajax-product-filter/premium-settings/general-settings/update-yith-woocommerce-ajax-product-filter-to-version-4-0/';
156
 
157
  // action urls.
158
  $hide_upgrade_note_url = wp_nonce_url( add_query_arg( 'action', 'yith_wcan_hide_upgrade_note', admin_url( 'admin.php' ) ), 'hide_upgrade_note' );
193
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
194
  */
195
  public function save_preset() {
196
+ $preset_id = isset( $_POST['id'] ) ? (int) $_POST['id'] : false;
197
+ $paged = isset( $_POST['paged'] ) ? (int) $_POST['paged'] : false;
198
  $return_url = YITH_WCAN()->admin->get_panel_url();
199
 
200
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
201
  if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'save_preset' ) ) {
202
+ wp_safe_redirect( $return_url );
203
  die;
204
  }
205
 
207
  try {
208
  $preset = new YITH_WCAN_Preset( $preset_id );
209
  } catch ( Exception $e ) {
210
+ wp_safe_redirect( $return_url );
211
  die;
212
  }
213
 
228
  $to_save = array();
229
 
230
  foreach ( $filters as $filter ) {
231
+ $cleaned_filter = $this->clear_preset_filter( $filter );
232
 
233
  if ( ! $cleaned_filter ) {
234
  continue;
260
  )
261
  );
262
 
263
+ wp_safe_redirect( $return_url );
264
  die;
265
  }
266
 
272
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
273
  */
274
  public function clone_preset() {
275
+ $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
276
  $return_url = YITH_WCAN()->admin->get_panel_url();
277
 
278
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
279
  if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'clone_preset' ) ) {
280
+ wp_safe_redirect( $return_url );
281
  die;
282
  }
283
 
284
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
285
 
286
  if ( ! $preset || ! $preset->current_user_can( 'clone' ) ) {
287
+ wp_safe_redirect( $return_url );
288
  die;
289
  }
290
 
294
  wc_caught_exception( $e, __FUNCTION__, func_get_args() );
295
  }
296
 
297
+ wp_safe_redirect( $return_url );
298
  die;
299
  }
300
 
306
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
307
  */
308
  public function delete_preset() {
309
+ $preset = isset( $_GET['preset'] ) ? (int) $_GET['preset'] : false;
310
  $return_url = YITH_WCAN()->admin->get_panel_url();
311
 
312
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
313
  if ( ! $preset || ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], 'delete_preset' ) ) {
314
+ wp_safe_redirect( $return_url );
315
  die;
316
  }
317
 
318
  $preset = YITH_WCAN_Preset_Factory::get_preset( $preset );
319
 
320
  if ( ! $preset || ! $preset->current_user_can( 'delete' ) ) {
321
+ wp_safe_redirect( $return_url );
322
  die;
323
  }
324
 
328
  wc_caught_exception( $e, __FUNCTION__, func_get_args() );
329
  }
330
 
331
+ wp_safe_redirect( $return_url );
332
  die;
333
  }
334
 
346
  update_option( 'yith_wcan_upgrade_note_status', 0 );
347
  }
348
 
349
+ wp_safe_redirect( $return_url );
350
  die;
351
  }
352
 
362
 
363
  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
364
  if ( ! isset( $_REQUEST['_wpnonce'] ) || ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'do_widget_upgrade' ) && ! wp_verify_nonce( $_REQUEST['_wpnonce'], 'debug_action' ) ) ) {
365
+ wp_safe_redirect( $return_url );
366
  die;
367
  }
368
 
408
  }
409
 
410
  $widget_instance = $options[ $widget_name ][ $widget_id ];
411
+ $filter = false;
412
 
413
  switch ( $widget_name ) {
414
  case 'yith-woo-ajax-navigation-list-price-filter':
474
 
475
  foreach ( $terms as $term ) {
476
  $terms_array[ $term->term_id ] = array(
477
+ 'label' => $term->name,
478
  'tooltip' => $term->name,
479
  );
480
  }
516
  }
517
  break;
518
  case 'tags':
519
+ $option_value = array_map( 'intval', array_keys( $widget_instance['tags_list'] ) );
520
+ $exclude = 'exclude' === $widget_instance['tags_list_query'];
521
+ $include = ! $exclude;
522
 
523
  foreach ( $terms_array as $term_id => $term_options ) {
524
  // if exclude and term exists in the option, or include and term doesn't exist in the option, unset it.
525
+ $found = in_array( $term_id, $option_value, true );
526
 
527
  if ( $include && ! $found || $exclude && $found ) {
528
  unset( $terms_array[ $term_id ] );
570
 
571
  if ( $filter ) {
572
  $filter->set_title( $widget_instance['title'] );
573
+ $filter->set_show_count( isset( $widget_instance['show_count'] ) && ! $widget_instance['show_count'] && ! in_array( $widget_instance['type'], array( 'color', 'multicolor', 'label' ), true ) );
574
 
575
  if ( ! empty( $widget_instance['dropdown'] ) ) {
576
  $filter->set_show_toggle( 'yes' );
593
  // we're done, hide upgrade note.
594
  update_option( 'yith_wcan_upgrade_note_status', 0 );
595
 
596
+ wp_safe_redirect( $return_url );
597
  die;
598
  }
599
 
605
  * @return array Cleared data.
606
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
607
  */
608
+ protected function clear_preset_filter( $filter ) {
609
  // set missing information.
610
+ $filter['enabled'] = isset( $filter['enabled'] ) ? 'yes' : 'no';
611
+ $filter['show_toggle'] = isset( $filter['show_toggle'] ) ? 'yes' : 'no';
612
+ $filter['show_count'] = isset( $filter['show_count'] ) ? 'yes' : 'no';
613
+ $filter['show_search'] = isset( $filter['show_search'] ) ? 'yes' : 'no';
614
+ $filter['multiple'] = isset( $filter['multiple'] ) ? 'yes' : 'no';
615
+ $filter['show_stock_filter'] = isset( $filter['show_stock_filter'] ) ? 'yes' : 'no';
616
+ $filter['show_sale_filter'] = isset( $filter['show_sale_filter'] ) ? 'yes' : 'no';
617
  $filter['show_featured_filter'] = isset( $filter['show_featured_filter'] ) ? 'yes' : 'no';
618
+ $filter['customize_terms'] = isset( $filter['customize_terms'] ) ? 'yes' : 'no';
619
 
620
  if ( isset( $filter['terms_order'] ) ) {
621
+ $filter['terms'] = $this->get_sorted_terms( $filter['terms'], array_map( 'intval', $filter['terms_order'] ) );
622
  unset( $filter['terms_order'] );
623
  }
624
 
641
  *
642
  * @return array Array of sorted terms
643
  */
644
+ protected function get_sorted_terms( $terms, $order ) {
645
  $ordered_terms = array();
646
 
647
  foreach ( $order as $term_id ) {
733
 
734
  $preset_id = isset( $_POST['preset'] ) ? (int) $_POST['preset'] : false;
735
  $filter_id = isset( $_POST['filter_id'] ) ? (int) $_POST['filter_id'] : false;
736
+ $filter = isset( $_POST['filter'] ) ? $this->clear_preset_filter( $_POST['filter'] ) : false; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
737
 
738
  if ( ! $filter ) {
739
  die( '-1' );
798
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
799
  */
800
  public static function instance() {
801
+ if ( is_null( self::$instance ) ) {
802
+ self::$instance = new self();
803
  }
804
 
805
+ return self::$instance;
806
  }
807
  }
808
  }
815
  * @since 4.0.0
816
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
817
  */
818
+ function YITH_WCAN_Presets() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
819
  return YITH_WCAN_Presets::instance();
820
  }
821
  }
includes/{class.yith-wcan-query.php → class-yith-wcan-query.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Filters WooCommerce query, to show only products matching selection
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0.0
10
  */
11
 
@@ -20,75 +20,48 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
20
  * @since 4.0.0
21
  */
22
  class YITH_WCAN_Query {
23
- /**
24
- * Base name for queried-products transient
25
- *
26
- * @const string
27
- */
28
- const QUERIED_PRODUCTS_TRANSIENT = 'yith_wcan_queried_products_';
29
-
30
- /**
31
- * Base name for object-in-terms transient
32
- *
33
- * @const string
34
- */
35
- const OBJECT_IN_TERMS_TRANSIENT = 'yith_wcan_object_in_terms_';
36
-
37
- /**
38
- * Base name for products-in-stock transient
39
- *
40
- * @const string
41
- */
42
- const PRODUCTS_IN_STOCK_TRANSIENT = 'yith_wcan_products_instock_';
43
 
44
  /**
45
  * Query parameter added to any filtered page url
46
  *
47
  * @var string
48
  */
49
- protected $_query_param = 'yith_wcan';
50
 
51
  /**
52
  * List of query vars submitted for current query
53
  *
54
  * @var array submitted query vars.
55
  */
56
- protected $_query_vars = null;
57
 
58
  /**
59
  * Get taxonomies that will be used for filtering
60
  *
61
  * @var array
62
  */
63
- protected $_supported_taxonomies = array();
64
 
65
  /**
66
  * Products retrieved by by last query
67
  *
68
  * @var array
69
  */
70
- protected $_products = array();
71
 
72
  /**
73
  * An array of product ids matcing current query, per filter
74
  *
75
  * @var array
76
  */
77
- protected $_products_per_filter = array();
78
 
79
  /**
80
  * An array of currently choosen attributes
81
  *
82
  * @var array
83
  */
84
- protected $_chosen_attributes;
85
-
86
- /**
87
- * Current filtering session, if any
88
- *
89
- * @var YITH_WCAN_Session
90
- */
91
- protected $_session = null;
92
 
93
  /**
94
  * Main instance
@@ -96,14 +69,14 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
96
  * @var YITH_WCAN_Query
97
  * @since 4.0.0
98
  */
99
- protected static $_instance = null;
100
 
101
  /**
102
  * Constructor method for the class
103
  */
104
  public function __construct() {
105
  // prepare query param.
106
- $this->_query_param = apply_filters( 'yith_wcan_query_param', $this->_query_param );
107
 
108
  // do all pre-flight preparation.
109
  add_action( 'parse_request', array( $this, 'suppress_default_query_vars' ) );
@@ -144,7 +117,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
144
  * @param mixed $value Value to ues for the query var.
145
  */
146
  public function set( $query_var, $value ) {
147
- $this->_query_vars[ $query_var ] = $value;
148
  }
149
 
150
  /* === GET METHODS === */
@@ -169,13 +142,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
169
  * @return WP_Taxonomy[] Array of WP_Taxonomy objects
170
  */
171
  public function get_supported_taxonomies() {
172
- if ( empty( $this->_supported_taxonomies ) ) {
173
  $product_taxonomies = get_object_taxonomies( 'product', 'objects' );
174
  $supported_taxonomies = array();
175
 
176
  if ( ! empty( $product_taxonomies ) ) {
177
  foreach ( $product_taxonomies as $taxonomy_slug => $taxonomy ) {
178
- if ( ! in_array( $taxonomy_slug, array( 'product_cat', 'product_tag' ) ) && 0 !== strpos( $taxonomy_slug, 'pa_' ) ) {
179
  continue;
180
  }
181
 
@@ -183,10 +156,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
183
  }
184
  }
185
 
186
- $this->_supported_taxonomies = apply_filters( 'yith_wcan_supported_taxonomies', $supported_taxonomies );
187
  }
188
 
189
- return $this->_supported_taxonomies;
190
  }
191
 
192
  /**
@@ -207,11 +180,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
207
  * ]
208
  */
209
  public function get_query_vars() {
210
- if ( ! is_null( $this->_query_vars ) ) {
211
- return $this->_query_vars;
212
  }
213
 
214
- $query = $this->sanitize_query( $_GET );
215
 
216
  // unset parameters that aren't related to filters.
217
  $supported_parameters = apply_filters(
@@ -234,7 +207,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
234
  } elseif ( 0 === strpos( $key, 'query_type_' ) ) {
235
  // include meta filtering parameters.
236
  continue;
237
- } elseif ( ! in_array( $key, $supported_parameters ) ) {
238
  unset( $query[ $key ] );
239
  }
240
  }
@@ -251,7 +224,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
251
  }
252
  }
253
 
254
- $this->_query_vars = apply_filters( 'yith_wcan_query_vars', $query, $this );
 
 
 
 
 
255
 
256
  // return query.
257
  return $query;
@@ -263,7 +241,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
263
  * @return string Query param.
264
  */
265
  public function get_query_param() {
266
- return $this->_query_param;
267
  }
268
 
269
  /**
@@ -288,10 +266,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
288
  * @since 4.0.2
289
  */
290
  public function get_active_filter( $filter ) {
291
- $query_vars = $this->get_query_vars();
292
- $labels = $this->get_supported_labels();
293
- $taxonomies = $this->get_supported_taxonomies();
294
- $label = isset( $labels[ $filter ] ) ? $labels[ $filter ] : false;
295
  $active_filter = false;
296
 
297
  if ( ! $label ) {
@@ -324,7 +302,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
324
  }
325
 
326
  $values[] = array(
327
- 'label' => $term->name,
328
  'query_vars' => array(
329
  $filter => yith_wcan_esc_term_slug( $term_slug ),
330
  ),
@@ -377,8 +355,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
377
  return $query_vars;
378
  } else {
379
  $active_filters = array();
380
- $labels = $this->get_supported_labels();
381
-
382
 
383
  foreach ( $labels as $filter => $label ) {
384
  $active_filter = $this->get_active_filter( $filter );
@@ -420,26 +397,26 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
420
  $query_vars['lang'] = $current_lang;
421
  }
422
 
423
- $calculate_hash = md5( http_build_query( $query_vars ) );
424
- $cache_name = $this->get_queried_products_transient_name();
425
- $stored_products = get_transient( $cache_name );
426
 
427
- if ( is_array( $stored_products ) && isset( $stored_products[ $calculate_hash ] ) ) {
428
- $product_ids = $stored_products[ $calculate_hash ];
429
- } else {
430
  // store original query values, and switch to current context.
431
- $tmp_query_vars = $this->_query_vars;
432
- $tmp_chosen_attributes = $this->_chosen_attributes;
433
- $this->_query_vars = $query_vars;
434
- $this->_chosen_attributes = null;
435
 
436
  // create query to retrieve products.
437
  $query = new WP_Query(
438
- array(
439
- 'post_type' => 'product',
440
- 'post_status' => 'publish',
441
- 'posts_per_page' => '-1',
442
- 'fields' => 'ids',
 
 
 
443
  )
444
  );
445
 
@@ -453,12 +430,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
453
  $product_ids = $query->get_posts();
454
 
455
  // save result set to stored queries.
456
- $stored_products[ $calculate_hash ] = $product_ids;
457
- set_transient( $cache_name, $stored_products, apply_filters( 'yith_wcan_queried_products_expiration', 30 * DAY_IN_SECONDS ) );
458
 
459
  // reset original query values.
460
- $this->_query_vars = $tmp_query_vars;
461
- $this->_chosen_attributes = $tmp_chosen_attributes;
462
  }
463
 
464
  return $product_ids;
@@ -470,7 +446,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
470
  * @return bool Whether filters should be applied.
471
  */
472
  public function should_filter() {
473
- $query_param = isset( $_REQUEST[ $this->get_query_param() ] ) ? intval( wp_unslash( $_REQUEST[ $this->get_query_param() ] ) ) : 0;
474
 
475
  return apply_filters( 'yith_wcan_should_filter', ! ! $query_param, $this );
476
  }
@@ -487,7 +463,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
487
  if ( ! $query instanceof WP_Query ) {
488
  // skip if wrong parameter.
489
  $result = false;
490
- } elseif ( 'product' != $query->get( 'post_type' ) ) {
491
  // skip if we're not querying products.
492
  $result = false;
493
  } elseif ( $query->is_main_query() && ! $query->get( 'wc_query' ) ) {
@@ -636,7 +612,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
636
  // Set visibility tax_query.
637
  $product_visibility_term_ids = wc_get_product_visibility_term_ids();
638
 
639
- $tax_query[] = array(
640
  'taxonomy' => 'product_visibility',
641
  'field' => 'term_taxonomy_id',
642
  'terms' => is_search() ? $product_visibility_term_ids['exclude-from-search'] : $product_visibility_term_ids['exclude-from-catalog'],
@@ -652,8 +628,8 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
652
  * @return array
653
  */
654
  public function get_layered_nav_chosen_attributes() {
655
- if ( ! is_array( $this->_chosen_attributes ) ) {
656
- $this->_chosen_attributes = array();
657
 
658
  $query_vars = $this->get_query_vars();
659
 
@@ -670,13 +646,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
670
 
671
  $query_type = $this->get( 'query_type_' . $attribute );
672
 
673
- $this->_chosen_attributes[ $taxonomy ]['terms'] = array_map( 'sanitize_title', $filter_terms ); // Ensures correct encoding.
674
- $this->_chosen_attributes[ $taxonomy ]['query_type'] = $query_type ? $query_type : apply_filters( 'woocommerce_layered_nav_default_query_type', 'and' );
675
  }
676
  }
677
  }
678
  }
679
- return $this->_chosen_attributes;
680
  }
681
 
682
  /**
@@ -827,10 +803,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
827
  global $wp_query;
828
 
829
  if ( apply_filters( 'yith_wcan_suppress_default_conditional_tags', false ) ) {
830
- $wp_query->is_tax = false;
831
- $wp_query->is_tag = false;
832
- $wp_query->is_home = false;
833
- $wp_query->is_single = false;
834
  $wp_query->is_posts_page = false;
835
  }
836
  }
@@ -855,11 +831,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
855
  * @return void
856
  */
857
  public function register_products() {
858
- if ( ! $this->is_filtered() || ! empty( $this->_products ) || ! apply_filters( 'yith_wcan_process_filters_intersection', true ) ) {
859
  return;
860
  }
861
 
862
- $this->_products = $this->get_filtered_products_by_query_vars();
863
  }
864
 
865
  /* === ALTER DEFAULT WC QUERY === */
@@ -960,7 +936,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
960
 
961
  $query_var = $param;
962
 
963
- if ( in_array( $param, wc_get_attribute_taxonomy_names() ) ) {
964
  $query_var = str_replace( 'pa_', 'filter_', $param );
965
  }
966
 
@@ -978,7 +954,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
978
  $taxonomies = array_keys( $this->get_supported_taxonomies() );
979
  $query_var = $taxonomy;
980
 
981
- if ( ! in_array( $taxonomy, $taxonomies ) ) {
982
  return false;
983
  }
984
 
@@ -986,7 +962,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
986
  return true;
987
  }
988
 
989
- if ( in_array( $taxonomy, wc_get_attribute_taxonomy_names() ) ) {
990
  $query_var = str_replace( 'pa_', 'filter_', $taxonomy );
991
  }
992
 
@@ -1029,20 +1005,16 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1029
  return array();
1030
  }
1031
 
1032
- if ( isset( $this->_products_per_filter[ $taxonomy ][ $term_id ] ) ) {
1033
- return $this->_products_per_filter[ $taxonomy ][ $term_id ];
1034
  } else {
1035
- $cache_name = $this->get_object_in_terms_transient_name();
1036
- $stored_items = get_transient( $cache_name );
1037
 
1038
- if ( is_array( $stored_items ) && isset( $stored_items[ $term_id ] ) ) {
1039
- $posts = $stored_items[ $term_id ];
1040
- } else {
1041
  $posts = get_objects_in_term( $term_id, $taxonomy );
1042
 
1043
  // save result set to stored queries.
1044
- $stored_items[ $term_id ] = $posts;
1045
- set_transient( $cache_name, $stored_items, apply_filters( 'yith_wcan_object_in_terms_expiration', 30 * DAY_IN_SECONDS ) );
1046
  }
1047
 
1048
  if ( is_wp_error( $posts ) ) {
@@ -1050,10 +1022,10 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1050
  }
1051
 
1052
  if ( ! $exclude_taxonomy ) {
1053
- $query_vars = $this->get_query_vars();
1054
  $original_taxonomy = $taxonomy;
1055
 
1056
- if ( in_array( $original_taxonomy, wc_get_attribute_taxonomy_names() ) ) {
1057
  $original_taxonomy = str_replace( 'pa_', 'filter_', $original_taxonomy );
1058
  }
1059
 
@@ -1067,113 +1039,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1067
  }
1068
 
1069
  $match = array_intersect( $posts, $products );
1070
- $this->_products_per_filter[ $taxonomy ][ $term_id ] = $match;
1071
-
1072
- return $match;
1073
- }
1074
- }
1075
-
1076
- /* === TRANSIENT === */
1077
-
1078
- /**
1079
- * Returns name of the transient used to cache queried products
1080
- *
1081
- * @return string Transient name.
1082
- */
1083
- public function get_queried_products_transient_name() {
1084
- $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1085
- $cache_name = self::QUERIED_PRODUCTS_TRANSIENT . $cache_version;
1086
-
1087
- // WPML support.
1088
- $current_lang = apply_filters( 'wpml_current_language', null );
1089
-
1090
- if ( ! empty( $current_lang ) ) {
1091
- $cache_name .= "_{$current_lang}";
1092
- }
1093
-
1094
- return apply_filters( 'yith_wcan_queried_products_name', $cache_name );
1095
- }
1096
-
1097
- /**
1098
- * Returns name of the transient used to cache object in terms
1099
- *
1100
- * @return string Transient name.
1101
- */
1102
- public function get_object_in_terms_transient_name() {
1103
- $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1104
- $cache_name = self::OBJECT_IN_TERMS_TRANSIENT . $cache_version;
1105
-
1106
- return apply_filters( 'yith_wcan_object_in_terms_name', $cache_name );
1107
- }
1108
-
1109
- /**
1110
- * Returns name of the transient used to cache "in stock" products
1111
- *
1112
- * @return string Transient name.
1113
- */
1114
- public function get_in_stock_products_transient_name() {
1115
- $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1116
- $cache_name = self::PRODUCTS_IN_STOCK_TRANSIENT . $cache_version;
1117
-
1118
- // WPML support.
1119
- $current_lang = apply_filters( 'wpml_current_language', null );
1120
-
1121
- if ( ! empty( $current_lang ) ) {
1122
- $cache_name .= "_{$current_lang}";
1123
- }
1124
-
1125
- return apply_filters( 'yith_wcan_products_instock_name', $cache_name );
1126
- }
1127
-
1128
- /**
1129
- * Delete transient used to cache queried products
1130
- *
1131
- * @return void
1132
- */
1133
- public function delete_transients() {
1134
- delete_transient( $this->get_queried_products_transient_name() );
1135
- delete_transient( $this->get_in_stock_products_transient_name() );
1136
- delete_transient( $this->get_object_in_terms_transient_name() );
1137
-
1138
- delete_transient( 'yith_wcan_exclude_from_catalog_product_ids' );
1139
- }
1140
 
1141
- /**
1142
- * Delete transient used to cache queried products
1143
- *
1144
- * @return void
1145
- */
1146
- public function delete_expired_transients() {
1147
- global $wpdb;
1148
-
1149
- $cache_version = WC_Cache_Helper::get_transient_version( 'product' );
1150
- $to_delete = array(
1151
- self::QUERIED_PRODUCTS_TRANSIENT,
1152
- self::OBJECT_IN_TERMS_TRANSIENT,
1153
- self::PRODUCTS_IN_STOCK_TRANSIENT,
1154
- );
1155
 
1156
- $query = "DELETE FROM {$wpdb->options} WHERE 1=1";
1157
- $args = array();
1158
-
1159
- $query .= ' AND ( ';
1160
- $first = true;
1161
- foreach ( $to_delete as $transient_name ) {
1162
- if ( ! $first ) {
1163
- $query .= ' OR ';
1164
- }
1165
-
1166
- $args[] = "%{$transient_name}%";
1167
-
1168
- $query .= 'option_name LIKE %s';
1169
- $first = false;
1170
  }
1171
- $query .= ')';
1172
-
1173
- $query .= ' AND option_name NOT LIKE %s';
1174
- $args[] = "%{$cache_version}%";
1175
-
1176
- $wpdb->query( $wpdb->prepare( $query, $args ) ); // phpcs:ignore WordPress.DB
1177
  }
1178
 
1179
  /* === UTILS === */
@@ -1184,9 +1054,9 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1184
  * @return array Array of product ids
1185
  */
1186
  public function get_product_ids_in_stock() {
 
1187
  // Load from cache.
1188
- $transient_name = $this->get_in_stock_products_transient_name();
1189
- $product_ids_in_stock = get_transient( $transient_name );
1190
 
1191
  // Valid cache found.
1192
  if ( false !== $product_ids_in_stock ) {
@@ -1194,15 +1064,19 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1194
  }
1195
 
1196
  $product_ids_in_stock = wc_get_products(
1197
- array(
1198
- 'status' => 'publish',
1199
- 'stock_status' => 'instock',
1200
- 'limit' => -1,
1201
- 'return' => 'ids',
 
 
 
 
1202
  )
1203
  );
1204
 
1205
- set_transient( $transient_name, $product_ids_in_stock, DAY_IN_SECONDS * 30 );
1206
 
1207
  return $product_ids_in_stock;
1208
  }
@@ -1240,13 +1114,13 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1240
  if ( ! empty( $vars_to_add ) ) {
1241
  foreach ( $vars_to_add as $vars ) {
1242
  foreach ( $vars as $key => $value ) {
1243
- if ( in_array( $key, array_keys( $supported_taxonomies ) ) ) {
1244
  if ( ! isset( $query_vars[ $key ] ) ) {
1245
  $query_vars[ $key ] = $value;
1246
  } else {
1247
- $glue = 'and' === $merge_mode ? '+' : ',';
1248
  $existing = explode( $glue, $query_vars[ $key ] );
1249
- $new = explode( $glue, $value );
1250
 
1251
  $query_vars[ $key ] = implode( $glue, array_unique( array_merge( $existing, $new ) ) );
1252
  }
@@ -1259,12 +1133,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1259
  $query_vars[ $key ] = $value;
1260
  } else {
1261
  $existing = explode( ',', $query_vars[ $key ] );
1262
- $new = explode( ',', $value );
1263
 
1264
  $query_vars[ $key ] = implode( ',', array_unique( array_merge( $existing, $new ) ) );
1265
  }
1266
  } elseif ( is_array( $value ) ) {
1267
- $glue = 'and' === $merge_mode ? '+' : ',';
1268
  $query_vars[ $key ] = implode( $glue, array_merge( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
1269
  } else {
1270
  $query_vars[ $key ] = $value;
@@ -1291,11 +1165,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1291
  if ( ! empty( $vars_to_remove ) ) {
1292
  foreach ( $vars_to_remove as $vars ) {
1293
  foreach ( $vars as $key => $value ) {
1294
- if ( in_array( $key, array_keys( $supported_taxonomies ) ) ) {
1295
  if ( isset( $query_vars[ $key ] ) ) {
1296
- $glue = 'and' === $merge_mode ? '+' : ',';
1297
  $existing = explode( $glue, $query_vars[ $key ] );
1298
- $new = explode( $glue, $value );
1299
 
1300
  $query_vars[ $key ] = implode( $glue, array_unique( array_diff( $existing, $new ) ) );
1301
  }
@@ -1310,7 +1184,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1310
 
1311
  if ( isset( $query_vars[ $key ] ) ) {
1312
  $existing = explode( ',', $query_vars[ $key ] );
1313
- $new = explode( ',', $value );
1314
 
1315
  $query_vars[ $key ] = implode( ',', array_unique( array_diff( $existing, $new ) ) );
1316
  }
@@ -1320,7 +1194,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1320
  unset( $query_vars[ "query_type_{$attribute}" ] );
1321
  }
1322
  } elseif ( is_array( $value ) ) {
1323
- $glue = 'and' === $merge_mode ? '+' : ',';
1324
  $query_vars[ $key ] = implode( $glue, array_diff( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
1325
 
1326
  if ( empty( $query_vars[ $key ] ) ) {
@@ -1365,6 +1239,12 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1365
  * @return array Filtered array of tax queries.
1366
  */
1367
  public function reduce_tax_query( $tax_queries ) {
 
 
 
 
 
 
1368
  $result = array();
1369
  $queries = array();
1370
  $relation = 'AND';
@@ -1392,7 +1272,7 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1392
 
1393
  if ( ! isset( $queries[ $hash ] ) ) {
1394
  $queries[ $hash ] = $tax_query;
1395
- } else {
1396
  $queries[ $hash ]['terms'] = array_unique( (array) $queries[ $hash ]['terms'] + (array) $tax_query['terms'] );
1397
  }
1398
  }
@@ -1414,11 +1294,11 @@ if ( ! class_exists( 'YITH_WCAN_Query' ) ) {
1414
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
1415
  */
1416
  public static function instance() {
1417
- if ( is_null( self::$_instance ) ) {
1418
- self::$_instance = new self();
1419
  }
1420
 
1421
- return self::$_instance;
1422
  }
1423
  }
1424
  }
@@ -1429,7 +1309,7 @@ if ( ! function_exists( 'YITH_WCAN_Query' ) ) {
1429
  *
1430
  * @return YITH_WCAN_Query
1431
  */
1432
- function YITH_WCAN_Query() {
1433
  if ( defined( 'YITH_WCAN_PREMIUM' ) ) {
1434
  return YITH_WCAN_Query_Premium::instance();
1435
  }
5
  * Filters WooCommerce query, to show only products matching selection
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes
9
  * @version 4.0.0
10
  */
11
 
20
  * @since 4.0.0
21
  */
22
  class YITH_WCAN_Query {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  /**
25
  * Query parameter added to any filtered page url
26
  *
27
  * @var string
28
  */
29
+ protected $query_param = 'yith_wcan';
30
 
31
  /**
32
  * List of query vars submitted for current query
33
  *
34
  * @var array submitted query vars.
35
  */
36
+ protected $query_vars = null;
37
 
38
  /**
39
  * Get taxonomies that will be used for filtering
40
  *
41
  * @var array
42
  */
43
+ protected $supported_taxonomies = array();
44
 
45
  /**
46
  * Products retrieved by by last query
47
  *
48
  * @var array
49
  */
50
+ protected $products = array();
51
 
52
  /**
53
  * An array of product ids matcing current query, per filter
54
  *
55
  * @var array
56
  */
57
+ protected $products_per_filter = array();
58
 
59
  /**
60
  * An array of currently choosen attributes
61
  *
62
  * @var array
63
  */
64
+ protected $chosen_attributes;
 
 
 
 
 
 
 
65
 
66
  /**
67
  * Main instance
69
  * @var YITH_WCAN_Query
70
  * @since 4.0.0
71
  */
72
+ protected static $instance = null;
73
 
74
  /**
75
  * Constructor method for the class
76
  */
77
  public function __construct() {
78
  // prepare query param.
79
+ $this->query_param = apply_filters( 'yith_wcan_query_param', $this->query_param );
80
 
81
  // do all pre-flight preparation.
82
  add_action( 'parse_request', array( $this, 'suppress_default_query_vars' ) );
117
  * @param mixed $value Value to ues for the query var.
118
  */
119
  public function set( $query_var, $value ) {
120
+ $this->query_vars[ $query_var ] = $value;
121
  }
122
 
123
  /* === GET METHODS === */
142
  * @return WP_Taxonomy[] Array of WP_Taxonomy objects
143
  */
144
  public function get_supported_taxonomies() {
145
+ if ( empty( $this->supported_taxonomies ) ) {
146
  $product_taxonomies = get_object_taxonomies( 'product', 'objects' );
147
  $supported_taxonomies = array();
148
 
149
  if ( ! empty( $product_taxonomies ) ) {
150
  foreach ( $product_taxonomies as $taxonomy_slug => $taxonomy ) {
151
+ if ( ! in_array( $taxonomy_slug, array( 'product_cat', 'product_tag' ), true ) && 0 !== strpos( $taxonomy_slug, 'pa_' ) ) {
152
  continue;
153
  }
154
 
156
  }
157
  }
158
 
159
+ $this->supported_taxonomies = apply_filters( 'yith_wcan_supported_taxonomies', $supported_taxonomies );
160
  }
161
 
162
+ return $this->supported_taxonomies;
163
  }
164
 
165
  /**
180
  * ]
181
  */
182
  public function get_query_vars() {
183
+ if ( ! is_null( $this->query_vars ) ) {
184
+ return $this->query_vars;
185
  }
186
 
187
+ $query = $this->sanitize_query( $_GET ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
188
 
189
  // unset parameters that aren't related to filters.
190
  $supported_parameters = apply_filters(
207
  } elseif ( 0 === strpos( $key, 'query_type_' ) ) {
208
  // include meta filtering parameters.
209
  continue;
210
+ } elseif ( ! in_array( $key, $supported_parameters, true ) ) {
211
  unset( $query[ $key ] );
212
  }
213
  }
224
  }
225
  }
226
 
227
+ /**
228
+ * We only store _query_vars once main query is executed, to be sure not to left behind any parameter.
229
+ *
230
+ * @since 4.1.1
231
+ */
232
+ $this->query_vars = did_action( 'wp' ) ? apply_filters( 'yith_wcan_query_vars', $query, $this ) : null;
233
 
234
  // return query.
235
  return $query;
241
  * @return string Query param.
242
  */
243
  public function get_query_param() {
244
+ return $this->query_param;
245
  }
246
 
247
  /**
266
  * @since 4.0.2
267
  */
268
  public function get_active_filter( $filter ) {
269
+ $query_vars = $this->get_query_vars();
270
+ $labels = $this->get_supported_labels();
271
+ $taxonomies = $this->get_supported_taxonomies();
272
+ $label = isset( $labels[ $filter ] ) ? $labels[ $filter ] : false;
273
  $active_filter = false;
274
 
275
  if ( ! $label ) {
302
  }
303
 
304
  $values[] = array(
305
+ 'label' => $term->name,
306
  'query_vars' => array(
307
  $filter => yith_wcan_esc_term_slug( $term_slug ),
308
  ),
355
  return $query_vars;
356
  } else {
357
  $active_filters = array();
358
+ $labels = $this->get_supported_labels();
 
359
 
360
  foreach ( $labels as $filter => $label ) {
361
  $active_filter = $this->get_active_filter( $filter );
397
  $query_vars['lang'] = $current_lang;
398
  }
399
 
400
+ $calculate_hash = md5( http_build_query( $query_vars ) );
401
+ $product_ids = YITH_WCAN_Cache_Helper::get( 'queried_products', $calculate_hash );
 
402
 
403
+ if ( ! $product_ids ) {
 
 
404
  // store original query values, and switch to current context.
405
+ $tmp_query_vars = $this->query_vars;
406
+ $tmp_chosen_attributes = $this->chosen_attributes;
407
+ $this->query_vars = $query_vars;
408
+ $this->chosen_attributes = null;
409
 
410
  // create query to retrieve products.
411
  $query = new WP_Query(
412
+ apply_filters(
413
+ 'yith_wcan_filtered_products_query',
414
+ array(
415
+ 'post_type' => 'product',
416
+ 'post_status' => 'publish',
417
+ 'posts_per_page' => '-1',
418
+ 'fields' => 'ids',
419
+ )
420
  )
421
  );
422
 
430
  $product_ids = $query->get_posts();
431
 
432
  // save result set to stored queries.
433
+ YITH_WCAN_Cache_Helper::set( 'queried_products', $product_ids, $calculate_hash );
 
434
 
435
  // reset original query values.
436
+ $this->query_vars = $tmp_query_vars;
437
+ $this->chosen_attributes = $tmp_chosen_attributes;
438
  }
439
 
440
  return $product_ids;
446
  * @return bool Whether filters should be applied.
447
  */
448
  public function should_filter() {
449
+ $query_param = isset( $_REQUEST[ $this->get_query_param() ] ) ? intval( wp_unslash( $_REQUEST[ $this->get_query_param() ] ) ) : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
450
 
451
  return apply_filters( 'yith_wcan_should_filter', ! ! $query_param, $this );
452
  }
463
  if ( ! $query instanceof WP_Query ) {
464
  // skip if wrong parameter.
465
  $result = false;
466
+ } elseif ( ! in_array( 'product', (array) $query->get( 'post_type' ), true ) && ! in_array( $query->get( 'taxonomy' ), array_keys( $this->get_supported_taxonomies() ), true ) ) {
467
  // skip if we're not querying products.
468
  $result = false;
469
  } elseif ( $query->is_main_query() && ! $query->get( 'wc_query' ) ) {
612
  // Set visibility tax_query.
613
  $product_visibility_term_ids = wc_get_product_visibility_term_ids();
614
 
615
+ $tax_query[] = array(
616
  'taxonomy' => 'product_visibility',
617
  'field' => 'term_taxonomy_id',
618
  'terms' => is_search() ? $product_visibility_term_ids['exclude-from-search'] : $product_visibility_term_ids['exclude-from-catalog'],
628
  * @return array
629
  */
630
  public function get_layered_nav_chosen_attributes() {
631
+ if ( ! is_array( $this->chosen_attributes ) ) {
632
+ $this->chosen_attributes = array();
633
 
634
  $query_vars = $this->get_query_vars();
635
 
646
 
647
  $query_type = $this->get( 'query_type_' . $attribute );
648
 
649
+ $this->chosen_attributes[ $taxonomy ]['terms'] = array_map( 'sanitize_title', $filter_terms ); // Ensures correct encoding.
650
+ $this->chosen_attributes[ $taxonomy ]['query_type'] = $query_type ? $query_type : apply_filters( 'woocommerce_layered_nav_default_query_type', 'and' );
651
  }
652
  }
653
  }
654
  }
655
+ return $this->chosen_attributes;
656
  }
657
 
658
  /**
803
  global $wp_query;
804
 
805
  if ( apply_filters( 'yith_wcan_suppress_default_conditional_tags', false ) ) {
806
+ $wp_query->is_tax = false;
807
+ $wp_query->is_tag = false;
808
+ $wp_query->is_home = false;
809
+ $wp_query->is_single = false;
810
  $wp_query->is_posts_page = false;
811
  }
812
  }
831
  * @return void
832
  */
833
  public function register_products() {
834
+ if ( ! $this->is_filtered() || ! empty( $this->products ) || ! apply_filters( 'yith_wcan_process_filters_intersection', true ) ) {
835
  return;
836
  }
837
 
838
+ $this->products = $this->get_filtered_products_by_query_vars();
839
  }
840
 
841
  /* === ALTER DEFAULT WC QUERY === */
936
 
937
  $query_var = $param;
938
 
939
+ if ( in_array( $param, wc_get_attribute_taxonomy_names(), true ) ) {
940
  $query_var = str_replace( 'pa_', 'filter_', $param );
941
  }
942
 
954
  $taxonomies = array_keys( $this->get_supported_taxonomies() );
955
  $query_var = $taxonomy;
956
 
957
+ if ( ! in_array( $taxonomy, $taxonomies, true ) ) {
958
  return false;
959
  }
960
 
962
  return true;
963
  }
964
 
965
+ if ( in_array( $taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
966
  $query_var = str_replace( 'pa_', 'filter_', $taxonomy );
967
  }
968
 
1005
  return array();
1006
  }
1007
 
1008
+ if ( isset( $this->products_per_filter[ $taxonomy ][ $term_id ] ) ) {
1009
+ return $this->products_per_filter[ $taxonomy ][ $term_id ];
1010
  } else {
1011
+ $posts = YITH_WCAN_Cache_Helper::get( 'object_in_terms', $term_id );
 
1012
 
1013
+ if ( ! $posts ) {
 
 
1014
  $posts = get_objects_in_term( $term_id, $taxonomy );
1015
 
1016
  // save result set to stored queries.
1017
+ YITH_WCAN_Cache_Helper::set( 'object_in_terms', $posts, $term_id );
 
1018
  }
1019
 
1020
  if ( is_wp_error( $posts ) ) {
1022
  }
1023
 
1024
  if ( ! $exclude_taxonomy ) {
1025
+ $query_vars = $this->get_query_vars();
1026
  $original_taxonomy = $taxonomy;
1027
 
1028
+ if ( in_array( $original_taxonomy, wc_get_attribute_taxonomy_names(), true ) ) {
1029
  $original_taxonomy = str_replace( 'pa_', 'filter_', $original_taxonomy );
1030
  }
1031
 
1039
  }
1040
 
1041
  $match = array_intersect( $posts, $products );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1042
 
1043
+ $this->products_per_filter[ $taxonomy ][ $term_id ] = $match;
 
 
 
 
 
 
 
 
 
 
 
 
 
1044
 
1045
+ return $match;
 
 
 
 
 
 
 
 
 
 
 
 
 
1046
  }
 
 
 
 
 
 
1047
  }
1048
 
1049
  /* === UTILS === */
1054
  * @return array Array of product ids
1055
  */
1056
  public function get_product_ids_in_stock() {
1057
+
1058
  // Load from cache.
1059
+ $product_ids_in_stock = YITH_WCAN_Cache_Helper::get( 'products_instock' );
 
1060
 
1061
  // Valid cache found.
1062
  if ( false !== $product_ids_in_stock ) {
1064
  }
1065
 
1066
  $product_ids_in_stock = wc_get_products(
1067
+ apply_filters(
1068
+ 'yith_wcan_product_ids_in_stock_args',
1069
+ array(
1070
+ 'status' => 'publish',
1071
+ 'stock_status' => 'instock',
1072
+ 'limit' => - 1,
1073
+ 'return' => 'ids',
1074
+ 'yith_wcan_suppress_filters' => true,
1075
+ )
1076
  )
1077
  );
1078
 
1079
+ YITH_WCAN_Cache_Helper::set( 'products_instock', $product_ids_in_stock );
1080
 
1081
  return $product_ids_in_stock;
1082
  }
1114
  if ( ! empty( $vars_to_add ) ) {
1115
  foreach ( $vars_to_add as $vars ) {
1116
  foreach ( $vars as $key => $value ) {
1117
+ if ( in_array( $key, array_keys( $supported_taxonomies ), true ) ) {
1118
  if ( ! isset( $query_vars[ $key ] ) ) {
1119
  $query_vars[ $key ] = $value;
1120
  } else {
1121
+ $glue = 'and' === $merge_mode ? '+' : ',';
1122
  $existing = explode( $glue, $query_vars[ $key ] );
1123
+ $new = explode( $glue, $value );
1124
 
1125
  $query_vars[ $key ] = implode( $glue, array_unique( array_merge( $existing, $new ) ) );
1126
  }
1133
  $query_vars[ $key ] = $value;
1134
  } else {
1135
  $existing = explode( ',', $query_vars[ $key ] );
1136
+ $new = explode( ',', $value );
1137
 
1138
  $query_vars[ $key ] = implode( ',', array_unique( array_merge( $existing, $new ) ) );
1139
  }
1140
  } elseif ( is_array( $value ) ) {
1141
+ $glue = 'and' === $merge_mode ? '+' : ',';
1142
  $query_vars[ $key ] = implode( $glue, array_merge( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
1143
  } else {
1144
  $query_vars[ $key ] = $value;
1165
  if ( ! empty( $vars_to_remove ) ) {
1166
  foreach ( $vars_to_remove as $vars ) {
1167
  foreach ( $vars as $key => $value ) {
1168
+ if ( in_array( $key, array_keys( $supported_taxonomies ), true ) ) {
1169
  if ( isset( $query_vars[ $key ] ) ) {
1170
+ $glue = 'and' === $merge_mode ? '+' : ',';
1171
  $existing = explode( $glue, $query_vars[ $key ] );
1172
+ $new = explode( $glue, $value );
1173
 
1174
  $query_vars[ $key ] = implode( $glue, array_unique( array_diff( $existing, $new ) ) );
1175
  }
1184
 
1185
  if ( isset( $query_vars[ $key ] ) ) {
1186
  $existing = explode( ',', $query_vars[ $key ] );
1187
+ $new = explode( ',', $value );
1188
 
1189
  $query_vars[ $key ] = implode( ',', array_unique( array_diff( $existing, $new ) ) );
1190
  }
1194
  unset( $query_vars[ "query_type_{$attribute}" ] );
1195
  }
1196
  } elseif ( is_array( $value ) ) {
1197
+ $glue = 'and' === $merge_mode ? '+' : ',';
1198
  $query_vars[ $key ] = implode( $glue, array_diff( isset( $query_vars[ $key ] ) ? (array) $query_vars[ $key ] : array(), $value ) );
1199
 
1200
  if ( empty( $query_vars[ $key ] ) ) {
1239
  * @return array Filtered array of tax queries.
1240
  */
1241
  public function reduce_tax_query( $tax_queries ) {
1242
+ $pre = apply_filters( 'yith_wcan_pre_reduce_tax_query', false, $tax_queries );
1243
+
1244
+ if ( false !== $pre ) {
1245
+ return $pre;
1246
+ }
1247
+
1248
  $result = array();
1249
  $queries = array();
1250
  $relation = 'AND';
1272
 
1273
  if ( ! isset( $queries[ $hash ] ) ) {
1274
  $queries[ $hash ] = $tax_query;
1275
+ } elseif ( ! empty( $tax_query['terms'] ) ) {
1276
  $queries[ $hash ]['terms'] = array_unique( (array) $queries[ $hash ]['terms'] + (array) $tax_query['terms'] );
1277
  }
1278
  }
1294
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
1295
  */
1296
  public static function instance() {
1297
+ if ( is_null( self::$instance ) ) {
1298
+ self::$instance = new self();
1299
  }
1300
 
1301
+ return self::$instance;
1302
  }
1303
  }
1304
  }
1309
  *
1310
  * @return YITH_WCAN_Query
1311
  */
1312
+ function YITH_WCAN_Query() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
1313
  if ( defined( 'YITH_WCAN_PREMIUM' ) ) {
1314
  return YITH_WCAN_Query_Premium::instance();
1315
  }
includes/{class.yith-wcan-shortcodes.php → class-yith-wcan-shortcodes.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines all the shortcodes supported by the plugin, and additional functions to support external compose
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0
10
  */
11
 
@@ -21,9 +21,9 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
21
  /**
22
  * A list of available plugin shortcodes
23
  *
24
- * @var array $_available_shortcodes
25
  */
26
- private static $_available_shortcodes;
27
 
28
  /**
29
  * Register shortcode and performs all shortcodes related ops
@@ -32,7 +32,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
32
  */
33
  public static function init() {
34
  // init available shortcodes.
35
- self::$_available_shortcodes = apply_filters(
36
  'yith_wcan_shortcodes',
37
  array(
38
  'yith_wcan_filters',
@@ -50,21 +50,21 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
50
  * @return void
51
  */
52
  public static function init_shortcodes() {
53
- if ( empty( self::$_available_shortcodes ) ) {
54
  return;
55
  }
56
 
57
- foreach ( self::$_available_shortcodes as $tag ) {
58
  $classname = str_replace( 'yith_wcan', 'YITH_WCAN_Shortcode', $tag );
59
  $classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
60
- $filename = 'class.' . strtolower( str_replace( '_', '-', $classname ) );
61
  $filepath = YITH_WCAN_INC . 'shortcodes/' . $filename . '.php';
62
 
63
  if ( ! file_exists( $filepath ) ) {
64
  continue;
65
  }
66
 
67
- include_once( $filepath );
68
 
69
  if ( class_exists( $classname ) ) {
70
  add_shortcode( $tag, array( $classname, 'render' ) );
@@ -97,21 +97,21 @@ if ( ! class_exists( 'YITH_WCAN_Shortcodes' ) ) {
97
  * @return void
98
  */
99
  public static function register_elementor_widgets() {
100
- if ( empty( self::$_available_shortcodes ) ) {
101
  return;
102
  }
103
 
104
- foreach ( self::$_available_shortcodes as $tag ) {
105
  $classname = str_replace( 'yith_wcan', 'YITH_WCAN_Elementor', $tag );
106
  $classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
107
- $filename = 'class.' . strtolower( str_replace( '_', '-', $classname ) );
108
  $filepath = YITH_WCAN_INC . 'elementor/' . $filename . '.php';
109
 
110
  if ( ! file_exists( $filepath ) ) {
111
  continue;
112
  }
113
 
114
- include_once( $filepath );
115
 
116
  if ( class_exists( $classname ) ) {
117
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new $classname() );
5
  * Defines all the shortcodes supported by the plugin, and additional functions to support external compose
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes
9
  * @version 4.0
10
  */
11
 
21
  /**
22
  * A list of available plugin shortcodes
23
  *
24
+ * @var array $available_shortcodes
25
  */
26
+ private static $available_shortcodes;
27
 
28
  /**
29
  * Register shortcode and performs all shortcodes related ops
32
  */
33
  public static function init() {
34
  // init available shortcodes.
35
+ self::$available_shortcodes = apply_filters(
36
  'yith_wcan_shortcodes',
37
  array(
38
  'yith_wcan_filters',
50
  * @return void
51
  */
52
  public static function init_shortcodes() {
53
+ if ( empty( self::$available_shortcodes ) ) {
54
  return;
55
  }
56
 
57
+ foreach ( self::$available_shortcodes as $tag ) {
58
  $classname = str_replace( 'yith_wcan', 'YITH_WCAN_Shortcode', $tag );
59
  $classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
60
+ $filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
61
  $filepath = YITH_WCAN_INC . 'shortcodes/' . $filename . '.php';
62
 
63
  if ( ! file_exists( $filepath ) ) {
64
  continue;
65
  }
66
 
67
+ include_once $filepath;
68
 
69
  if ( class_exists( $classname ) ) {
70
  add_shortcode( $tag, array( $classname, 'render' ) );
97
  * @return void
98
  */
99
  public static function register_elementor_widgets() {
100
+ if ( empty( self::$available_shortcodes ) ) {
101
  return;
102
  }
103
 
104
+ foreach ( self::$available_shortcodes as $tag ) {
105
  $classname = str_replace( 'yith_wcan', 'YITH_WCAN_Elementor', $tag );
106
  $classname = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $classname ) ) );
107
+ $filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
108
  $filepath = YITH_WCAN_INC . 'elementor/' . $filename . '.php';
109
 
110
  if ( ! file_exists( $filepath ) ) {
111
  continue;
112
  }
113
 
114
+ include_once $filepath;
115
 
116
  if ( class_exists( $classname ) ) {
117
  \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new $classname() );
includes/{class.yith-wcan-widgets.php → class-yith-wcan-widgets.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines all the widgets supported by the plugin
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0.2
10
  */
11
 
@@ -21,9 +21,9 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
21
  /**
22
  * A list of available plugin widgets
23
  *
24
- * @var array $_available_widgets
25
  */
26
- private static $_available_widgets;
27
 
28
  /**
29
  * Register shortcode and performs all shortcodes related ops
@@ -32,7 +32,7 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
32
  */
33
  public static function init() {
34
  // init available shortcodes.
35
- self::$_available_widgets = apply_filters(
36
  'yith_wcan_widgets',
37
  array(
38
  'YITH_WCAN_Navigation_Widget',
@@ -50,13 +50,13 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
50
  * @return void
51
  */
52
  public static function init_widgets() {
53
- if ( empty( self::$_available_widgets ) ) {
54
  return;
55
  }
56
 
57
- foreach ( self::$_available_widgets as $classname ) {
58
- $filename = 'class.' . strtolower( str_replace( '_', '-', $classname ) );
59
- $filepath = YITH_WCAN_INC . 'widgets/' . $filename . '.php';
60
 
61
  if ( ! file_exists( $filepath ) ) {
62
  continue;
@@ -64,14 +64,14 @@ if ( ! class_exists( 'YITH_WCAN_Widgets' ) ) {
64
 
65
  if ( false !== strpos( $filename, '-premium' ) ) {
66
  $parent_filename = str_replace( '-premium', '', $filename );
67
- $parent_filepath = YITH_WCAN_INC . 'widgets/' . $parent_filename . '.php';
68
 
69
  if ( file_exists( $parent_filepath ) ) {
70
- include_once( $parent_filepath );
71
  }
72
  }
73
 
74
- include_once( $filepath );
75
 
76
  if ( class_exists( $classname ) ) {
77
  register_widget( $classname );
5
  * Defines all the widgets supported by the plugin
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes
9
  * @version 4.0.2
10
  */
11
 
21
  /**
22
  * A list of available plugin widgets
23
  *
24
+ * @var array $available_widgets
25
  */
26
+ private static $available_widgets;
27
 
28
  /**
29
  * Register shortcode and performs all shortcodes related ops
32
  */
33
  public static function init() {
34
  // init available shortcodes.
35
+ self::$available_widgets = apply_filters(
36
  'yith_wcan_widgets',
37
  array(
38
  'YITH_WCAN_Navigation_Widget',
50
  * @return void
51
  */
52
  public static function init_widgets() {
53
+ if ( empty( self::$available_widgets ) ) {
54
  return;
55
  }
56
 
57
+ foreach ( self::$available_widgets as $classname ) {
58
+ $filename = 'class-' . strtolower( str_replace( '_', '-', $classname ) );
59
+ $filepath = YITH_WCAN_INC . 'widgets/' . $filename . '.php';
60
 
61
  if ( ! file_exists( $filepath ) ) {
62
  continue;
64
 
65
  if ( false !== strpos( $filename, '-premium' ) ) {
66
  $parent_filename = str_replace( '-premium', '', $filename );
67
+ $parent_filepath = YITH_WCAN_INC . 'widgets/' . $parent_filename . '.php';
68
 
69
  if ( file_exists( $parent_filepath ) ) {
70
+ include_once $parent_filepath;
71
  }
72
  }
73
 
74
+ include_once $filepath;
75
 
76
  if ( class_exists( $classname ) ) {
77
  register_widget( $classname );
includes/{class.yith-wcan.php → class-yith-wcan.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Main class
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product FIlter
7
  * @version 1.3.2
8
  */
9
 
@@ -56,7 +56,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
56
  * @var YITH_WCAN
57
  * @since 4.0.0
58
  */
59
- protected static $_instance = null;
60
 
61
  /**
62
  * Parameter of the term object used to filter shop.
@@ -105,7 +105,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
105
  global $plugin_fw_data;
106
  if ( ! empty( $plugin_fw_data ) ) {
107
  $plugin_fw_file = array_shift( $plugin_fw_data );
108
- require_once( $plugin_fw_file );
109
  }
110
  }
111
  }
@@ -140,30 +140,31 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
140
  $required = apply_filters(
141
  'yith_wcan_required_files',
142
  array(
143
- 'functions.yith-wcan.php',
144
- 'class.yith-wcan-query.php',
145
- 'class.yith-wcan-install.php',
146
- 'class.yith-wcan-filter.php',
147
- 'class.yith-wcan-filter-factory.php',
148
- 'class.yith-wcan-preset.php',
149
- 'class.yith-wcan-presets.php',
150
- 'class.yith-wcan-preset-factory.php',
151
- 'class.yith-wcan-shortcodes.php',
152
- 'class.yith-wcan-widgets.php',
153
- 'class.yith-wcan-admin.php',
154
- 'class.yith-wcan-frontend.php',
155
- 'data-stores/class.yith-wcan-preset-data-store.php',
 
156
  )
157
  );
158
 
159
  foreach ( $required as $file ) {
160
- file_exists( YITH_WCAN_INC . $file ) && require_once( YITH_WCAN_INC . $file );
161
  }
162
 
163
  // basic cli support.
164
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
165
- file_exists( YITH_WCAN_DIR . 'includes/wp-cli/class.yith-wcan-cli-commands.php' ) && require_once YITH_WCAN_DIR . 'includes/wp-cli/class.yith-wcan-cli-commands.php';
166
- file_exists( YITH_WCAN_DIR . 'tools/wp-cli/class.yith-wcan-cli-test-commands.php' ) && require_once YITH_WCAN_DIR . 'tools/wp-cli/class.yith-wcan-cli-test-commands.php';
167
  }
168
  }
169
 
@@ -207,10 +208,10 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
207
  if ( $supported_types ) {
208
  foreach ( $supported_types as $type => $label ) {
209
  $file_name = str_replace( '_', '-', $type );
210
- $file_name = "class.yith-wcan-filter-{$file_name}.php";
211
  $file_path = YITH_WCAN_INC . '/filters/' . $file_name;
212
 
213
- file_exists( $file_path ) && require_once( $file_path );
214
  }
215
  }
216
  }
@@ -244,7 +245,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
244
  $compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
245
 
246
  if ( file_exists( $compatibility_path ) ) {
247
- include_once( $compatibility_path );
248
  }
249
  }
250
 
@@ -256,7 +257,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
256
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
257
  */
258
  public function load_plugin_compatibilities() {
259
- $supported_plugins = $this->_get_compatible_plugins();
260
 
261
  if ( ! empty( $supported_plugins ) ) {
262
  foreach ( $supported_plugins as $plugin => $args ) {
@@ -274,7 +275,7 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
274
  continue;
275
  }
276
 
277
- include_once( $compatibility_path );
278
 
279
  if ( isset( $args['callback'] ) ) {
280
  list( $callback_callable, $callback_args ) = $args['callback'];
@@ -350,21 +351,24 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
350
  * @since 4.0
351
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
352
  */
353
- protected function _get_compatible_plugins() {
354
  if ( empty( $this->supported_plugins ) ) {
355
  $this->supported_plugins = array(
356
- 'ultimate-member' => array(
357
  'check' => array( 'class_exists', array( 'UM_API' ) ),
358
  ),
359
- 'qtranslate-x' => array(
360
  'check' => array( 'class_exists', array( 'QTX_Translator' ) ),
361
  ),
362
- 'wpml' => array(
363
  'check' => array( 'class_exists', array( 'Sitepress' ) ),
364
  ),
365
  'yith-woocommerce-booking' => array(
366
  'check' => array( 'class_exists', array( 'YITH_WCBK' ) ),
367
  ),
 
 
 
368
  );
369
  }
370
 
@@ -382,11 +386,11 @@ if ( ! class_exists( 'YITH_WCAN' ) ) {
382
  if ( class_exists( 'YITH_WCAN_Premium' ) ) {
383
  return YITH_WCAN_Premium::instance();
384
  } else {
385
- if ( is_null( self::$_instance ) ) {
386
- self::$_instance = new self();
387
  }
388
 
389
- return self::$_instance;
390
  }
391
  }
392
  }
@@ -400,8 +404,7 @@ if ( ! function_exists( 'YITH_WCAN' ) ) {
400
  * @since 4.0.0
401
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
402
  */
403
- function YITH_WCAN() {
404
  return YITH_WCAN::instance();
405
  }
406
  }
407
-
3
  * Main class
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes
7
  * @version 1.3.2
8
  */
9
 
56
  * @var YITH_WCAN
57
  * @since 4.0.0
58
  */
59
+ protected static $instance = null;
60
 
61
  /**
62
  * Parameter of the term object used to filter shop.
105
  global $plugin_fw_data;
106
  if ( ! empty( $plugin_fw_data ) ) {
107
  $plugin_fw_file = array_shift( $plugin_fw_data );
108
+ require_once $plugin_fw_file;
109
  }
110
  }
111
  }
140
  $required = apply_filters(
141
  'yith_wcan_required_files',
142
  array(
143
+ 'functions-yith-wcan.php',
144
+ 'class-yith-wcan-cache-helper.php',
145
+ 'class-yith-wcan-query.php',
146
+ 'class-yith-wcan-install.php',
147
+ 'class-yith-wcan-filter.php',
148
+ 'class-yith-wcan-filter-factory.php',
149
+ 'class-yith-wcan-preset.php',
150
+ 'class-yith-wcan-presets.php',
151
+ 'class-yith-wcan-preset-factory.php',
152
+ 'class-yith-wcan-shortcodes.php',
153
+ 'class-yith-wcan-widgets.php',
154
+ 'class-yith-wcan-admin.php',
155
+ 'class-yith-wcan-frontend.php',
156
+ 'data-stores/class-yith-wcan-preset-data-store.php',
157
  )
158
  );
159
 
160
  foreach ( $required as $file ) {
161
+ file_exists( YITH_WCAN_INC . $file ) && require_once YITH_WCAN_INC . $file;
162
  }
163
 
164
  // basic cli support.
165
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
166
+ file_exists( YITH_WCAN_DIR . 'includes/wp-cli/class-yith-wcan-cli-commands.php' ) && require_once YITH_WCAN_DIR . 'includes/wp-cli/class-yith-wcan-cli-commands.php';
167
+ file_exists( YITH_WCAN_DIR . 'tools/wp-cli/class-yith-wcan-cli-test-commands.php' ) && require_once YITH_WCAN_DIR . 'tools/wp-cli/class-yith-wcan-cli-test-commands.php';
168
  }
169
  }
170
 
208
  if ( $supported_types ) {
209
  foreach ( $supported_types as $type => $label ) {
210
  $file_name = str_replace( '_', '-', $type );
211
+ $file_name = "class-yith-wcan-filter-{$file_name}.php";
212
  $file_path = YITH_WCAN_INC . '/filters/' . $file_name;
213
 
214
+ file_exists( $file_path ) && require_once $file_path;
215
  }
216
  }
217
  }
245
  $compatibility_path = YITH_WCAN_INC . "compatibility/themes/{$theme}/{$theme}.php";
246
 
247
  if ( file_exists( $compatibility_path ) ) {
248
+ include_once $compatibility_path;
249
  }
250
  }
251
 
257
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
258
  */
259
  public function load_plugin_compatibilities() {
260
+ $supported_plugins = $this->get_compatible_plugins();
261
 
262
  if ( ! empty( $supported_plugins ) ) {
263
  foreach ( $supported_plugins as $plugin => $args ) {
275
  continue;
276
  }
277
 
278
+ include_once $compatibility_path;
279
 
280
  if ( isset( $args['callback'] ) ) {
281
  list( $callback_callable, $callback_args ) = $args['callback'];
351
  * @since 4.0
352
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
353
  */
354
+ protected function get_compatible_plugins() {
355
  if ( empty( $this->supported_plugins ) ) {
356
  $this->supported_plugins = array(
357
+ 'ultimate-member' => array(
358
  'check' => array( 'class_exists', array( 'UM_API' ) ),
359
  ),
360
+ 'qtranslate-x' => array(
361
  'check' => array( 'class_exists', array( 'QTX_Translator' ) ),
362
  ),
363
+ 'wpml' => array(
364
  'check' => array( 'class_exists', array( 'Sitepress' ) ),
365
  ),
366
  'yith-woocommerce-booking' => array(
367
  'check' => array( 'class_exists', array( 'YITH_WCBK' ) ),
368
  ),
369
+ 'yith-woocommerce-colors-label-variations' => array(
370
+ 'check' => array( 'class_exists', array( 'YITH_WCCL' ) ),
371
+ ),
372
  );
373
  }
374
 
386
  if ( class_exists( 'YITH_WCAN_Premium' ) ) {
387
  return YITH_WCAN_Premium::instance();
388
  } else {
389
+ if ( is_null( self::$instance ) ) {
390
+ self::$instance = new self();
391
  }
392
 
393
+ return self::$instance;
394
  }
395
  }
396
  }
404
  * @since 4.0.0
405
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
406
  */
407
+ function YITH_WCAN() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
408
  return YITH_WCAN::instance();
409
  }
410
  }
 
includes/compatibility/plugins/qtranslate-x/qtranslate-x.php CHANGED
@@ -3,7 +3,7 @@
3
  * QTranslateX plugin support
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product FIlter
7
  * @version 1.3.2
8
  */
9
 
3
  * QTranslateX plugin support
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Compatibility
7
  * @version 1.3.2
8
  */
9
 
includes/compatibility/plugins/ultimate-member/ultimate-member.php CHANGED
@@ -3,7 +3,7 @@
3
  * Ultimate member plugin support
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.0.0
8
  */
9
 
3
  * Ultimate member plugin support
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Compatibility
7
  * @version 4.0.0
8
  */
9
 
includes/compatibility/plugins/wpml/wpml.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
  /**
3
  * WPML plugin support
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product FIlter
7
  * @version 4.0.1
8
  */
9
 
@@ -190,7 +190,7 @@ class WPML_Language_Metabox {
190
  foreach ( $filters as $filter ) {
191
  if ( $filter->has_terms() ) {
192
  $terms_options = $filter->get_terms_options();
193
- $new_terms = array();
194
 
195
  foreach ( $terms_options as $term_id => $term_options ) {
196
  $translated_term_id = apply_filters( 'wpml_object_id', $term_id, $filter->get_taxonomy(), false, $lang );
@@ -236,7 +236,7 @@ class WPML_Language_Metabox {
236
  $this->panel_slug = YITH_WCAN()->admin->get_panel_page();
237
  }
238
 
239
- return ! empty( $_GET['page'] ) && ! empty( $_GET['preset'] ) && $this->get_panel_slug() === $_GET['page'];
240
  }
241
 
242
  /**
1
+ <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
  /**
3
  * WPML plugin support
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Compatibility
7
  * @version 4.0.1
8
  */
9
 
190
  foreach ( $filters as $filter ) {
191
  if ( $filter->has_terms() ) {
192
  $terms_options = $filter->get_terms_options();
193
+ $new_terms = array();
194
 
195
  foreach ( $terms_options as $term_id => $term_options ) {
196
  $translated_term_id = apply_filters( 'wpml_object_id', $term_id, $filter->get_taxonomy(), false, $lang );
236
  $this->panel_slug = YITH_WCAN()->admin->get_panel_page();
237
  }
238
 
239
+ return ! empty( $_GET['page'] ) && ! empty( $_GET['preset'] ) && $this->get_panel_slug() === $_GET['page']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
240
  }
241
 
242
  /**
includes/compatibility/plugins/yith-woocommerce-booking/yith-woocommerce-booking.php CHANGED
@@ -1,9 +1,9 @@
1
- <?php
2
  /**
3
  * YITH WooCommerce Booking plugin support
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.1.0
8
  */
9
 
@@ -25,7 +25,7 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
25
  * @var YITH_WCAN_Booking_Compatibility
26
  * @since 4.0.0
27
  */
28
- protected static $_instance = null;
29
 
30
  /**
31
  * Init integration, hooking all required methods
@@ -45,7 +45,9 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
45
  * @return array Filtered post__in param.
46
  */
47
  public function filter_post_in( $post_in ) {
48
- if ( ! isset( $_REQUEST['yith-wcbk-booking-search'] ) || 'search-bookings' !== $_REQUEST['yith-wcbk-booking-search'] ) {
 
 
49
  return $post_in;
50
  }
51
 
@@ -55,7 +57,7 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
55
  return $post_in;
56
  }
57
 
58
- $product_ids = $search_helper->search_booking_products( $_REQUEST );
59
 
60
  if ( empty( $post_in ) && ! empty( $product_ids ) ) {
61
  return $product_ids;
@@ -81,7 +83,9 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
81
  * @return array Filtered supported vars.
82
  */
83
  public function filter_supported_query_vars( $supported_params ) {
84
- if ( ! function_exists( 'YITH_WCBK' ) || ! isset( $_REQUEST['yith-wcbk-booking-search'] ) || 'search-bookings' !== $_REQUEST['yith-wcbk-booking-search'] ) {
 
 
85
  return $supported_params;
86
  }
87
 
@@ -125,11 +129,11 @@ if ( ! class_exists( 'YITH_WCAN_Booking_Compatibility' ) ) {
125
  * @return YITH_WCAN_Booking_Compatibility Class unique instance
126
  */
127
  public static function instance() {
128
- if ( is_null( self::$_instance ) ) {
129
- self::$_instance = new self();
130
  }
131
 
132
- return self::$_instance;
133
  }
134
  }
135
  }
1
+ <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
  /**
3
  * YITH WooCommerce Booking plugin support
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Compatibility
7
  * @version 4.1.0
8
  */
9
 
25
  * @var YITH_WCAN_Booking_Compatibility
26
  * @since 4.0.0
27
  */
28
+ protected static $instance = null;
29
 
30
  /**
31
  * Init integration, hooking all required methods
45
  * @return array Filtered post__in param.
46
  */
47
  public function filter_post_in( $post_in ) {
48
+ $request = $_REQUEST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
49
+
50
+ if ( ! isset( $request['yith-wcbk-booking-search'] ) || 'search-bookings' !== $request['yith-wcbk-booking-search'] ) {
51
  return $post_in;
52
  }
53
 
57
  return $post_in;
58
  }
59
 
60
+ $product_ids = $search_helper->search_booking_products( $request );
61
 
62
  if ( empty( $post_in ) && ! empty( $product_ids ) ) {
63
  return $product_ids;
83
  * @return array Filtered supported vars.
84
  */
85
  public function filter_supported_query_vars( $supported_params ) {
86
+ $request = $_REQUEST; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
87
+
88
+ if ( ! function_exists( 'YITH_WCBK' ) || ! isset( $request['yith-wcbk-booking-search'] ) || 'search-bookings' !== $request['yith-wcbk-booking-search'] ) {
89
  return $supported_params;
90
  }
91
 
129
  * @return YITH_WCAN_Booking_Compatibility Class unique instance
130
  */
131
  public static function instance() {
132
+ if ( is_null( self::$instance ) ) {
133
+ self::$instance = new self();
134
  }
135
 
136
+ return self::$instance;
137
  }
138
  }
139
  }
includes/compatibility/plugins/yith-woocommerce-colors-label-variations/yith-woocommerce-colors-label-variations.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
+ /**
3
+ * YITH WooCommerce Color Label Variations plugin support
4
+ *
5
+ * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Compatibility
7
+ * @version 4.1.1
8
+ */
9
+
10
+ if ( ! defined( 'YITH_WCAN' ) ) {
11
+ exit;
12
+ } // Exit if accessed directly
13
+
14
+ if ( ! class_exists( 'YITH_WCAN_Color_Label_Compatibility' ) ) {
15
+ /**
16
+ * Class that implements methods required to integrate single variations of YITH WC Color and Labels in YITH WCAN Filters.
17
+ *
18
+ * @since 4.1.1
19
+ */
20
+ class YITH_WCAN_Color_Label_Compatibility {
21
+
22
+ /**
23
+ * Main instance
24
+ *
25
+ * @var YITH_WCAN_Color_Label_Compatibility
26
+ * @since 4.1.1
27
+ */
28
+ protected static $instance = null;
29
+
30
+ /**
31
+ * Init integration, hooking all required methods
32
+ *
33
+ * @return void
34
+ */
35
+ public function init() {
36
+ // clear transients when C&L options change.
37
+ add_action( 'update_option_yith-wccl-show-single-variations-loop', array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ) );
38
+ add_action( 'update_option_yith-wccl-hide-parent-products-loop', array( 'YITH_WCAN_Cache_Helper', 'delete_transients' ) );
39
+
40
+ // add support for variations in query, when C&L asks for it.
41
+ if ( 'yes' === get_option( 'yith-wccl-show-single-variations-loop', 'no' ) ) {
42
+ add_filter( 'yith_wcan_product_ids_in_stock_args', array( $this, 'add_variations_ids_in_stock' ) );
43
+ add_filter( 'yith_wcan_filtered_products_query', array( $this, 'add_variation_query_to_filtered_products' ) );
44
+ }
45
+
46
+ }
47
+
48
+ /**
49
+ * Filters post in for YITH WCAN queries, including post_in parameter as computed by Booking plugin
50
+ *
51
+ * @param array $query_args Array of products types.
52
+ * @return array Query arguments.
53
+ */
54
+ public function add_variations_ids_in_stock( $query_args ) {
55
+ // add variation among valid product types.
56
+ $product_types = array_merge(
57
+ array_keys( wc_get_product_types() ),
58
+ array(
59
+ 'variation',
60
+ )
61
+ );
62
+
63
+ // remove variable type if necessary.
64
+ $variable_index = array_search( 'variable', $product_types, true );
65
+
66
+ if ( 'yes' === get_option( 'yith-wccl-hide-parent-products-loop', 'yes' ) && false !== $variable_index ) {
67
+ unset( $product_types[ $variable_index ] );
68
+ }
69
+
70
+ $query_args['type'] = $product_types;
71
+
72
+ return $query_args;
73
+ }
74
+
75
+ /**
76
+ * Add_variation_query_to_filtered_products
77
+ *
78
+ * @param array $query_args Array of products types.
79
+ * @return array Product query arguments.
80
+ */
81
+ public function add_variation_query_to_filtered_products( $query_args ) {
82
+ $query_args['post_type'] = array(
83
+ 'product',
84
+ 'product_variation',
85
+ );
86
+
87
+ return $query_args;
88
+ }
89
+
90
+ /**
91
+ * Compatibility class instance
92
+ *
93
+ * @return YITH_WCAN_Color_Label_Compatibility Class unique instance
94
+ */
95
+ public static function instance() {
96
+
97
+ if ( is_null( self::$instance ) ) {
98
+ self::$instance = new self();
99
+ }
100
+
101
+ return self::$instance;
102
+ }
103
+ }
104
+ }
105
+
106
+ // init compatibility.
107
+ if ( defined( 'YITH_WCCL_PREMIUM' ) ) {
108
+ YITH_WCAN_Color_Label_Compatibility::instance()->init();
109
+ }
includes/compatibility/themes/hello-elementor/hello-elementor.php CHANGED
@@ -25,4 +25,4 @@ if ( ! function_exists( 'yith_wcan_hello_elementor_content_selector' ) ) {
25
  }
26
 
27
  add_filter( 'yith_wcan_content_selector', 'yith_wcan_hello_elementor_content_selector' );
28
- }
25
  }
26
 
27
  add_filter( 'yith_wcan_content_selector', 'yith_wcan_hello_elementor_content_selector' );
28
+ }
includes/data-stores/{class.yith-wcan-preset-data-store.php → class-yith-wcan-preset-data-store.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Filter Preset data store
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 3.0.0
8
  */
9
 
@@ -23,7 +23,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
23
  *
24
  * @var array
25
  */
26
- protected $_meta_key_to_props = array(
27
  '_selector' => 'selector',
28
  '_enabled' => 'enabled',
29
  '_filters' => 'filters',
@@ -95,14 +95,14 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
95
  $posts_object = get_posts(
96
  array_merge(
97
  array(
98
- 'post_type' => YITH_WCAN_Presets()->get_post_type(),
99
  'post_status' => 'publish',
100
  'numberposts' => 1,
101
  ),
102
  $data->get_id() ? array( 'p' => $data->get_id() ) : array( 'name' => $data->get_slug() )
103
  )
104
  );
105
- $post_object = array_shift( $posts_object );
106
 
107
  if ( ! $post_object || YITH_WCAN_Presets()->get_post_type() !== $post_object->post_type ) {
108
  throw new Exception( _x( 'Invalid preset.', '[Generic] Error that happens when trying to read a filter preset that does not exist', 'yith-woocommerce-ajax-navigation' ) );
@@ -251,7 +251,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
251
  protected function read_post_meta( &$preset, $force = false ) {
252
  $id = $preset->get_id();
253
  $post_meta_values = get_post_meta( $id );
254
- $meta_key_to_props = $this->_meta_key_to_props;
255
 
256
  $set_props = array();
257
 
@@ -273,7 +273,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
273
  * @since 4.0.0
274
  */
275
  protected function update_post_meta( &$preset, $force = false ) {
276
- $meta_key_to_props = $this->_meta_key_to_props;
277
 
278
  $props_to_update = $force ? $meta_key_to_props : $this->get_props_to_update( $preset, $meta_key_to_props );
279
 
@@ -337,10 +337,10 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
337
  $args = wp_parse_args( $args, $default );
338
 
339
  $query_args = array(
340
- 'post_type' => YITH_WCAN_Presets()->get_post_type(),
341
- 'fields' => 'ids',
342
- 'post_status' => 'publish',
343
- 'posts_per_page' => -1,
344
  'suppress_filters' => false,
345
  );
346
 
@@ -377,7 +377,7 @@ if ( ! class_exists( 'YITH_WCAN_Preset_Data_Store' ) ) {
377
  public function items() {
378
  global $wpdb;
379
 
380
- $results = $wpdb->get_results(
381
  $wpdb->prepare(
382
  "SELECT post_name, post_title FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
383
  YITH_WCAN_Presets()->get_post_type(),
3
  * Filter Preset data store
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\DataStore
7
  * @version 3.0.0
8
  */
9
 
23
  *
24
  * @var array
25
  */
26
+ protected $meta_key_to_props = array(
27
  '_selector' => 'selector',
28
  '_enabled' => 'enabled',
29
  '_filters' => 'filters',
95
  $posts_object = get_posts(
96
  array_merge(
97
  array(
98
+ 'post_type' => YITH_WCAN_Presets()->get_post_type(),
99
  'post_status' => 'publish',
100
  'numberposts' => 1,
101
  ),
102
  $data->get_id() ? array( 'p' => $data->get_id() ) : array( 'name' => $data->get_slug() )
103
  )
104
  );
105
+ $post_object = array_shift( $posts_object );
106
 
107
  if ( ! $post_object || YITH_WCAN_Presets()->get_post_type() !== $post_object->post_type ) {
108
  throw new Exception( _x( 'Invalid preset.', '[Generic] Error that happens when trying to read a filter preset that does not exist', 'yith-woocommerce-ajax-navigation' ) );
251
  protected function read_post_meta( &$preset, $force = false ) {
252
  $id = $preset->get_id();
253
  $post_meta_values = get_post_meta( $id );
254
+ $meta_key_to_props = $this->meta_key_to_props;
255
 
256
  $set_props = array();
257
 
273
  * @since 4.0.0
274
  */
275
  protected function update_post_meta( &$preset, $force = false ) {
276
+ $meta_key_to_props = $this->meta_key_to_props;
277
 
278
  $props_to_update = $force ? $meta_key_to_props : $this->get_props_to_update( $preset, $meta_key_to_props );
279
 
337
  $args = wp_parse_args( $args, $default );
338
 
339
  $query_args = array(
340
+ 'post_type' => YITH_WCAN_Presets()->get_post_type(),
341
+ 'fields' => 'ids',
342
+ 'post_status' => 'publish',
343
+ 'posts_per_page' => -1,
344
  'suppress_filters' => false,
345
  );
346
 
377
  public function items() {
378
  global $wpdb;
379
 
380
+ $results = $wpdb->get_results( // phpcs:ignore WordPress.DB.DirectDatabaseQuery
381
  $wpdb->prepare(
382
  "SELECT post_name, post_title FROM {$wpdb->posts} WHERE post_type = %s AND post_status = %s",
383
  YITH_WCAN_Presets()->get_post_type(),
includes/elementor/{class.yith-wcan-elementor-filters.php → class-yith-wcan-elementor-filters.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Filter Preset widget for Elementor
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.0.0
8
  */
9
 
@@ -82,8 +82,8 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Filters' ) ) {
82
  * @since 1.0.0
83
  * @access protected
84
  */
85
- protected function _register_controls() {
86
- $presets = YITH_WCAN_Preset_Factory::list_presets();
87
  $presets_options = array_merge(
88
  array(
89
  '' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
3
  * Filter Preset widget for Elementor
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes\Elementor
7
  * @version 4.0.0
8
  */
9
 
82
  * @since 1.0.0
83
  * @access protected
84
  */
85
+ protected function _register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
86
+ $presets = YITH_WCAN_Preset_Factory::list_presets();
87
  $presets_options = array_merge(
88
  array(
89
  '' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
includes/elementor/{class.yith-wcan-elementor-reset-button.php → class-yith-wcan-elementor-reset-button.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Reset button widget for Elementor
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.0.0
8
  */
9
 
@@ -82,7 +82,7 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
82
  * @since 1.0.0
83
  * @access protected
84
  */
85
- protected function _register_controls() {
86
  $this->start_controls_section(
87
  'fields_section',
88
  array(
@@ -94,18 +94,18 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
94
  $this->add_control(
95
  'description',
96
  array(
97
- 'type' => Controls_Manager::RAW_HTML,
98
  'show_label' => false,
99
- 'raw' => '<p style="line-height: 1.2; margin: 15px 0;">' .
100
- _x( 'This widget will display "Filters reset" button, wherever it is placed', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
101
- '</p>' .
102
- '<p style="line-height: 1.2; margin: 15px 0;">' .
103
- _x( 'It will allow users to reset the filer selection; it will only appear when there is an active filter.', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
104
- '</p>' .
105
- '</p>' .
106
- '<small style="color: #cdcdcd;">' .
107
- _x( 'You can use this block to place "Reset filters" button inside your page, when "Reset button position" option won\'t work for your product\'s loop', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
108
- '</small>',
109
  )
110
  );
111
 
@@ -128,11 +128,11 @@ if ( ! class_exists( 'YITH_WCAN_Elementor_Reset_Button' ) ) {
128
  * @since 1.0.0
129
  * @access protected
130
  */
131
- protected function _content_template() {
132
  $frontend = new YITH_WCAN_Frontend();
133
 
134
- $_GET['min_price'] = 10;
135
- $_GET['max_price'] = 100;
136
  $_GET['onsale_filter'] = 1;
137
 
138
  $_REQUEST[ YITH_WCAN_Query()->get_query_param() ] = 1;
3
  * Reset button widget for Elementor
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes\Elementor
7
  * @version 4.0.0
8
  */
9
 
82
  * @since 1.0.0
83
  * @access protected
84
  */
85
+ protected function _register_controls() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
86
  $this->start_controls_section(
87
  'fields_section',
88
  array(
94
  $this->add_control(
95
  'description',
96
  array(
97
+ 'type' => Controls_Manager::RAW_HTML,
98
  'show_label' => false,
99
+ 'raw' => '<p style="line-height: 1.2; margin: 15px 0;">' .
100
+ _x( 'This widget will display "Filters reset" button, wherever it is placed', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
101
+ '</p>' .
102
+ '<p style="line-height: 1.2; margin: 15px 0;">' .
103
+ _x( 'It will allow users to reset the filer selection; it will only appear when there is an active filter.', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
104
+ '</p>' .
105
+ '</p>' .
106
+ '<small style="color: #cdcdcd;">' .
107
+ _x( 'You can use this block to place "Reset filters" button inside your page, when "Reset button position" option won\'t work for your product\'s loop', '[ELEMENTOR] Widget description', 'yith-woocommerce-ajax-navigation' ) .
108
+ '</small>',
109
  )
110
  );
111
 
128
  * @since 1.0.0
129
  * @access protected
130
  */
131
+ protected function _content_template() { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
132
  $frontend = new YITH_WCAN_Frontend();
133
 
134
+ $_GET['min_price'] = 10;
135
+ $_GET['max_price'] = 100;
136
  $_GET['onsale_filter'] = 1;
137
 
138
  $_REQUEST[ YITH_WCAN_Query()->get_query_param() ] = 1;
includes/filters/{class.yith-wcan-filter-tax.php → class-yith-wcan-filter-tax.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Offers method specific to Taxonomy filter
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product FIlter
9
  * @version 4.0.0
10
  */
11
 
@@ -26,7 +26,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
26
  *
27
  * @var array
28
  */
29
- protected $_formatted_terms;
30
 
31
  /**
32
  * Checks whether current filter is active
@@ -93,10 +93,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
93
  * @return string Item template.
94
  */
95
  public function render_item( $term, $term_options = array() ) {
96
- $design = $this->get_filter_design();
97
  $default_callback = "render_item_{$design}";
98
- $customize_terms = $this->customize_terms();
99
- $taxonomy = $this->get_taxonomy();
 
100
 
101
  if ( ! $term instanceof WP_Term ) {
102
  $term = get_term( $term, $taxonomy );
@@ -121,10 +122,10 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
121
  if ( ! empty( $term_options['children'] ) ) {
122
  $hierarchy = $this->get_hierarchical();
123
 
124
- if ( 'collapsed' == $hierarchy ) {
125
  $term_options['additional_classes'][] = 'hierarchy-collapsable';
126
  $term_options['additional_classes'][] = 'closed';
127
- } elseif ( 'expanded' == $hierarchy ) {
128
  $term_options['additional_classes'][] = 'hierarchy-collapsable';
129
  $term_options['additional_classes'][] = 'opened';
130
  }
@@ -135,7 +136,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
135
  }
136
 
137
  // if we're using terms' default option, override any custom setting user may have entered.
138
- if ( ! $customize_terms ) {
139
  $term_options['label'] = $term->name;
140
  $term_options['tooltip'] = '';
141
  $term_options['color_1'] = '';
@@ -148,7 +149,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
148
  $term_options = apply_filters( 'yith_wcan_tax_filter_item_args', $term_options, $term->term_id, $this );
149
 
150
  // specific filtering for attributes.
151
- if ( 0 === strpos( $taxonomy, 'pa_' ) && ! $customize_terms ) {
152
  $term_options = apply_filters( 'yith_wcan_attribute_filter_item_args', $term_options, $term->term_id, $this );
153
  }
154
 
@@ -161,7 +162,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
161
  }
162
 
163
  // implode additional classes.
164
- $term_options['additional_classes'] = implode( ' ', apply_filters( 'yith_wcan_filter_tax_additional_item_classes', $term_options['additional_classes'] ) );
165
 
166
  if ( method_exists( $this, $default_callback ) ) {
167
  $item = $this->{$default_callback}( $term, $term_options );
@@ -262,15 +263,15 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
262
  $atts = array_merge(
263
  $term_options,
264
  array(
265
- 'filter' => $this,
266
- 'preset' => $this->get_preset(),
267
- 'term' => $term,
268
- 'show_count' => $this->show_count(),
269
  'allow_multiple' => 'yes' === $this->get_multiple(),
270
- 'relation' => $this->get_relation(),
271
- 'adoptive' => $this->get_adoptive(),
272
- 'item_id' => "filter_{$this->get_preset()->get_id()}_{$this->get_id()}_{$term->term_id}",
273
- 'item_name' => "filter[{$this->get_preset()->get_id()}][{$this->get_id()}]",
274
  )
275
  );
276
 
@@ -287,7 +288,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
287
  public function render_hierarchy( $children, $level = 0 ) {
288
  $hierarchy = '';
289
 
290
- if ( empty( $children ) || ! in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ) ) || ! in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ) ) ) {
291
  return $hierarchy;
292
  }
293
 
@@ -299,7 +300,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
299
 
300
  foreach ( $children as $term_id => $term_options ) {
301
  $term_options['level'] = $level;
302
- $hierarchy .= $this->render_item( $term_id, $term_options );
303
  }
304
 
305
  if ( 'select' !== $this->get_filter_design() ) {
@@ -349,14 +350,14 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
349
  * @return array term_id=>term_options
350
  */
351
  public function get_formatted_terms() {
352
- if ( ! empty( $this->_formatted_terms ) ) {
353
- return $this->_formatted_terms;
354
  }
355
 
356
  $hide_empty = 'yes' === yith_wcan_get_option( 'yith_wcan_hide_empty_terms', 'no' );
357
- $terms = $this->get_terms_options();
358
- $children = array();
359
- $result = array();
360
 
361
  $sorted_terms = get_terms(
362
  array_merge(
@@ -369,11 +370,11 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
369
  'orderby' => $this->get_order_by(),
370
  ),
371
  $this->use_all_terms() ? array() : array(
372
- 'include' => array_keys( $terms ),
373
  ),
374
  'term_order' === $this->get_order_by() ? array(
375
  'orderby' => 'meta_value_num',
376
- 'meta_key' => 'order',
377
  ) : array(
378
  'orderby' => $this->get_order_by(),
379
  ),
@@ -390,7 +391,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
390
  $term = isset( $terms[ $term_id ] ) ? $terms[ $term_id ] : $this->get_default_term_options();
391
 
392
  // set hierarchical data.
393
- $children_result = $this->_get_term_children( $term_id );
394
 
395
  $term['children'] = $children_result['formatted_children'];
396
  $term['products'] = $children_result['products'];
@@ -399,7 +400,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
399
  $term['count'] = count( $term['products'] );
400
 
401
  // if we need to remove empty terms, skip here when count is 0.
402
- if ( $this->_is_term_hidden( $term ) ) {
403
  continue;
404
  }
405
 
@@ -410,9 +411,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
410
  }
411
 
412
  // remove duplicated results, when showing hierarchical layout.
413
- if ( ! empty( $children ) && ! empty( $result ) && in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ) ) && in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ) ) ) {
414
  foreach ( $result as $term_id => $term_options ) {
415
- if ( ! in_array( $term_id, $children ) ) {
416
  continue;
417
  }
418
 
@@ -421,7 +422,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
421
  }
422
  }
423
 
424
- $this->_formatted_terms = $result;
425
 
426
  return $result;
427
  }
@@ -450,23 +451,25 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
450
  * @param int $term_id Term id.
451
  * @return array Children hierarchy with options
452
  */
453
- protected function _get_term_children( $term_id ) {
454
- $terms = $this->get_terms_options();
455
  $formatted_children = array();
456
- $children = array();
457
- $products = $this->_get_term_products( $term_id );
458
 
459
  $child_terms = get_terms(
460
  array_merge(
461
  array(
462
  'taxonomy' => $this->get_taxonomy(),
463
- 'include' => array_keys( $terms ),
464
  'parent' => $term_id,
465
  'order' => $this->get_order(),
466
  'fields' => 'ids',
467
  ),
 
 
 
468
  'term_order' === $this->get_order_by() ? array(
469
- 'orderby' => 'include',
470
  ) : array(
471
  'orderby' => $this->get_order_by(),
472
  )
@@ -474,20 +477,20 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
474
  );
475
 
476
  foreach ( $child_terms as $child_id ) {
477
- if ( ! isset( $terms[ $child_id ] ) ) {
478
  continue;
479
  }
480
 
481
- $child = $terms[ $child_id ];
482
 
483
  // set hierarchical data.
484
- $children_result = $this->_get_term_children( $child_id );
485
  $child['children'] = $children_result['formatted_children'];
486
 
487
  // set count.
488
  $child['count'] = count( $children_result['products'] );
489
 
490
- if ( $this->_is_term_hidden( $child ) ) {
491
  continue;
492
  }
493
 
@@ -499,9 +502,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
499
  }
500
 
501
  return array(
502
- 'children' => $children,
503
  'formatted_children' => $formatted_children,
504
- 'products' => $products,
505
  );
506
  }
507
 
@@ -511,9 +514,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
511
  * @param int $term_id Term id.
512
  * @return array Array of matcihing product ids.
513
  */
514
- protected function _get_term_products( $term_id ) {
515
  $filter_by_current_values = 'yes' === $this->get_multiple() && 'and' === $this->get_relation();
516
- $products = YITH_WCAN_Query()->get_query_relevant_term_objects( $this->get_taxonomy(), $term_id, $filter_by_current_values );
517
 
518
  return $products;
519
  }
@@ -524,8 +527,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
524
  * @param int $term_id Term id.
525
  * @return int Count of matching product ids.
526
  */
527
- protected function _count_term_products( $term_id ) {
528
- return count( $this->_get_term_products( $term_id ) );
529
  }
530
 
531
  /**
@@ -534,7 +537,7 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Tax' ) ) {
534
  * @param array $term_options Array describing term and its options.
535
  * @return bool Whther to hide term or not
536
  */
537
- protected function _is_term_hidden( $term_options ) {
538
  // hide when term doesn't match current selection.
539
  if ( 'hide' === $this->get_adoptive() && ! $term_options['count'] && empty( $term_options['children'] ) ) {
540
  return true;
5
  * Offers method specific to Taxonomy filter
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes\Filters
9
  * @version 4.0.0
10
  */
11
 
26
  *
27
  * @var array
28
  */
29
+ protected $formatted_terms;
30
 
31
  /**
32
  * Checks whether current filter is active
93
  * @return string Item template.
94
  */
95
  public function render_item( $term, $term_options = array() ) {
96
+ $design = $this->get_filter_design();
97
  $default_callback = "render_item_{$design}";
98
+ $use_all_terms = $this->use_all_terms();
99
+ $customize_terms = $this->customize_terms();
100
+ $taxonomy = $this->get_taxonomy();
101
 
102
  if ( ! $term instanceof WP_Term ) {
103
  $term = get_term( $term, $taxonomy );
122
  if ( ! empty( $term_options['children'] ) ) {
123
  $hierarchy = $this->get_hierarchical();
124
 
125
+ if ( 'collapsed' === $hierarchy ) {
126
  $term_options['additional_classes'][] = 'hierarchy-collapsable';
127
  $term_options['additional_classes'][] = 'closed';
128
+ } elseif ( 'expanded' === $hierarchy ) {
129
  $term_options['additional_classes'][] = 'hierarchy-collapsable';
130
  $term_options['additional_classes'][] = 'opened';
131
  }
136
  }
137
 
138
  // if we're using terms' default option, override any custom setting user may have entered.
139
+ if ( $use_all_terms || ! $customize_terms ) {
140
  $term_options['label'] = $term->name;
141
  $term_options['tooltip'] = '';
142
  $term_options['color_1'] = '';
149
  $term_options = apply_filters( 'yith_wcan_tax_filter_item_args', $term_options, $term->term_id, $this );
150
 
151
  // specific filtering for attributes.
152
+ if ( 0 === strpos( $taxonomy, 'pa_' ) && ( $use_all_terms || ! $customize_terms ) ) {
153
  $term_options = apply_filters( 'yith_wcan_attribute_filter_item_args', $term_options, $term->term_id, $this );
154
  }
155
 
162
  }
163
 
164
  // implode additional classes.
165
+ $term_options['additional_classes'] = implode( ' ', apply_filters( 'yith_wcan_filter_tax_additional_item_classes', $term_options['additional_classes'], $this ) );
166
 
167
  if ( method_exists( $this, $default_callback ) ) {
168
  $item = $this->{$default_callback}( $term, $term_options );
263
  $atts = array_merge(
264
  $term_options,
265
  array(
266
+ 'filter' => $this,
267
+ 'preset' => $this->get_preset(),
268
+ 'term' => $term,
269
+ 'show_count' => $this->show_count(),
270
  'allow_multiple' => 'yes' === $this->get_multiple(),
271
+ 'relation' => $this->get_relation(),
272
+ 'adoptive' => $this->get_adoptive(),
273
+ 'item_id' => "filter_{$this->get_preset()->get_id()}_{$this->get_id()}_{$term->term_id}",
274
+ 'item_name' => "filter[{$this->get_preset()->get_id()}][{$this->get_id()}]",
275
  )
276
  );
277
 
288
  public function render_hierarchy( $children, $level = 0 ) {
289
  $hierarchy = '';
290
 
291
+ if ( empty( $children ) || ! in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ), true ) || ! in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ), true ) ) {
292
  return $hierarchy;
293
  }
294
 
300
 
301
  foreach ( $children as $term_id => $term_options ) {
302
  $term_options['level'] = $level;
303
+ $hierarchy .= $this->render_item( $term_id, $term_options );
304
  }
305
 
306
  if ( 'select' !== $this->get_filter_design() ) {
350
  * @return array term_id=>term_options
351
  */
352
  public function get_formatted_terms() {
353
+ if ( ! empty( $this->formatted_terms ) ) {
354
+ return $this->formatted_terms;
355
  }
356
 
357
  $hide_empty = 'yes' === yith_wcan_get_option( 'yith_wcan_hide_empty_terms', 'no' );
358
+ $terms = $this->get_terms_options();
359
+ $children = array();
360
+ $result = array();
361
 
362
  $sorted_terms = get_terms(
363
  array_merge(
370
  'orderby' => $this->get_order_by(),
371
  ),
372
  $this->use_all_terms() ? array() : array(
373
+ 'include' => array_keys( $terms ),
374
  ),
375
  'term_order' === $this->get_order_by() ? array(
376
  'orderby' => 'meta_value_num',
377
+ 'meta_key' => 'order', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
378
  ) : array(
379
  'orderby' => $this->get_order_by(),
380
  ),
391
  $term = isset( $terms[ $term_id ] ) ? $terms[ $term_id ] : $this->get_default_term_options();
392
 
393
  // set hierarchical data.
394
+ $children_result = $this->get_term_children( $term_id );
395
 
396
  $term['children'] = $children_result['formatted_children'];
397
  $term['products'] = $children_result['products'];
400
  $term['count'] = count( $term['products'] );
401
 
402
  // if we need to remove empty terms, skip here when count is 0.
403
+ if ( $this->is_term_hidden( $term ) ) {
404
  continue;
405
  }
406
 
411
  }
412
 
413
  // remove duplicated results, when showing hierarchical layout.
414
+ if ( ! empty( $children ) && ! empty( $result ) && in_array( $this->get_hierarchical(), array( 'collapsed', 'expanded', 'open' ), true ) && in_array( $this->get_filter_design(), array( 'checkbox', 'radio', 'text' ), true ) ) {
415
  foreach ( $result as $term_id => $term_options ) {
416
+ if ( ! in_array( $term_id, $children, true ) ) {
417
  continue;
418
  }
419
 
422
  }
423
  }
424
 
425
+ $this->formatted_terms = $result;
426
 
427
  return $result;
428
  }
451
  * @param int $term_id Term id.
452
  * @return array Children hierarchy with options
453
  */
454
+ protected function get_term_children( $term_id ) {
455
+ $terms = $this->get_terms_options();
456
  $formatted_children = array();
457
+ $children = array();
458
+ $products = $this->get_term_products( $term_id );
459
 
460
  $child_terms = get_terms(
461
  array_merge(
462
  array(
463
  'taxonomy' => $this->get_taxonomy(),
 
464
  'parent' => $term_id,
465
  'order' => $this->get_order(),
466
  'fields' => 'ids',
467
  ),
468
+ $this->use_all_terms() ? array() : array(
469
+ 'include' => array_keys( $terms ),
470
+ ),
471
  'term_order' === $this->get_order_by() ? array(
472
+ 'orderby' => 'include',
473
  ) : array(
474
  'orderby' => $this->get_order_by(),
475
  )
477
  );
478
 
479
  foreach ( $child_terms as $child_id ) {
480
+ if ( ! isset( $terms[ $child_id ] ) && ! $this->use_all_terms() ) {
481
  continue;
482
  }
483
 
484
+ $child = isset( $terms[ $child_id ] ) ? $terms[ $child_id ] : $this->get_default_term_options();
485
 
486
  // set hierarchical data.
487
+ $children_result = $this->get_term_children( $child_id );
488
  $child['children'] = $children_result['formatted_children'];
489
 
490
  // set count.
491
  $child['count'] = count( $children_result['products'] );
492
 
493
+ if ( $this->is_term_hidden( $child ) ) {
494
  continue;
495
  }
496
 
502
  }
503
 
504
  return array(
505
+ 'children' => $children,
506
  'formatted_children' => $formatted_children,
507
+ 'products' => $products,
508
  );
509
  }
510
 
514
  * @param int $term_id Term id.
515
  * @return array Array of matcihing product ids.
516
  */
517
+ protected function get_term_products( $term_id ) {
518
  $filter_by_current_values = 'yes' === $this->get_multiple() && 'and' === $this->get_relation();
519
+ $products = YITH_WCAN_Query()->get_query_relevant_term_objects( $this->get_taxonomy(), $term_id, $filter_by_current_values );
520
 
521
  return $products;
522
  }
527
  * @param int $term_id Term id.
528
  * @return int Count of matching product ids.
529
  */
530
+ protected function count_term_products( $term_id ) {
531
+ return count( $this->get_term_products( $term_id ) );
532
  }
533
 
534
  /**
537
  * @param array $term_options Array describing term and its options.
538
  * @return bool Whther to hide term or not
539
  */
540
+ protected function is_term_hidden( $term_options ) {
541
  // hide when term doesn't match current selection.
542
  if ( 'hide' === $this->get_adoptive() && ! $term_options['count'] && empty( $term_options['children'] ) ) {
543
  return true;
includes/{functions.yith-wcan.php → functions-yith-wcan.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Functions
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Navigation
7
  * @version 4.0.0.
8
  */
9
 
@@ -86,14 +86,14 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
86
 
87
  $terms = get_terms(
88
  array(
89
- 'taxonomy' => 'pa_' . $attribute,
90
  'hide_empty' => '0',
91
  )
92
  );
93
 
94
- if ( 'list' == $type ) {
95
  $return = '<input type="hidden" name="' . $name . '[colors]" value="" /><input type="hidden" name="' . $name . '[labels]" value="" />';
96
- } elseif ( 'color' == $type ) {
97
  if ( ! empty( $terms ) ) {
98
  $return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Color', 'yith-woocommerce-ajax-navigation' ) );
99
 
@@ -107,7 +107,7 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
107
  }
108
 
109
  $return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
110
- } elseif ( 'multicolor' == $type ) {
111
  if ( ! empty( $terms ) ) {
112
  $return = sprintf( '<table class="yith-wcan-multicolor"><tr><th>%s</th><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 1', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 2', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ) );
113
 
@@ -127,7 +127,7 @@ if ( ! function_exists( 'yith_wcan_attributes_table' ) ) {
127
  }
128
 
129
  $return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
130
- } elseif ( 'label' == $type ) {
131
  if ( ! empty( $terms ) ) {
132
  $return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Labels', 'yith-woocommerce-ajax-navigation' ) );
133
 
@@ -161,11 +161,12 @@ if ( ! function_exists( 'yith_wcan_can_be_displayed' ) ) {
161
  $return = false;
162
 
163
  if (
164
- ( is_active_widget( false, false, 'yith-woo-ajax-navigation', true ) ||
165
- is_active_widget( false, false, 'yith-woo-ajax-navigation-sort-by', true ) ||
166
- is_active_widget( false, false, 'yith-woo-ajax-navigation-stock-on-sale', true ) ||
167
- is_active_widget( false, false, 'yith-woo-ajax-navigation-list-price-filter', true ) ) &&
168
- ( is_shop() || defined( 'SHOP_IS_ON_FRONT' ) || is_product_taxonomy() || is_product_category() )
 
169
  ) {
170
  $return = true;
171
  }
@@ -227,9 +228,9 @@ if ( ! function_exists( 'yit_reorder_terms_by_parent' ) ) {
227
  /* The term as child */
228
  if ( array_key_exists( $term->term_id, $child_terms ) ) {
229
 
230
- if ( 'product' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $child_terms[ $term->term_id ] ) ) {
231
  usort( $child_terms[ $term->term_id ], 'yit_terms_sort' );
232
- } elseif ( 'alphabetical' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
233
  usort( $child_terms[ $term->term_id ], 'yit_alphabetical_terms_sort' );
234
  }
235
 
@@ -241,9 +242,9 @@ if ( ! function_exists( 'yit_reorder_terms_by_parent' ) ) {
241
  $terms_count ++;
242
  }
243
 
244
- if ( 'product' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $parent_terms ) ) {
245
  usort( $terms, 'yit_terms_sort' );
246
- } elseif ( 'alphabetical' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
247
  usort( $terms, 'yit_alphabetical_terms_sort' );
248
  }
249
 
@@ -285,7 +286,7 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
285
 
286
  case 'hierarchical':
287
  $terms = yith_wcan_wp_get_terms( $args );
288
- if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
289
  $terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
290
  $reordered = true;
291
  }
@@ -299,14 +300,14 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
299
  default:
300
  $args['include'] = $include;
301
 
302
- if ( 'parent' == $instance['display'] ) {
303
  $args['parent'] = false;
304
  }
305
 
306
  $terms = yith_wcan_wp_get_terms( $args );
307
 
308
- if ( 'hierarchical' == $instance['display'] ) {
309
- if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
310
  $terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
311
  $reordered = true;
312
  }
@@ -319,7 +320,7 @@ if ( ! function_exists( 'yit_get_terms' ) ) {
319
  $reordered = true;
320
  }
321
 
322
- if ( apply_filters( 'yith_wcan_skip_shop_term_order', true, $taxonomy, $instance ) && 'product' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && 'hierarchical' != $instance['display'] && ! is_wp_error( $terms ) && ! $reordered ) {
323
  usort( $terms, 'yit_terms_sort' );
324
  }
325
 
@@ -353,7 +354,7 @@ if ( ! function_exists( 'yit_term_is_parent' ) ) {
353
  * @since 1.3.1
354
  */
355
  function yit_term_is_parent( $term ) {
356
- return ( isset( $term->parent ) && 0 == $term->parent );
357
  }
358
  }
359
 
@@ -385,7 +386,7 @@ if ( ! function_exists( 'yit_term_has_child' ) ) {
385
 
386
  foreach ( $child_terms as $child_term ) {
387
  $_products_in_term = get_objects_in_term( $child_term->term_id, $taxonomy );
388
- $count += count( array_intersect( $_products_in_term, YITH_WCAN()->frontend->layered_nav_product_ids ) );
389
  }
390
  }
391
 
@@ -435,7 +436,7 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
435
  function yit_get_filter_args( $args = array() ) {
436
  $default_args = array(
437
  'check_price_filter' => true,
438
- 'queried_object' => null,
439
  );
440
 
441
  /**
@@ -465,9 +466,11 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
465
  $regexs[] = "/{$brands_taxonomy}/";
466
  }
467
 
468
- if ( ! empty( $_GET ) ) {
 
 
469
  foreach ( $regexs as $regex ) {
470
- foreach ( $_GET as $query_var => $value ) {
471
  if ( preg_match( $regex, $query_var ) ) {
472
  $filter_value[ $query_var ] = $value;
473
  }
@@ -477,43 +480,43 @@ if ( ! function_exists( 'yit_get_filter_args' ) ) {
477
 
478
  if ( ! empty( $check_price_filter ) ) {
479
  // WooCommerce Price Filter.
480
- if ( isset( $_GET['min_price'] ) ) {
481
- $filter_value['min_price'] = (float) $_GET['min_price'];
482
  }
483
 
484
- if ( isset( $_GET['max_price'] ) ) {
485
- $filter_value['max_price'] = (float) $_GET['max_price'];
486
  }
487
  }
488
 
489
  // WooCommerce In Stock/On Sale filters.
490
- if ( isset( $_GET['instock_filter'] ) ) {
491
- $filter_value['instock_filter'] = (int) $_GET['instock_filter'];
492
  }
493
 
494
- if ( isset( $_GET['onsale_filter'] ) ) {
495
- $filter_value['onsale_filter'] = (int) $_GET['onsale_filter'];
496
  }
497
 
498
- if ( isset( $_GET['orderby'] ) ) {
499
- $filter_value['orderby'] = sanitize_text_field( wp_unslash( $_GET['orderby'] ) );
500
  }
501
 
502
- if ( isset( $_GET['product_tag'] ) ) {
503
- $filter_value['product_tag'] = urlencode( sanitize_text_field( wp_unslash( $_GET['product_tag'] ) ) );
504
  } elseif ( is_product_tag() && ! empty( $queried_object ) ) {
505
  $filter_value['product_tag'] = $queried_object->slug;
506
  }
507
 
508
- if ( isset( $_GET['product_cat'] ) ) {
509
- $filter_value['product_cat'] = urlencode( sanitize_text_field( wp_unslash( $_GET['product_cat'] ) ) );
510
  } elseif ( is_product_category() && ! empty( $queried_object ) ) {
511
  $filter_value['product_cat'] = $queried_object->slug;
512
  }
513
 
514
- if ( isset( $_GET['source_id'] ) && isset( $_GET['source_tax'] ) ) {
515
- $filter_value['source_id'] = sanitize_text_field( wp_unslash( $_GET['source_id'] ) );
516
- $filter_value['source_tax'] = sanitize_text_field( wp_unslash( $_GET['source_tax'] ) );
517
  } elseif ( ! is_shop() && is_product_taxonomy() && ! empty( $queried_object ) && ! isset( $filter_value['source_id'] ) && ! isset( $filter_value['source_tax'] ) ) {
518
  $filter_value['source_id'] = $queried_object->term_id;
519
  $filter_value['source_tax'] = $queried_object->taxonomy;
@@ -535,7 +538,12 @@ if ( ! function_exists( 'yit_check_active_price_filter' ) ) {
535
  * @since 1.4
536
  */
537
  function yit_check_active_price_filter( $min_price, $max_price ) {
538
- return isset( $_GET['min_price'] ) && $_GET['min_price'] == $min_price && isset( $_GET['max_price'] ) && $_GET['max_price'] == $max_price;
 
 
 
 
 
539
  }
540
  }
541
 
@@ -747,8 +755,10 @@ if ( ! function_exists( 'yit_is_filtered_uri' ) ) {
747
  function yit_is_filtered_uri() {
748
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
749
  $brands = yit_get_brands_taxonomy();
 
 
750
  // check if current page is filtered.
751
- $is_filtered_uri = isset( $_GET['product_cat'] ) || count( $_chosen_attributes ) > 0 || isset( $_GET['min_price'] ) || isset( $_GET['max_price'] ) || isset( $_GET['orderby'] ) || isset( $_GET['instock_filter'] ) || isset( $_GET['onsale_filter'] ) || isset( $_GET['product_tag'] ) || isset( $_GET[ $brands ] );
752
 
753
  return apply_filters( 'yit_wcan_is_filtered_uri', $is_filtered_uri );
754
  }
@@ -782,7 +792,7 @@ if ( ! function_exists( 'yit_in_array_ignore_case' ) ) {
782
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
783
  */
784
  function yit_in_array_ignore_case( $needle, $haystack ) {
785
- return in_array( strtolower( $needle ), array_map( 'strtolower', $haystack ) );
786
  }
787
  }
788
 
@@ -851,8 +861,8 @@ if ( ! function_exists( 'yith_wcan_add_rel_nofollow_to_url' ) ) {
851
  * @return bool|string
852
  */
853
  function yith_wcan_add_rel_nofollow_to_url( $get_html_rel_attribute = false, $echo = false ) {
854
- $enable_seo = 'yes' == yith_wcan_get_option( 'yith_wcan_enable_seo' );
855
- $enable_rel_nofollow = 'yes' == yith_wcan_get_option( 'yith_wcan_seo_rel_nofollow', 'no' );
856
  $enabled = $enable_seo && $enable_rel_nofollow;
857
  $return = $enabled;
858
 
@@ -868,6 +878,21 @@ if ( ! function_exists( 'yith_wcan_add_rel_nofollow_to_url' ) ) {
868
  }
869
  }
870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
871
  if ( ! function_exists( 'yith_wcan_get_preset' ) ) {
872
  /**
873
  * Wrapper for YITH_WCAN_Preset_Factory::get_preset( $preset ) static function
@@ -969,7 +994,7 @@ if ( ! function_exists( 'yith_wcan_hex2rgb' ) ) {
969
 
970
  // otherwise try to convert hex.
971
  $color = str_replace( '#', '', $hex );
972
- if ( strlen( $color ) != 6 ) {
973
  return array( 0, 0, 0 );
974
  }
975
 
@@ -1100,14 +1125,14 @@ if ( ! function_exists( 'yith_wcan_merge_in_array' ) ) {
1100
  */
1101
  function yith_wcan_merge_in_array( $array, $element, $pivot, $position = 'after' ) {
1102
  // search for the pivot inside array.
1103
- $pos = array_search( $pivot, array_keys( $array ) );
1104
 
1105
  if ( false === $pos ) {
1106
  return $array;
1107
  }
1108
 
1109
  // separate array into chunks.
1110
- $i = 'after' == $position ? 1 : 0;
1111
  $part_1 = array_slice( $array, 0, $pos + $i );
1112
  $part_2 = array_slice( $array, $pos + $i );
1113
 
3
  * Functions
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Functions
7
  * @version 4.0.0.
8
  */
9
 
86
 
87
  $terms = get_terms(
88
  array(
89
+ 'taxonomy' => 'pa_' . $attribute,
90
  'hide_empty' => '0',
91
  )
92
  );
93
 
94
+ if ( 'list' === $type ) {
95
  $return = '<input type="hidden" name="' . $name . '[colors]" value="" /><input type="hidden" name="' . $name . '[labels]" value="" />';
96
+ } elseif ( 'color' === $type ) {
97
  if ( ! empty( $terms ) ) {
98
  $return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Color', 'yith-woocommerce-ajax-navigation' ) );
99
 
107
  }
108
 
109
  $return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
110
+ } elseif ( 'multicolor' === $type ) {
111
  if ( ! empty( $terms ) ) {
112
  $return = sprintf( '<table class="yith-wcan-multicolor"><tr><th>%s</th><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 1', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ), _x( 'Color 2', 'For multicolor: I.E. white and red T-Shirt', 'yith-woocommerce-ajax-navigation' ) );
113
 
127
  }
128
 
129
  $return .= '<input type="hidden" name="' . $name . '[labels]" value="" />';
130
+ } elseif ( 'label' === $type ) {
131
  if ( ! empty( $terms ) ) {
132
  $return = sprintf( '<table><tr><th>%s</th><th>%s</th></tr>', __( 'Term', 'yith-woocommerce-ajax-navigation' ), __( 'Labels', 'yith-woocommerce-ajax-navigation' ) );
133
 
161
  $return = false;
162
 
163
  if (
164
+ (
165
+ is_active_widget( false, false, 'yith-woo-ajax-navigation', true ) ||
166
+ is_active_widget( false, false, 'yith-woo-ajax-navigation-sort-by', true ) ||
167
+ is_active_widget( false, false, 'yith-woo-ajax-navigation-stock-on-sale', true ) ||
168
+ is_active_widget( false, false, 'yith-woo-ajax-navigation-list-price-filter', true )
169
+ ) && ( is_shop() || defined( 'SHOP_IS_ON_FRONT' ) || is_product_taxonomy() || is_product_category() )
170
  ) {
171
  $return = true;
172
  }
228
  /* The term as child */
229
  if ( array_key_exists( $term->term_id, $child_terms ) ) {
230
 
231
+ if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $child_terms[ $term->term_id ] ) ) {
232
  usort( $child_terms[ $term->term_id ], 'yit_terms_sort' );
233
+ } elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
234
  usort( $child_terms[ $term->term_id ], 'yit_alphabetical_terms_sort' );
235
  }
236
 
242
  $terms_count ++;
243
  }
244
 
245
+ if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && ! is_wp_error( $parent_terms ) ) {
246
  usort( $terms, 'yit_terms_sort' );
247
+ } elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
248
  usort( $terms, 'yit_alphabetical_terms_sort' );
249
  }
250
 
286
 
287
  case 'hierarchical':
288
  $terms = yith_wcan_wp_get_terms( $args );
289
+ if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
290
  $terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
291
  $reordered = true;
292
  }
300
  default:
301
  $args['include'] = $include;
302
 
303
+ if ( 'parent' === $instance['display'] ) {
304
  $args['parent'] = false;
305
  }
306
 
307
  $terms = yith_wcan_wp_get_terms( $args );
308
 
309
+ if ( 'hierarchical' === $instance['display'] ) {
310
+ if ( ! in_array( $instance['type'], apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
311
  $terms = yit_reorder_terms_by_parent( $terms, $taxonomy );
312
  $reordered = true;
313
  }
320
  $reordered = true;
321
  }
322
 
323
+ if ( apply_filters( 'yith_wcan_skip_shop_term_order', true, $taxonomy, $instance ) && 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) && 'hierarchical' !== $instance['display'] && ! is_wp_error( $terms ) && ! $reordered ) {
324
  usort( $terms, 'yit_terms_sort' );
325
  }
326
 
354
  * @since 1.3.1
355
  */
356
  function yit_term_is_parent( $term ) {
357
+ return ( isset( $term->parent ) && 0 === $term->parent );
358
  }
359
  }
360
 
386
 
387
  foreach ( $child_terms as $child_term ) {
388
  $_products_in_term = get_objects_in_term( $child_term->term_id, $taxonomy );
389
+ $count += count( array_intersect( $_products_in_term, YITH_WCAN()->frontend->layered_nav_product_ids ) );
390
  }
391
  }
392
 
436
  function yit_get_filter_args( $args = array() ) {
437
  $default_args = array(
438
  'check_price_filter' => true,
439
+ 'queried_object' => null,
440
  );
441
 
442
  /**
466
  $regexs[] = "/{$brands_taxonomy}/";
467
  }
468
 
469
+ $query_vars = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
470
+
471
+ if ( ! empty( $query_vars ) ) {
472
  foreach ( $regexs as $regex ) {
473
+ foreach ( $query_vars as $query_var => $value ) {
474
  if ( preg_match( $regex, $query_var ) ) {
475
  $filter_value[ $query_var ] = $value;
476
  }
480
 
481
  if ( ! empty( $check_price_filter ) ) {
482
  // WooCommerce Price Filter.
483
+ if ( isset( $query_vars['min_price'] ) ) {
484
+ $filter_value['min_price'] = (float) $query_vars['min_price'];
485
  }
486
 
487
+ if ( isset( $query_vars['max_price'] ) ) {
488
+ $filter_value['max_price'] = (float) $query_vars['max_price'];
489
  }
490
  }
491
 
492
  // WooCommerce In Stock/On Sale filters.
493
+ if ( isset( $query_vars['instock_filter'] ) ) {
494
+ $filter_value['instock_filter'] = (int) $query_vars['instock_filter'];
495
  }
496
 
497
+ if ( isset( $query_vars['onsale_filter'] ) ) {
498
+ $filter_value['onsale_filter'] = (int) $query_vars['onsale_filter'];
499
  }
500
 
501
+ if ( isset( $query_vars['orderby'] ) ) {
502
+ $filter_value['orderby'] = sanitize_text_field( wp_unslash( $query_vars['orderby'] ) );
503
  }
504
 
505
+ if ( isset( $query_vars['product_tag'] ) ) {
506
+ $filter_value['product_tag'] = urlencode( sanitize_text_field( wp_unslash( $query_vars['product_tag'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
507
  } elseif ( is_product_tag() && ! empty( $queried_object ) ) {
508
  $filter_value['product_tag'] = $queried_object->slug;
509
  }
510
 
511
+ if ( isset( $query_vars['product_cat'] ) ) {
512
+ $filter_value['product_cat'] = urlencode( sanitize_text_field( wp_unslash( $query_vars['product_cat'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
513
  } elseif ( is_product_category() && ! empty( $queried_object ) ) {
514
  $filter_value['product_cat'] = $queried_object->slug;
515
  }
516
 
517
+ if ( isset( $query_vars['source_id'] ) && isset( $query_vars['source_tax'] ) ) {
518
+ $filter_value['source_id'] = sanitize_text_field( wp_unslash( $query_vars['source_id'] ) );
519
+ $filter_value['source_tax'] = sanitize_text_field( wp_unslash( $query_vars['source_tax'] ) );
520
  } elseif ( ! is_shop() && is_product_taxonomy() && ! empty( $queried_object ) && ! isset( $filter_value['source_id'] ) && ! isset( $filter_value['source_tax'] ) ) {
521
  $filter_value['source_id'] = $queried_object->term_id;
522
  $filter_value['source_tax'] = $queried_object->taxonomy;
538
  * @since 1.4
539
  */
540
  function yit_check_active_price_filter( $min_price, $max_price ) {
541
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
542
+ $query_min_price = isset( $_GET['min_price'] ) ? (float) $_GET['min_price'] : false;
543
+ $query_max_price = isset( $_GET['max_price'] ) ? (float) $_GET['max_price'] : false;
544
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
545
+
546
+ return $query_min_price === (float) $min_price && $query_max_price === (float) $max_price;
547
  }
548
  }
549
 
755
  function yit_is_filtered_uri() {
756
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
757
  $brands = yit_get_brands_taxonomy();
758
+ $query_vars = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
759
+
760
  // check if current page is filtered.
761
+ $is_filtered_uri = isset( $query_vars['product_cat'] ) || count( $_chosen_attributes ) > 0 || isset( $query_vars['min_price'] ) || isset( $query_vars['max_price'] ) || isset( $query_vars['orderby'] ) || isset( $query_vars['instock_filter'] ) || isset( $query_vars['onsale_filter'] ) || isset( $query_vars['product_tag'] ) || isset( $query_vars[ $brands ] );
762
 
763
  return apply_filters( 'yit_wcan_is_filtered_uri', $is_filtered_uri );
764
  }
792
  * @author Andrea Grillo <andrea.grillo@yithemes.com>
793
  */
794
  function yit_in_array_ignore_case( $needle, $haystack ) {
795
+ return in_array( strtolower( $needle ), array_map( 'strtolower', $haystack ), true );
796
  }
797
  }
798
 
861
  * @return bool|string
862
  */
863
  function yith_wcan_add_rel_nofollow_to_url( $get_html_rel_attribute = false, $echo = false ) {
864
+ $enable_seo = 'yes' === yith_wcan_get_option( 'yith_wcan_enable_seo' );
865
+ $enable_rel_nofollow = 'yes' === yith_wcan_get_option( 'yith_wcan_seo_rel_nofollow', 'no' );
866
  $enabled = $enable_seo && $enable_rel_nofollow;
867
  $return = $enabled;
868
 
878
  }
879
  }
880
 
881
+ if ( ! function_exists( 'yith_wcan_doing_filters' ) ) {
882
+ /**
883
+ * Checks is current page was requested by filter plugin
884
+ *
885
+ * @return bool Whether current page is requested by filter plugin
886
+ */
887
+ function yith_wcan_doing_filters() {
888
+ if ( ! isset( $_SERVER['HTTP_X_YITH_WCAN'] ) ) {
889
+ return false;
890
+ }
891
+
892
+ return ! ! sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_YITH_WCAN'] ) );
893
+ }
894
+ }
895
+
896
  if ( ! function_exists( 'yith_wcan_get_preset' ) ) {
897
  /**
898
  * Wrapper for YITH_WCAN_Preset_Factory::get_preset( $preset ) static function
994
 
995
  // otherwise try to convert hex.
996
  $color = str_replace( '#', '', $hex );
997
+ if ( strlen( $color ) !== 6 ) {
998
  return array( 0, 0, 0 );
999
  }
1000
 
1125
  */
1126
  function yith_wcan_merge_in_array( $array, $element, $pivot, $position = 'after' ) {
1127
  // search for the pivot inside array.
1128
+ $pos = array_search( $pivot, array_keys( $array ), true );
1129
 
1130
  if ( false === $pos ) {
1131
  return $array;
1132
  }
1133
 
1134
  // separate array into chunks.
1135
+ $i = 'after' === $position ? 1 : 0;
1136
  $part_1 = array_slice( $array, 0, $pos + $i );
1137
  $part_2 = array_slice( $array, $pos + $i );
1138
 
includes/shortcodes/{class.yith-wcan-shortcode-filters.php → class-yith-wcan-shortcode-filters.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines shortcode that output Filters Preset
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0
10
  */
11
 
@@ -26,10 +26,10 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
26
  */
27
  public static function render( $atts = array() ) {
28
  $defaults = array(
29
- 'slug' => '',
30
  'selector' => '',
31
  );
32
- $atts = shortcode_atts( $defaults, $atts );
33
 
34
  if ( ! $atts['slug'] ) {
35
  return '';
@@ -54,7 +54,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
54
  * @return array Array of configuration.
55
  */
56
  public static function get_gutenberg_config() {
57
- $presets = YITH_WCAN_Preset_Factory::list_presets();
58
  $presets_options = array_merge(
59
  array(
60
  '' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
@@ -63,14 +63,14 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Filters' ) ) {
63
  );
64
 
65
  $blocks = array(
66
- 'yith-wcan-ajax-filters-preset' => array(
67
  'style' => 'yith-wcan-shortcodes',
68
  'script' => 'yith-wcan-shortcodes',
69
  'title' => _x( 'YITH AJAX Filters Preset', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
70
  'description' => _x( 'Show filters from a preset', '[GUTENBERG]: block description', 'yith-woocommerce-ajax-navigation' ),
71
  'shortcode_name' => 'yith_wcan_filters',
72
  'attributes' => array(
73
- 'slug' => array(
74
  'type' => 'select',
75
  'label' => _x( 'Preset', '[GUTENBERG]: attribute description', 'yith-woocommerce-ajax-navigation' ),
76
  'options' => $presets_options,
5
  * Defines shortcode that output Filters Preset
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes\Shortcodes
9
  * @version 4.0
10
  */
11
 
26
  */
27
  public static function render( $atts = array() ) {
28
  $defaults = array(
29
+ 'slug' => '',
30
  'selector' => '',
31
  );
32
+ $atts = shortcode_atts( $defaults, $atts );
33
 
34
  if ( ! $atts['slug'] ) {
35
  return '';
54
  * @return array Array of configuration.
55
  */
56
  public static function get_gutenberg_config() {
57
+ $presets = YITH_WCAN_Preset_Factory::list_presets();
58
  $presets_options = array_merge(
59
  array(
60
  '' => _x( 'Choose an option', '[ELEMENTOR] Default preset option', 'yith-woocommerce-ajax-navigation' ),
63
  );
64
 
65
  $blocks = array(
66
+ 'yith-wcan-ajax-filters-preset' => array(
67
  'style' => 'yith-wcan-shortcodes',
68
  'script' => 'yith-wcan-shortcodes',
69
  'title' => _x( 'YITH AJAX Filters Preset', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
70
  'description' => _x( 'Show filters from a preset', '[GUTENBERG]: block description', 'yith-woocommerce-ajax-navigation' ),
71
  'shortcode_name' => 'yith_wcan_filters',
72
  'attributes' => array(
73
+ 'slug' => array(
74
  'type' => 'select',
75
  'label' => _x( 'Preset', '[GUTENBERG]: attribute description', 'yith-woocommerce-ajax-navigation' ),
76
  'options' => $presets_options,
includes/shortcodes/{class.yith-wcan-shortcode-reset-button.php → class-yith-wcan-shortcode-reset-button.php} RENAMED
@@ -5,7 +5,7 @@
5
  * Defines shortcode that output Reset Filters button
6
  *
7
  * @author YITH
8
- * @package YITH WooCommerce Ajax Product Filter
9
  * @version 4.0
10
  */
11
 
@@ -43,7 +43,7 @@ if ( ! class_exists( 'YITH_WCAN_Shortcode_Reset_Button' ) ) {
43
  add_action( 'yith_plugin_fw_gutenberg_before_do_shortcode', array( __CLASS__, 'fix_for_gutenberg_block' ), 10, 1 );
44
 
45
  $blocks = array(
46
- 'yith-wcan-reset-button' => array(
47
  'style' => 'yith-wcan-shortcodes',
48
  'script' => 'yith-wcan-shortcodes',
49
  'title' => _x( 'YITH Reset Filters Button', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
5
  * Defines shortcode that output Reset Filters button
6
  *
7
  * @author YITH
8
+ * @package YITH\AjaxProductFilter\Classes\Shortcodes
9
  * @version 4.0
10
  */
11
 
43
  add_action( 'yith_plugin_fw_gutenberg_before_do_shortcode', array( __CLASS__, 'fix_for_gutenberg_block' ), 10, 1 );
44
 
45
  $blocks = array(
46
+ 'yith-wcan-reset-button' => array(
47
  'style' => 'yith-wcan-shortcodes',
48
  'script' => 'yith-wcan-shortcodes',
49
  'title' => _x( 'YITH Reset Filters Button', '[GUTENBERG]: block name', 'yith-woocommerce-ajax-navigation' ),
includes/tables/{class.yith-wcan-filter-presets-table.php → class-yith-wcan-filter-presets-table.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Filter Presets Table class
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 1.0.0
8
  */
9
 
@@ -50,7 +50,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
50
  if ( isset( $item->$column_name ) ) {
51
  return esc_html( $item->$column_name );
52
  } else {
53
- return print_r( $item, true ); // Show the whole array for troubleshooting purposes.
 
54
  }
55
  }
56
 
@@ -112,9 +113,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
112
  */
113
  public function get_columns() {
114
  $columns = array(
115
- 'name' => _x( 'Preset name', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
116
  'shortcode' => _x( 'Shortcode', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
117
- 'actions' => '',
118
  );
119
 
120
  return $columns;
@@ -191,9 +192,9 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
191
  } else {
192
  YITH_WCAN()->admin->show_empty_content(
193
  array(
194
- 'item_name' => _x( 'filter preset', '[Admin] Name of the item missing, shown in preset-empty-content template', 'yith-woocommerce-ajax-navigation' ),
195
  'button_label' => _x( 'Create a new preset', '[Admin] New preset button label', 'yith-woocommerce-ajax-navigation' ),
196
- 'button_url' => YITH_WCAN()->admin->get_preset_create_page(),
197
  )
198
  );
199
  }
@@ -210,8 +211,14 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
210
  public function prepare_items() {
211
  $query_arg = array();
212
 
213
- if ( ! empty( $_REQUEST['s'] ) && '' !== $_REQUEST['s'] ) {
214
- $query_arg['s'] = sanitize_text_field( wp_unslash( $_REQUEST['s'] ) );
 
 
 
 
 
 
215
  }
216
 
217
  // sets pagination arguments.
@@ -223,8 +230,8 @@ if ( ! class_exists( 'YITH_WCAN_Filter_Presets_Table' ) ) {
223
  array(
224
  'limit' => $per_page,
225
  'offset' => ( ( $current_page - 1 ) * $per_page ),
226
- 'orderby' => isset( $_REQUEST['orderby'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['orderby'] ) ) : 'ID',
227
- 'order' => isset( $_REQUEST['order'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['order'] ) ) : 'DESC',
228
  ),
229
  $query_arg
230
  )
3
  * Filter Presets Table class
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes\Tables
7
  * @version 1.0.0
8
  */
9
 
50
  if ( isset( $item->$column_name ) ) {
51
  return esc_html( $item->$column_name );
52
  } else {
53
+ // Show the whole array for troubleshooting purposes.
54
+ return print_r( $item, true ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r
55
  }
56
  }
57
 
113
  */
114
  public function get_columns() {
115
  $columns = array(
116
+ 'name' => _x( 'Preset name', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
117
  'shortcode' => _x( 'Shortcode', '[Admin] Preset table column header', 'yith-woocommerce-ajax-navigation' ),
118
+ 'actions' => '',
119
  );
120
 
121
  return $columns;
192
  } else {
193
  YITH_WCAN()->admin->show_empty_content(
194
  array(
195
+ 'item_name' => _x( 'filter preset', '[Admin] Name of the item missing, shown in preset-empty-content template', 'yith-woocommerce-ajax-navigation' ),
196
  'button_label' => _x( 'Create a new preset', '[Admin] New preset button label', 'yith-woocommerce-ajax-navigation' ),
197
+ 'button_url' => YITH_WCAN()->admin->get_preset_create_page(),
198
  )
199
  );
200
  }
211
  public function prepare_items() {
212
  $query_arg = array();
213
 
214
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
215
+ $search_string = ! empty( $_REQUEST['s'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['s'] ) ) : false;
216
+ $orderby = ! empty( $_REQUEST['orderby'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['orderby'] ) ) : false;
217
+ $order = ! empty( $_REQUEST['order'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['order'] ) ) : false;
218
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
219
+
220
+ if ( $search_string ) {
221
+ $query_arg['s'] = $search_string;
222
  }
223
 
224
  // sets pagination arguments.
230
  array(
231
  'limit' => $per_page,
232
  'offset' => ( ( $current_page - 1 ) * $per_page ),
233
+ 'orderby' => $orderby ? $orderby : 'ID',
234
+ 'order' => $order ? $order : 'DESC',
235
  ),
236
  $query_arg
237
  )
includes/widgets/{class.yith-wcan-filters-widget.php → class-yith-wcan-filters-widget.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Filter preset widget
4
  *
5
  * @author YITH
6
- * @package YITH WooCommerce Ajax Product Filter
7
  * @version 4.0.0
8
  */
9
 
@@ -19,9 +19,9 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
19
  /**
20
  * Widget ID
21
  *
22
- * @var string
23
  */
24
- protected $_id_base = 'yith-woocommerce-ajax-navigation-filters';
25
 
26
  /**
27
  * Constructor method
@@ -31,7 +31,7 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
31
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
32
  */
33
  public function __construct() {
34
- parent::__construct( $this->_id_base, _x( 'YITH AJAX Filters Preset', '[ADMIN] Name of the preset widget', 'yith-woocommerce-ajax-navigation' ) );
35
  }
36
 
37
  /**
@@ -84,9 +84,9 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
84
  $instance = $old_instance;
85
 
86
  $preset_slug = sanitize_title_with_dashes( $new_instance['preset'] );
87
- $presets = array_keys( YITH_WCAN_Preset_Factory::list_presets() );
88
 
89
- if ( in_array( $preset_slug, $presets ) ) {
90
  $instance['preset'] = $preset_slug;
91
  }
92
 
@@ -104,8 +104,8 @@ if ( ! class_exists( 'YITH_WCAN_Filters_Widget' ) ) {
104
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
105
  */
106
  public function widget( $args, $instance ) {
107
- $title = ! empty( $instance['title'] ) ? $instance['title'] : '';
108
- $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
109
  $preset_slug = ! empty( $instance['preset'] ) ? $instance['preset'] : '';
110
 
111
  if ( ! $preset_slug ) {
3
  * Filter preset widget
4
  *
5
  * @author YITH
6
+ * @package YITH\AjaxProductFilter\Classes\Widgets
7
  * @version 4.0.0
8
  */
9
 
19
  /**
20
  * Widget ID
21
  *
22
+ * @const string
23
  */
24
+ const ID_BASE = 'yith-woocommerce-ajax-navigation-filters';
25
 
26
  /**
27
  * Constructor method
31
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
32
  */
33
  public function __construct() {
34
+ parent::__construct( self::ID_BASE, _x( 'YITH AJAX Filters Preset', '[ADMIN] Name of the preset widget', 'yith-woocommerce-ajax-navigation' ) );
35
  }
36
 
37
  /**
84
  $instance = $old_instance;
85
 
86
  $preset_slug = sanitize_title_with_dashes( $new_instance['preset'] );
87
+ $presets = array_keys( YITH_WCAN_Preset_Factory::list_presets() );
88
 
89
+ if ( in_array( $preset_slug, $presets, true ) ) {
90
  $instance['preset'] = $preset_slug;
91
  }
92
 
104
  * @author Antonio La Rocca <antonio.larocca@yithemes.com>
105
  */
106
  public function widget( $args, $instance ) {
107
+ $title = ! empty( $instance['title'] ) ? $instance['title'] : '';
108
+ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
109
  $preset_slug = ! empty( $instance['preset'] ) ? $instance['preset'] : '';
110
 
111
  if ( ! $preset_slug ) {
includes/widgets/{class.yith-wcan-navigation-widget.php → class-yith-wcan-navigation-widget.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Ajax filter widget (legacy)
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Navigation
7
  * @version 1.3.2
8
  */
9
 
@@ -12,7 +12,6 @@ if ( ! defined( 'YITH_WCAN' ) ) {
12
  } // Exit if accessed directly
13
 
14
  if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
15
-
16
  /**
17
  * YITH WooCommerce Ajax Navigation Widget
18
  *
@@ -41,7 +40,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
41
  */
42
  public function __construct() {
43
  $classname = 'yith-woocommerce-ajax-product-filter yith-woo-ajax-navigation woocommerce widget_layered_nav';
44
- $classname .= defined( 'YITH_WCAN_PREMIUM' ) && 'checkboxes' == yith_wcan_get_option( 'yith_wcan_ajax_shop_filter_style', 'standard' ) ? ' with-checkbox' : '';
45
  $widget_ops = array(
46
  'classname' => $classname,
47
  'description' => __( 'Filter the list of products without reloading the page', 'yith-woocommerce-ajax-navigation' ),
@@ -67,11 +66,16 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
67
  'use' => "{$this->id}_show_product_count",
68
  'params' => 2,
69
  ),
70
- "{$this->id}-li_style" => array(
71
  'since' => '3.11.7',
72
  'use' => "{$this->id}_li_style",
73
  'params' => 2,
74
  ),
 
 
 
 
 
75
  );
76
 
77
  yith_wcan_deprecated_filter( $deprecated_filters_map );
@@ -124,7 +128,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
124
  $is_parent_class = 'yit-wcan-parent-terms';
125
  $is_chosen_class = 'chosen';
126
  $terms_type_list = ( isset( $instance['display'] ) ) ? $instance['display'] : 'all';
127
- $in_array_function = apply_filters( 'yith_wcan_in_array_ignor_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
128
  $rel_nofollow = yith_wcan_add_rel_nofollow_to_url( true );
129
 
130
  $instance['id'] = $this->id;
@@ -162,7 +166,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
162
  }
163
  }
164
 
165
- if ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ) ) ) {
166
 
167
  $tree = array();
168
  $ancestors = yith_wcan_wp_get_terms(
@@ -176,14 +180,14 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
176
 
177
  if ( ! empty( $ancestors ) && ! is_wp_error( $ancestors ) ) {
178
 
179
- if ( 'product' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
180
  usort( $ancestors, 'yit_terms_sort' );
181
- } elseif ( 'alphabetical' == yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
182
  usort( $ancestors, 'yit_alphabetical_terms_sort' );
183
  }
184
 
185
  foreach ( $ancestors as $ancestor ) {
186
- $tree[ $ancestor->term_id ] = 'parent' == $terms_type_list ? array() : yit_reorder_hierachical_categories( $ancestor->term_id, $taxonomy );
187
  }
188
  }
189
 
@@ -197,7 +201,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
197
  $this->get_list_html( $tree, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, 0, $filter_term_field, $rel_nofollow );
198
 
199
  echo '</ul>';
200
- } elseif ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_select', array( 'select' ) ) ) ) {
201
  $dropdown_label = apply_filters( 'yith_wcan_dropdown_label', __( 'Filters:', 'yith-woocommerce-ajax-navigation' ), $this, $instance, $instance['attribute'] );
202
  ?>
203
 
@@ -213,7 +217,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
213
  foreach ( $terms as $term ) {
214
 
215
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
216
- $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
217
 
218
  if ( 'and' === $query_type ) {
219
  // If this is an AND query, only show options with count > 0.
@@ -223,7 +227,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
223
  $this->found = true;
224
  }
225
 
226
- if ( ( 'hierarchical' != $terms_type_list || ! yit_term_has_child( $term, $taxonomy ) ) && ! $count && ! $option_is_set ) {
227
  continue;
228
  }
229
  } else {
@@ -309,7 +313,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
309
 
310
  if ( ! empty( $instance['colors'][ $term_id ] ) ) {
311
  $color = $instance['colors'][ $term_id ];
312
- } elseif ( apply_filters( 'yith_wcan_ywccl_support', function_exists( 'ywccl_get_term_meta' ) ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'colorpicker' == $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
313
  $colors = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
314
 
315
  if ( ! empty( $colors ) ) {
@@ -339,7 +343,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
339
 
340
  foreach ( $terms as $term ) {
341
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
342
- $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
343
 
344
  if ( 'and' === $query_type ) {
345
  // If this is an AND query, only show options with count > 0.
@@ -375,7 +379,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
375
 
376
  if ( ! empty( $instance['labels'][ $term_id ] ) ) {
377
  $label = $instance['labels'][ $term_id ];
378
- } elseif ( function_exists( 'ywccl_get_term_meta' ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'label' == $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
379
  $label = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
380
  }
381
 
@@ -464,7 +468,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
464
  </select>
465
  </p>
466
 
467
- <p class="yith-wcan-attribute-list" style="display: <?php echo in_array( $instance['type'], array( 'tags', 'brands', 'categories' ) ) ? 'none' : 'block'; ?>;">
468
  <label for="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>"><strong><?php esc_html_e( 'Attribute:', 'yith-woocommerce-ajax-navigation' ); ?></strong></label>
469
  <select class="yith_wcan_attributes widefat" id="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'attribute' ) ); ?>">
470
  <?php yith_wcan_dropdown_attributes( $instance['attribute'] ); ?>
@@ -531,7 +535,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
531
  */
532
  public function update( $new_instance, $old_instance ) {
533
  $instance = $old_instance;
534
- $instance['title'] = strip_tags( $new_instance['title'] );
535
  $instance['attribute'] = ! empty( $new_instance['attribute'] ) ? stripslashes( $new_instance['attribute'] ) : array();
536
  $instance['query_type'] = stripslashes( $new_instance['query_type'] );
537
  $instance['type'] = stripslashes( $new_instance['type'] );
@@ -553,16 +557,17 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
553
  * @return array Array of currently active filters, plus term passed as param
554
  */
555
  public function get_current_filters( $term, $args = array() ) {
556
- $current_filters = array();
557
- $filter_term_field = YITH_WCAN()->filter_term_field;
558
- $display_type = isset( $args['type'] ) ? $args['type'] : 'list';
559
- $query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
560
- $arg = apply_filters( "yith_wcan_{$display_type}_type_query_arg", isset( $args['attribute'] ) ? 'filter_' . sanitize_title( $args['attribute'] ) : '', $display_type, $term );
561
- $in_array_function = apply_filters( 'yith_wcan_in_array_ignor_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
562
-
563
- if ( isset( $_GET[ $arg ] ) ) {
564
- $separator = apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type );
565
- $current_filter_param = sanitize_text_field( wp_unslash( $_GET[ $arg ] ) );
 
566
  $current_filter_param = str_replace( ' ', '+', $current_filter_param );
567
  $current_filter_param = apply_filters( "yith_wcan_{$display_type}_filter_query_{$arg}", $current_filter_param );
568
 
@@ -599,7 +604,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
599
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
600
  $filter_term_field = YITH_WCAN()->filter_term_field;
601
  $current_term = $_attributes_array && is_tax( $_attributes_array ) ? $queried_object->$filter_term_field : '';
602
- $in_array_function = apply_filters( 'yith_wcan_in_array_ignor_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
603
  $query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
604
  $display_type = isset( $args['type'] ) ? $args['type'] : 'list';
605
  $terms_type_list = apply_filters( 'yith_wcan_get_terms_params', isset( $args['display'] ) ? $args['display'] : 'all', $args, 'terms_type' );
@@ -608,6 +613,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
608
  $is_chosen_class = 'chosen';
609
  $is_parent_class = 'yit-wcan-parent-terms';
610
  $link = yit_get_woocommerce_layered_nav_link();
 
611
 
612
  // All current filters.
613
  if ( $_chosen_attributes ) {
@@ -616,7 +622,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
616
 
617
  // Exclude query arg for current term archive term.
618
  while ( $in_array_function( $term->slug, $data['terms'] ) ) {
619
- $key = array_search( $current_term, $data );
620
  unset( $data['terms'][ $key ] );
621
  }
622
 
@@ -635,38 +641,38 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
635
  }
636
 
637
  // Min price.
638
- if ( isset( $_GET['min_price'] ) ) {
639
- $link = add_query_arg( 'min_price', (float) $_GET['min_price'], $link );
640
  }
641
 
642
  // Max price.
643
- if ( isset( $_GET['max_price'] ) ) {
644
- $link = add_query_arg( 'max_price', (float) $_GET['max_price'], $link );
645
  }
646
 
647
  // Product tag.
648
- if ( isset( $_GET['product_tag'] ) ) {
649
- $link = add_query_arg( 'product_tag', urlencode( sanitize_text_field( wp_unslash( $_GET['product_tag'] ) ) ), $link );
650
  } elseif ( is_product_tag() && $queried_object ) {
651
  $link = add_query_arg( array( 'product_tag' => $queried_object->slug ), $link );
652
  }
653
 
654
  // Brand.
655
- if ( isset( $_GET[ $this->brand_taxonomy ] ) ) {
656
- $brands = get_term_by( 'slug', sanitize_text_field( wp_unslash( $_GET[ $this->brand_taxonomy ] ) ), $this->brand_taxonomy );
657
 
658
- if ( $brands instanceof WP_Term && $brands->term_id != $term->term_id ) {
659
- $link = add_query_arg( $this->brand_taxonomy, urlencode( $brands->slug ), $link );
660
  }
661
  } elseif ( is_tax( $this->brand_taxonomy ) && $queried_object ) {
662
  $link = add_query_arg( array( $this->brand_taxonomy => $queried_object->slug ), $link );
663
  }
664
 
665
  // Product category.
666
- if ( isset( $_GET['product_cat'] ) ) {
667
- $categories_filter_operator = 'and' == $query_type ? '+' : ',';
668
- $_chosen_categories = explode( $categories_filter_operator, urlencode( sanitize_text_field( wp_unslash( $_GET['product_cat'] ) ) ) );
669
- $link = add_query_arg(
670
  'product_cat',
671
  implode( apply_filters( 'yith_wcan_categories_filter_operator', $categories_filter_operator, $display_type, $query_type ), $_chosen_categories ),
672
  $link
@@ -676,11 +682,11 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
676
  }
677
 
678
  // Current term.
679
- if ( is_product_taxonomy() && ! yit_is_filtered_uri() && $term->term_id != $queried_object->term_id ) {
680
  $link = add_query_arg(
681
  array(
682
- 'source_id' => $queried_object->term_id,
683
- 'source_tax' => $queried_object->taxonomy,
684
  $queried_object->taxonomy => $queried_object->slug,
685
  ),
686
  $link
@@ -688,9 +694,9 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
688
  }
689
 
690
  // Current term.
691
- if ( isset( $_GET['source_id'] ) && isset( $_GET['source_tax'] ) ) {
692
  $add_source_id = true;
693
- if ( property_exists( $term, 'term_id' ) && property_exists( $queried_object, 'term_id' ) && $term->term_id == $queried_object->term_id ) {
694
  if ( ! yit_is_filtered_uri() ) {
695
  $add_source_id = false;
696
  }
@@ -698,23 +704,23 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
698
 
699
  if ( $add_source_id ) {
700
  $query_args = array(
701
- 'source_id' => sanitize_text_field( wp_unslash( $_GET['source_id'] ) ),
702
- 'source_tax' => sanitize_text_field( wp_unslash( $_GET['source_tax'] ) ),
703
  );
704
- if ( property_exists( $queried_object, 'taxonomy' ) && isset( $_GET[ $queried_object->taxonomy ] ) ) {
705
- $args[ $queried_object->taxonomy ] = sanitize_text_field( wp_unslash( $_GET[ $queried_object->taxonomy ] ) );
706
  }
707
  $link = add_query_arg( $query_args, $link );
708
  }
709
  }
710
 
711
  // Vendor.
712
- if ( isset( $_GET['yith_shop_vendor'] ) ) {
713
- $link = add_query_arg( array( 'yith_shop_vendor' => sanitize_text_field( wp_unslash( $_GET['yith_shop_vendor'] ) ) ), $link );
714
  }
715
 
716
  // Current Filter = this widget.
717
- $term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
718
  $check_for_current_widget = isset( $_chosen_attributes[ $taxonomy ] ) && is_array( $_chosen_attributes[ $taxonomy ]['terms'] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] );
719
  $check_for_current_widget = apply_filters( "yith_wcan_{$display_type}_type_current_widget_check", $check_for_current_widget, $current_filters, $display_type, $term_param, $query_type );
720
 
@@ -734,7 +740,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
734
  // Remove this term is $current_filter has more than 1 term filtered.
735
  if ( count( $current_filters ) > 1 ) {
736
  $current_filter_without_this = array_diff( $current_filters, array( $term->$filter_term_field ) );
737
- $link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filter_without_this ), $link );
738
  } else {
739
  $link = remove_query_arg( $arg, $link );
740
  }
@@ -751,17 +757,17 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
751
  $class = '';
752
  }
753
 
754
- $link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filters ), $link );
755
  }
756
 
757
  // Search Arg.
758
  if ( get_search_query() ) {
759
- $link = add_query_arg( 's', urlencode( get_search_query() ), $link );
760
  }
761
 
762
  // Post Type Arg.
763
- if ( isset( $_GET['post_type'] ) ) {
764
- $link = add_query_arg( 'post_type', sanitize_text_field( wp_unslash( $_GET['post_type'] ) ), $link );
765
  }
766
 
767
  // Query type Arg.
@@ -807,11 +813,11 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
807
  $widget_settings = $settings[ $this->number ];
808
  $value = '';
809
 
810
- if ( 'label' == $type ) {
811
  $value = $widget_settings['labels'];
812
- } elseif ( 'color' == $type ) {
813
  $value = $widget_settings['colors'];
814
- } elseif ( 'multicolor' == $type ) {
815
  $value = $widget_settings['multicolor'];
816
  }
817
 
@@ -826,7 +832,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
826
  );
827
  }
828
 
829
- echo json_encode( $return );
830
  die();
831
  }
832
 
@@ -852,7 +858,7 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
852
  */
853
  public function get_list_html( $terms, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, $level = 0, $filter_term_field = 'slug', $rel_nofollow = '' ) {
854
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
855
- $in_array_function = apply_filters( 'yith_wcan_in_array_ignor_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
856
  $terms = apply_filters( 'yith_wcan_get_list_html_terms', $terms, $taxonomy, $instance );
857
 
858
  foreach ( $terms as $parent_id => $term_ids ) {
@@ -864,9 +870,9 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
864
 
865
  if ( 'tags' === $instance['type'] ) {
866
  $term_id = yit_wcan_localize_terms( $term->term_id, $taxonomy );
867
- if ( 'exclude' == $instance['tags_list_query'] ) {
868
  $echo = ! $in_array_function( $term_id, $exclude );
869
- } elseif ( 'include' == $instance['tags_list_query'] ) {
870
  $echo = $in_array_function( $term_id, $include );
871
  }
872
  } else {
@@ -879,8 +885,8 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
879
 
880
  // Get count based on current view - uses transients.
881
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
882
- $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
883
- $term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
884
 
885
  if ( 'and' === $query_type ) {
886
  // If this is an AND query, only show options with count > 0.
@@ -899,14 +905,14 @@ if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
899
  list( $link, $class ) = $this->get_link_attributes( $term, $taxonomy, $current_filter, $instance );
900
 
901
  $li_printed = false;
902
- $term_name = apply_filters( 'yith_wcan_term_name_to_show', $term->name, $term );
903
 
904
  if ( $count > 0 || $option_is_set ) {
905
- $to_print = true;
906
  printf( '<li %s><a %s href="%s">%s</a>', $class, $rel_nofollow, esc_url( $link ), wp_kses_post( $term_name ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
907
  $li_printed = true;
908
  } else {
909
- $to_print = apply_filters( 'yith_wcan_show_no_products_attributes', ( ! $filter_by_tags_hierarchical && 'and' != $query_type ), $count, $term );
910
  $class = apply_filters( 'yith_wcan_list_type_empty_filter_class', $class );
911
 
912
  if ( $to_print ) {
3
  * Ajax filter widget (legacy)
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes\Widgets
7
  * @version 1.3.2
8
  */
9
 
12
  } // Exit if accessed directly
13
 
14
  if ( ! class_exists( 'YITH_WCAN_Navigation_Widget' ) ) {
 
15
  /**
16
  * YITH WooCommerce Ajax Navigation Widget
17
  *
40
  */
41
  public function __construct() {
42
  $classname = 'yith-woocommerce-ajax-product-filter yith-woo-ajax-navigation woocommerce widget_layered_nav';
43
+ $classname .= defined( 'YITH_WCAN_PREMIUM' ) && 'checkboxes' === yith_wcan_get_option( 'yith_wcan_ajax_shop_filter_style', 'standard' ) ? ' with-checkbox' : '';
44
  $widget_ops = array(
45
  'classname' => $classname,
46
  'description' => __( 'Filter the list of products without reloading the page', 'yith-woocommerce-ajax-navigation' ),
66
  'use' => "{$this->id}_show_product_count",
67
  'params' => 2,
68
  ),
69
+ "{$this->id}-li_style" => array(
70
  'since' => '3.11.7',
71
  'use' => "{$this->id}_li_style",
72
  'params' => 2,
73
  ),
74
+ 'yith_wcan_in_array_ignor_case' => array(
75
+ 'since' => '4.1.1',
76
+ 'use' => 'yith_wcan_in_array_ignore_case',
77
+ 'params' => 1,
78
+ ),
79
  );
80
 
81
  yith_wcan_deprecated_filter( $deprecated_filters_map );
128
  $is_parent_class = 'yit-wcan-parent-terms';
129
  $is_chosen_class = 'chosen';
130
  $terms_type_list = ( isset( $instance['display'] ) ) ? $instance['display'] : 'all';
131
+ $in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
132
  $rel_nofollow = yith_wcan_add_rel_nofollow_to_url( true );
133
 
134
  $instance['id'] = $this->id;
166
  }
167
  }
168
 
169
+ if ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_list', array( 'list' ) ), true ) ) {
170
 
171
  $tree = array();
172
  $ancestors = yith_wcan_wp_get_terms(
180
 
181
  if ( ! empty( $ancestors ) && ! is_wp_error( $ancestors ) ) {
182
 
183
+ if ( 'product' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
184
  usort( $ancestors, 'yit_terms_sort' );
185
+ } elseif ( 'alphabetical' === yith_wcan_get_option( 'yith_wcan_ajax_shop_terms_order', 'alphabetical' ) ) {
186
  usort( $ancestors, 'yit_alphabetical_terms_sort' );
187
  }
188
 
189
  foreach ( $ancestors as $ancestor ) {
190
+ $tree[ $ancestor->term_id ] = 'parent' === $terms_type_list ? array() : yit_reorder_hierachical_categories( $ancestor->term_id, $taxonomy );
191
  }
192
  }
193
 
201
  $this->get_list_html( $tree, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, 0, $filter_term_field, $rel_nofollow );
202
 
203
  echo '</ul>';
204
+ } elseif ( in_array( $display_type, apply_filters( 'yith_wcan_display_type_select', array( 'select' ) ), true ) ) {
205
  $dropdown_label = apply_filters( 'yith_wcan_dropdown_label', __( 'Filters:', 'yith-woocommerce-ajax-navigation' ), $this, $instance, $instance['attribute'] );
206
  ?>
207
 
217
  foreach ( $terms as $term ) {
218
 
219
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
220
+ $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
221
 
222
  if ( 'and' === $query_type ) {
223
  // If this is an AND query, only show options with count > 0.
227
  $this->found = true;
228
  }
229
 
230
+ if ( ( 'hierarchical' !== $terms_type_list || ! yit_term_has_child( $term, $taxonomy ) ) && ! $count && ! $option_is_set ) {
231
  continue;
232
  }
233
  } else {
313
 
314
  if ( ! empty( $instance['colors'][ $term_id ] ) ) {
315
  $color = $instance['colors'][ $term_id ];
316
+ } elseif ( apply_filters( 'yith_wcan_ywccl_support', function_exists( 'ywccl_get_term_meta' ) ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'colorpicker' === $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
317
  $colors = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
318
 
319
  if ( ! empty( $colors ) ) {
343
 
344
  foreach ( $terms as $term ) {
345
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
346
+ $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
347
 
348
  if ( 'and' === $query_type ) {
349
  // If this is an AND query, only show options with count > 0.
379
 
380
  if ( ! empty( $instance['labels'][ $term_id ] ) ) {
381
  $label = $instance['labels'][ $term_id ];
382
+ } elseif ( function_exists( 'ywccl_get_term_meta' ) && ! empty( $wc_product_attributes[ $term->taxonomy ]->attribute_type ) && 'label' === $wc_product_attributes[ $term->taxonomy ]->attribute_type ) {
383
  $label = ywccl_get_term_meta( $term->term_id, $term->taxonomy . '_yith_wccl_value' );
384
  }
385
 
468
  </select>
469
  </p>
470
 
471
+ <p class="yith-wcan-attribute-list" style="display: <?php echo in_array( $instance['type'], array( 'tags', 'brands', 'categories' ), true ) ? 'none' : 'block'; ?>;">
472
  <label for="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>"><strong><?php esc_html_e( 'Attribute:', 'yith-woocommerce-ajax-navigation' ); ?></strong></label>
473
  <select class="yith_wcan_attributes widefat" id="<?php echo esc_attr( $this->get_field_id( 'attribute' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'attribute' ) ); ?>">
474
  <?php yith_wcan_dropdown_attributes( $instance['attribute'] ); ?>
535
  */
536
  public function update( $new_instance, $old_instance ) {
537
  $instance = $old_instance;
538
+ $instance['title'] = wp_strip_all_tags( $new_instance['title'] );
539
  $instance['attribute'] = ! empty( $new_instance['attribute'] ) ? stripslashes( $new_instance['attribute'] ) : array();
540
  $instance['query_type'] = stripslashes( $new_instance['query_type'] );
541
  $instance['type'] = stripslashes( $new_instance['type'] );
557
  * @return array Array of currently active filters, plus term passed as param
558
  */
559
  public function get_current_filters( $term, $args = array() ) {
560
+ $current_filters = array();
561
+ $filter_term_field = YITH_WCAN()->filter_term_field;
562
+ $display_type = isset( $args['type'] ) ? $args['type'] : 'list';
563
+ $query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
564
+ $arg = apply_filters( "yith_wcan_{$display_type}_type_query_arg", isset( $args['attribute'] ) ? 'filter_' . sanitize_title( $args['attribute'] ) : '', $display_type, $term );
565
+ $in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
566
+ $request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
567
+
568
+ if ( isset( $request[ $arg ] ) ) {
569
+ $separator = apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type );
570
+ $current_filter_param = sanitize_text_field( wp_unslash( $request[ $arg ] ) );
571
  $current_filter_param = str_replace( ' ', '+', $current_filter_param );
572
  $current_filter_param = apply_filters( "yith_wcan_{$display_type}_filter_query_{$arg}", $current_filter_param );
573
 
604
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
605
  $filter_term_field = YITH_WCAN()->filter_term_field;
606
  $current_term = $_attributes_array && is_tax( $_attributes_array ) ? $queried_object->$filter_term_field : '';
607
+ $in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
608
  $query_type = isset( $args['query_type'] ) ? $args['query_type'] : 'and';
609
  $display_type = isset( $args['type'] ) ? $args['type'] : 'list';
610
  $terms_type_list = apply_filters( 'yith_wcan_get_terms_params', isset( $args['display'] ) ? $args['display'] : 'all', $args, 'terms_type' );
613
  $is_chosen_class = 'chosen';
614
  $is_parent_class = 'yit-wcan-parent-terms';
615
  $link = yit_get_woocommerce_layered_nav_link();
616
+ $request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
617
 
618
  // All current filters.
619
  if ( $_chosen_attributes ) {
622
 
623
  // Exclude query arg for current term archive term.
624
  while ( $in_array_function( $term->slug, $data['terms'] ) ) {
625
+ $key = array_search( $current_term, $data ); // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
626
  unset( $data['terms'][ $key ] );
627
  }
628
 
641
  }
642
 
643
  // Min price.
644
+ if ( isset( $request['min_price'] ) ) {
645
+ $link = add_query_arg( 'min_price', (float) $request['min_price'], $link );
646
  }
647
 
648
  // Max price.
649
+ if ( isset( $request['max_price'] ) ) {
650
+ $link = add_query_arg( 'max_price', (float) $request['max_price'], $link );
651
  }
652
 
653
  // Product tag.
654
+ if ( isset( $request['product_tag'] ) ) {
655
+ $link = add_query_arg( 'product_tag', urlencode( sanitize_text_field( wp_unslash( $request['product_tag'] ) ) ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
656
  } elseif ( is_product_tag() && $queried_object ) {
657
  $link = add_query_arg( array( 'product_tag' => $queried_object->slug ), $link );
658
  }
659
 
660
  // Brand.
661
+ if ( isset( $request[ $this->brand_taxonomy ] ) ) {
662
+ $brands = get_term_by( 'slug', sanitize_text_field( wp_unslash( $request[ $this->brand_taxonomy ] ) ), $this->brand_taxonomy );
663
 
664
+ if ( $brands instanceof WP_Term && $brands->term_id !== $term->term_id ) {
665
+ $link = add_query_arg( $this->brand_taxonomy, urlencode( $brands->slug ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
666
  }
667
  } elseif ( is_tax( $this->brand_taxonomy ) && $queried_object ) {
668
  $link = add_query_arg( array( $this->brand_taxonomy => $queried_object->slug ), $link );
669
  }
670
 
671
  // Product category.
672
+ if ( isset( $request['product_cat'] ) ) {
673
+ $categories_filter_operator = 'and' === $query_type ? '+' : ',';
674
+ $_chosen_categories = explode( $categories_filter_operator, urlencode( sanitize_text_field( wp_unslash( $request['product_cat'] ) ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
675
+ $link = add_query_arg(
676
  'product_cat',
677
  implode( apply_filters( 'yith_wcan_categories_filter_operator', $categories_filter_operator, $display_type, $query_type ), $_chosen_categories ),
678
  $link
682
  }
683
 
684
  // Current term.
685
+ if ( is_product_taxonomy() && ! yit_is_filtered_uri() && $term->term_id !== $queried_object->term_id ) {
686
  $link = add_query_arg(
687
  array(
688
+ 'source_id' => $queried_object->term_id,
689
+ 'source_tax' => $queried_object->taxonomy,
690
  $queried_object->taxonomy => $queried_object->slug,
691
  ),
692
  $link
694
  }
695
 
696
  // Current term.
697
+ if ( isset( $request['source_id'] ) && isset( $request['source_tax'] ) ) {
698
  $add_source_id = true;
699
+ if ( property_exists( $term, 'term_id' ) && property_exists( $queried_object, 'term_id' ) && $term->term_id === $queried_object->term_id ) {
700
  if ( ! yit_is_filtered_uri() ) {
701
  $add_source_id = false;
702
  }
704
 
705
  if ( $add_source_id ) {
706
  $query_args = array(
707
+ 'source_id' => sanitize_text_field( wp_unslash( $request['source_id'] ) ),
708
+ 'source_tax' => sanitize_text_field( wp_unslash( $request['source_tax'] ) ),
709
  );
710
+ if ( property_exists( $queried_object, 'taxonomy' ) && isset( $request[ $queried_object->taxonomy ] ) ) {
711
+ $args[ $queried_object->taxonomy ] = sanitize_text_field( wp_unslash( $request[ $queried_object->taxonomy ] ) );
712
  }
713
  $link = add_query_arg( $query_args, $link );
714
  }
715
  }
716
 
717
  // Vendor.
718
+ if ( isset( $request['yith_shop_vendor'] ) ) {
719
+ $link = add_query_arg( array( 'yith_shop_vendor' => sanitize_text_field( wp_unslash( $request['yith_shop_vendor'] ) ) ), $link );
720
  }
721
 
722
  // Current Filter = this widget.
723
+ $term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
724
  $check_for_current_widget = isset( $_chosen_attributes[ $taxonomy ] ) && is_array( $_chosen_attributes[ $taxonomy ]['terms'] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] );
725
  $check_for_current_widget = apply_filters( "yith_wcan_{$display_type}_type_current_widget_check", $check_for_current_widget, $current_filters, $display_type, $term_param, $query_type );
726
 
740
  // Remove this term is $current_filter has more than 1 term filtered.
741
  if ( count( $current_filters ) > 1 ) {
742
  $current_filter_without_this = array_diff( $current_filters, array( $term->$filter_term_field ) );
743
+ $link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filter_without_this ), $link );
744
  } else {
745
  $link = remove_query_arg( $arg, $link );
746
  }
757
  $class = '';
758
  }
759
 
760
+ $link = add_query_arg( $arg, implode( apply_filters( "yith_wcan_{$display_type}_filter_operator", ',', $display_type, $query_type ), $current_filters ), $link );
761
  }
762
 
763
  // Search Arg.
764
  if ( get_search_query() ) {
765
+ $link = add_query_arg( 's', urlencode( get_search_query() ), $link ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
766
  }
767
 
768
  // Post Type Arg.
769
+ if ( isset( $request['post_type'] ) ) {
770
+ $link = add_query_arg( 'post_type', sanitize_text_field( wp_unslash( $request['post_type'] ) ), $link );
771
  }
772
 
773
  // Query type Arg.
813
  $widget_settings = $settings[ $this->number ];
814
  $value = '';
815
 
816
+ if ( 'label' === $type ) {
817
  $value = $widget_settings['labels'];
818
+ } elseif ( 'color' === $type ) {
819
  $value = $widget_settings['colors'];
820
+ } elseif ( 'multicolor' === $type ) {
821
  $value = $widget_settings['multicolor'];
822
  }
823
 
832
  );
833
  }
834
 
835
+ echo wp_json_encode( $return );
836
  die();
837
  }
838
 
858
  */
859
  public function get_list_html( $terms, $taxonomy, $query_type, $display_type, $instance, $terms_type_list, $current_term, $args, $is_child_class, $is_parent_class, $is_chosen_class, $level = 0, $filter_term_field = 'slug', $rel_nofollow = '' ) {
860
  $_chosen_attributes = YITH_WCAN()->get_layered_nav_chosen_attributes();
861
+ $in_array_function = apply_filters( 'yith_wcan_in_array_ignore_case', false ) ? 'yit_in_array_ignore_case' : 'in_array';
862
  $terms = apply_filters( 'yith_wcan_get_list_html_terms', $terms, $taxonomy, $instance );
863
 
864
  foreach ( $terms as $parent_id => $term_ids ) {
870
 
871
  if ( 'tags' === $instance['type'] ) {
872
  $term_id = yit_wcan_localize_terms( $term->term_id, $taxonomy );
873
+ if ( 'exclude' === $instance['tags_list_query'] ) {
874
  $echo = ! $in_array_function( $term_id, $exclude );
875
+ } elseif ( 'include' === $instance['tags_list_query'] ) {
876
  $echo = $in_array_function( $term_id, $include );
877
  }
878
  } else {
885
 
886
  // Get count based on current view - uses transients.
887
  $_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
888
+ $option_is_set = ( isset( $_chosen_attributes[ $taxonomy ] ) && $in_array_function( $term->$filter_term_field, $_chosen_attributes[ $taxonomy ]['terms'] ) );
889
+ $term_param = apply_filters( 'yith_wcan_term_param_uri', $term->$filter_term_field, $display_type, $term );
890
 
891
  if ( 'and' === $query_type ) {
892
  // If this is an AND query, only show options with count > 0.
905
  list( $link, $class ) = $this->get_link_attributes( $term, $taxonomy, $current_filter, $instance );
906
 
907
  $li_printed = false;
908
+ $term_name = apply_filters( 'yith_wcan_term_name_to_show', $term->name, $term );
909
 
910
  if ( $count > 0 || $option_is_set ) {
911
+ $to_print = true;
912
  printf( '<li %s><a %s href="%s">%s</a>', $class, $rel_nofollow, esc_url( $link ), wp_kses_post( $term_name ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
913
  $li_printed = true;
914
  } else {
915
+ $to_print = apply_filters( 'yith_wcan_show_no_products_attributes', ( ! $filter_by_tags_hierarchical && 'and' !== $query_type ), $count, $term );
916
  $class = apply_filters( 'yith_wcan_list_type_empty_filter_class', $class );
917
 
918
  if ( $to_print ) {
includes/widgets/{class.yith-wcan-reset-navigation-widget.php → class-yith-wcan-reset-navigation-widget.php} RENAMED
@@ -3,7 +3,7 @@
3
  * Reset button widget
4
  *
5
  * @author Your Inspiration Themes
6
- * @package YITH WooCommerce Ajax Navigation
7
  * @version 1.3.2
8
  */
9
 
@@ -30,7 +30,7 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
30
  'description' => _x( 'Reset all filters set by YITH WooCommerce AJAX Product Filter', '[Plugin Name]', 'yith-woocommerce-ajax-navigation' ),
31
  );
32
  $control_ops = array(
33
- 'width' => 400,
34
  'height' => 350,
35
  );
36
 
@@ -45,7 +45,7 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
45
  * @ return void
46
  */
47
  $deprecated_filters_map = array(
48
- 'yith-wcan-reset-navigation-label' => array(
49
  'since' => '3.11.7',
50
  'use' => 'yith_wcan_reset_navigation_label',
51
  'params' => 3,
@@ -84,14 +84,15 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
84
  extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
85
 
86
  $_attributes_array = yit_wcan_get_product_taxonomy();
 
87
 
88
  if ( apply_filters( 'yith_wcan_show_widget', ! is_post_type_archive( 'product' ) && ! is_tax( $_attributes_array ), $instance ) ) {
89
  return;
90
  }
91
 
92
  // Price.
93
- $min_price = isset( $_GET['min_price'] ) ? (float) $_GET['min_price'] : 0;
94
- $max_price = isset( $_GET['max_price'] ) ? (float) $_GET['max_price'] : 0;
95
 
96
  $after_widget = apply_filters( 'yith_wcan_after_reset_widget', $after_widget );
97
  $before_widget = apply_filters( 'yith_wcan_before_reset_widget', $before_widget );
@@ -103,14 +104,14 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
103
  $link = '';
104
 
105
  // clean the url.
106
- if ( ! isset( $_GET['source_id'] ) ) {
107
  $link = '';
108
 
109
  // Check if the user have enabled only WC PRice Filter.
110
- if ( yit_is_filtered_uri() && ( isset( $_GET['min_price'] ) || isset( $_GET['max_price'] ) ) && is_product_taxonomy() ) {
111
  $queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
112
 
113
- if ( $queried_object instanceof WP_Term && ! isset( $_GET[ $queried_object->taxonomy ] ) ) {
114
  $link = get_term_link( $queried_object );
115
  }
116
  }
@@ -127,8 +128,8 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
127
  // Start filter from Product category Page.
128
  $term = null;
129
 
130
- if ( ! empty( $_GET['source_id'] ) && ! empty( $_GET['source_tax'] ) ) {
131
- $term = get_term_by( 'term_id', sanitize_text_field( wp_unslash( $_GET['source_id'] ) ), sanitize_text_field( wp_unslash( $_GET['source_tax'] ) ) );
132
  }
133
 
134
  if ( $term instanceof WP_Term ) {
@@ -136,12 +137,12 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
136
  }
137
  }
138
 
139
- if ( is_search() && isset( $_GET['s'] ) && isset( $_GET['post_type'] ) ) {
140
- $s = urlencode( sanitize_text_field( wp_unslash( $_GET['s'] ) ) );
141
  $link = add_query_arg(
142
  array(
143
- 's' => $s,
144
- 'post_type' => sanitize_text_field( wp_unslash( $_GET['post_type'] ) ),
145
  ),
146
  get_home_url()
147
  );
@@ -215,8 +216,8 @@ if ( ! class_exists( 'YITH_WCAN_Reset_Navigation_Widget' ) ) {
215
  */
216
  public function update( $new_instance, $old_instance ) {
217
  $instance = $old_instance;
218
- $instance['title'] = strip_tags( $new_instance['title'] );
219
- $instance['label'] = strip_tags( $new_instance['label'] );
220
 
221
  return $instance;
222
  }
3
  * Reset button widget
4
  *
5
  * @author Your Inspiration Themes
6
+ * @package YITH\AjaxProductFilter\Classes\Widgets
7
  * @version 1.3.2
8
  */
9
 
30
  'description' => _x( 'Reset all filters set by YITH WooCommerce AJAX Product Filter', '[Plugin Name]', 'yith-woocommerce-ajax-navigation' ),
31
  );
32
  $control_ops = array(
33
+ 'width' => 400,
34
  'height' => 350,
35
  );
36
 
45
  * @ return void
46
  */
47
  $deprecated_filters_map = array(
48
+ 'yith-wcan-reset-navigation-label' => array(
49
  'since' => '3.11.7',
50
  'use' => 'yith_wcan_reset_navigation_label',
51
  'params' => 3,
84
  extract( $args ); // phpcs:ignore WordPress.PHP.DontExtract
85
 
86
  $_attributes_array = yit_wcan_get_product_taxonomy();
87
+ $request = $_GET; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
88
 
89
  if ( apply_filters( 'yith_wcan_show_widget', ! is_post_type_archive( 'product' ) && ! is_tax( $_attributes_array ), $instance ) ) {
90
  return;
91
  }
92
 
93
  // Price.
94
+ $min_price = isset( $request['min_price'] ) ? (float) $request['min_price'] : 0;
95
+ $max_price = isset( $request['max_price'] ) ? (float) $request['max_price'] : 0;
96
 
97
  $after_widget = apply_filters( 'yith_wcan_after_reset_widget', $after_widget );
98
  $before_widget = apply_filters( 'yith_wcan_before_reset_widget', $before_widget );
104
  $link = '';
105
 
106
  // clean the url.
107
+ if ( ! isset( $request['source_id'] ) ) {
108
  $link = '';
109
 
110
  // Check if the user have enabled only WC PRice Filter.
111
+ if ( yit_is_filtered_uri() && ( isset( $request['min_price'] ) || isset( $request['max_price'] ) ) && is_product_taxonomy() ) {
112
  $queried_object = $wp_query instanceof WP_Query ? $wp_query->get_queried_object() : false;
113
 
114
+ if ( $queried_object instanceof WP_Term && ! isset( $request[ $queried_object->taxonomy ] ) ) {
115
  $link = get_term_link( $queried_object );
116
  }
117
  }
128
  // Start filter from Product category Page.
129
  $term = null;
130
 
131
+ if ( ! empty( $request['source_id'] ) && ! empty( $request['source_tax'] ) ) {
132
+ $term = get_term_by( 'term_id', sanitize_text_field( wp_unslash( $request['source_id'] ) ), sanitize_text_field( wp_unslash( $request['source_tax'] ) ) );
133
  }
134
 
135
  if ( $term instanceof WP_Term ) {
137
  }
138
  }
139
 
140
+ if ( is_search() && isset( $request['s'] ) && isset( $request['post_type'] ) ) {
141
+ $s = urlencode( sanitize_text_field( wp_unslash( $request['s'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode
142
  $link = add_query_arg(
143
  array(
144
+ 's' => $s,
145
+ 'post_type' => sanitize_text_field( wp_unslash( $request['post_type'] ) ),
146
  ),
147
  get_home_url()
148
  );
216
  */
217
  public function update( $new_instance, $old_instance ) {
218
  $instance = $old_instance;
219
+ $instance['title'] = wp_strip_all_tags( $new_instance['title'] );
220
+ $instance['label'] = wp_strip_all_tags( $new_instance['label'] );
221
 
222
  return $instance;
223
  }
init.php CHANGED
@@ -3,17 +3,17 @@
3
  * Plugin Name: YITH WooCommerce Ajax Product Filter
4
  * Plugin URI: https://wordpress.org/plugins/yith-woocommerce-ajax-navigation/
5
  * Description: <code><strong>YITH WooCommerce AJAX Product Filter</strong></code> allows your users to find the product they are looking for as quickly as possible. Thanks to the plugin you will be able to set up one or more search filters for your WooCommerce products and improve the user experience of your shop. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>
6
- * Version: 4.1.0
7
  * Author: YITH
8
  * Author URI: https://yithemes.com/
9
  * Text Domain: yith-woocommerce-ajax-navigation
10
  * Domain Path: /languages/
11
  *
12
- * WC requires at least: 4.3
13
- * WC tested up to: 5.4
14
  *
15
  * @author YITH
16
- * @package YITH WooCommerce Ajax Product Filter
17
  * @version 1.3.2
18
  */
19
 
@@ -44,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) {
44
  ! defined( 'YITH_WCAN_URL' ) && define( 'YITH_WCAN_URL', plugin_dir_url( __FILE__ ) );
45
  ! defined( 'YITH_WCAN_DIR' ) && define( 'YITH_WCAN_DIR', plugin_dir_path( __FILE__ ) );
46
  ! defined( 'YITH_WCAN_INC' ) && define( 'YITH_WCAN_INC', YITH_WCAN_DIR . 'includes/' );
47
- ! defined( 'YITH_WCAN_VERSION' ) && define( 'YITH_WCAN_VERSION', '4.1.0' );
48
  ! defined( 'YITH_WCAN_FREE_INIT' ) && define( 'YITH_WCAN_FREE_INIT', plugin_basename( __FILE__ ) );
49
  ! defined( 'YITH_WCAN_FILE' ) && define( 'YITH_WCAN_FILE', __FILE__ );
50
  ! defined( 'YITH_WCAN_SLUG' ) && define( 'YITH_WCAN_SLUG', 'yith-woocommerce-ajax-navigation' );
@@ -108,7 +108,7 @@ if ( ! function_exists( 'yith_wcan_initialize' ) ) {
108
  */
109
  function yith_wcan_initialize() {
110
  // Load required classes and functions.
111
- require_once( YITH_WCAN_INC . 'class.yith-wcan.php' );
112
 
113
  return YITH_WCAN();
114
  }
3
  * Plugin Name: YITH WooCommerce Ajax Product Filter
4
  * Plugin URI: https://wordpress.org/plugins/yith-woocommerce-ajax-navigation/
5
  * Description: <code><strong>YITH WooCommerce AJAX Product Filter</strong></code> allows your users to find the product they are looking for as quickly as possible. Thanks to the plugin you will be able to set up one or more search filters for your WooCommerce products and improve the user experience of your shop. <a href="https://yithemes.com/" target="_blank">Get more plugins for your e-commerce shop on <strong>YITH</strong></a>
6
+ * Version: 4.2.0
7
  * Author: YITH
8
  * Author URI: https://yithemes.com/
9
  * Text Domain: yith-woocommerce-ajax-navigation
10
  * Domain Path: /languages/
11
  *
12
+ * WC requires at least: 5.3
13
+ * WC tested up to: 5.7
14
  *
15
  * @author YITH
16
+ * @package YITH\AjaxProductFilter
17
  * @version 1.3.2
18
  */
19
 
44
  ! defined( 'YITH_WCAN_URL' ) && define( 'YITH_WCAN_URL', plugin_dir_url( __FILE__ ) );
45
  ! defined( 'YITH_WCAN_DIR' ) && define( 'YITH_WCAN_DIR', plugin_dir_path( __FILE__ ) );
46
  ! defined( 'YITH_WCAN_INC' ) && define( 'YITH_WCAN_INC', YITH_WCAN_DIR . 'includes/' );
47
+ ! defined( 'YITH_WCAN_VERSION' ) && define( 'YITH_WCAN_VERSION', '4.2.0' );
48
  ! defined( 'YITH_WCAN_FREE_INIT' ) && define( 'YITH_WCAN_FREE_INIT', plugin_basename( __FILE__ ) );
49
  ! defined( 'YITH_WCAN_FILE' ) && define( 'YITH_WCAN_FILE', __FILE__ );
50
  ! defined( 'YITH_WCAN_SLUG' ) && define( 'YITH_WCAN_SLUG', 'yith-woocommerce-ajax-navigation' );
108
  */
109
  function yith_wcan_initialize() {
110
  // Load required classes and functions.
111
+ require_once( YITH_WCAN_INC . 'class-yith-wcan.php' );
112
 
113
  return YITH_WCAN();
114
  }
languages/yith-woocommerce-ajax-navigation-de_DE.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-de_DE.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,94 +16,94 @@ msgstr ""
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
23
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
24
- #: includes/functions.yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Begriff"
27
 
28
- #: includes/functions.yith-wcan.php:98
29
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
30
  msgid "Color"
31
  msgstr "Farbe"
32
 
33
- #: includes/functions.yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Label"
36
 
37
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
40
 
41
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
42
  msgid "Filters:"
43
  msgstr "Filter:"
44
 
45
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
46
  msgid "List"
47
  msgstr "Liste"
48
 
49
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
50
  msgid "Label"
51
  msgstr "Label"
52
 
53
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
58
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
59
  msgid "Title"
60
  msgstr "Titel"
61
 
62
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
63
  msgid "Type:"
64
  msgstr "Typ:"
65
 
66
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
67
  msgid "Query Type:"
68
  msgstr "Query-Typ"
69
 
70
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
71
  msgid "OR"
72
  msgstr "ODER"
73
 
74
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
75
  msgid "Attribute:"
76
  msgstr "Attribute:"
77
 
78
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
79
  msgid "Display (default All):"
80
  msgstr "Anzeige (Standard Alles):"
81
 
82
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
83
  msgid "All (no hierarchical)"
84
  msgstr "Alle (nicht hierarchisch)"
85
 
86
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
87
  msgid "All (hierarchical)"
88
  msgstr "Alles (hierarchisch)"
89
 
90
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
91
  msgid "Only Parent"
92
  msgstr "Nur Übergeordnete"
93
 
94
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
95
  msgid "CSS custom class"
96
  msgstr "Individuelle CSS-Klasse"
97
 
98
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX-Filter zurücksetzen"
101
 
102
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
103
  msgid "Reset All Filters"
104
  msgstr "Alle Filter zurücksetzen"
105
 
106
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
@@ -139,76 +139,71 @@ msgstr ""
139
  "\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für deinen E-"
140
  "Commerce-Shop erhältst du bei <strong>YITH</strong></a>"
141
 
142
- #: includes/class.yith-wcan-admin.php:107
143
  msgctxt "[Admin] Copy confirmation message"
144
  msgid "Content copied to your clipboard"
145
  msgstr "Inhalt in die Zwischenablage kopiert"
146
 
147
- #: includes/class.yith-wcan-admin.php:108
148
  msgctxt "[Admin] Confirm filter delete message"
149
  msgid "Are you sure you want to delete this item?"
150
  msgstr "Bist du sicher, dass du dieses Element löschen möchtest?"
151
 
152
  #. translators: 1. Number of items that will be added.
153
- #: includes/class.yith-wcan-admin.php:110
154
  msgctxt "[Admin] Confirm add all terms message"
155
  msgid "Are you sure you want to proceed? This operation will add %s items"
156
  msgstr ""
157
  "Bist du sicher, dass du fortfahren möchtest? Dieser Vorgang wird %s Elemente "
158
  "hinzufügen"
159
 
160
- #: includes/class.yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; Kein Titel &gt;"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Die zu verwendenden Medien auswählen"
174
 
175
- #: includes/class.yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Dieses Medium verwenden"
179
 
180
- #: includes/class.yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Filter-Presets"
184
 
185
- #: includes/class.yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Allgemeine Einstellungen"
189
 
190
- #: includes/class.yith-wcan-admin.php:186
191
  #, fuzzy
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr "SEO"
195
 
196
- #: includes/class.yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr "Premium-Version"
200
 
201
- #: includes/class.yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr "Legacy"
205
 
206
- #: includes/class.yith-wcan-admin.php:198
207
- msgctxt "[Admin] Menu title"
208
- msgid "Ajax Product Filter"
209
- msgstr "AJAX Produkt-Filter "
210
-
211
- #: includes/class.yith-wcan-admin.php:199
212
  msgctxt "[Admin] Plugin description"
213
  msgid ""
214
  "It allows your users to find the product they are looking for as quickly as "
@@ -217,44 +212,44 @@ msgstr ""
217
  "Ermöglicht deinen Benutzern, das gesuchte Produkt so schnell wie möglich zu "
218
  "finden."
219
 
220
- #: includes/class.yith-wcan-admin.php:211
221
  msgctxt "[HELP TAB] Video title"
222
  msgid ""
223
  "Check this video to learn how to <b>create a filter preset and show it on "
224
  "the shop page:</b>"
225
  msgstr ""
226
 
227
- #: includes/class.yith-wcan-admin.php:329
228
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
229
  msgid "item"
230
  msgstr "Artikel"
231
 
232
- #: includes/class.yith-wcan-admin.php:330
233
  msgctxt "[Admin] Preset table empty message second line"
234
  msgid "But don't worry, here you can create your first one!"
235
  msgstr "Aber keine Sorge, hier kannst du deine erste erstellen!"
236
 
237
- #: includes/class.yith-wcan-admin.php:478
238
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
239
  msgid "Clear Product Filter transients"
240
  msgstr "Produktfilter-Tansients löschen"
241
 
242
- #: includes/class.yith-wcan-admin.php:484
243
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
244
  msgid "Run filter widgets upgrade"
245
  msgstr "Upgrade der Filter-Widgets ausführen"
246
 
247
- #: includes/class.yith-wcan-admin.php:479
248
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
249
  msgid "Clear"
250
  msgstr "Löschen"
251
 
252
- #: includes/class.yith-wcan-admin.php:485
253
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
254
  msgid "Run"
255
  msgstr "Start"
256
 
257
- #: includes/class.yith-wcan-admin.php:480
258
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
259
  msgid ""
260
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -266,7 +261,7 @@ msgstr ""
266
  "Konfiguration deines Produkts geändert hast und die Filter nicht die "
267
  "erwarteten Ergebnisse anzeigen. "
268
 
269
- #: includes/class.yith-wcan-admin.php:486
270
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
271
  msgid ""
272
  "This will create a preset for any sidebar of your shop containing filter "
@@ -276,32 +271,32 @@ msgstr ""
276
  "Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
277
  "Spezifikationen der Widgets entspricht"
278
 
279
- #: includes/class.yith-wcan-filter-factory.php:72
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Taxonomy"
282
  msgstr "Taxonomie"
283
 
284
- #: includes/class.yith-wcan-filter-factory.php:86
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Checkbox"
287
  msgstr "Checkbox"
288
 
289
- #: includes/class.yith-wcan-filter-factory.php:87
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Select"
292
  msgstr "Auswahl"
293
 
294
- #: includes/class.yith-wcan-filter-factory.php:88
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Text"
297
  msgstr "Text"
298
 
299
- #: includes/class.yith-wcan-filter-factory.php:89
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Color Swatches"
302
  msgstr "Farbmuster"
303
 
304
- #: includes/class.yith-wcan-filter-factory.php:90
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Label"
307
  msgstr "Label"
@@ -316,32 +311,32 @@ msgctxt "[Admin] Filter edit form"
316
  msgid "Enter a name to identify this filter"
317
  msgstr "Gib einen Namen ein, um diesen Filter zu identifizieren"
318
 
319
- #: plugin-options/filter-options.php:41
320
  msgctxt "[Admin] Filter edit form"
321
  msgid "Filter for"
322
  msgstr "Filtern nach"
323
 
324
- #: plugin-options/filter-options.php:45
325
  msgctxt "[Admin] Filter edit form"
326
  msgid "Select the parameters you wish to filter for"
327
  msgstr "Wähle die Parameter, nach denen du filtern möchtest"
328
 
329
- #: plugin-options/filter-options.php:51
330
  msgctxt "[Admin] Filter edit form"
331
  msgid "Choose taxonomy"
332
  msgstr "Taxonomie wählen"
333
 
334
- #: plugin-options/filter-options.php:55
335
  msgctxt "[Admin] Filter edit form"
336
  msgid "Select which taxonomy to use for this filter"
337
  msgstr "Wähle, welche Taxonomie für diesen Filter verwendet werden soll"
338
 
339
- #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid "Auto-populate with all terms"
342
  msgstr ""
343
 
344
- #: plugin-options/filter-options.php:62
345
  msgctxt "[Admin] Filter edit form"
346
  msgid ""
347
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -350,73 +345,73 @@ msgid ""
350
  "well.</span>"
351
  msgstr ""
352
 
353
- #: plugin-options/filter-options.php:71
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Choose terms"
356
  msgstr "Begriffe wählen"
357
 
358
- #: plugin-options/filter-options.php:76
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Select which terms to use for filtering"
361
  msgstr "Wähle aus, welche Begriffe für die Filterung verwendet werden sollen"
362
 
363
- #: plugin-options/filter-options.php:80
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Filter type"
366
  msgstr "Filter-Typ"
367
 
368
- #: plugin-options/filter-options.php:84
369
  msgctxt "[Admin] Filter edit form"
370
  msgid "Select the filter type for this filter"
371
  msgstr "Wähle den Filtertyp für diesen Filter"
372
 
373
- #: plugin-options/filter-options.php:88
374
  #, fuzzy
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Labels"
377
  msgstr "Label"
378
 
379
- #: plugin-options/filter-options.php:91
380
  #, fuzzy
381
  msgctxt "[Admin] Filter edit form"
382
  msgid "Show below"
383
  msgstr "Ergebnisse anzeigen"
384
 
385
- #: plugin-options/filter-options.php:92
386
  #, fuzzy
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Show on the right"
389
  msgstr "Anzahl der Elemente anzeigen"
390
 
391
- #: plugin-options/filter-options.php:93
392
  msgctxt "[Admin] Filter edit form"
393
  msgid "Hide"
394
  msgstr ""
395
 
396
- #: plugin-options/filter-options.php:95
397
  #, fuzzy
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Choose if and where to show the label inside your filter"
400
  msgstr "Wähle den Stil des Filters innerhalb von Widgets "
401
 
402
- #: plugin-options/filter-options.php:99
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Columns number"
405
  msgstr "Anzahl der Spalten"
406
 
407
- #: plugin-options/filter-options.php:104
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Set the number of items per row you want to show for this design"
410
  msgstr ""
411
  "Stelle die Anzahl der Elemente pro Zeile ein, die du für dieses Design "
412
  "anzeigen möchtest"
413
 
414
- #: plugin-options/filter-options.php:108
415
  msgctxt "[Admin] Filter edit form"
416
  msgid "Customize terms"
417
  msgstr "Begriffe anpassen"
418
 
419
- #: plugin-options/filter-options.php:111
420
  msgctxt "[Admin] Filter edit form"
421
  msgid ""
422
  "Configure your terms individually; system will otherwise use default labels/"
@@ -430,157 +425,157 @@ msgid ""
430
  "this option and use the boxes below</span>"
431
  msgstr ""
432
 
433
- #: plugin-options/filter-options.php:121
434
  #, fuzzy
435
  msgctxt "[Admin] Filter edit form"
436
  msgid "Terms options"
437
  msgstr "Sortierungsoptionen"
438
 
439
- #: plugin-options/filter-options.php:127
440
  msgctxt "[Admin] Filter edit form"
441
  msgid "Show hierarchy"
442
  msgstr "Hierarchie anzeigen"
443
 
444
- #: plugin-options/filter-options.php:130
445
  msgctxt "[Admin] Filter edit form"
446
  msgid "No, show all terms in same level"
447
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
448
 
449
- #: plugin-options/filter-options.php:131
450
  msgctxt "[Admin] Filter edit form"
451
  msgid "No, show only parent terms"
452
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
453
 
454
- #: plugin-options/filter-options.php:132
455
  msgctxt "[Admin] Filter edit form"
456
  msgid "Yes"
457
  msgstr ""
458
 
459
- #: plugin-options/filter-options.php:134
460
  msgctxt "[Admin] Filter edit form"
461
  msgid "Choose how to show terms hierarchy"
462
  msgstr "Wähle, wie die Begriffshierarchie angezeigt werden soll"
463
 
464
- #: plugin-options/filter-options.php:138
465
  msgctxt "[Admin] Filter edit form"
466
  msgid "Allow multiple selection"
467
  msgstr "Mehrfachauswahl zulassen"
468
 
469
- #: plugin-options/filter-options.php:140
470
  msgctxt "[Admin] Filter edit form"
471
  msgid "Enable if the user can select multiple terms when filtering products"
472
  msgstr ""
473
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
474
  "auswählen kann"
475
 
476
- #: plugin-options/filter-options.php:144
477
  msgctxt "[Admin] Filter edit form"
478
  msgid "Multiselect relation"
479
  msgstr "Multiselect-Beziehung"
480
 
481
- #: plugin-options/filter-options.php:150
482
  msgctxt "[Admin] Filter edit form"
483
  msgid "Choose how multiple terms selection should behave"
484
  msgstr "Wähle, wie sich die Auswahl mehrerer Begriffe verhalten soll"
485
 
486
- #: includes/class.yith-wcan-filter-factory.php:104
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Default sorting"
489
  msgstr "Standard-Sortierung"
490
 
491
- #: includes/class.yith-wcan-filter-factory.php:105
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by popularity"
494
  msgstr "Nach Beliebtheit sortieren"
495
 
496
- #: includes/class.yith-wcan-filter-factory.php:106
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by average rating"
499
  msgstr "Best bewertete zuerst"
500
 
501
- #: includes/class.yith-wcan-filter-factory.php:107
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by latest"
504
  msgstr "Neueste zuerst"
505
 
506
- #: includes/class.yith-wcan-filter-factory.php:108
507
  msgctxt "[Admin] Filter edit form, sorting options"
508
  msgid "Sort by price: low to high"
509
  msgstr "Sortieren nach Preis: Preis aufsteigend"
510
 
511
- #: includes/class.yith-wcan-filter-factory.php:109
512
  msgctxt "[Admin] Filter edit form, sorting options"
513
  msgid "Sort by price: high to low"
514
  msgstr "Sortieren nach Preis: Preis absteigend"
515
 
516
- #: includes/class.yith-wcan-filter.php:116
517
  msgctxt "[Admin] Default filter title"
518
  msgid "New filter"
519
  msgstr "Neuer Filter"
520
 
521
- #: includes/class.yith-wcan-frontend.php:576
522
- #: includes/filters/class.yith-wcan-filter-tax.php:62
523
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
524
  msgid "All"
525
  msgstr "Alle"
526
 
527
- #: includes/class.yith-wcan-frontend.php:577
528
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
529
  msgid "Search..."
530
  msgstr "Suchen..."
531
 
532
- #: includes/class.yith-wcan-frontend.php:578
533
  msgctxt "[FRONTEND] Empty items list in the dropdown"
534
  msgid "No item found"
535
  msgstr "Kein Artikel gefunden"
536
 
537
  #. translators: 1. Number of items to show.
538
- #: includes/class.yith-wcan-frontend.php:580
539
  msgctxt "[FRONTEND] Show more link on terms dropdown"
540
  msgid "Show %d more"
541
  msgstr "%d mehr anzeigen"
542
 
543
- #: includes/class.yith-wcan-frontend.php:581
544
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
545
  msgid "Close"
546
  msgstr "Schließen"
547
 
548
- #: includes/class.yith-wcan-frontend.php:582
549
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
550
  msgid "Save"
551
  msgstr ""
552
 
553
- #: includes/class.yith-wcan-frontend.php:583
554
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
555
  msgid "Show results"
556
  msgstr "Ergebnisse anzeigen"
557
 
558
- #: includes/class.yith-wcan-frontend.php:584
559
  msgctxt ""
560
  "[FRONTEND] Label for clear selection link, that appears above filter after "
561
  "selection"
562
  msgid "Clear"
563
  msgstr "Löschen"
564
 
565
- #: includes/class.yith-wcan-frontend.php:585
566
  msgctxt ""
567
  "[FRONTEND] Label for clear selection link, that appears above filter after "
568
  "selection"
569
  msgid "Clear All"
570
  msgstr "Alle löschen"
571
 
572
- #: includes/class.yith-wcan-install.php:95
573
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
574
  msgid "Default preset"
575
  msgstr "Standard-Preset"
576
 
577
  #. translators: 1. Taxonomy name.
578
- #: includes/class.yith-wcan-install.php:285
579
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
580
  msgid "Filter by %s"
581
  msgstr "Nach %s filtern"
582
 
583
- #: includes/class.yith-wcan-preset-factory.php:112
584
  #, fuzzy
585
  msgctxt "[Admin] Label in new preset page"
586
  msgid "Default"
@@ -596,33 +591,33 @@ msgctxt "[Admin] Label in new preset page"
596
  msgid "Enter a name to identify this filter preset"
597
  msgstr "Gib einen Namen ein, um dieses Filter-Preset zu identifizieren"
598
 
599
- #: templates/admin/preset-filters.php:20
600
  msgctxt "[Admin] Label in new preset page"
601
  msgid "Filters of this preset"
602
  msgstr "Filter in diesem Preset"
603
 
604
- #: includes/class.yith-wcan-presets.php:95
605
- #: includes/class.yith-wcan-presets.php:100
606
  msgctxt "[Admin] name of presets custom post type"
607
  msgid "Filter presets"
608
  msgstr "Filter-Presets"
609
 
610
- #: includes/class.yith-wcan-presets.php:96
611
  msgctxt "[Admin] singular name of presets custom post type"
612
  msgid "Filter preset"
613
  msgstr "Filter-Preset"
614
 
615
- #: includes/class.yith-wcan-presets.php:97
616
  msgctxt "[Admin] add new filter preset label"
617
  msgid "Add new preset"
618
  msgstr "Neues Preset hinzufügen"
619
 
620
- #: includes/class.yith-wcan-presets.php:139
621
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
622
  msgid "Convert widgets in a preset"
623
  msgstr "Widgets in eine Preset konvertieren"
624
 
625
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
626
  msgctxt ""
627
  "[Generic] Error that happens when trying to read a filter preset that does "
628
  "not exist"
@@ -630,43 +625,43 @@ msgid "Invalid preset."
630
  msgstr "Ungültige Voreinstellung."
631
 
632
  #. translators: 1. Title of original preset.
633
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
634
  msgctxt "[ADMIN] Title of the cloned preset"
635
  msgid "%s - Copy"
636
  msgstr "%s - Kopieren"
637
 
638
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Preset"
641
  msgstr "YITH AJAX-Filter Presets"
642
 
643
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
644
  msgctxt "[ADMIN] Name of the preset elementor widget"
645
  msgid "YITH AJAX Filters Reset Button"
646
  msgstr "YITH AJAX-Filter Reset-Button"
647
 
648
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
649
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
650
  msgctxt "[ELEMENTOR] Default preset option"
651
  msgid "Choose an option"
652
  msgstr "Wähle eine Option"
653
 
654
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
655
  msgctxt "[ELEMENTOR] Section title"
656
  msgid "Filters"
657
  msgstr "Filter"
658
 
659
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
660
  msgctxt "[ELEMENTOR] Section title"
661
  msgid "General"
662
  msgstr "Allgemein"
663
 
664
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
665
  msgctxt "[ELEMENTOR] Control label"
666
  msgid "Preset"
667
  msgstr "Preset"
668
 
669
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
670
  msgctxt "[ELEMENTOR] Widget description"
671
  msgid ""
672
  "This widget will display \"Filters reset\" button, wherever it is placed"
@@ -674,7 +669,7 @@ msgstr ""
674
  "Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
675
  "platziert wird"
676
 
677
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
678
  msgctxt "[ELEMENTOR] Widget description"
679
  msgid ""
680
  "It will allow users to reset the filer selection; it will only appear when "
@@ -683,7 +678,7 @@ msgstr ""
683
  "Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
684
  "erscheint nur, wenn ein Filter aktiv ist. "
685
 
686
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
687
  msgctxt "[ELEMENTOR] Widget description"
688
  msgid ""
689
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -693,17 +688,17 @@ msgstr ""
693
  "innerhalb deiner Seite zu platzieren, wenn die Option \"Position des Buttons "
694
  "zurücksetzen\" für den Loop deines Produkts nicht funktioniert "
695
 
696
- #: includes/functions.yith-wcan.php:112
697
  msgctxt "For multicolor: I.E. white and red T-Shirt"
698
  msgid "Color 1"
699
  msgstr "Farbe 2"
700
 
701
- #: includes/functions.yith-wcan.php:112
702
  msgctxt "For multicolor: I.E. white and red T-Shirt"
703
  msgid "Color 2"
704
  msgstr "Farbe 2"
705
 
706
- #: includes/functions.yith-wcan.php:1001
707
  msgctxt "[FRONTEND] Star rating template"
708
  msgid "star"
709
  msgid_plural "stars"
@@ -711,27 +706,27 @@ msgstr[0] "Stern"
711
  msgstr[1] "Sternen"
712
 
713
  #. translators: 1. Rating.
714
- #: includes/functions.yith-wcan.php:1016
715
  msgctxt "[FRONTEND] Star rating label"
716
  msgid "Rated %s out of 5"
717
  msgstr "Bewertet mit %s von 5"
718
 
719
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
720
  msgctxt "[GUTENBERG]: block name"
721
  msgid "YITH AJAX Filters Preset"
722
  msgstr "YITH AJAX Filters Preset"
723
 
724
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
725
  msgctxt "[GUTENBERG]: block name"
726
  msgid "YITH Reset Filters Button"
727
  msgstr "YITH \"Filter zurücksetzen\"-Button"
728
 
729
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
730
  msgctxt "[GUTENBERG]: block description"
731
  msgid "Show filters from a preset"
732
  msgstr "Filter aus einem Preset anzeigen"
733
 
734
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
735
  msgctxt "[GUTENBERG]: block description"
736
  msgid ""
737
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -745,80 +740,80 @@ msgstr ""
745
  "Seite zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" "
746
  "für den Loop deines Produkts nicht funktioniert"
747
 
748
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
749
  msgctxt "[GUTENBERG]: attribute description"
750
  msgid "Preset"
751
  msgstr "Preset"
752
 
753
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
754
  msgctxt "[Admin] Preset table column header"
755
  msgid "Preset name"
756
  msgstr "Preset-Name"
757
 
758
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
759
  msgctxt "[Admin] Preset table column header"
760
  msgid "Shortcode"
761
  msgstr "Shortcode"
762
 
763
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
764
  msgctxt "[Admin] Preset edit action label"
765
  msgid "Edit this preset"
766
  msgstr "Dieses Preset bearbeiten"
767
 
768
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
769
  msgctxt "[Admin] Preset clone action label"
770
  msgid "Clone this preset"
771
  msgstr "Dieses Preset kopieren"
772
 
773
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
774
  msgctxt "[Admin] Preset delete action label"
775
  msgid "Delete this preset"
776
  msgstr "Dieses Preset löschen"
777
 
778
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
779
  msgctxt "[Admin] Preset delete confirm label"
780
  msgid "Are you sure you want to delete this preset?"
781
  msgstr "Bist du sicher, dass du dieses Preset löschen möchtest?"
782
 
783
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
784
  msgctxt "[Admin] on-off yes"
785
  msgid "YES"
786
  msgstr "JA"
787
 
788
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
789
  msgctxt "[Admin] on-off no"
790
  msgid "NO"
791
  msgstr "NEIN"
792
 
793
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
794
  msgctxt ""
795
  "[Admin] Name of the item missing, shown in preset-empty-content template"
796
  msgid "filter preset"
797
  msgstr "Filter-Preset"
798
 
799
- #: templates/admin/preset-filters.php:29
800
  msgctxt ""
801
  "[Admin] Name of the item missing, shown in preset-empty-content template"
802
  msgid "filter"
803
  msgstr "Filter"
804
 
805
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
806
  msgctxt "[Admin] New preset button label"
807
  msgid "Create a new preset"
808
  msgstr "Neues Preset erstellen"
809
 
810
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
811
  msgctxt "[ADMIN] Name of the preset widget"
812
  msgid "YITH AJAX Filters Preset"
813
  msgstr "YITH AJAX Filters Preset"
814
 
815
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
816
  msgctxt "[ADMIN] Preset widget options"
817
  msgid "Preset"
818
  msgstr "Preset"
819
 
820
  #. translators: 1. Url to Ajax Product filter admin panel.
821
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
822
  msgctxt "[ADMIN] Preset widget options"
823
  msgid ""
824
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -827,25 +822,25 @@ msgstr ""
827
  "Bitte gehe auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product Filter -> "
828
  "Presets</a> und erstelle dein erstes Preset"
829
 
830
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
831
  msgctxt "[Plugin Name] Admin: Widget Title"
832
  msgid "YITH AJAX Product Filter"
833
  msgstr "YITH AJAX Product Filter"
834
 
835
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
836
  #, fuzzy
837
  msgctxt ""
838
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
839
  msgid "AND"
840
  msgstr "UND"
841
 
842
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
843
  msgctxt "[Plugin Name]"
844
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
845
  msgstr ""
846
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
847
 
848
- #: plugin-options/filter-options.php:147
849
  #, fuzzy
850
  msgctxt ""
851
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -854,7 +849,7 @@ msgstr ""
854
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
855
  "übereinstimmen"
856
 
857
- #: plugin-options/filter-options.php:148
858
  #, fuzzy
859
  msgctxt ""
860
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1142,21 +1137,21 @@ msgstr ""
1142
  msgctxt "[ADMIN] Premium tab"
1143
  msgid ""
1144
  "<b>Filter by category</b>: to let users choose which product category to "
1145
- "view<br/>\r\n"
1146
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1147
  "<b>Filter by price</b>: to let users filter products by a specific price "
1148
- "range (based on their budget availability)<br/>\r\n"
1149
  "<b>Filter by color and size</b>: you can create filters for all the "
1150
  "attributes available in your store, like color and size. For the color "
1151
  "filter, you can either choose square or circular color swatches or use "
1152
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1153
  "<b>Filter by rating</b>: to let your users filter products based on other "
1154
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1155
- "concentrate only on high-rated ones)<br/>\r\n"
1156
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1157
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1158
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1159
- "filter products and view only those with a discount<br/>\r\n"
1160
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1161
  "filter products based on their needs and exclude out-of-stock products from "
1162
  "the list"
@@ -1282,73 +1277,73 @@ msgid ""
1282
  "easier to share)"
1283
  msgstr ""
1284
 
1285
- #: templates/admin/preset-edit.php:29
1286
  msgctxt "[Admin] Back link in new preset page"
1287
  msgid "< back to preset list"
1288
  msgstr "< zurück zur Preset-Liste"
1289
 
1290
- #: templates/admin/preset-edit.php:36
1291
  msgctxt "[ADMIN] Title for new preset page"
1292
  msgid "Edit filter preset"
1293
  msgstr "Filter-Preset bearbeiten"
1294
 
1295
- #: templates/admin/preset-edit.php:38
1296
  msgctxt "[ADMIN] Title for new preset page"
1297
  msgid "Add new filter preset"
1298
  msgstr "Neues Filter-Preset hinzufügen"
1299
 
1300
- #: templates/admin/preset-edit.php:45
1301
  msgctxt "[ADMIN] Preset save message"
1302
  msgid "Preset saved correctly"
1303
  msgstr ""
1304
 
1305
- #: templates/admin/preset-edit.php:90
1306
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1307
  msgid "Save preset"
1308
  msgstr "Preset speichern"
1309
 
1310
- #: templates/admin/preset-empty-content.php:27
1311
  msgctxt "Alt text for empty preset image"
1312
  msgid "Empty preset"
1313
  msgstr "Leeres Preset"
1314
 
1315
  #. translators: 1. Missing item name.
1316
- #: templates/admin/preset-empty-content.php:33
1317
  msgctxt "[Admin] Preset table empty message"
1318
  msgid "You don't have any %s yet."
1319
  msgstr "Du hast bis jetzt keine %s."
1320
 
1321
- #: templates/admin/preset-filter-term.php:28
1322
  msgctxt "[Admin] Term edit field label (preset edit page)"
1323
  msgid "Label"
1324
  msgstr "Label"
1325
 
1326
- #: templates/admin/preset-filter-term.php:33
1327
  msgctxt "[Admin] Term edit field label (preset edit page)"
1328
  msgid "Tooltip"
1329
  msgstr "Tooltip"
1330
 
1331
- #: templates/admin/preset-filter-term.php:39
1332
  msgctxt "[Admin] Term edit field label (preset edit page)"
1333
  msgid "Color"
1334
  msgstr "Farbe"
1335
 
1336
- #: templates/admin/preset-filter.php:89
1337
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1338
  msgid "Save Filter"
1339
  msgstr "Filter speichern"
1340
 
1341
- #: templates/admin/preset-filter.php:90
1342
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1343
  msgid "Delete Filter"
1344
  msgstr "Filter löschen"
1345
 
1346
- #: templates/admin/preset-filters.php:31
1347
  msgctxt "[Admin] New filter button label"
1348
  msgid "Add a new filter"
1349
  msgstr "Einen neuen Filter hinzufügen"
1350
 
1351
- #: templates/admin/preset-filters.php:55
1352
  msgctxt "[Admin] Add new filter in new preset page"
1353
  msgid "+ Add filter"
1354
  msgstr "+ Filter hinzufügen "
@@ -1360,12 +1355,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1360
  msgid "See %d more filters"
1361
  msgstr "Vor Filtern"
1362
 
1363
- #: templates/admin/upgrade-note-modal.php:31
1364
  msgctxt "[ADMIN] Upgrade note modal title"
1365
  msgid "Use the new filter preset feature for your filters"
1366
  msgstr "Nutze das neuen Filter-Preset-Feature für deine Filter "
1367
 
1368
- #: templates/admin/upgrade-note-modal.php:36
1369
  msgctxt "[ADMIN] Upgrade note modal content"
1370
  msgid ""
1371
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1380,7 +1375,7 @@ msgstr ""
1380
  "Widget verwendest. "
1381
 
1382
  #. translators: 1. Url to demo video. 2. Url to docs.
1383
- #: templates/admin/upgrade-note-modal.php:49
1384
  msgctxt "[ADMIN] Upgrade note modal content"
1385
  msgid ""
1386
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1391,7 +1386,7 @@ msgstr ""
1391
  "Feature genutzt werden kann."
1392
 
1393
  #. translators: 1. Url to docs.
1394
- #: templates/admin/upgrade-note-modal.php:62
1395
  msgctxt "[ADMIN] Upgrade note modal content"
1396
  msgid ""
1397
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1400,7 +1395,7 @@ msgstr ""
1400
  "Wir empfehlen dir, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> "
1401
  "um zu lernen, wie dieses neue Feature genutzt werden kann."
1402
 
1403
- #: templates/admin/upgrade-note-modal.php:76
1404
  #, fuzzy
1405
  msgctxt "[ADMIN] Upgrade note modal content"
1406
  msgid ""
@@ -1415,7 +1410,7 @@ msgstr ""
1415
  "übertragen.<br/>\n"
1416
  "<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
1417
 
1418
- #: templates/admin/upgrade-note-modal.php:87
1419
  msgctxt "[ADMIN] Upgrade note modal content"
1420
  msgid ""
1421
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1423,21 +1418,25 @@ msgid ""
1423
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1424
  msgstr ""
1425
 
1426
- #: templates/admin/upgrade-note-modal.php:96
1427
  msgctxt "[ADMIN] Upgrade note modal button label"
1428
  msgid "Convert your widgets in a preset now"
1429
  msgstr "Wandle deine Widgets jetzt ins Presets um"
1430
 
1431
- #: templates/admin/upgrade-note-modal.php:97
1432
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1433
  msgid "No thanks"
1434
  msgstr "Nein Danke"
1435
 
1436
- #: templates/filters/global/reset-filters.php:23
1437
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1438
  msgid "Reset filters"
1439
  msgstr "Filter zurücksetzen"
1440
 
 
 
 
 
1441
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1442
  #~ msgid "All"
1443
  #~ msgstr "Alle"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
23
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
24
+ #: includes/functions-yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Begriff"
27
 
28
+ #: includes/functions-yith-wcan.php:98
29
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
30
  msgid "Color"
31
  msgstr "Farbe"
32
 
33
+ #: includes/functions-yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Label"
36
 
37
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
40
 
41
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
42
  msgid "Filters:"
43
  msgstr "Filter:"
44
 
45
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
46
  msgid "List"
47
  msgstr "Liste"
48
 
49
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
50
  msgid "Label"
51
  msgstr "Label"
52
 
53
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
58
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
59
  msgid "Title"
60
  msgstr "Titel"
61
 
62
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
63
  msgid "Type:"
64
  msgstr "Typ:"
65
 
66
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
67
  msgid "Query Type:"
68
  msgstr "Query-Typ"
69
 
70
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
71
  msgid "OR"
72
  msgstr "ODER"
73
 
74
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
75
  msgid "Attribute:"
76
  msgstr "Attribute:"
77
 
78
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
79
  msgid "Display (default All):"
80
  msgstr "Anzeige (Standard Alles):"
81
 
82
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
83
  msgid "All (no hierarchical)"
84
  msgstr "Alle (nicht hierarchisch)"
85
 
86
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
87
  msgid "All (hierarchical)"
88
  msgstr "Alles (hierarchisch)"
89
 
90
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
91
  msgid "Only Parent"
92
  msgstr "Nur Übergeordnete"
93
 
94
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
95
  msgid "CSS custom class"
96
  msgstr "Individuelle CSS-Klasse"
97
 
98
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX-Filter zurücksetzen"
101
 
102
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
103
  msgid "Reset All Filters"
104
  msgstr "Alle Filter zurücksetzen"
105
 
106
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
139
  "\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für deinen E-"
140
  "Commerce-Shop erhältst du bei <strong>YITH</strong></a>"
141
 
142
+ #: includes/class-yith-wcan-admin.php:107
143
  msgctxt "[Admin] Copy confirmation message"
144
  msgid "Content copied to your clipboard"
145
  msgstr "Inhalt in die Zwischenablage kopiert"
146
 
147
+ #: includes/class-yith-wcan-admin.php:108
148
  msgctxt "[Admin] Confirm filter delete message"
149
  msgid "Are you sure you want to delete this item?"
150
  msgstr "Bist du sicher, dass du dieses Element löschen möchtest?"
151
 
152
  #. translators: 1. Number of items that will be added.
153
+ #: includes/class-yith-wcan-admin.php:110
154
  msgctxt "[Admin] Confirm add all terms message"
155
  msgid "Are you sure you want to proceed? This operation will add %s items"
156
  msgstr ""
157
  "Bist du sicher, dass du fortfahren möchtest? Dieser Vorgang wird %s Elemente "
158
  "hinzufügen"
159
 
160
+ #: includes/class-yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; Kein Titel &gt;"
169
 
170
+ #: includes/class-yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Die zu verwendenden Medien auswählen"
174
 
175
+ #: includes/class-yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Dieses Medium verwenden"
179
 
180
+ #: includes/class-yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Filter-Presets"
184
 
185
+ #: includes/class-yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Allgemeine Einstellungen"
189
 
190
+ #: includes/class-yith-wcan-admin.php:186
191
  #, fuzzy
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr "SEO"
195
 
196
+ #: includes/class-yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr "Premium-Version"
200
 
201
+ #: includes/class-yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr "Legacy"
205
 
206
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
207
  msgctxt "[Admin] Plugin description"
208
  msgid ""
209
  "It allows your users to find the product they are looking for as quickly as "
212
  "Ermöglicht deinen Benutzern, das gesuchte Produkt so schnell wie möglich zu "
213
  "finden."
214
 
215
+ #: includes/class-yith-wcan-admin.php:211
216
  msgctxt "[HELP TAB] Video title"
217
  msgid ""
218
  "Check this video to learn how to <b>create a filter preset and show it on "
219
  "the shop page:</b>"
220
  msgstr ""
221
 
222
+ #: includes/class-yith-wcan-admin.php:329
223
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
224
  msgid "item"
225
  msgstr "Artikel"
226
 
227
+ #: includes/class-yith-wcan-admin.php:330
228
  msgctxt "[Admin] Preset table empty message second line"
229
  msgid "But don't worry, here you can create your first one!"
230
  msgstr "Aber keine Sorge, hier kannst du deine erste erstellen!"
231
 
232
+ #: includes/class-yith-wcan-admin.php:480
233
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
234
  msgid "Clear Product Filter transients"
235
  msgstr "Produktfilter-Tansients löschen"
236
 
237
+ #: includes/class-yith-wcan-admin.php:486
238
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
239
  msgid "Run filter widgets upgrade"
240
  msgstr "Upgrade der Filter-Widgets ausführen"
241
 
242
+ #: includes/class-yith-wcan-admin.php:481
243
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
244
  msgid "Clear"
245
  msgstr "Löschen"
246
 
247
+ #: includes/class-yith-wcan-admin.php:487
248
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
249
  msgid "Run"
250
  msgstr "Start"
251
 
252
+ #: includes/class-yith-wcan-admin.php:482
253
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
254
  msgid ""
255
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
261
  "Konfiguration deines Produkts geändert hast und die Filter nicht die "
262
  "erwarteten Ergebnisse anzeigen. "
263
 
264
+ #: includes/class-yith-wcan-admin.php:488
265
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
266
  msgid ""
267
  "This will create a preset for any sidebar of your shop containing filter "
271
  "Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
272
  "Spezifikationen der Widgets entspricht"
273
 
274
+ #: includes/class-yith-wcan-filter-factory.php:72
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Taxonomy"
277
  msgstr "Taxonomie"
278
 
279
+ #: includes/class-yith-wcan-filter-factory.php:86
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Checkbox"
282
  msgstr "Checkbox"
283
 
284
+ #: includes/class-yith-wcan-filter-factory.php:87
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Select"
287
  msgstr "Auswahl"
288
 
289
+ #: includes/class-yith-wcan-filter-factory.php:88
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Text"
292
  msgstr "Text"
293
 
294
+ #: includes/class-yith-wcan-filter-factory.php:89
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Color Swatches"
297
  msgstr "Farbmuster"
298
 
299
+ #: includes/class-yith-wcan-filter-factory.php:90
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Label"
302
  msgstr "Label"
311
  msgid "Enter a name to identify this filter"
312
  msgstr "Gib einen Namen ein, um diesen Filter zu identifizieren"
313
 
314
+ #: plugin-options/filter-options.php:40
315
  msgctxt "[Admin] Filter edit form"
316
  msgid "Filter for"
317
  msgstr "Filtern nach"
318
 
319
+ #: plugin-options/filter-options.php:44
320
  msgctxt "[Admin] Filter edit form"
321
  msgid "Select the parameters you wish to filter for"
322
  msgstr "Wähle die Parameter, nach denen du filtern möchtest"
323
 
324
+ #: plugin-options/filter-options.php:49
325
  msgctxt "[Admin] Filter edit form"
326
  msgid "Choose taxonomy"
327
  msgstr "Taxonomie wählen"
328
 
329
+ #: plugin-options/filter-options.php:53
330
  msgctxt "[Admin] Filter edit form"
331
  msgid "Select which taxonomy to use for this filter"
332
  msgstr "Wähle, welche Taxonomie für diesen Filter verwendet werden soll"
333
 
334
+ #: plugin-options/filter-options.php:58
335
  msgctxt "[Admin] Filter edit form"
336
  msgid "Auto-populate with all terms"
337
  msgstr ""
338
 
339
+ #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid ""
342
  "Populate this filter with all existing terms of the selected taxonomy.\n"
345
  "well.</span>"
346
  msgstr ""
347
 
348
+ #: plugin-options/filter-options.php:69
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Choose terms"
351
  msgstr "Begriffe wählen"
352
 
353
+ #: plugin-options/filter-options.php:74
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Select which terms to use for filtering"
356
  msgstr "Wähle aus, welche Begriffe für die Filterung verwendet werden sollen"
357
 
358
+ #: plugin-options/filter-options.php:78
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Filter type"
361
  msgstr "Filter-Typ"
362
 
363
+ #: plugin-options/filter-options.php:82
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Select the filter type for this filter"
366
  msgstr "Wähle den Filtertyp für diesen Filter"
367
 
368
+ #: plugin-options/filter-options.php:86
369
  #, fuzzy
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Labels"
372
  msgstr "Label"
373
 
374
+ #: plugin-options/filter-options.php:89
375
  #, fuzzy
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "Show below"
378
  msgstr "Ergebnisse anzeigen"
379
 
380
+ #: plugin-options/filter-options.php:90
381
  #, fuzzy
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Show on the right"
384
  msgstr "Anzahl der Elemente anzeigen"
385
 
386
+ #: plugin-options/filter-options.php:91
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Hide"
389
  msgstr ""
390
 
391
+ #: plugin-options/filter-options.php:93
392
  #, fuzzy
393
  msgctxt "[Admin] Filter edit form"
394
  msgid "Choose if and where to show the label inside your filter"
395
  msgstr "Wähle den Stil des Filters innerhalb von Widgets "
396
 
397
+ #: plugin-options/filter-options.php:97
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Columns number"
400
  msgstr "Anzahl der Spalten"
401
 
402
+ #: plugin-options/filter-options.php:102
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Set the number of items per row you want to show for this design"
405
  msgstr ""
406
  "Stelle die Anzahl der Elemente pro Zeile ein, die du für dieses Design "
407
  "anzeigen möchtest"
408
 
409
+ #: plugin-options/filter-options.php:106
410
  msgctxt "[Admin] Filter edit form"
411
  msgid "Customize terms"
412
  msgstr "Begriffe anpassen"
413
 
414
+ #: plugin-options/filter-options.php:109
415
  msgctxt "[Admin] Filter edit form"
416
  msgid ""
417
  "Configure your terms individually; system will otherwise use default labels/"
425
  "this option and use the boxes below</span>"
426
  msgstr ""
427
 
428
+ #: plugin-options/filter-options.php:119
429
  #, fuzzy
430
  msgctxt "[Admin] Filter edit form"
431
  msgid "Terms options"
432
  msgstr "Sortierungsoptionen"
433
 
434
+ #: plugin-options/filter-options.php:125
435
  msgctxt "[Admin] Filter edit form"
436
  msgid "Show hierarchy"
437
  msgstr "Hierarchie anzeigen"
438
 
439
+ #: plugin-options/filter-options.php:128
440
  msgctxt "[Admin] Filter edit form"
441
  msgid "No, show all terms in same level"
442
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
443
 
444
+ #: plugin-options/filter-options.php:129
445
  msgctxt "[Admin] Filter edit form"
446
  msgid "No, show only parent terms"
447
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
448
 
449
+ #: plugin-options/filter-options.php:130
450
  msgctxt "[Admin] Filter edit form"
451
  msgid "Yes"
452
  msgstr ""
453
 
454
+ #: plugin-options/filter-options.php:132
455
  msgctxt "[Admin] Filter edit form"
456
  msgid "Choose how to show terms hierarchy"
457
  msgstr "Wähle, wie die Begriffshierarchie angezeigt werden soll"
458
 
459
+ #: plugin-options/filter-options.php:136
460
  msgctxt "[Admin] Filter edit form"
461
  msgid "Allow multiple selection"
462
  msgstr "Mehrfachauswahl zulassen"
463
 
464
+ #: plugin-options/filter-options.php:138
465
  msgctxt "[Admin] Filter edit form"
466
  msgid "Enable if the user can select multiple terms when filtering products"
467
  msgstr ""
468
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
469
  "auswählen kann"
470
 
471
+ #: plugin-options/filter-options.php:142
472
  msgctxt "[Admin] Filter edit form"
473
  msgid "Multiselect relation"
474
  msgstr "Multiselect-Beziehung"
475
 
476
+ #: plugin-options/filter-options.php:148
477
  msgctxt "[Admin] Filter edit form"
478
  msgid "Choose how multiple terms selection should behave"
479
  msgstr "Wähle, wie sich die Auswahl mehrerer Begriffe verhalten soll"
480
 
481
+ #: includes/class-yith-wcan-filter-factory.php:104
482
  msgctxt "[Admin] Filter edit form, sorting options"
483
  msgid "Default sorting"
484
  msgstr "Standard-Sortierung"
485
 
486
+ #: includes/class-yith-wcan-filter-factory.php:105
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Sort by popularity"
489
  msgstr "Nach Beliebtheit sortieren"
490
 
491
+ #: includes/class-yith-wcan-filter-factory.php:106
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by average rating"
494
  msgstr "Best bewertete zuerst"
495
 
496
+ #: includes/class-yith-wcan-filter-factory.php:107
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by latest"
499
  msgstr "Neueste zuerst"
500
 
501
+ #: includes/class-yith-wcan-filter-factory.php:108
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by price: low to high"
504
  msgstr "Sortieren nach Preis: Preis aufsteigend"
505
 
506
+ #: includes/class-yith-wcan-filter-factory.php:109
507
  msgctxt "[Admin] Filter edit form, sorting options"
508
  msgid "Sort by price: high to low"
509
  msgstr "Sortieren nach Preis: Preis absteigend"
510
 
511
+ #: includes/class-yith-wcan-filter.php:116
512
  msgctxt "[Admin] Default filter title"
513
  msgid "New filter"
514
  msgstr "Neuer Filter"
515
 
516
+ #: includes/class-yith-wcan-frontend.php:591
517
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
518
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
519
  msgid "All"
520
  msgstr "Alle"
521
 
522
+ #: includes/class-yith-wcan-frontend.php:592
523
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
524
  msgid "Search..."
525
  msgstr "Suchen..."
526
 
527
+ #: includes/class-yith-wcan-frontend.php:593
528
  msgctxt "[FRONTEND] Empty items list in the dropdown"
529
  msgid "No item found"
530
  msgstr "Kein Artikel gefunden"
531
 
532
  #. translators: 1. Number of items to show.
533
+ #: includes/class-yith-wcan-frontend.php:595
534
  msgctxt "[FRONTEND] Show more link on terms dropdown"
535
  msgid "Show %d more"
536
  msgstr "%d mehr anzeigen"
537
 
538
+ #: includes/class-yith-wcan-frontend.php:596
539
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
540
  msgid "Close"
541
  msgstr "Schließen"
542
 
543
+ #: includes/class-yith-wcan-frontend.php:597
544
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
545
  msgid "Save"
546
  msgstr ""
547
 
548
+ #: includes/class-yith-wcan-frontend.php:598
549
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
550
  msgid "Show results"
551
  msgstr "Ergebnisse anzeigen"
552
 
553
+ #: includes/class-yith-wcan-frontend.php:599
554
  msgctxt ""
555
  "[FRONTEND] Label for clear selection link, that appears above filter after "
556
  "selection"
557
  msgid "Clear"
558
  msgstr "Löschen"
559
 
560
+ #: includes/class-yith-wcan-frontend.php:600
561
  msgctxt ""
562
  "[FRONTEND] Label for clear selection link, that appears above filter after "
563
  "selection"
564
  msgid "Clear All"
565
  msgstr "Alle löschen"
566
 
567
+ #: includes/class-yith-wcan-install.php:95
568
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
569
  msgid "Default preset"
570
  msgstr "Standard-Preset"
571
 
572
  #. translators: 1. Taxonomy name.
573
+ #: includes/class-yith-wcan-install.php:285
574
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
575
  msgid "Filter by %s"
576
  msgstr "Nach %s filtern"
577
 
578
+ #: includes/class-yith-wcan-preset-factory.php:112
579
  #, fuzzy
580
  msgctxt "[Admin] Label in new preset page"
581
  msgid "Default"
591
  msgid "Enter a name to identify this filter preset"
592
  msgstr "Gib einen Namen ein, um dieses Filter-Preset zu identifizieren"
593
 
594
+ #: templates/admin/preset-filters.php:22
595
  msgctxt "[Admin] Label in new preset page"
596
  msgid "Filters of this preset"
597
  msgstr "Filter in diesem Preset"
598
 
599
+ #: includes/class-yith-wcan-presets.php:95
600
+ #: includes/class-yith-wcan-presets.php:100
601
  msgctxt "[Admin] name of presets custom post type"
602
  msgid "Filter presets"
603
  msgstr "Filter-Presets"
604
 
605
+ #: includes/class-yith-wcan-presets.php:96
606
  msgctxt "[Admin] singular name of presets custom post type"
607
  msgid "Filter preset"
608
  msgstr "Filter-Preset"
609
 
610
+ #: includes/class-yith-wcan-presets.php:97
611
  msgctxt "[Admin] add new filter preset label"
612
  msgid "Add new preset"
613
  msgstr "Neues Preset hinzufügen"
614
 
615
+ #: includes/class-yith-wcan-presets.php:139
616
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
617
  msgid "Convert widgets in a preset"
618
  msgstr "Widgets in eine Preset konvertieren"
619
 
620
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
621
  msgctxt ""
622
  "[Generic] Error that happens when trying to read a filter preset that does "
623
  "not exist"
625
  msgstr "Ungültige Voreinstellung."
626
 
627
  #. translators: 1. Title of original preset.
628
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
629
  msgctxt "[ADMIN] Title of the cloned preset"
630
  msgid "%s - Copy"
631
  msgstr "%s - Kopieren"
632
 
633
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
634
  msgctxt "[ADMIN] Name of the preset elementor widget"
635
  msgid "YITH AJAX Filters Preset"
636
  msgstr "YITH AJAX-Filter Presets"
637
 
638
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Reset Button"
641
  msgstr "YITH AJAX-Filter Reset-Button"
642
 
643
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
644
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
645
  msgctxt "[ELEMENTOR] Default preset option"
646
  msgid "Choose an option"
647
  msgstr "Wähle eine Option"
648
 
649
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
650
  msgctxt "[ELEMENTOR] Section title"
651
  msgid "Filters"
652
  msgstr "Filter"
653
 
654
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
655
  msgctxt "[ELEMENTOR] Section title"
656
  msgid "General"
657
  msgstr "Allgemein"
658
 
659
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
660
  msgctxt "[ELEMENTOR] Control label"
661
  msgid "Preset"
662
  msgstr "Preset"
663
 
664
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
665
  msgctxt "[ELEMENTOR] Widget description"
666
  msgid ""
667
  "This widget will display \"Filters reset\" button, wherever it is placed"
669
  "Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
670
  "platziert wird"
671
 
672
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
673
  msgctxt "[ELEMENTOR] Widget description"
674
  msgid ""
675
  "It will allow users to reset the filer selection; it will only appear when "
678
  "Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
679
  "erscheint nur, wenn ein Filter aktiv ist. "
680
 
681
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
682
  msgctxt "[ELEMENTOR] Widget description"
683
  msgid ""
684
  "You can use this block to place \"Reset filters\" button inside your page, "
688
  "innerhalb deiner Seite zu platzieren, wenn die Option \"Position des Buttons "
689
  "zurücksetzen\" für den Loop deines Produkts nicht funktioniert "
690
 
691
+ #: includes/functions-yith-wcan.php:112
692
  msgctxt "For multicolor: I.E. white and red T-Shirt"
693
  msgid "Color 1"
694
  msgstr "Farbe 2"
695
 
696
+ #: includes/functions-yith-wcan.php:112
697
  msgctxt "For multicolor: I.E. white and red T-Shirt"
698
  msgid "Color 2"
699
  msgstr "Farbe 2"
700
 
701
+ #: includes/functions-yith-wcan.php:1026
702
  msgctxt "[FRONTEND] Star rating template"
703
  msgid "star"
704
  msgid_plural "stars"
706
  msgstr[1] "Sternen"
707
 
708
  #. translators: 1. Rating.
709
+ #: includes/functions-yith-wcan.php:1041
710
  msgctxt "[FRONTEND] Star rating label"
711
  msgid "Rated %s out of 5"
712
  msgstr "Bewertet mit %s von 5"
713
 
714
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
715
  msgctxt "[GUTENBERG]: block name"
716
  msgid "YITH AJAX Filters Preset"
717
  msgstr "YITH AJAX Filters Preset"
718
 
719
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
720
  msgctxt "[GUTENBERG]: block name"
721
  msgid "YITH Reset Filters Button"
722
  msgstr "YITH \"Filter zurücksetzen\"-Button"
723
 
724
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
725
  msgctxt "[GUTENBERG]: block description"
726
  msgid "Show filters from a preset"
727
  msgstr "Filter aus einem Preset anzeigen"
728
 
729
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
730
  msgctxt "[GUTENBERG]: block description"
731
  msgid ""
732
  "Show reset filters button, when a filter is applied and button is enabled in "
740
  "Seite zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" "
741
  "für den Loop deines Produkts nicht funktioniert"
742
 
743
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
744
  msgctxt "[GUTENBERG]: attribute description"
745
  msgid "Preset"
746
  msgstr "Preset"
747
 
748
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
749
  msgctxt "[Admin] Preset table column header"
750
  msgid "Preset name"
751
  msgstr "Preset-Name"
752
 
753
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
754
  msgctxt "[Admin] Preset table column header"
755
  msgid "Shortcode"
756
  msgstr "Shortcode"
757
 
758
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
759
  msgctxt "[Admin] Preset edit action label"
760
  msgid "Edit this preset"
761
  msgstr "Dieses Preset bearbeiten"
762
 
763
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
764
  msgctxt "[Admin] Preset clone action label"
765
  msgid "Clone this preset"
766
  msgstr "Dieses Preset kopieren"
767
 
768
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
769
  msgctxt "[Admin] Preset delete action label"
770
  msgid "Delete this preset"
771
  msgstr "Dieses Preset löschen"
772
 
773
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
774
  msgctxt "[Admin] Preset delete confirm label"
775
  msgid "Are you sure you want to delete this preset?"
776
  msgstr "Bist du sicher, dass du dieses Preset löschen möchtest?"
777
 
778
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
779
  msgctxt "[Admin] on-off yes"
780
  msgid "YES"
781
  msgstr "JA"
782
 
783
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
784
  msgctxt "[Admin] on-off no"
785
  msgid "NO"
786
  msgstr "NEIN"
787
 
788
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
789
  msgctxt ""
790
  "[Admin] Name of the item missing, shown in preset-empty-content template"
791
  msgid "filter preset"
792
  msgstr "Filter-Preset"
793
 
794
+ #: templates/admin/preset-filters.php:31
795
  msgctxt ""
796
  "[Admin] Name of the item missing, shown in preset-empty-content template"
797
  msgid "filter"
798
  msgstr "Filter"
799
 
800
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
801
  msgctxt "[Admin] New preset button label"
802
  msgid "Create a new preset"
803
  msgstr "Neues Preset erstellen"
804
 
805
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
806
  msgctxt "[ADMIN] Name of the preset widget"
807
  msgid "YITH AJAX Filters Preset"
808
  msgstr "YITH AJAX Filters Preset"
809
 
810
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
811
  msgctxt "[ADMIN] Preset widget options"
812
  msgid "Preset"
813
  msgstr "Preset"
814
 
815
  #. translators: 1. Url to Ajax Product filter admin panel.
816
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
817
  msgctxt "[ADMIN] Preset widget options"
818
  msgid ""
819
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
822
  "Bitte gehe auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product Filter -> "
823
  "Presets</a> und erstelle dein erstes Preset"
824
 
825
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
826
  msgctxt "[Plugin Name] Admin: Widget Title"
827
  msgid "YITH AJAX Product Filter"
828
  msgstr "YITH AJAX Product Filter"
829
 
830
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
831
  #, fuzzy
832
  msgctxt ""
833
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
834
  msgid "AND"
835
  msgstr "UND"
836
 
837
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
838
  msgctxt "[Plugin Name]"
839
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
840
  msgstr ""
841
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
842
 
843
+ #: plugin-options/filter-options.php:145
844
  #, fuzzy
845
  msgctxt ""
846
  "[Admin] Filter edit form; logical operator that affects query behaviour"
849
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
850
  "übereinstimmen"
851
 
852
+ #: plugin-options/filter-options.php:146
853
  #, fuzzy
854
  msgctxt ""
855
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1137
  msgctxt "[ADMIN] Premium tab"
1138
  msgid ""
1139
  "<b>Filter by category</b>: to let users choose which product category to "
1140
+ "view<br/>\n"
1141
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1142
  "<b>Filter by price</b>: to let users filter products by a specific price "
1143
+ "range (based on their budget availability)<br/>\n"
1144
  "<b>Filter by color and size</b>: you can create filters for all the "
1145
  "attributes available in your store, like color and size. For the color "
1146
  "filter, you can either choose square or circular color swatches or use "
1147
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1148
  "<b>Filter by rating</b>: to let your users filter products based on other "
1149
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1150
+ "concentrate only on high-rated ones)<br/>\n"
1151
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1152
+ "on plugin, you can also filter products by specific brands<br/>\n"
1153
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1154
+ "filter products and view only those with a discount<br/>\n"
1155
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1156
  "filter products based on their needs and exclude out-of-stock products from "
1157
  "the list"
1277
  "easier to share)"
1278
  msgstr ""
1279
 
1280
+ #: templates/admin/preset-edit.php:31
1281
  msgctxt "[Admin] Back link in new preset page"
1282
  msgid "< back to preset list"
1283
  msgstr "< zurück zur Preset-Liste"
1284
 
1285
+ #: templates/admin/preset-edit.php:38
1286
  msgctxt "[ADMIN] Title for new preset page"
1287
  msgid "Edit filter preset"
1288
  msgstr "Filter-Preset bearbeiten"
1289
 
1290
+ #: templates/admin/preset-edit.php:40
1291
  msgctxt "[ADMIN] Title for new preset page"
1292
  msgid "Add new filter preset"
1293
  msgstr "Neues Filter-Preset hinzufügen"
1294
 
1295
+ #: templates/admin/preset-edit.php:47
1296
  msgctxt "[ADMIN] Preset save message"
1297
  msgid "Preset saved correctly"
1298
  msgstr ""
1299
 
1300
+ #: templates/admin/preset-edit.php:93
1301
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1302
  msgid "Save preset"
1303
  msgstr "Preset speichern"
1304
 
1305
+ #: templates/admin/preset-empty-content.php:29
1306
  msgctxt "Alt text for empty preset image"
1307
  msgid "Empty preset"
1308
  msgstr "Leeres Preset"
1309
 
1310
  #. translators: 1. Missing item name.
1311
+ #: templates/admin/preset-empty-content.php:35
1312
  msgctxt "[Admin] Preset table empty message"
1313
  msgid "You don't have any %s yet."
1314
  msgstr "Du hast bis jetzt keine %s."
1315
 
1316
+ #: templates/admin/preset-filter-term.php:30
1317
  msgctxt "[Admin] Term edit field label (preset edit page)"
1318
  msgid "Label"
1319
  msgstr "Label"
1320
 
1321
+ #: templates/admin/preset-filter-term.php:35
1322
  msgctxt "[Admin] Term edit field label (preset edit page)"
1323
  msgid "Tooltip"
1324
  msgstr "Tooltip"
1325
 
1326
+ #: templates/admin/preset-filter-term.php:41
1327
  msgctxt "[Admin] Term edit field label (preset edit page)"
1328
  msgid "Color"
1329
  msgstr "Farbe"
1330
 
1331
+ #: templates/admin/preset-filter.php:91
1332
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1333
  msgid "Save Filter"
1334
  msgstr "Filter speichern"
1335
 
1336
+ #: templates/admin/preset-filter.php:92
1337
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1338
  msgid "Delete Filter"
1339
  msgstr "Filter löschen"
1340
 
1341
+ #: templates/admin/preset-filters.php:33
1342
  msgctxt "[Admin] New filter button label"
1343
  msgid "Add a new filter"
1344
  msgstr "Einen neuen Filter hinzufügen"
1345
 
1346
+ #: templates/admin/preset-filters.php:57
1347
  msgctxt "[Admin] Add new filter in new preset page"
1348
  msgid "+ Add filter"
1349
  msgstr "+ Filter hinzufügen "
1355
  msgid "See %d more filters"
1356
  msgstr "Vor Filtern"
1357
 
1358
+ #: templates/admin/upgrade-note-modal.php:33
1359
  msgctxt "[ADMIN] Upgrade note modal title"
1360
  msgid "Use the new filter preset feature for your filters"
1361
  msgstr "Nutze das neuen Filter-Preset-Feature für deine Filter "
1362
 
1363
+ #: templates/admin/upgrade-note-modal.php:38
1364
  msgctxt "[ADMIN] Upgrade note modal content"
1365
  msgid ""
1366
  "From the version 4.0 we built a powerful system that allows you to create "
1375
  "Widget verwendest. "
1376
 
1377
  #. translators: 1. Url to demo video. 2. Url to docs.
1378
+ #: templates/admin/upgrade-note-modal.php:51
1379
  msgctxt "[ADMIN] Upgrade note modal content"
1380
  msgid ""
1381
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1386
  "Feature genutzt werden kann."
1387
 
1388
  #. translators: 1. Url to docs.
1389
+ #: templates/admin/upgrade-note-modal.php:64
1390
  msgctxt "[ADMIN] Upgrade note modal content"
1391
  msgid ""
1392
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1395
  "Wir empfehlen dir, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> "
1396
  "um zu lernen, wie dieses neue Feature genutzt werden kann."
1397
 
1398
+ #: templates/admin/upgrade-note-modal.php:78
1399
  #, fuzzy
1400
  msgctxt "[ADMIN] Upgrade note modal content"
1401
  msgid ""
1410
  "übertragen.<br/>\n"
1411
  "<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
1412
 
1413
+ #: templates/admin/upgrade-note-modal.php:89
1414
  msgctxt "[ADMIN] Upgrade note modal content"
1415
  msgid ""
1416
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1418
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1419
  msgstr ""
1420
 
1421
+ #: templates/admin/upgrade-note-modal.php:98
1422
  msgctxt "[ADMIN] Upgrade note modal button label"
1423
  msgid "Convert your widgets in a preset now"
1424
  msgstr "Wandle deine Widgets jetzt ins Presets um"
1425
 
1426
+ #: templates/admin/upgrade-note-modal.php:99
1427
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1428
  msgid "No thanks"
1429
  msgstr "Nein Danke"
1430
 
1431
+ #: templates/filters/global/reset-filters.php:24
1432
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1433
  msgid "Reset filters"
1434
  msgstr "Filter zurücksetzen"
1435
 
1436
+ #~ msgctxt "[Admin] Menu title"
1437
+ #~ msgid "Ajax Product Filter"
1438
+ #~ msgstr "AJAX Produkt-Filter "
1439
+
1440
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1441
  #~ msgid "All"
1442
  #~ msgstr "Alle"
languages/yith-woocommerce-ajax-navigation-de_DE_formal.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-de_DE_formal.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,94 +16,94 @@ msgstr ""
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
23
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
24
- #: includes/functions.yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Begriff"
27
 
28
- #: includes/functions.yith-wcan.php:98
29
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
30
  msgid "Color"
31
  msgstr "Farbe"
32
 
33
- #: includes/functions.yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Label"
36
 
37
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
40
 
41
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
42
  msgid "Filters:"
43
  msgstr "Filter:"
44
 
45
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
46
  msgid "List"
47
  msgstr "Liste"
48
 
49
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
50
  msgid "Label"
51
  msgstr "Label"
52
 
53
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
58
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
59
  msgid "Title"
60
  msgstr "Titel"
61
 
62
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
63
  msgid "Type:"
64
  msgstr "Typ:"
65
 
66
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
67
  msgid "Query Type:"
68
  msgstr "Query-Typ"
69
 
70
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
71
  msgid "OR"
72
  msgstr "ODER"
73
 
74
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
75
  msgid "Attribute:"
76
  msgstr "Attribute:"
77
 
78
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
79
  msgid "Display (default All):"
80
  msgstr "Anzeige (Standard Alles):"
81
 
82
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
83
  msgid "All (no hierarchical)"
84
  msgstr "Alle (nicht hierarchisch)"
85
 
86
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
87
  msgid "All (hierarchical)"
88
  msgstr "Alles (hierarchisch)"
89
 
90
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
91
  msgid "Only Parent"
92
  msgstr "Nur Übergeordnete"
93
 
94
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
95
  msgid "CSS custom class"
96
  msgstr "Individuelle CSS-Klasse"
97
 
98
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX-Filter zurücksetzen"
101
 
102
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
103
  msgid "Reset All Filters"
104
  msgstr "Alle Filter zurücksetzen"
105
 
106
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
@@ -139,76 +139,71 @@ msgstr ""
139
  "\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für Ihren E-"
140
  "Commerce-Shop erhalten Sie bei <strong>YITH</strong></a>"
141
 
142
- #: includes/class.yith-wcan-admin.php:107
143
  msgctxt "[Admin] Copy confirmation message"
144
  msgid "Content copied to your clipboard"
145
  msgstr "Inhalt in die Zwischenablage kopiert"
146
 
147
- #: includes/class.yith-wcan-admin.php:108
148
  msgctxt "[Admin] Confirm filter delete message"
149
  msgid "Are you sure you want to delete this item?"
150
  msgstr "Sind Sie sicher, dass Sie dieses Element löschen möchten?"
151
 
152
  #. translators: 1. Number of items that will be added.
153
- #: includes/class.yith-wcan-admin.php:110
154
  msgctxt "[Admin] Confirm add all terms message"
155
  msgid "Are you sure you want to proceed? This operation will add %s items"
156
  msgstr ""
157
  "Sind Sie sicher, dass Sie fortfahren möchten? Dieser Vorgang wird %s "
158
  "Elemente hinzufügen"
159
 
160
- #: includes/class.yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; Kein Titel &gt;"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Die zu verwendenden Medien auswählen"
174
 
175
- #: includes/class.yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Dieses Medium verwenden"
179
 
180
- #: includes/class.yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Filter-Presets"
184
 
185
- #: includes/class.yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Allgemeine Einstellungen"
189
 
190
- #: includes/class.yith-wcan-admin.php:186
191
  #, fuzzy
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr "SEO"
195
 
196
- #: includes/class.yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr "Premium-Version"
200
 
201
- #: includes/class.yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr "Legacy"
205
 
206
- #: includes/class.yith-wcan-admin.php:198
207
- msgctxt "[Admin] Menu title"
208
- msgid "Ajax Product Filter"
209
- msgstr "AJAX Produkt-Filter "
210
-
211
- #: includes/class.yith-wcan-admin.php:199
212
  msgctxt "[Admin] Plugin description"
213
  msgid ""
214
  "It allows your users to find the product they are looking for as quickly as "
@@ -217,44 +212,44 @@ msgstr ""
217
  "Ermöglicht Ihren Benutzern, das gesuchte Produkt so schnell wie möglich zu "
218
  "finden."
219
 
220
- #: includes/class.yith-wcan-admin.php:211
221
  msgctxt "[HELP TAB] Video title"
222
  msgid ""
223
  "Check this video to learn how to <b>create a filter preset and show it on "
224
  "the shop page:</b>"
225
  msgstr ""
226
 
227
- #: includes/class.yith-wcan-admin.php:329
228
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
229
  msgid "item"
230
  msgstr "Artikel"
231
 
232
- #: includes/class.yith-wcan-admin.php:330
233
  msgctxt "[Admin] Preset table empty message second line"
234
  msgid "But don't worry, here you can create your first one!"
235
  msgstr "Aber keine Sorge, hier können Sie eine erste erstellen!"
236
 
237
- #: includes/class.yith-wcan-admin.php:478
238
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
239
  msgid "Clear Product Filter transients"
240
  msgstr "Produktfilter-Tansients löschen"
241
 
242
- #: includes/class.yith-wcan-admin.php:484
243
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
244
  msgid "Run filter widgets upgrade"
245
  msgstr "Upgrade der Filter-Widgets ausführen"
246
 
247
- #: includes/class.yith-wcan-admin.php:479
248
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
249
  msgid "Clear"
250
  msgstr "Löschen"
251
 
252
- #: includes/class.yith-wcan-admin.php:485
253
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
254
  msgid "Run"
255
  msgstr "Start"
256
 
257
- #: includes/class.yith-wcan-admin.php:480
258
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
259
  msgid ""
260
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -266,7 +261,7 @@ msgstr ""
266
  "Konfiguration Ihres Produkts geändert haben und die Filter nicht die "
267
  "erwarteten Ergebnisse anzeigen. "
268
 
269
- #: includes/class.yith-wcan-admin.php:486
270
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
271
  msgid ""
272
  "This will create a preset for any sidebar of your shop containing filter "
@@ -276,32 +271,32 @@ msgstr ""
276
  "Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
277
  "Spezifikationen der Widgets entspricht"
278
 
279
- #: includes/class.yith-wcan-filter-factory.php:72
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Taxonomy"
282
  msgstr "Taxonomie"
283
 
284
- #: includes/class.yith-wcan-filter-factory.php:86
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Checkbox"
287
  msgstr "Checkbox"
288
 
289
- #: includes/class.yith-wcan-filter-factory.php:87
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Select"
292
  msgstr "Auswahl"
293
 
294
- #: includes/class.yith-wcan-filter-factory.php:88
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Text"
297
  msgstr "Text"
298
 
299
- #: includes/class.yith-wcan-filter-factory.php:89
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Color Swatches"
302
  msgstr "Farbmuster"
303
 
304
- #: includes/class.yith-wcan-filter-factory.php:90
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Label"
307
  msgstr "Label"
@@ -316,32 +311,32 @@ msgctxt "[Admin] Filter edit form"
316
  msgid "Enter a name to identify this filter"
317
  msgstr "Geben Sie einen Namen ein, um diesen Filter zu identifizieren"
318
 
319
- #: plugin-options/filter-options.php:41
320
  msgctxt "[Admin] Filter edit form"
321
  msgid "Filter for"
322
  msgstr "Filtern nach"
323
 
324
- #: plugin-options/filter-options.php:45
325
  msgctxt "[Admin] Filter edit form"
326
  msgid "Select the parameters you wish to filter for"
327
  msgstr "Wählen Sie die Parameter, nach denen Sie filtern möchten"
328
 
329
- #: plugin-options/filter-options.php:51
330
  msgctxt "[Admin] Filter edit form"
331
  msgid "Choose taxonomy"
332
  msgstr "Taxonomie wählen"
333
 
334
- #: plugin-options/filter-options.php:55
335
  msgctxt "[Admin] Filter edit form"
336
  msgid "Select which taxonomy to use for this filter"
337
  msgstr "Wählen Sie, welche Taxonomie für diesen Filter verwendet werden soll"
338
 
339
- #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid "Auto-populate with all terms"
342
  msgstr ""
343
 
344
- #: plugin-options/filter-options.php:62
345
  msgctxt "[Admin] Filter edit form"
346
  msgid ""
347
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -350,74 +345,74 @@ msgid ""
350
  "well.</span>"
351
  msgstr ""
352
 
353
- #: plugin-options/filter-options.php:71
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Choose terms"
356
  msgstr "Begriffe wählen"
357
 
358
- #: plugin-options/filter-options.php:76
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Select which terms to use for filtering"
361
  msgstr ""
362
  "Wählen Sie aus, welche Begriffe für die Filterung verwendet werden sollen"
363
 
364
- #: plugin-options/filter-options.php:80
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "Filter type"
367
  msgstr "Filter-Typ"
368
 
369
- #: plugin-options/filter-options.php:84
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Select the filter type for this filter"
372
  msgstr "Wählen Sie den Filtertyp für diesen Filter"
373
 
374
- #: plugin-options/filter-options.php:88
375
  #, fuzzy
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "Labels"
378
  msgstr "Label"
379
 
380
- #: plugin-options/filter-options.php:91
381
  #, fuzzy
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Show below"
384
  msgstr "Ergebnisse anzeigen"
385
 
386
- #: plugin-options/filter-options.php:92
387
  #, fuzzy
388
  msgctxt "[Admin] Filter edit form"
389
  msgid "Show on the right"
390
  msgstr "Anzahl der Elemente anzeigen"
391
 
392
- #: plugin-options/filter-options.php:93
393
  msgctxt "[Admin] Filter edit form"
394
  msgid "Hide"
395
  msgstr ""
396
 
397
- #: plugin-options/filter-options.php:95
398
  #, fuzzy
399
  msgctxt "[Admin] Filter edit form"
400
  msgid "Choose if and where to show the label inside your filter"
401
  msgstr "Wählen Sie den Stil des Filters innerhalb von Widgets "
402
 
403
- #: plugin-options/filter-options.php:99
404
  msgctxt "[Admin] Filter edit form"
405
  msgid "Columns number"
406
  msgstr "Anzahl der Spalten"
407
 
408
- #: plugin-options/filter-options.php:104
409
  msgctxt "[Admin] Filter edit form"
410
  msgid "Set the number of items per row you want to show for this design"
411
  msgstr ""
412
  "Stellen Sie die Anzahl der Elemente pro Zeile ein, die Sie für dieses Design "
413
  "anzeigen möchten"
414
 
415
- #: plugin-options/filter-options.php:108
416
  msgctxt "[Admin] Filter edit form"
417
  msgid "Customize terms"
418
  msgstr "Begriffe anpassen"
419
 
420
- #: plugin-options/filter-options.php:111
421
  msgctxt "[Admin] Filter edit form"
422
  msgid ""
423
  "Configure your terms individually; system will otherwise use default labels/"
@@ -431,157 +426,157 @@ msgid ""
431
  "this option and use the boxes below</span>"
432
  msgstr ""
433
 
434
- #: plugin-options/filter-options.php:121
435
  #, fuzzy
436
  msgctxt "[Admin] Filter edit form"
437
  msgid "Terms options"
438
  msgstr "Sortierungsoptionen"
439
 
440
- #: plugin-options/filter-options.php:127
441
  msgctxt "[Admin] Filter edit form"
442
  msgid "Show hierarchy"
443
  msgstr "Hierarchie anzeigen"
444
 
445
- #: plugin-options/filter-options.php:130
446
  msgctxt "[Admin] Filter edit form"
447
  msgid "No, show all terms in same level"
448
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
449
 
450
- #: plugin-options/filter-options.php:131
451
  msgctxt "[Admin] Filter edit form"
452
  msgid "No, show only parent terms"
453
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
454
 
455
- #: plugin-options/filter-options.php:132
456
  msgctxt "[Admin] Filter edit form"
457
  msgid "Yes"
458
  msgstr ""
459
 
460
- #: plugin-options/filter-options.php:134
461
  msgctxt "[Admin] Filter edit form"
462
  msgid "Choose how to show terms hierarchy"
463
  msgstr "Wählen Sie, wie die Begriffshierarchie angezeigt werden soll"
464
 
465
- #: plugin-options/filter-options.php:138
466
  msgctxt "[Admin] Filter edit form"
467
  msgid "Allow multiple selection"
468
  msgstr "Mehrfachauswahl zulassen"
469
 
470
- #: plugin-options/filter-options.php:140
471
  msgctxt "[Admin] Filter edit form"
472
  msgid "Enable if the user can select multiple terms when filtering products"
473
  msgstr ""
474
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
475
  "auswählen kann"
476
 
477
- #: plugin-options/filter-options.php:144
478
  msgctxt "[Admin] Filter edit form"
479
  msgid "Multiselect relation"
480
  msgstr "Multiselect-Beziehung"
481
 
482
- #: plugin-options/filter-options.php:150
483
  msgctxt "[Admin] Filter edit form"
484
  msgid "Choose how multiple terms selection should behave"
485
  msgstr "Wählen Sie, wie sich die Auswahl mehrerer Begriffe verhalten soll"
486
 
487
- #: includes/class.yith-wcan-filter-factory.php:104
488
  msgctxt "[Admin] Filter edit form, sorting options"
489
  msgid "Default sorting"
490
  msgstr "Standard-Sortierung"
491
 
492
- #: includes/class.yith-wcan-filter-factory.php:105
493
  msgctxt "[Admin] Filter edit form, sorting options"
494
  msgid "Sort by popularity"
495
  msgstr "Nach Beliebtheit sortieren"
496
 
497
- #: includes/class.yith-wcan-filter-factory.php:106
498
  msgctxt "[Admin] Filter edit form, sorting options"
499
  msgid "Sort by average rating"
500
  msgstr "Best bewertete zuerst"
501
 
502
- #: includes/class.yith-wcan-filter-factory.php:107
503
  msgctxt "[Admin] Filter edit form, sorting options"
504
  msgid "Sort by latest"
505
  msgstr "Neueste zuerst"
506
 
507
- #: includes/class.yith-wcan-filter-factory.php:108
508
  msgctxt "[Admin] Filter edit form, sorting options"
509
  msgid "Sort by price: low to high"
510
  msgstr "Sortieren nach Preis: Preis aufsteigend"
511
 
512
- #: includes/class.yith-wcan-filter-factory.php:109
513
  msgctxt "[Admin] Filter edit form, sorting options"
514
  msgid "Sort by price: high to low"
515
  msgstr "Sortieren nach Preis: Preis absteigend"
516
 
517
- #: includes/class.yith-wcan-filter.php:116
518
  msgctxt "[Admin] Default filter title"
519
  msgid "New filter"
520
  msgstr "Neuer Filter"
521
 
522
- #: includes/class.yith-wcan-frontend.php:576
523
- #: includes/filters/class.yith-wcan-filter-tax.php:62
524
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
525
  msgid "All"
526
  msgstr "Alle"
527
 
528
- #: includes/class.yith-wcan-frontend.php:577
529
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
530
  msgid "Search..."
531
  msgstr "Suchen..."
532
 
533
- #: includes/class.yith-wcan-frontend.php:578
534
  msgctxt "[FRONTEND] Empty items list in the dropdown"
535
  msgid "No item found"
536
  msgstr "Kein Artikel gefunden"
537
 
538
  #. translators: 1. Number of items to show.
539
- #: includes/class.yith-wcan-frontend.php:580
540
  msgctxt "[FRONTEND] Show more link on terms dropdown"
541
  msgid "Show %d more"
542
  msgstr "%d mehr anzeigen"
543
 
544
- #: includes/class.yith-wcan-frontend.php:581
545
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
546
  msgid "Close"
547
  msgstr "Schließen"
548
 
549
- #: includes/class.yith-wcan-frontend.php:582
550
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
551
  msgid "Save"
552
  msgstr ""
553
 
554
- #: includes/class.yith-wcan-frontend.php:583
555
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
556
  msgid "Show results"
557
  msgstr "Ergebnisse anzeigen"
558
 
559
- #: includes/class.yith-wcan-frontend.php:584
560
  msgctxt ""
561
  "[FRONTEND] Label for clear selection link, that appears above filter after "
562
  "selection"
563
  msgid "Clear"
564
  msgstr "Löschen"
565
 
566
- #: includes/class.yith-wcan-frontend.php:585
567
  msgctxt ""
568
  "[FRONTEND] Label for clear selection link, that appears above filter after "
569
  "selection"
570
  msgid "Clear All"
571
  msgstr "Alle löschen"
572
 
573
- #: includes/class.yith-wcan-install.php:95
574
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
575
  msgid "Default preset"
576
  msgstr "Standard-Preset"
577
 
578
  #. translators: 1. Taxonomy name.
579
- #: includes/class.yith-wcan-install.php:285
580
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
581
  msgid "Filter by %s"
582
  msgstr "Nach %s filtern"
583
 
584
- #: includes/class.yith-wcan-preset-factory.php:112
585
  #, fuzzy
586
  msgctxt "[Admin] Label in new preset page"
587
  msgid "Default"
@@ -597,33 +592,33 @@ msgctxt "[Admin] Label in new preset page"
597
  msgid "Enter a name to identify this filter preset"
598
  msgstr "Geben Sie einen Namen ein, um dieses Filter-Preset zu identifizieren"
599
 
600
- #: templates/admin/preset-filters.php:20
601
  msgctxt "[Admin] Label in new preset page"
602
  msgid "Filters of this preset"
603
  msgstr "Filter in diesem Preset"
604
 
605
- #: includes/class.yith-wcan-presets.php:95
606
- #: includes/class.yith-wcan-presets.php:100
607
  msgctxt "[Admin] name of presets custom post type"
608
  msgid "Filter presets"
609
  msgstr "Filter-Presets"
610
 
611
- #: includes/class.yith-wcan-presets.php:96
612
  msgctxt "[Admin] singular name of presets custom post type"
613
  msgid "Filter preset"
614
  msgstr "Filter-Preset"
615
 
616
- #: includes/class.yith-wcan-presets.php:97
617
  msgctxt "[Admin] add new filter preset label"
618
  msgid "Add new preset"
619
  msgstr "Neues Preset hinzufügen"
620
 
621
- #: includes/class.yith-wcan-presets.php:139
622
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
623
  msgid "Convert widgets in a preset"
624
  msgstr "Widgets in eine Preset konvertieren"
625
 
626
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
627
  msgctxt ""
628
  "[Generic] Error that happens when trying to read a filter preset that does "
629
  "not exist"
@@ -631,43 +626,43 @@ msgid "Invalid preset."
631
  msgstr "Ungültige Voreinstellung."
632
 
633
  #. translators: 1. Title of original preset.
634
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
635
  msgctxt "[ADMIN] Title of the cloned preset"
636
  msgid "%s - Copy"
637
  msgstr "%s - Kopieren"
638
 
639
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
640
  msgctxt "[ADMIN] Name of the preset elementor widget"
641
  msgid "YITH AJAX Filters Preset"
642
  msgstr "YITH AJAX-Filter Presets"
643
 
644
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
645
  msgctxt "[ADMIN] Name of the preset elementor widget"
646
  msgid "YITH AJAX Filters Reset Button"
647
  msgstr "YITH AJAX-Filter Reset-Button"
648
 
649
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
650
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
651
  msgctxt "[ELEMENTOR] Default preset option"
652
  msgid "Choose an option"
653
  msgstr "Wählen Sie eine Option"
654
 
655
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
656
  msgctxt "[ELEMENTOR] Section title"
657
  msgid "Filters"
658
  msgstr "Filter"
659
 
660
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
661
  msgctxt "[ELEMENTOR] Section title"
662
  msgid "General"
663
  msgstr "Allgemein"
664
 
665
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
666
  msgctxt "[ELEMENTOR] Control label"
667
  msgid "Preset"
668
  msgstr "Preset"
669
 
670
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
671
  msgctxt "[ELEMENTOR] Widget description"
672
  msgid ""
673
  "This widget will display \"Filters reset\" button, wherever it is placed"
@@ -675,7 +670,7 @@ msgstr ""
675
  "Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
676
  "platziert wird"
677
 
678
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
679
  msgctxt "[ELEMENTOR] Widget description"
680
  msgid ""
681
  "It will allow users to reset the filer selection; it will only appear when "
@@ -684,7 +679,7 @@ msgstr ""
684
  "Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
685
  "erscheint nur, wenn ein Filter aktiv ist. "
686
 
687
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
688
  msgctxt "[ELEMENTOR] Widget description"
689
  msgid ""
690
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -694,17 +689,17 @@ msgstr ""
694
  "innerhalb Ihrer Seite zu platzieren, wenn die Option \"Position des Buttons "
695
  "zurücksetzen\" für den Loop Ihres Produkts nicht funktioniert "
696
 
697
- #: includes/functions.yith-wcan.php:112
698
  msgctxt "For multicolor: I.E. white and red T-Shirt"
699
  msgid "Color 1"
700
  msgstr "Farbe 2"
701
 
702
- #: includes/functions.yith-wcan.php:112
703
  msgctxt "For multicolor: I.E. white and red T-Shirt"
704
  msgid "Color 2"
705
  msgstr "Farbe 2"
706
 
707
- #: includes/functions.yith-wcan.php:1001
708
  msgctxt "[FRONTEND] Star rating template"
709
  msgid "star"
710
  msgid_plural "stars"
@@ -712,27 +707,27 @@ msgstr[0] "Stern"
712
  msgstr[1] "Sternen"
713
 
714
  #. translators: 1. Rating.
715
- #: includes/functions.yith-wcan.php:1016
716
  msgctxt "[FRONTEND] Star rating label"
717
  msgid "Rated %s out of 5"
718
  msgstr "Bewertet mit %s von 5"
719
 
720
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
721
  msgctxt "[GUTENBERG]: block name"
722
  msgid "YITH AJAX Filters Preset"
723
  msgstr "YITH AJAX Filters Preset"
724
 
725
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
726
  msgctxt "[GUTENBERG]: block name"
727
  msgid "YITH Reset Filters Button"
728
  msgstr "YITH \"Filter zurücksetzen\"-Button"
729
 
730
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
731
  msgctxt "[GUTENBERG]: block description"
732
  msgid "Show filters from a preset"
733
  msgstr "Filter aus einem Preset anzeigen"
734
 
735
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
736
  msgctxt "[GUTENBERG]: block description"
737
  msgid ""
738
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -746,80 +741,80 @@ msgstr ""
746
  "zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" für den "
747
  "Loop Ihres Produkts nicht funktioniert"
748
 
749
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
750
  msgctxt "[GUTENBERG]: attribute description"
751
  msgid "Preset"
752
  msgstr "Preset"
753
 
754
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
755
  msgctxt "[Admin] Preset table column header"
756
  msgid "Preset name"
757
  msgstr "Preset-Name"
758
 
759
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
760
  msgctxt "[Admin] Preset table column header"
761
  msgid "Shortcode"
762
  msgstr "Shortcode"
763
 
764
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
765
  msgctxt "[Admin] Preset edit action label"
766
  msgid "Edit this preset"
767
  msgstr "Dieses Preset bearbeiten"
768
 
769
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
770
  msgctxt "[Admin] Preset clone action label"
771
  msgid "Clone this preset"
772
  msgstr "Dieses Preset kopieren"
773
 
774
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
775
  msgctxt "[Admin] Preset delete action label"
776
  msgid "Delete this preset"
777
  msgstr "Dieses Preset löschen"
778
 
779
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
780
  msgctxt "[Admin] Preset delete confirm label"
781
  msgid "Are you sure you want to delete this preset?"
782
  msgstr "Sind Sie sicher, dass Sie dieses Preset löschen möchten?"
783
 
784
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
785
  msgctxt "[Admin] on-off yes"
786
  msgid "YES"
787
  msgstr "JA"
788
 
789
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
790
  msgctxt "[Admin] on-off no"
791
  msgid "NO"
792
  msgstr "NEIN"
793
 
794
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
795
  msgctxt ""
796
  "[Admin] Name of the item missing, shown in preset-empty-content template"
797
  msgid "filter preset"
798
  msgstr "Filter-Preset"
799
 
800
- #: templates/admin/preset-filters.php:29
801
  msgctxt ""
802
  "[Admin] Name of the item missing, shown in preset-empty-content template"
803
  msgid "filter"
804
  msgstr "Filter"
805
 
806
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
807
  msgctxt "[Admin] New preset button label"
808
  msgid "Create a new preset"
809
  msgstr "Neues Preset erstellen"
810
 
811
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
812
  msgctxt "[ADMIN] Name of the preset widget"
813
  msgid "YITH AJAX Filters Preset"
814
  msgstr "YITH AJAX Filters Preset"
815
 
816
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
817
  msgctxt "[ADMIN] Preset widget options"
818
  msgid "Preset"
819
  msgstr "Preset"
820
 
821
  #. translators: 1. Url to Ajax Product filter admin panel.
822
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
823
  msgctxt "[ADMIN] Preset widget options"
824
  msgid ""
825
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -828,25 +823,25 @@ msgstr ""
828
  "Bitte gehen Sie auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product "
829
  "Filter -> Presets</a> und erstellen Sie Ihr erstes Preset"
830
 
831
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
832
  msgctxt "[Plugin Name] Admin: Widget Title"
833
  msgid "YITH AJAX Product Filter"
834
  msgstr "YITH AJAX Product Filter"
835
 
836
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
837
  #, fuzzy
838
  msgctxt ""
839
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
840
  msgid "AND"
841
  msgstr "UND"
842
 
843
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
844
  msgctxt "[Plugin Name]"
845
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
846
  msgstr ""
847
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
848
 
849
- #: plugin-options/filter-options.php:147
850
  #, fuzzy
851
  msgctxt ""
852
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -855,7 +850,7 @@ msgstr ""
855
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
856
  "übereinstimmen"
857
 
858
- #: plugin-options/filter-options.php:148
859
  #, fuzzy
860
  msgctxt ""
861
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1145,21 +1140,21 @@ msgstr ""
1145
  msgctxt "[ADMIN] Premium tab"
1146
  msgid ""
1147
  "<b>Filter by category</b>: to let users choose which product category to "
1148
- "view<br/>\r\n"
1149
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1150
  "<b>Filter by price</b>: to let users filter products by a specific price "
1151
- "range (based on their budget availability)<br/>\r\n"
1152
  "<b>Filter by color and size</b>: you can create filters for all the "
1153
  "attributes available in your store, like color and size. For the color "
1154
  "filter, you can either choose square or circular color swatches or use "
1155
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1156
  "<b>Filter by rating</b>: to let your users filter products based on other "
1157
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1158
- "concentrate only on high-rated ones)<br/>\r\n"
1159
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1160
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1161
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1162
- "filter products and view only those with a discount<br/>\r\n"
1163
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1164
  "filter products based on their needs and exclude out-of-stock products from "
1165
  "the list"
@@ -1285,73 +1280,73 @@ msgid ""
1285
  "easier to share)"
1286
  msgstr ""
1287
 
1288
- #: templates/admin/preset-edit.php:29
1289
  msgctxt "[Admin] Back link in new preset page"
1290
  msgid "< back to preset list"
1291
  msgstr "< zurück zur Preset-Liste"
1292
 
1293
- #: templates/admin/preset-edit.php:36
1294
  msgctxt "[ADMIN] Title for new preset page"
1295
  msgid "Edit filter preset"
1296
  msgstr "Filter-Preset bearbeiten"
1297
 
1298
- #: templates/admin/preset-edit.php:38
1299
  msgctxt "[ADMIN] Title for new preset page"
1300
  msgid "Add new filter preset"
1301
  msgstr "Neues Filter-Preset hinzufügen"
1302
 
1303
- #: templates/admin/preset-edit.php:45
1304
  msgctxt "[ADMIN] Preset save message"
1305
  msgid "Preset saved correctly"
1306
  msgstr ""
1307
 
1308
- #: templates/admin/preset-edit.php:90
1309
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1310
  msgid "Save preset"
1311
  msgstr "Preset speichern"
1312
 
1313
- #: templates/admin/preset-empty-content.php:27
1314
  msgctxt "Alt text for empty preset image"
1315
  msgid "Empty preset"
1316
  msgstr "Leeres Preset"
1317
 
1318
  #. translators: 1. Missing item name.
1319
- #: templates/admin/preset-empty-content.php:33
1320
  msgctxt "[Admin] Preset table empty message"
1321
  msgid "You don't have any %s yet."
1322
  msgstr "Sie haben bis jetzt keine %s."
1323
 
1324
- #: templates/admin/preset-filter-term.php:28
1325
  msgctxt "[Admin] Term edit field label (preset edit page)"
1326
  msgid "Label"
1327
  msgstr "Label"
1328
 
1329
- #: templates/admin/preset-filter-term.php:33
1330
  msgctxt "[Admin] Term edit field label (preset edit page)"
1331
  msgid "Tooltip"
1332
  msgstr "Tooltip"
1333
 
1334
- #: templates/admin/preset-filter-term.php:39
1335
  msgctxt "[Admin] Term edit field label (preset edit page)"
1336
  msgid "Color"
1337
  msgstr "Farbe"
1338
 
1339
- #: templates/admin/preset-filter.php:89
1340
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1341
  msgid "Save Filter"
1342
  msgstr "Filter speichern"
1343
 
1344
- #: templates/admin/preset-filter.php:90
1345
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1346
  msgid "Delete Filter"
1347
  msgstr "Filter löschen"
1348
 
1349
- #: templates/admin/preset-filters.php:31
1350
  msgctxt "[Admin] New filter button label"
1351
  msgid "Add a new filter"
1352
  msgstr "Einen neuen Filter hinzufügen"
1353
 
1354
- #: templates/admin/preset-filters.php:55
1355
  msgctxt "[Admin] Add new filter in new preset page"
1356
  msgid "+ Add filter"
1357
  msgstr "+ Filter hinzufügen "
@@ -1363,12 +1358,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1363
  msgid "See %d more filters"
1364
  msgstr "Vor Filtern"
1365
 
1366
- #: templates/admin/upgrade-note-modal.php:31
1367
  msgctxt "[ADMIN] Upgrade note modal title"
1368
  msgid "Use the new filter preset feature for your filters"
1369
  msgstr "Nutzen Sie das neuen Filter-Preset-Feature für Ihren Filter "
1370
 
1371
- #: templates/admin/upgrade-note-modal.php:36
1372
  msgctxt "[ADMIN] Upgrade note modal content"
1373
  msgid ""
1374
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1383,7 +1378,7 @@ msgstr ""
1383
  "Widget verwenden."
1384
 
1385
  #. translators: 1. Url to demo video. 2. Url to docs.
1386
- #: templates/admin/upgrade-note-modal.php:49
1387
  msgctxt "[ADMIN] Upgrade note modal content"
1388
  msgid ""
1389
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1394,7 +1389,7 @@ msgstr ""
1394
  "genutzt werden kann."
1395
 
1396
  #. translators: 1. Url to docs.
1397
- #: templates/admin/upgrade-note-modal.php:62
1398
  msgctxt "[ADMIN] Upgrade note modal content"
1399
  msgid ""
1400
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1403,7 +1398,7 @@ msgstr ""
1403
  "Wir empfehlen, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> um zu "
1404
  "lernen, wie dieses neue Feature genutzt werden kann."
1405
 
1406
- #: templates/admin/upgrade-note-modal.php:76
1407
  #, fuzzy
1408
  msgctxt "[ADMIN] Upgrade note modal content"
1409
  msgid ""
@@ -1418,7 +1413,7 @@ msgstr ""
1418
  "Tabelle übertragen.<br/>\n"
1419
  "<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
1420
 
1421
- #: templates/admin/upgrade-note-modal.php:87
1422
  msgctxt "[ADMIN] Upgrade note modal content"
1423
  msgid ""
1424
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1426,21 +1421,25 @@ msgid ""
1426
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1427
  msgstr ""
1428
 
1429
- #: templates/admin/upgrade-note-modal.php:96
1430
  msgctxt "[ADMIN] Upgrade note modal button label"
1431
  msgid "Convert your widgets in a preset now"
1432
  msgstr "Wandeln Sie Ihre Widgets jetzt in Presets um"
1433
 
1434
- #: templates/admin/upgrade-note-modal.php:97
1435
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1436
  msgid "No thanks"
1437
  msgstr "Nein Danke"
1438
 
1439
- #: templates/filters/global/reset-filters.php:23
1440
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1441
  msgid "Reset filters"
1442
  msgstr "Filter zurücksetzen"
1443
 
 
 
 
 
1444
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1445
  #~ msgid "All"
1446
  #~ msgstr "Alle"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-03-02 11:03+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset Entwurf"
22
 
23
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
24
+ #: includes/functions-yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Begriff"
27
 
28
+ #: includes/functions-yith-wcan.php:98
29
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
30
  msgid "Color"
31
  msgstr "Farbe"
32
 
33
+ #: includes/functions-yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Label"
36
 
37
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filter die Produktliste, ohne die Seite neu zu laden"
40
 
41
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
42
  msgid "Filters:"
43
  msgstr "Filter:"
44
 
45
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
46
  msgid "List"
47
  msgstr "Liste"
48
 
49
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
50
  msgid "Label"
51
  msgstr "Label"
52
 
53
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
58
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
59
  msgid "Title"
60
  msgstr "Titel"
61
 
62
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
63
  msgid "Type:"
64
  msgstr "Typ:"
65
 
66
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
67
  msgid "Query Type:"
68
  msgstr "Query-Typ"
69
 
70
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
71
  msgid "OR"
72
  msgstr "ODER"
73
 
74
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
75
  msgid "Attribute:"
76
  msgstr "Attribute:"
77
 
78
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
79
  msgid "Display (default All):"
80
  msgstr "Anzeige (Standard Alles):"
81
 
82
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
83
  msgid "All (no hierarchical)"
84
  msgstr "Alle (nicht hierarchisch)"
85
 
86
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
87
  msgid "All (hierarchical)"
88
  msgstr "Alles (hierarchisch)"
89
 
90
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
91
  msgid "Only Parent"
92
  msgstr "Nur Übergeordnete"
93
 
94
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
95
  msgid "CSS custom class"
96
  msgstr "Individuelle CSS-Klasse"
97
 
98
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX-Filter zurücksetzen"
101
 
102
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
103
  msgid "Reset All Filters"
104
  msgstr "Alle Filter zurücksetzen"
105
 
106
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
107
  msgid "Button Label"
108
  msgstr "Button-Beschriftung"
109
 
139
  "\"https://yithemes.com/\" target=\"_blank\">Weitere Plugins für Ihren E-"
140
  "Commerce-Shop erhalten Sie bei <strong>YITH</strong></a>"
141
 
142
+ #: includes/class-yith-wcan-admin.php:107
143
  msgctxt "[Admin] Copy confirmation message"
144
  msgid "Content copied to your clipboard"
145
  msgstr "Inhalt in die Zwischenablage kopiert"
146
 
147
+ #: includes/class-yith-wcan-admin.php:108
148
  msgctxt "[Admin] Confirm filter delete message"
149
  msgid "Are you sure you want to delete this item?"
150
  msgstr "Sind Sie sicher, dass Sie dieses Element löschen möchten?"
151
 
152
  #. translators: 1. Number of items that will be added.
153
+ #: includes/class-yith-wcan-admin.php:110
154
  msgctxt "[Admin] Confirm add all terms message"
155
  msgid "Are you sure you want to proceed? This operation will add %s items"
156
  msgstr ""
157
  "Sind Sie sicher, dass Sie fortfahren möchten? Dieser Vorgang wird %s "
158
  "Elemente hinzufügen"
159
 
160
+ #: includes/class-yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; Kein Titel &gt;"
169
 
170
+ #: includes/class-yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Die zu verwendenden Medien auswählen"
174
 
175
+ #: includes/class-yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Dieses Medium verwenden"
179
 
180
+ #: includes/class-yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Filter-Presets"
184
 
185
+ #: includes/class-yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Allgemeine Einstellungen"
189
 
190
+ #: includes/class-yith-wcan-admin.php:186
191
  #, fuzzy
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr "SEO"
195
 
196
+ #: includes/class-yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr "Premium-Version"
200
 
201
+ #: includes/class-yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr "Legacy"
205
 
206
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
207
  msgctxt "[Admin] Plugin description"
208
  msgid ""
209
  "It allows your users to find the product they are looking for as quickly as "
212
  "Ermöglicht Ihren Benutzern, das gesuchte Produkt so schnell wie möglich zu "
213
  "finden."
214
 
215
+ #: includes/class-yith-wcan-admin.php:211
216
  msgctxt "[HELP TAB] Video title"
217
  msgid ""
218
  "Check this video to learn how to <b>create a filter preset and show it on "
219
  "the shop page:</b>"
220
  msgstr ""
221
 
222
+ #: includes/class-yith-wcan-admin.php:329
223
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
224
  msgid "item"
225
  msgstr "Artikel"
226
 
227
+ #: includes/class-yith-wcan-admin.php:330
228
  msgctxt "[Admin] Preset table empty message second line"
229
  msgid "But don't worry, here you can create your first one!"
230
  msgstr "Aber keine Sorge, hier können Sie eine erste erstellen!"
231
 
232
+ #: includes/class-yith-wcan-admin.php:480
233
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
234
  msgid "Clear Product Filter transients"
235
  msgstr "Produktfilter-Tansients löschen"
236
 
237
+ #: includes/class-yith-wcan-admin.php:486
238
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
239
  msgid "Run filter widgets upgrade"
240
  msgstr "Upgrade der Filter-Widgets ausführen"
241
 
242
+ #: includes/class-yith-wcan-admin.php:481
243
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
244
  msgid "Clear"
245
  msgstr "Löschen"
246
 
247
+ #: includes/class-yith-wcan-admin.php:487
248
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
249
  msgid "Run"
250
  msgstr "Start"
251
 
252
+ #: includes/class-yith-wcan-admin.php:482
253
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
254
  msgid ""
255
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
261
  "Konfiguration Ihres Produkts geändert haben und die Filter nicht die "
262
  "erwarteten Ergebnisse anzeigen. "
263
 
264
+ #: includes/class-yith-wcan-admin.php:488
265
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
266
  msgid ""
267
  "This will create a preset for any sidebar of your shop containing filter "
271
  "Filter-Widgets enthält. Das Preset wird so konfiguriert, dass es den "
272
  "Spezifikationen der Widgets entspricht"
273
 
274
+ #: includes/class-yith-wcan-filter-factory.php:72
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Taxonomy"
277
  msgstr "Taxonomie"
278
 
279
+ #: includes/class-yith-wcan-filter-factory.php:86
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Checkbox"
282
  msgstr "Checkbox"
283
 
284
+ #: includes/class-yith-wcan-filter-factory.php:87
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Select"
287
  msgstr "Auswahl"
288
 
289
+ #: includes/class-yith-wcan-filter-factory.php:88
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Text"
292
  msgstr "Text"
293
 
294
+ #: includes/class-yith-wcan-filter-factory.php:89
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Color Swatches"
297
  msgstr "Farbmuster"
298
 
299
+ #: includes/class-yith-wcan-filter-factory.php:90
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Label"
302
  msgstr "Label"
311
  msgid "Enter a name to identify this filter"
312
  msgstr "Geben Sie einen Namen ein, um diesen Filter zu identifizieren"
313
 
314
+ #: plugin-options/filter-options.php:40
315
  msgctxt "[Admin] Filter edit form"
316
  msgid "Filter for"
317
  msgstr "Filtern nach"
318
 
319
+ #: plugin-options/filter-options.php:44
320
  msgctxt "[Admin] Filter edit form"
321
  msgid "Select the parameters you wish to filter for"
322
  msgstr "Wählen Sie die Parameter, nach denen Sie filtern möchten"
323
 
324
+ #: plugin-options/filter-options.php:49
325
  msgctxt "[Admin] Filter edit form"
326
  msgid "Choose taxonomy"
327
  msgstr "Taxonomie wählen"
328
 
329
+ #: plugin-options/filter-options.php:53
330
  msgctxt "[Admin] Filter edit form"
331
  msgid "Select which taxonomy to use for this filter"
332
  msgstr "Wählen Sie, welche Taxonomie für diesen Filter verwendet werden soll"
333
 
334
+ #: plugin-options/filter-options.php:58
335
  msgctxt "[Admin] Filter edit form"
336
  msgid "Auto-populate with all terms"
337
  msgstr ""
338
 
339
+ #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid ""
342
  "Populate this filter with all existing terms of the selected taxonomy.\n"
345
  "well.</span>"
346
  msgstr ""
347
 
348
+ #: plugin-options/filter-options.php:69
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Choose terms"
351
  msgstr "Begriffe wählen"
352
 
353
+ #: plugin-options/filter-options.php:74
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Select which terms to use for filtering"
356
  msgstr ""
357
  "Wählen Sie aus, welche Begriffe für die Filterung verwendet werden sollen"
358
 
359
+ #: plugin-options/filter-options.php:78
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Filter type"
362
  msgstr "Filter-Typ"
363
 
364
+ #: plugin-options/filter-options.php:82
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "Select the filter type for this filter"
367
  msgstr "Wählen Sie den Filtertyp für diesen Filter"
368
 
369
+ #: plugin-options/filter-options.php:86
370
  #, fuzzy
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "Labels"
373
  msgstr "Label"
374
 
375
+ #: plugin-options/filter-options.php:89
376
  #, fuzzy
377
  msgctxt "[Admin] Filter edit form"
378
  msgid "Show below"
379
  msgstr "Ergebnisse anzeigen"
380
 
381
+ #: plugin-options/filter-options.php:90
382
  #, fuzzy
383
  msgctxt "[Admin] Filter edit form"
384
  msgid "Show on the right"
385
  msgstr "Anzahl der Elemente anzeigen"
386
 
387
+ #: plugin-options/filter-options.php:91
388
  msgctxt "[Admin] Filter edit form"
389
  msgid "Hide"
390
  msgstr ""
391
 
392
+ #: plugin-options/filter-options.php:93
393
  #, fuzzy
394
  msgctxt "[Admin] Filter edit form"
395
  msgid "Choose if and where to show the label inside your filter"
396
  msgstr "Wählen Sie den Stil des Filters innerhalb von Widgets "
397
 
398
+ #: plugin-options/filter-options.php:97
399
  msgctxt "[Admin] Filter edit form"
400
  msgid "Columns number"
401
  msgstr "Anzahl der Spalten"
402
 
403
+ #: plugin-options/filter-options.php:102
404
  msgctxt "[Admin] Filter edit form"
405
  msgid "Set the number of items per row you want to show for this design"
406
  msgstr ""
407
  "Stellen Sie die Anzahl der Elemente pro Zeile ein, die Sie für dieses Design "
408
  "anzeigen möchten"
409
 
410
+ #: plugin-options/filter-options.php:106
411
  msgctxt "[Admin] Filter edit form"
412
  msgid "Customize terms"
413
  msgstr "Begriffe anpassen"
414
 
415
+ #: plugin-options/filter-options.php:109
416
  msgctxt "[Admin] Filter edit form"
417
  msgid ""
418
  "Configure your terms individually; system will otherwise use default labels/"
426
  "this option and use the boxes below</span>"
427
  msgstr ""
428
 
429
+ #: plugin-options/filter-options.php:119
430
  #, fuzzy
431
  msgctxt "[Admin] Filter edit form"
432
  msgid "Terms options"
433
  msgstr "Sortierungsoptionen"
434
 
435
+ #: plugin-options/filter-options.php:125
436
  msgctxt "[Admin] Filter edit form"
437
  msgid "Show hierarchy"
438
  msgstr "Hierarchie anzeigen"
439
 
440
+ #: plugin-options/filter-options.php:128
441
  msgctxt "[Admin] Filter edit form"
442
  msgid "No, show all terms in same level"
443
  msgstr "Nein, alle Begriffe auf der gleichen Ebene anzeigen"
444
 
445
+ #: plugin-options/filter-options.php:129
446
  msgctxt "[Admin] Filter edit form"
447
  msgid "No, show only parent terms"
448
  msgstr "Nein, nur übergeordnete Begriffe anzeigen"
449
 
450
+ #: plugin-options/filter-options.php:130
451
  msgctxt "[Admin] Filter edit form"
452
  msgid "Yes"
453
  msgstr ""
454
 
455
+ #: plugin-options/filter-options.php:132
456
  msgctxt "[Admin] Filter edit form"
457
  msgid "Choose how to show terms hierarchy"
458
  msgstr "Wählen Sie, wie die Begriffshierarchie angezeigt werden soll"
459
 
460
+ #: plugin-options/filter-options.php:136
461
  msgctxt "[Admin] Filter edit form"
462
  msgid "Allow multiple selection"
463
  msgstr "Mehrfachauswahl zulassen"
464
 
465
+ #: plugin-options/filter-options.php:138
466
  msgctxt "[Admin] Filter edit form"
467
  msgid "Enable if the user can select multiple terms when filtering products"
468
  msgstr ""
469
  "Aktivieren, wenn der Benutzer beim Filtern von Produkten mehrere Begriffe "
470
  "auswählen kann"
471
 
472
+ #: plugin-options/filter-options.php:142
473
  msgctxt "[Admin] Filter edit form"
474
  msgid "Multiselect relation"
475
  msgstr "Multiselect-Beziehung"
476
 
477
+ #: plugin-options/filter-options.php:148
478
  msgctxt "[Admin] Filter edit form"
479
  msgid "Choose how multiple terms selection should behave"
480
  msgstr "Wählen Sie, wie sich die Auswahl mehrerer Begriffe verhalten soll"
481
 
482
+ #: includes/class-yith-wcan-filter-factory.php:104
483
  msgctxt "[Admin] Filter edit form, sorting options"
484
  msgid "Default sorting"
485
  msgstr "Standard-Sortierung"
486
 
487
+ #: includes/class-yith-wcan-filter-factory.php:105
488
  msgctxt "[Admin] Filter edit form, sorting options"
489
  msgid "Sort by popularity"
490
  msgstr "Nach Beliebtheit sortieren"
491
 
492
+ #: includes/class-yith-wcan-filter-factory.php:106
493
  msgctxt "[Admin] Filter edit form, sorting options"
494
  msgid "Sort by average rating"
495
  msgstr "Best bewertete zuerst"
496
 
497
+ #: includes/class-yith-wcan-filter-factory.php:107
498
  msgctxt "[Admin] Filter edit form, sorting options"
499
  msgid "Sort by latest"
500
  msgstr "Neueste zuerst"
501
 
502
+ #: includes/class-yith-wcan-filter-factory.php:108
503
  msgctxt "[Admin] Filter edit form, sorting options"
504
  msgid "Sort by price: low to high"
505
  msgstr "Sortieren nach Preis: Preis aufsteigend"
506
 
507
+ #: includes/class-yith-wcan-filter-factory.php:109
508
  msgctxt "[Admin] Filter edit form, sorting options"
509
  msgid "Sort by price: high to low"
510
  msgstr "Sortieren nach Preis: Preis absteigend"
511
 
512
+ #: includes/class-yith-wcan-filter.php:116
513
  msgctxt "[Admin] Default filter title"
514
  msgid "New filter"
515
  msgstr "Neuer Filter"
516
 
517
+ #: includes/class-yith-wcan-frontend.php:591
518
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
519
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
520
  msgid "All"
521
  msgstr "Alle"
522
 
523
+ #: includes/class-yith-wcan-frontend.php:592
524
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
525
  msgid "Search..."
526
  msgstr "Suchen..."
527
 
528
+ #: includes/class-yith-wcan-frontend.php:593
529
  msgctxt "[FRONTEND] Empty items list in the dropdown"
530
  msgid "No item found"
531
  msgstr "Kein Artikel gefunden"
532
 
533
  #. translators: 1. Number of items to show.
534
+ #: includes/class-yith-wcan-frontend.php:595
535
  msgctxt "[FRONTEND] Show more link on terms dropdown"
536
  msgid "Show %d more"
537
  msgstr "%d mehr anzeigen"
538
 
539
+ #: includes/class-yith-wcan-frontend.php:596
540
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
541
  msgid "Close"
542
  msgstr "Schließen"
543
 
544
+ #: includes/class-yith-wcan-frontend.php:597
545
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
546
  msgid "Save"
547
  msgstr ""
548
 
549
+ #: includes/class-yith-wcan-frontend.php:598
550
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
551
  msgid "Show results"
552
  msgstr "Ergebnisse anzeigen"
553
 
554
+ #: includes/class-yith-wcan-frontend.php:599
555
  msgctxt ""
556
  "[FRONTEND] Label for clear selection link, that appears above filter after "
557
  "selection"
558
  msgid "Clear"
559
  msgstr "Löschen"
560
 
561
+ #: includes/class-yith-wcan-frontend.php:600
562
  msgctxt ""
563
  "[FRONTEND] Label for clear selection link, that appears above filter after "
564
  "selection"
565
  msgid "Clear All"
566
  msgstr "Alle löschen"
567
 
568
+ #: includes/class-yith-wcan-install.php:95
569
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
570
  msgid "Default preset"
571
  msgstr "Standard-Preset"
572
 
573
  #. translators: 1. Taxonomy name.
574
+ #: includes/class-yith-wcan-install.php:285
575
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
576
  msgid "Filter by %s"
577
  msgstr "Nach %s filtern"
578
 
579
+ #: includes/class-yith-wcan-preset-factory.php:112
580
  #, fuzzy
581
  msgctxt "[Admin] Label in new preset page"
582
  msgid "Default"
592
  msgid "Enter a name to identify this filter preset"
593
  msgstr "Geben Sie einen Namen ein, um dieses Filter-Preset zu identifizieren"
594
 
595
+ #: templates/admin/preset-filters.php:22
596
  msgctxt "[Admin] Label in new preset page"
597
  msgid "Filters of this preset"
598
  msgstr "Filter in diesem Preset"
599
 
600
+ #: includes/class-yith-wcan-presets.php:95
601
+ #: includes/class-yith-wcan-presets.php:100
602
  msgctxt "[Admin] name of presets custom post type"
603
  msgid "Filter presets"
604
  msgstr "Filter-Presets"
605
 
606
+ #: includes/class-yith-wcan-presets.php:96
607
  msgctxt "[Admin] singular name of presets custom post type"
608
  msgid "Filter preset"
609
  msgstr "Filter-Preset"
610
 
611
+ #: includes/class-yith-wcan-presets.php:97
612
  msgctxt "[Admin] add new filter preset label"
613
  msgid "Add new preset"
614
  msgstr "Neues Preset hinzufügen"
615
 
616
+ #: includes/class-yith-wcan-presets.php:139
617
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
618
  msgid "Convert widgets in a preset"
619
  msgstr "Widgets in eine Preset konvertieren"
620
 
621
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
622
  msgctxt ""
623
  "[Generic] Error that happens when trying to read a filter preset that does "
624
  "not exist"
626
  msgstr "Ungültige Voreinstellung."
627
 
628
  #. translators: 1. Title of original preset.
629
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
630
  msgctxt "[ADMIN] Title of the cloned preset"
631
  msgid "%s - Copy"
632
  msgstr "%s - Kopieren"
633
 
634
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
635
  msgctxt "[ADMIN] Name of the preset elementor widget"
636
  msgid "YITH AJAX Filters Preset"
637
  msgstr "YITH AJAX-Filter Presets"
638
 
639
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
640
  msgctxt "[ADMIN] Name of the preset elementor widget"
641
  msgid "YITH AJAX Filters Reset Button"
642
  msgstr "YITH AJAX-Filter Reset-Button"
643
 
644
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
645
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
646
  msgctxt "[ELEMENTOR] Default preset option"
647
  msgid "Choose an option"
648
  msgstr "Wählen Sie eine Option"
649
 
650
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
651
  msgctxt "[ELEMENTOR] Section title"
652
  msgid "Filters"
653
  msgstr "Filter"
654
 
655
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
656
  msgctxt "[ELEMENTOR] Section title"
657
  msgid "General"
658
  msgstr "Allgemein"
659
 
660
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
661
  msgctxt "[ELEMENTOR] Control label"
662
  msgid "Preset"
663
  msgstr "Preset"
664
 
665
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
666
  msgctxt "[ELEMENTOR] Widget description"
667
  msgid ""
668
  "This widget will display \"Filters reset\" button, wherever it is placed"
670
  "Dieses Widget zeigt den Button \"Filter zurücksetzen\" an, wo immer es "
671
  "platziert wird"
672
 
673
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
674
  msgctxt "[ELEMENTOR] Widget description"
675
  msgid ""
676
  "It will allow users to reset the filer selection; it will only appear when "
679
  "Wird es dem Benutzer ermöglichen, die Auswahl des Filters zurückzusetzen; es "
680
  "erscheint nur, wenn ein Filter aktiv ist. "
681
 
682
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
683
  msgctxt "[ELEMENTOR] Widget description"
684
  msgid ""
685
  "You can use this block to place \"Reset filters\" button inside your page, "
689
  "innerhalb Ihrer Seite zu platzieren, wenn die Option \"Position des Buttons "
690
  "zurücksetzen\" für den Loop Ihres Produkts nicht funktioniert "
691
 
692
+ #: includes/functions-yith-wcan.php:112
693
  msgctxt "For multicolor: I.E. white and red T-Shirt"
694
  msgid "Color 1"
695
  msgstr "Farbe 2"
696
 
697
+ #: includes/functions-yith-wcan.php:112
698
  msgctxt "For multicolor: I.E. white and red T-Shirt"
699
  msgid "Color 2"
700
  msgstr "Farbe 2"
701
 
702
+ #: includes/functions-yith-wcan.php:1026
703
  msgctxt "[FRONTEND] Star rating template"
704
  msgid "star"
705
  msgid_plural "stars"
707
  msgstr[1] "Sternen"
708
 
709
  #. translators: 1. Rating.
710
+ #: includes/functions-yith-wcan.php:1041
711
  msgctxt "[FRONTEND] Star rating label"
712
  msgid "Rated %s out of 5"
713
  msgstr "Bewertet mit %s von 5"
714
 
715
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
716
  msgctxt "[GUTENBERG]: block name"
717
  msgid "YITH AJAX Filters Preset"
718
  msgstr "YITH AJAX Filters Preset"
719
 
720
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
721
  msgctxt "[GUTENBERG]: block name"
722
  msgid "YITH Reset Filters Button"
723
  msgstr "YITH \"Filter zurücksetzen\"-Button"
724
 
725
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
726
  msgctxt "[GUTENBERG]: block description"
727
  msgid "Show filters from a preset"
728
  msgstr "Filter aus einem Preset anzeigen"
729
 
730
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
731
  msgctxt "[GUTENBERG]: block description"
732
  msgid ""
733
  "Show reset filters button, when a filter is applied and button is enabled in "
741
  "zu platzieren, wenn die Option \"Position des Buttons zurücksetzen\" für den "
742
  "Loop Ihres Produkts nicht funktioniert"
743
 
744
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
745
  msgctxt "[GUTENBERG]: attribute description"
746
  msgid "Preset"
747
  msgstr "Preset"
748
 
749
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
750
  msgctxt "[Admin] Preset table column header"
751
  msgid "Preset name"
752
  msgstr "Preset-Name"
753
 
754
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
755
  msgctxt "[Admin] Preset table column header"
756
  msgid "Shortcode"
757
  msgstr "Shortcode"
758
 
759
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
760
  msgctxt "[Admin] Preset edit action label"
761
  msgid "Edit this preset"
762
  msgstr "Dieses Preset bearbeiten"
763
 
764
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
765
  msgctxt "[Admin] Preset clone action label"
766
  msgid "Clone this preset"
767
  msgstr "Dieses Preset kopieren"
768
 
769
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
770
  msgctxt "[Admin] Preset delete action label"
771
  msgid "Delete this preset"
772
  msgstr "Dieses Preset löschen"
773
 
774
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
775
  msgctxt "[Admin] Preset delete confirm label"
776
  msgid "Are you sure you want to delete this preset?"
777
  msgstr "Sind Sie sicher, dass Sie dieses Preset löschen möchten?"
778
 
779
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
780
  msgctxt "[Admin] on-off yes"
781
  msgid "YES"
782
  msgstr "JA"
783
 
784
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
785
  msgctxt "[Admin] on-off no"
786
  msgid "NO"
787
  msgstr "NEIN"
788
 
789
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
790
  msgctxt ""
791
  "[Admin] Name of the item missing, shown in preset-empty-content template"
792
  msgid "filter preset"
793
  msgstr "Filter-Preset"
794
 
795
+ #: templates/admin/preset-filters.php:31
796
  msgctxt ""
797
  "[Admin] Name of the item missing, shown in preset-empty-content template"
798
  msgid "filter"
799
  msgstr "Filter"
800
 
801
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
802
  msgctxt "[Admin] New preset button label"
803
  msgid "Create a new preset"
804
  msgstr "Neues Preset erstellen"
805
 
806
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
807
  msgctxt "[ADMIN] Name of the preset widget"
808
  msgid "YITH AJAX Filters Preset"
809
  msgstr "YITH AJAX Filters Preset"
810
 
811
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
812
  msgctxt "[ADMIN] Preset widget options"
813
  msgid "Preset"
814
  msgstr "Preset"
815
 
816
  #. translators: 1. Url to Ajax Product filter admin panel.
817
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
818
  msgctxt "[ADMIN] Preset widget options"
819
  msgid ""
820
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
823
  "Bitte gehen Sie auf <a href=\"%s\">WP Dashboard -> YITH -> AJAX Product "
824
  "Filter -> Presets</a> und erstellen Sie Ihr erstes Preset"
825
 
826
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
827
  msgctxt "[Plugin Name] Admin: Widget Title"
828
  msgid "YITH AJAX Product Filter"
829
  msgstr "YITH AJAX Product Filter"
830
 
831
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
832
  #, fuzzy
833
  msgctxt ""
834
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
835
  msgid "AND"
836
  msgstr "UND"
837
 
838
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
839
  msgctxt "[Plugin Name]"
840
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
841
  msgstr ""
842
  "Alle von YITH WooCommerce AJAX Product Filter gesetzten Filter zurücksetzen "
843
 
844
+ #: plugin-options/filter-options.php:145
845
  #, fuzzy
846
  msgctxt ""
847
  "[Admin] Filter edit form; logical operator that affects query behaviour"
850
  "UND - Die Ergebnisse müssen mit allen ausgewählten Begriffen gleichzeitig "
851
  "übereinstimmen"
852
 
853
+ #: plugin-options/filter-options.php:146
854
  #, fuzzy
855
  msgctxt ""
856
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1140
  msgctxt "[ADMIN] Premium tab"
1141
  msgid ""
1142
  "<b>Filter by category</b>: to let users choose which product category to "
1143
+ "view<br/>\n"
1144
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1145
  "<b>Filter by price</b>: to let users filter products by a specific price "
1146
+ "range (based on their budget availability)<br/>\n"
1147
  "<b>Filter by color and size</b>: you can create filters for all the "
1148
  "attributes available in your store, like color and size. For the color "
1149
  "filter, you can either choose square or circular color swatches or use "
1150
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1151
  "<b>Filter by rating</b>: to let your users filter products based on other "
1152
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1153
+ "concentrate only on high-rated ones)<br/>\n"
1154
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1155
+ "on plugin, you can also filter products by specific brands<br/>\n"
1156
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1157
+ "filter products and view only those with a discount<br/>\n"
1158
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1159
  "filter products based on their needs and exclude out-of-stock products from "
1160
  "the list"
1280
  "easier to share)"
1281
  msgstr ""
1282
 
1283
+ #: templates/admin/preset-edit.php:31
1284
  msgctxt "[Admin] Back link in new preset page"
1285
  msgid "< back to preset list"
1286
  msgstr "< zurück zur Preset-Liste"
1287
 
1288
+ #: templates/admin/preset-edit.php:38
1289
  msgctxt "[ADMIN] Title for new preset page"
1290
  msgid "Edit filter preset"
1291
  msgstr "Filter-Preset bearbeiten"
1292
 
1293
+ #: templates/admin/preset-edit.php:40
1294
  msgctxt "[ADMIN] Title for new preset page"
1295
  msgid "Add new filter preset"
1296
  msgstr "Neues Filter-Preset hinzufügen"
1297
 
1298
+ #: templates/admin/preset-edit.php:47
1299
  msgctxt "[ADMIN] Preset save message"
1300
  msgid "Preset saved correctly"
1301
  msgstr ""
1302
 
1303
+ #: templates/admin/preset-edit.php:93
1304
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1305
  msgid "Save preset"
1306
  msgstr "Preset speichern"
1307
 
1308
+ #: templates/admin/preset-empty-content.php:29
1309
  msgctxt "Alt text for empty preset image"
1310
  msgid "Empty preset"
1311
  msgstr "Leeres Preset"
1312
 
1313
  #. translators: 1. Missing item name.
1314
+ #: templates/admin/preset-empty-content.php:35
1315
  msgctxt "[Admin] Preset table empty message"
1316
  msgid "You don't have any %s yet."
1317
  msgstr "Sie haben bis jetzt keine %s."
1318
 
1319
+ #: templates/admin/preset-filter-term.php:30
1320
  msgctxt "[Admin] Term edit field label (preset edit page)"
1321
  msgid "Label"
1322
  msgstr "Label"
1323
 
1324
+ #: templates/admin/preset-filter-term.php:35
1325
  msgctxt "[Admin] Term edit field label (preset edit page)"
1326
  msgid "Tooltip"
1327
  msgstr "Tooltip"
1328
 
1329
+ #: templates/admin/preset-filter-term.php:41
1330
  msgctxt "[Admin] Term edit field label (preset edit page)"
1331
  msgid "Color"
1332
  msgstr "Farbe"
1333
 
1334
+ #: templates/admin/preset-filter.php:91
1335
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1336
  msgid "Save Filter"
1337
  msgstr "Filter speichern"
1338
 
1339
+ #: templates/admin/preset-filter.php:92
1340
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1341
  msgid "Delete Filter"
1342
  msgstr "Filter löschen"
1343
 
1344
+ #: templates/admin/preset-filters.php:33
1345
  msgctxt "[Admin] New filter button label"
1346
  msgid "Add a new filter"
1347
  msgstr "Einen neuen Filter hinzufügen"
1348
 
1349
+ #: templates/admin/preset-filters.php:57
1350
  msgctxt "[Admin] Add new filter in new preset page"
1351
  msgid "+ Add filter"
1352
  msgstr "+ Filter hinzufügen "
1358
  msgid "See %d more filters"
1359
  msgstr "Vor Filtern"
1360
 
1361
+ #: templates/admin/upgrade-note-modal.php:33
1362
  msgctxt "[ADMIN] Upgrade note modal title"
1363
  msgid "Use the new filter preset feature for your filters"
1364
  msgstr "Nutzen Sie das neuen Filter-Preset-Feature für Ihren Filter "
1365
 
1366
+ #: templates/admin/upgrade-note-modal.php:38
1367
  msgctxt "[ADMIN] Upgrade note modal content"
1368
  msgid ""
1369
  "From the version 4.0 we built a powerful system that allows you to create "
1378
  "Widget verwenden."
1379
 
1380
  #. translators: 1. Url to demo video. 2. Url to docs.
1381
+ #: templates/admin/upgrade-note-modal.php:51
1382
  msgctxt "[ADMIN] Upgrade note modal content"
1383
  msgid ""
1384
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1389
  "genutzt werden kann."
1390
 
1391
  #. translators: 1. Url to docs.
1392
+ #: templates/admin/upgrade-note-modal.php:64
1393
  msgctxt "[ADMIN] Upgrade note modal content"
1394
  msgid ""
1395
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1398
  "Wir empfehlen, die <a href=\"%1$s\">Dokumentation (engl.) zu lesen</a> um zu "
1399
  "lernen, wie dieses neue Feature genutzt werden kann."
1400
 
1401
+ #: templates/admin/upgrade-note-modal.php:78
1402
  #, fuzzy
1403
  msgctxt "[ADMIN] Upgrade note modal content"
1404
  msgid ""
1413
  "Tabelle übertragen.<br/>\n"
1414
  "<b>Keine Sorge, bei diesem Vorgang gehen keine Daten verloren.</b>"
1415
 
1416
+ #: templates/admin/upgrade-note-modal.php:89
1417
  msgctxt "[ADMIN] Upgrade note modal content"
1418
  msgid ""
1419
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1421
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1422
  msgstr ""
1423
 
1424
+ #: templates/admin/upgrade-note-modal.php:98
1425
  msgctxt "[ADMIN] Upgrade note modal button label"
1426
  msgid "Convert your widgets in a preset now"
1427
  msgstr "Wandeln Sie Ihre Widgets jetzt in Presets um"
1428
 
1429
+ #: templates/admin/upgrade-note-modal.php:99
1430
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1431
  msgid "No thanks"
1432
  msgstr "Nein Danke"
1433
 
1434
+ #: templates/filters/global/reset-filters.php:24
1435
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1436
  msgid "Reset filters"
1437
  msgstr "Filter zurücksetzen"
1438
 
1439
+ #~ msgctxt "[Admin] Menu title"
1440
+ #~ msgid "Ajax Product Filter"
1441
+ #~ msgstr "AJAX Produkt-Filter "
1442
+
1443
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1444
  #~ msgid "All"
1445
  #~ msgstr "Alle"
languages/yith-woocommerce-ajax-navigation-el.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-el.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:32:43+0000\n"
10
  "Language: el_GR\n"
11
  "MIME-Version: 1.0\n"
@@ -14,94 +14,94 @@ msgstr ""
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Προρύθμιση Πρόχειρου"
20
 
21
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
22
- #: includes/functions.yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Όρος"
25
 
26
- #: includes/functions.yith-wcan.php:98
27
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
28
  msgid "Color"
29
  msgstr "Χρώμα"
30
 
31
- #: includes/functions.yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Επιγραφές"
34
 
35
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Ταξινομήστε τη λίστα προϊόντων χωρίς να γίνει επαναφόρτωση της σελίδας"
38
 
39
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
40
  msgid "Filters:"
41
  msgstr "Φίλτρα:"
42
 
43
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
44
  msgid "List"
45
  msgstr "Λίστα"
46
 
47
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
48
  msgid "Label"
49
  msgstr "Επιγραφή"
50
 
51
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
52
  msgid "Dropdown"
53
  msgstr "Αναδιπλούμενη λίστα"
54
 
55
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
56
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
57
  msgid "Title"
58
  msgstr "Τίτλος"
59
 
60
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
61
  msgid "Type:"
62
  msgstr "Τύπος:"
63
 
64
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
65
  msgid "Query Type:"
66
  msgstr "Τύπος Ερωτήματος:"
67
 
68
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
69
  msgid "OR"
70
  msgstr "Ή"
71
 
72
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
73
  msgid "Attribute:"
74
  msgstr "Ιδιότητα:"
75
 
76
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
77
  msgid "Display (default All):"
78
  msgstr "Εμφάνιση (προεπιλεγμένα Όλα):"
79
 
80
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
81
  msgid "All (no hierarchical)"
82
  msgstr "Όλοι (μη ιεραρχικά)"
83
 
84
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
85
  msgid "All (hierarchical)"
86
  msgstr "Όλοι (ιεραρχικά)"
87
 
88
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
89
  msgid "Only Parent"
90
  msgstr "Μόνο Γονικός"
91
 
92
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
93
  msgid "CSS custom class"
94
  msgstr "Κλάση προσαρμοσμένου CSS"
95
 
96
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Επαναφορά Φίλτρου"
99
 
100
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
101
  msgid "Reset All Filters"
102
  msgstr "Επαναφορά Όλων των Φίλτρων"
103
 
104
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
105
  msgid "Button Label"
106
  msgstr "Επιγραφή Κουμπιού"
107
 
@@ -138,76 +138,71 @@ msgstr ""
138
  "περισσότερα πρόσθετα για το ηλεκτρονικό σας κατάστημα στο <strong>YITH</"
139
  "strong></a>"
140
 
141
- #: includes/class.yith-wcan-admin.php:107
142
  msgctxt "[Admin] Copy confirmation message"
143
  msgid "Content copied to your clipboard"
144
  msgstr "Έγινε αντιγραφή περιεχομένου σε πρόχειρο"
145
 
146
- #: includes/class.yith-wcan-admin.php:108
147
  msgctxt "[Admin] Confirm filter delete message"
148
  msgid "Are you sure you want to delete this item?"
149
  msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αντικείμενο;"
150
 
151
  #. translators: 1. Number of items that will be added.
152
- #: includes/class.yith-wcan-admin.php:110
153
  msgctxt "[Admin] Confirm add all terms message"
154
  msgid "Are you sure you want to proceed? This operation will add %s items"
155
  msgstr ""
156
  "Είστε σίγουροι ότι θέλετε να προχωρήσετε; Αυτή η διαδικασία θα προσθέσει %s "
157
  "αντικείμενα"
158
 
159
- #: includes/class.yith-wcan-admin.php:111
160
  msgctxt "[Admin] Error message"
161
  msgid "\"Filter title\" is a required field"
162
  msgstr ""
163
 
164
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
165
  msgctxt "[Admin] Message shown when filter has empty title"
166
  msgid "&lt; no title &gt;"
167
  msgstr "&lt; χωρίς τίτλο &gt;"
168
 
169
- #: includes/class.yith-wcan-admin.php:115
170
  msgctxt "[Admin] Media library title, when selecting images"
171
  msgid "Select media you want to use"
172
  msgstr "Επιλέξτε τα πολυμέσα που θέλετε να χρησιμοποιήσετε"
173
 
174
- #: includes/class.yith-wcan-admin.php:116
175
  msgctxt "[Admin] Media library confirm button, when selecting images"
176
  msgid "Use this media"
177
  msgstr "Χρησιμοποιήστε αυτά τα πολυμέσα"
178
 
179
- #: includes/class.yith-wcan-admin.php:184
180
  msgctxt "[Admin] tab name"
181
  msgid "Filter presets"
182
  msgstr "Προρυθμίσεις φίλτρου"
183
 
184
- #: includes/class.yith-wcan-admin.php:185
185
  msgctxt "[Admin] tab name"
186
  msgid "General settings"
187
  msgstr "Γενικές ρυθμίσεις"
188
 
189
- #: includes/class.yith-wcan-admin.php:186
190
  #, fuzzy
191
  msgctxt "[Admin] tab name"
192
  msgid "SEO"
193
  msgstr "SEO"
194
 
195
- #: includes/class.yith-wcan-admin.php:187
196
  msgctxt "[Admin] tab name"
197
  msgid "Premium Version"
198
  msgstr "Premium Έκδοση"
199
 
200
- #: includes/class.yith-wcan-admin.php:191
201
  msgctxt "[Admin] tab name"
202
  msgid "Legacy"
203
  msgstr "Σύστημα κληρονομιάς"
204
 
205
- #: includes/class.yith-wcan-admin.php:198
206
- msgctxt "[Admin] Menu title"
207
- msgid "Ajax Product Filter"
208
- msgstr "Ajax Product Filter"
209
-
210
- #: includes/class.yith-wcan-admin.php:199
211
  msgctxt "[Admin] Plugin description"
212
  msgid ""
213
  "It allows your users to find the product they are looking for as quickly as "
@@ -216,44 +211,44 @@ msgstr ""
216
  "Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
217
  "δυνατό."
218
 
219
- #: includes/class.yith-wcan-admin.php:211
220
  msgctxt "[HELP TAB] Video title"
221
  msgid ""
222
  "Check this video to learn how to <b>create a filter preset and show it on "
223
  "the shop page:</b>"
224
  msgstr ""
225
 
226
- #: includes/class.yith-wcan-admin.php:329
227
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
228
  msgid "item"
229
  msgstr "αντικείμενο"
230
 
231
- #: includes/class.yith-wcan-admin.php:330
232
  msgctxt "[Admin] Preset table empty message second line"
233
  msgid "But don't worry, here you can create your first one!"
234
  msgstr "Μην ανησυχείτε, εδώ μπορείτε να δημιουργήσετε το πρώτο!"
235
 
236
- #: includes/class.yith-wcan-admin.php:478
237
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
238
  msgid "Clear Product Filter transients"
239
  msgstr "Καθαρισμός μεταβάσεων φίλτρου προϊόντος"
240
 
241
- #: includes/class.yith-wcan-admin.php:484
242
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
243
  msgid "Run filter widgets upgrade"
244
  msgstr "Εκτέλεση αναβάθμισης μικροεφαρμογών φίλτρου"
245
 
246
- #: includes/class.yith-wcan-admin.php:479
247
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
248
  msgid "Clear"
249
  msgstr "Καθαρισμός"
250
 
251
- #: includes/class.yith-wcan-admin.php:485
252
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
253
  msgid "Run"
254
  msgstr "Εκτέλεση"
255
 
256
- #: includes/class.yith-wcan-admin.php:480
257
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
258
  msgid ""
259
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -265,7 +260,7 @@ msgstr ""
265
  "κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
266
  "αποτελέσματα που περιμένετε. "
267
 
268
- #: includes/class.yith-wcan-admin.php:486
269
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
270
  msgid ""
271
  "This will create a preset for any sidebar of your shop containing filter "
@@ -275,32 +270,32 @@ msgstr ""
275
  "καταστήματός σας, που περιέχει μικροεφαρμογές φίλτρου. Η προρύθμιση θα "
276
  "ρυθμιστεί για να αντιστοιχεί με τις προδιαγραφές μικροεφαρμογών"
277
 
278
- #: includes/class.yith-wcan-filter-factory.php:72
279
  msgctxt "[Admin] Filter edit form"
280
  msgid "Taxonomy"
281
  msgstr "Ταξινομία"
282
 
283
- #: includes/class.yith-wcan-filter-factory.php:86
284
  msgctxt "[Admin] Filter edit form"
285
  msgid "Checkbox"
286
  msgstr "Πλαίσιο ελέγχου"
287
 
288
- #: includes/class.yith-wcan-filter-factory.php:87
289
  msgctxt "[Admin] Filter edit form"
290
  msgid "Select"
291
  msgstr "Επιλογή"
292
 
293
- #: includes/class.yith-wcan-filter-factory.php:88
294
  msgctxt "[Admin] Filter edit form"
295
  msgid "Text"
296
  msgstr "Κείμενο"
297
 
298
- #: includes/class.yith-wcan-filter-factory.php:89
299
  msgctxt "[Admin] Filter edit form"
300
  msgid "Color Swatches"
301
  msgstr "Δείγματα Χρωμάτων"
302
 
303
- #: includes/class.yith-wcan-filter-factory.php:90
304
  msgctxt "[Admin] Filter edit form"
305
  msgid "Label"
306
  msgstr "Επιγραφή"
@@ -315,33 +310,33 @@ msgctxt "[Admin] Filter edit form"
315
  msgid "Enter a name to identify this filter"
316
  msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτό το φίλτρο"
317
 
318
- #: plugin-options/filter-options.php:41
319
  msgctxt "[Admin] Filter edit form"
320
  msgid "Filter for"
321
  msgstr "Ταξινόμηση για"
322
 
323
- #: plugin-options/filter-options.php:45
324
  msgctxt "[Admin] Filter edit form"
325
  msgid "Select the parameters you wish to filter for"
326
  msgstr "Επιλέξτε τις παραμέτρους που θέλετε να ταξινομήσετε"
327
 
328
- #: plugin-options/filter-options.php:51
329
  msgctxt "[Admin] Filter edit form"
330
  msgid "Choose taxonomy"
331
  msgstr "Επιλογή ταξινομίας"
332
 
333
- #: plugin-options/filter-options.php:55
334
  msgctxt "[Admin] Filter edit form"
335
  msgid "Select which taxonomy to use for this filter"
336
  msgstr ""
337
  "Επιλέξτε την ταξινομία που θέλετε να χρησιμοποιήσετε για αυτό το φίλτρο"
338
 
339
- #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid "Auto-populate with all terms"
342
  msgstr ""
343
 
344
- #: plugin-options/filter-options.php:62
345
  msgctxt "[Admin] Filter edit form"
346
  msgid ""
347
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -350,73 +345,73 @@ msgid ""
350
  "well.</span>"
351
  msgstr ""
352
 
353
- #: plugin-options/filter-options.php:71
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Choose terms"
356
  msgstr "Επιλογή όρων"
357
 
358
- #: plugin-options/filter-options.php:76
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Select which terms to use for filtering"
361
  msgstr "Επιλέξτε ποιους όρους να χρησιμοποιήσετε για την ταξινόμηση"
362
 
363
- #: plugin-options/filter-options.php:80
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Filter type"
366
  msgstr "Τύπος φίλτρου"
367
 
368
- #: plugin-options/filter-options.php:84
369
  msgctxt "[Admin] Filter edit form"
370
  msgid "Select the filter type for this filter"
371
  msgstr "Επιλέξτε τον τύπο για αυτό το φίλτρο"
372
 
373
- #: plugin-options/filter-options.php:88
374
  #, fuzzy
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Labels"
377
  msgstr "Επιγραφές"
378
 
379
- #: plugin-options/filter-options.php:91
380
  #, fuzzy
381
  msgctxt "[Admin] Filter edit form"
382
  msgid "Show below"
383
  msgstr "Εμφάνιση αποτελεσμάτων"
384
 
385
- #: plugin-options/filter-options.php:92
386
  #, fuzzy
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Show on the right"
389
  msgstr "Εμφάνιση αρίθμησης αντικειμένων"
390
 
391
- #: plugin-options/filter-options.php:93
392
  msgctxt "[Admin] Filter edit form"
393
  msgid "Hide"
394
  msgstr ""
395
 
396
- #: plugin-options/filter-options.php:95
397
  #, fuzzy
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Choose if and where to show the label inside your filter"
400
  msgstr "Επιλέξτε το στυλ φίλτρου μέσα στις μικροεφαρμογές"
401
 
402
- #: plugin-options/filter-options.php:99
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Columns number"
405
  msgstr "Αριθμός στηλών"
406
 
407
- #: plugin-options/filter-options.php:104
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Set the number of items per row you want to show for this design"
410
  msgstr ""
411
  "Ορίστε τον αριθμό αντικειμένων που θέλετε να εμφανίζετε ανά σειρά για αυτό "
412
  "το σχέδιο"
413
 
414
- #: plugin-options/filter-options.php:108
415
  msgctxt "[Admin] Filter edit form"
416
  msgid "Customize terms"
417
  msgstr "Προσαρμογή όρων"
418
 
419
- #: plugin-options/filter-options.php:111
420
  msgctxt "[Admin] Filter edit form"
421
  msgid ""
422
  "Configure your terms individually; system will otherwise use default labels/"
@@ -430,157 +425,157 @@ msgid ""
430
  "this option and use the boxes below</span>"
431
  msgstr ""
432
 
433
- #: plugin-options/filter-options.php:121
434
  #, fuzzy
435
  msgctxt "[Admin] Filter edit form"
436
  msgid "Terms options"
437
  msgstr "Σειρά επιλογών"
438
 
439
- #: plugin-options/filter-options.php:127
440
  msgctxt "[Admin] Filter edit form"
441
  msgid "Show hierarchy"
442
  msgstr "Εμφάνιση ιεραρχίας"
443
 
444
- #: plugin-options/filter-options.php:130
445
  msgctxt "[Admin] Filter edit form"
446
  msgid "No, show all terms in same level"
447
  msgstr "Όχι, να εμφανίζονται όλοι οι όροι στο ίδιο επίπεδο"
448
 
449
- #: plugin-options/filter-options.php:131
450
  msgctxt "[Admin] Filter edit form"
451
  msgid "No, show only parent terms"
452
  msgstr "Όχι, να εμφανίζονται μόνο γονικοί όροι"
453
 
454
- #: plugin-options/filter-options.php:132
455
  msgctxt "[Admin] Filter edit form"
456
  msgid "Yes"
457
  msgstr ""
458
 
459
- #: plugin-options/filter-options.php:134
460
  msgctxt "[Admin] Filter edit form"
461
  msgid "Choose how to show terms hierarchy"
462
  msgstr "Επιλέξτε πώς να εμφανίζεται η ιεραρχία όρων"
463
 
464
- #: plugin-options/filter-options.php:138
465
  msgctxt "[Admin] Filter edit form"
466
  msgid "Allow multiple selection"
467
  msgstr "Επιτρέψτε πολλαπλή επιλογή"
468
 
469
- #: plugin-options/filter-options.php:140
470
  msgctxt "[Admin] Filter edit form"
471
  msgid "Enable if the user can select multiple terms when filtering products"
472
  msgstr ""
473
  "Ενεργοποιήστε αν ο χρήστης μπορεί να επιλέξει πολλαπλούς όρους κατα την "
474
  "ταξινόμηση προϊόντων"
475
 
476
- #: plugin-options/filter-options.php:144
477
  msgctxt "[Admin] Filter edit form"
478
  msgid "Multiselect relation"
479
  msgstr "Σχέση πολλαπλής επιλογής"
480
 
481
- #: plugin-options/filter-options.php:150
482
  msgctxt "[Admin] Filter edit form"
483
  msgid "Choose how multiple terms selection should behave"
484
  msgstr "Επιλέξτε την συμπεριφορά επιλογής πολλαπλών όρων"
485
 
486
- #: includes/class.yith-wcan-filter-factory.php:104
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Default sorting"
489
  msgstr "Προεπιλεγμένη ταξινόμηση"
490
 
491
- #: includes/class.yith-wcan-filter-factory.php:105
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by popularity"
494
  msgstr "Ταξινόμηση κατά δημοτικότητα"
495
 
496
- #: includes/class.yith-wcan-filter-factory.php:106
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by average rating"
499
  msgstr "Ταξινόμηση κατα μέση αξιολόγηση"
500
 
501
- #: includes/class.yith-wcan-filter-factory.php:107
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by latest"
504
  msgstr "Ταξινόμηση κατά τελευταίο"
505
 
506
- #: includes/class.yith-wcan-filter-factory.php:108
507
  msgctxt "[Admin] Filter edit form, sorting options"
508
  msgid "Sort by price: low to high"
509
  msgstr "Ταξινόμηση ανά τιμή: χαμηλή προς υψηλή"
510
 
511
- #: includes/class.yith-wcan-filter-factory.php:109
512
  msgctxt "[Admin] Filter edit form, sorting options"
513
  msgid "Sort by price: high to low"
514
  msgstr "Ταξινόμηση ανά τιμή: υψηλή προς χαμηλή"
515
 
516
- #: includes/class.yith-wcan-filter.php:116
517
  msgctxt "[Admin] Default filter title"
518
  msgid "New filter"
519
  msgstr "Νέο φίλτρο"
520
 
521
- #: includes/class.yith-wcan-frontend.php:576
522
- #: includes/filters/class.yith-wcan-filter-tax.php:62
523
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
524
  msgid "All"
525
  msgstr "Όλα"
526
 
527
- #: includes/class.yith-wcan-frontend.php:577
528
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
529
  msgid "Search..."
530
  msgstr "Αναζήτηση…"
531
 
532
- #: includes/class.yith-wcan-frontend.php:578
533
  msgctxt "[FRONTEND] Empty items list in the dropdown"
534
  msgid "No item found"
535
  msgstr "Δεν βρέθηκε αντικείμενο"
536
 
537
  #. translators: 1. Number of items to show.
538
- #: includes/class.yith-wcan-frontend.php:580
539
  msgctxt "[FRONTEND] Show more link on terms dropdown"
540
  msgid "Show %d more"
541
  msgstr "Εμφάνιση %d περισσότερων"
542
 
543
- #: includes/class.yith-wcan-frontend.php:581
544
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
545
  msgid "Close"
546
  msgstr "Κλείσιμο"
547
 
548
- #: includes/class.yith-wcan-frontend.php:582
549
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
550
  msgid "Save"
551
  msgstr ""
552
 
553
- #: includes/class.yith-wcan-frontend.php:583
554
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
555
  msgid "Show results"
556
  msgstr "Εμφάνιση αποτελεσμάτων"
557
 
558
- #: includes/class.yith-wcan-frontend.php:584
559
  msgctxt ""
560
  "[FRONTEND] Label for clear selection link, that appears above filter after "
561
  "selection"
562
  msgid "Clear"
563
  msgstr "Καθαρισμός"
564
 
565
- #: includes/class.yith-wcan-frontend.php:585
566
  msgctxt ""
567
  "[FRONTEND] Label for clear selection link, that appears above filter after "
568
  "selection"
569
  msgid "Clear All"
570
  msgstr "Καθαρισμός Όλων"
571
 
572
- #: includes/class.yith-wcan-install.php:95
573
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
574
  msgid "Default preset"
575
  msgstr "Προεπιλεγμένη προρύθμιση"
576
 
577
  #. translators: 1. Taxonomy name.
578
- #: includes/class.yith-wcan-install.php:285
579
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
580
  msgid "Filter by %s"
581
  msgstr "Ταξινόμηση κατά %s"
582
 
583
- #: includes/class.yith-wcan-preset-factory.php:112
584
  #, fuzzy
585
  msgctxt "[Admin] Label in new preset page"
586
  msgid "Default"
@@ -596,33 +591,33 @@ msgctxt "[Admin] Label in new preset page"
596
  msgid "Enter a name to identify this filter preset"
597
  msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτή την προρύθμιση φίλτρου"
598
 
599
- #: templates/admin/preset-filters.php:20
600
  msgctxt "[Admin] Label in new preset page"
601
  msgid "Filters of this preset"
602
  msgstr "Φίλτρα αυτής της προρύθμισης"
603
 
604
- #: includes/class.yith-wcan-presets.php:95
605
- #: includes/class.yith-wcan-presets.php:100
606
  msgctxt "[Admin] name of presets custom post type"
607
  msgid "Filter presets"
608
  msgstr "Φίλτρο προρυθμίσεων"
609
 
610
- #: includes/class.yith-wcan-presets.php:96
611
  msgctxt "[Admin] singular name of presets custom post type"
612
  msgid "Filter preset"
613
  msgstr "Φίλτρο προρύθμισης"
614
 
615
- #: includes/class.yith-wcan-presets.php:97
616
  msgctxt "[Admin] add new filter preset label"
617
  msgid "Add new preset"
618
  msgstr "Προσθήκη νέας προρύθμισης"
619
 
620
- #: includes/class.yith-wcan-presets.php:139
621
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
622
  msgid "Convert widgets in a preset"
623
  msgstr "Μετατροπή μικροεφαρμογών σε προρύθμιση"
624
 
625
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
626
  msgctxt ""
627
  "[Generic] Error that happens when trying to read a filter preset that does "
628
  "not exist"
@@ -630,43 +625,43 @@ msgid "Invalid preset."
630
  msgstr "Προρύθμιση άκυρη."
631
 
632
  #. translators: 1. Title of original preset.
633
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
634
  msgctxt "[ADMIN] Title of the cloned preset"
635
  msgid "%s - Copy"
636
  msgstr "%s - Αντιγραφή"
637
 
638
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Preset"
641
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
642
 
643
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
644
  msgctxt "[ADMIN] Name of the preset elementor widget"
645
  msgid "YITH AJAX Filters Reset Button"
646
  msgstr "Κουμπί Επαναφοράς Φίλτρων YITH AJAX"
647
 
648
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
649
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
650
  msgctxt "[ELEMENTOR] Default preset option"
651
  msgid "Choose an option"
652
  msgstr "Διαλέξτε μια επιλογή"
653
 
654
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
655
  msgctxt "[ELEMENTOR] Section title"
656
  msgid "Filters"
657
  msgstr "Φίλτρα"
658
 
659
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
660
  msgctxt "[ELEMENTOR] Section title"
661
  msgid "General"
662
  msgstr "Γενικά"
663
 
664
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
665
  msgctxt "[ELEMENTOR] Control label"
666
  msgid "Preset"
667
  msgstr "Προρύθμιση"
668
 
669
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
670
  msgctxt "[ELEMENTOR] Widget description"
671
  msgid ""
672
  "This widget will display \"Filters reset\" button, wherever it is placed"
@@ -674,7 +669,7 @@ msgstr ""
674
  "Αυτή η μικροεφαρμογή θα εμφανίσει το κουμπί \"Επαναφορά φίλτρων\", όπου "
675
  "τοποθετηθεί"
676
 
677
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
678
  msgctxt "[ELEMENTOR] Widget description"
679
  msgid ""
680
  "It will allow users to reset the filer selection; it will only appear when "
@@ -683,7 +678,7 @@ msgstr ""
683
  "Θα επιτρέψει στους χρήστες να επαναρυθμίσουν την επιλογή φίλτρου. Θα "
684
  "εμφανιστεί μόνο όταν υπάρχει ενεργό φίλτρο."
685
 
686
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
687
  msgctxt "[ELEMENTOR] Widget description"
688
  msgid ""
689
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -693,17 +688,17 @@ msgstr ""
693
  "“Επαναφορά φίλτρων” μέσα στη σελίδα σας, όταν η επιλογή “Επαναφορά θέσης "
694
  "κουμπιού” δεν λειτουργεί για τον βρόχο προϊόντος"
695
 
696
- #: includes/functions.yith-wcan.php:112
697
  msgctxt "For multicolor: I.E. white and red T-Shirt"
698
  msgid "Color 1"
699
  msgstr "Χρώμα 1"
700
 
701
- #: includes/functions.yith-wcan.php:112
702
  msgctxt "For multicolor: I.E. white and red T-Shirt"
703
  msgid "Color 2"
704
  msgstr "Χρώμα 2"
705
 
706
- #: includes/functions.yith-wcan.php:1001
707
  msgctxt "[FRONTEND] Star rating template"
708
  msgid "star"
709
  msgid_plural "stars"
@@ -711,27 +706,27 @@ msgstr[0] "αστέρι"
711
  msgstr[1] "αστέρια"
712
 
713
  #. translators: 1. Rating.
714
- #: includes/functions.yith-wcan.php:1016
715
  msgctxt "[FRONTEND] Star rating label"
716
  msgid "Rated %s out of 5"
717
  msgstr "Βαθμολογήθηκε με %s από 5"
718
 
719
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
720
  msgctxt "[GUTENBERG]: block name"
721
  msgid "YITH AJAX Filters Preset"
722
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
723
 
724
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
725
  msgctxt "[GUTENBERG]: block name"
726
  msgid "YITH Reset Filters Button"
727
  msgstr "Κουμπί Επαναφοράς Φίλτρων YITH"
728
 
729
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
730
  msgctxt "[GUTENBERG]: block description"
731
  msgid "Show filters from a preset"
732
  msgstr "Εμφάνιση φίλτρων από προρύθμιση"
733
 
734
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
735
  msgctxt "[GUTENBERG]: block description"
736
  msgid ""
737
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -745,80 +740,80 @@ msgstr ""
745
  "φίλτρων” μέσα στη σελίδα, όταν η επιλογή “Επαναφορά θέσης κουμπιού” δεν "
746
  "λειτουργεί για τον βρόχο προϊόντος"
747
 
748
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
749
  msgctxt "[GUTENBERG]: attribute description"
750
  msgid "Preset"
751
  msgstr "Προρύθμιση"
752
 
753
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
754
  msgctxt "[Admin] Preset table column header"
755
  msgid "Preset name"
756
  msgstr "Όνομα προρύθμισης"
757
 
758
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
759
  msgctxt "[Admin] Preset table column header"
760
  msgid "Shortcode"
761
  msgstr "Μικροκώδικας"
762
 
763
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
764
  msgctxt "[Admin] Preset edit action label"
765
  msgid "Edit this preset"
766
  msgstr "Επεξεργασία προρύθμισης"
767
 
768
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
769
  msgctxt "[Admin] Preset clone action label"
770
  msgid "Clone this preset"
771
  msgstr "Κλωνοποίηση προρύθμισης"
772
 
773
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
774
  msgctxt "[Admin] Preset delete action label"
775
  msgid "Delete this preset"
776
  msgstr "Διαγραφή προρύθμισης"
777
 
778
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
779
  msgctxt "[Admin] Preset delete confirm label"
780
  msgid "Are you sure you want to delete this preset?"
781
  msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε αυτή τη προρύθμιση;"
782
 
783
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
784
  msgctxt "[Admin] on-off yes"
785
  msgid "YES"
786
  msgstr "ΝΑΙ"
787
 
788
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
789
  msgctxt "[Admin] on-off no"
790
  msgid "NO"
791
  msgstr "ΟΧΙ"
792
 
793
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
794
  msgctxt ""
795
  "[Admin] Name of the item missing, shown in preset-empty-content template"
796
  msgid "filter preset"
797
  msgstr "προρύθμιση φίλτρου"
798
 
799
- #: templates/admin/preset-filters.php:29
800
  msgctxt ""
801
  "[Admin] Name of the item missing, shown in preset-empty-content template"
802
  msgid "filter"
803
  msgstr "φίλτρο"
804
 
805
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
806
  msgctxt "[Admin] New preset button label"
807
  msgid "Create a new preset"
808
  msgstr "Δημιουργία νέας προρύθμισης"
809
 
810
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
811
  msgctxt "[ADMIN] Name of the preset widget"
812
  msgid "YITH AJAX Filters Preset"
813
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
814
 
815
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
816
  msgctxt "[ADMIN] Preset widget options"
817
  msgid "Preset"
818
  msgstr "Προρύθμιση"
819
 
820
  #. translators: 1. Url to Ajax Product filter admin panel.
821
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
822
  msgctxt "[ADMIN] Preset widget options"
823
  msgid ""
824
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -828,26 +823,26 @@ msgstr ""
828
  "Product Filter -> Προρυθμίσεις</a> και χρησιμοποιήστε την πρώτη σας "
829
  "προρύθμιση"
830
 
831
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
832
  msgctxt "[Plugin Name] Admin: Widget Title"
833
  msgid "YITH AJAX Product Filter"
834
  msgstr "YITH AJAX Product Filter"
835
 
836
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
837
  #, fuzzy
838
  msgctxt ""
839
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
840
  msgid "AND"
841
  msgstr "ΚΑΙ"
842
 
843
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
844
  msgctxt "[Plugin Name]"
845
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
846
  msgstr ""
847
  "Επαναφορά όλων των φίλτρων που έχουν οριστεί από το YITH WooCommerce AJAX "
848
  "Product Filter"
849
 
850
- #: plugin-options/filter-options.php:147
851
  #, fuzzy
852
  msgctxt ""
853
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -856,7 +851,7 @@ msgstr ""
856
  "ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
857
  "όρους ταυτόχρονα"
858
 
859
- #: plugin-options/filter-options.php:148
860
  #, fuzzy
861
  msgctxt ""
862
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1142,21 +1137,21 @@ msgstr ""
1142
  msgctxt "[ADMIN] Premium tab"
1143
  msgid ""
1144
  "<b>Filter by category</b>: to let users choose which product category to "
1145
- "view<br/>\r\n"
1146
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1147
  "<b>Filter by price</b>: to let users filter products by a specific price "
1148
- "range (based on their budget availability)<br/>\r\n"
1149
  "<b>Filter by color and size</b>: you can create filters for all the "
1150
  "attributes available in your store, like color and size. For the color "
1151
  "filter, you can either choose square or circular color swatches or use "
1152
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1153
  "<b>Filter by rating</b>: to let your users filter products based on other "
1154
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1155
- "concentrate only on high-rated ones)<br/>\r\n"
1156
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1157
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1158
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1159
- "filter products and view only those with a discount<br/>\r\n"
1160
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1161
  "filter products based on their needs and exclude out-of-stock products from "
1162
  "the list"
@@ -1282,73 +1277,73 @@ msgid ""
1282
  "easier to share)"
1283
  msgstr ""
1284
 
1285
- #: templates/admin/preset-edit.php:29
1286
  msgctxt "[Admin] Back link in new preset page"
1287
  msgid "< back to preset list"
1288
  msgstr "< πίσω στη λίστα προρύθμισης"
1289
 
1290
- #: templates/admin/preset-edit.php:36
1291
  msgctxt "[ADMIN] Title for new preset page"
1292
  msgid "Edit filter preset"
1293
  msgstr "Επεξεργασία προρύθμισης φίλτρου"
1294
 
1295
- #: templates/admin/preset-edit.php:38
1296
  msgctxt "[ADMIN] Title for new preset page"
1297
  msgid "Add new filter preset"
1298
  msgstr "Προσθήκη νέας προρύθμισης φίλτρου"
1299
 
1300
- #: templates/admin/preset-edit.php:45
1301
  msgctxt "[ADMIN] Preset save message"
1302
  msgid "Preset saved correctly"
1303
  msgstr ""
1304
 
1305
- #: templates/admin/preset-edit.php:90
1306
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1307
  msgid "Save preset"
1308
  msgstr "Αποθήκευση προρύθμισης"
1309
 
1310
- #: templates/admin/preset-empty-content.php:27
1311
  msgctxt "Alt text for empty preset image"
1312
  msgid "Empty preset"
1313
  msgstr "Κενή προρύθμιση"
1314
 
1315
  #. translators: 1. Missing item name.
1316
- #: templates/admin/preset-empty-content.php:33
1317
  msgctxt "[Admin] Preset table empty message"
1318
  msgid "You don't have any %s yet."
1319
  msgstr "Δεν έχετε κανένα %s ακόμη."
1320
 
1321
- #: templates/admin/preset-filter-term.php:28
1322
  msgctxt "[Admin] Term edit field label (preset edit page)"
1323
  msgid "Label"
1324
  msgstr "Επιγραφή"
1325
 
1326
- #: templates/admin/preset-filter-term.php:33
1327
  msgctxt "[Admin] Term edit field label (preset edit page)"
1328
  msgid "Tooltip"
1329
  msgstr "Υπόμνηση"
1330
 
1331
- #: templates/admin/preset-filter-term.php:39
1332
  msgctxt "[Admin] Term edit field label (preset edit page)"
1333
  msgid "Color"
1334
  msgstr "Χρώμα"
1335
 
1336
- #: templates/admin/preset-filter.php:89
1337
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1338
  msgid "Save Filter"
1339
  msgstr "Αποθήκευση Φίλτρου"
1340
 
1341
- #: templates/admin/preset-filter.php:90
1342
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1343
  msgid "Delete Filter"
1344
  msgstr "Διαγραφή Φίλτρου"
1345
 
1346
- #: templates/admin/preset-filters.php:31
1347
  msgctxt "[Admin] New filter button label"
1348
  msgid "Add a new filter"
1349
  msgstr "Προσθήκη νέου φίλτρου"
1350
 
1351
- #: templates/admin/preset-filters.php:55
1352
  msgctxt "[Admin] Add new filter in new preset page"
1353
  msgid "+ Add filter"
1354
  msgstr "+ Προσθήκη φίλτρου"
@@ -1360,13 +1355,13 @@ msgctxt "[Admin] Add new filter in new preset page"
1360
  msgid "See %d more filters"
1361
  msgstr "Πριν από φίλτρα"
1362
 
1363
- #: templates/admin/upgrade-note-modal.php:31
1364
  msgctxt "[ADMIN] Upgrade note modal title"
1365
  msgid "Use the new filter preset feature for your filters"
1366
  msgstr ""
1367
  "Χρησιμοποιήστε το νέο χαρακτηριστικό προρύθμισης φίλτρου για τα φίλτρα σας"
1368
 
1369
- #: templates/admin/upgrade-note-modal.php:36
1370
  msgctxt "[ADMIN] Upgrade note modal content"
1371
  msgid ""
1372
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1381,7 +1376,7 @@ msgstr ""
1381
  "την μικροεφαρμογή Elementor."
1382
 
1383
  #. translators: 1. Url to demo video. 2. Url to docs.
1384
- #: templates/admin/upgrade-note-modal.php:49
1385
  msgctxt "[ADMIN] Upgrade note modal content"
1386
  msgid ""
1387
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1392,7 +1387,7 @@ msgstr ""
1392
  "χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
1393
 
1394
  #. translators: 1. Url to docs.
1395
- #: templates/admin/upgrade-note-modal.php:62
1396
  msgctxt "[ADMIN] Upgrade note modal content"
1397
  msgid ""
1398
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1401,7 +1396,7 @@ msgstr ""
1401
  "Σας προτείνουμε να <a href=\"%1$s\">διαβάσετε το εγχειρίδιο χρήσης</a> για "
1402
  "να μάθετε πώς να χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
1403
 
1404
- #: templates/admin/upgrade-note-modal.php:76
1405
  #, fuzzy
1406
  msgctxt "[ADMIN] Upgrade note modal content"
1407
  msgid ""
@@ -1416,7 +1411,7 @@ msgstr ""
1416
  "μετακινηθούν μέσα στον πίνακα προρυθμίσεων φίλτρου.<br/><b>Μην ανησυχείτε, "
1417
  "δεν θα χαθούν δεδομένα κατα τη διαδικασία.</b>"
1418
 
1419
- #: templates/admin/upgrade-note-modal.php:87
1420
  msgctxt "[ADMIN] Upgrade note modal content"
1421
  msgid ""
1422
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1424,21 +1419,25 @@ msgid ""
1424
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1425
  msgstr ""
1426
 
1427
- #: templates/admin/upgrade-note-modal.php:96
1428
  msgctxt "[ADMIN] Upgrade note modal button label"
1429
  msgid "Convert your widgets in a preset now"
1430
  msgstr "Μετατρέψτε τις μικροεφαρμογές σας σε προρύθμιση τώρα"
1431
 
1432
- #: templates/admin/upgrade-note-modal.php:97
1433
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1434
  msgid "No thanks"
1435
  msgstr "Όχι, ευχαριστώ"
1436
 
1437
- #: templates/filters/global/reset-filters.php:23
1438
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1439
  msgid "Reset filters"
1440
  msgstr "Επαναφορά φίλτρων"
1441
 
 
 
 
 
1442
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1443
  #~ msgid "All"
1444
  #~ msgstr "Όλα"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:32:43+0000\n"
10
  "Language: el_GR\n"
11
  "MIME-Version: 1.0\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Προρύθμιση Πρόχειρου"
20
 
21
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
22
+ #: includes/functions-yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Όρος"
25
 
26
+ #: includes/functions-yith-wcan.php:98
27
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
28
  msgid "Color"
29
  msgstr "Χρώμα"
30
 
31
+ #: includes/functions-yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Επιγραφές"
34
 
35
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Ταξινομήστε τη λίστα προϊόντων χωρίς να γίνει επαναφόρτωση της σελίδας"
38
 
39
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
40
  msgid "Filters:"
41
  msgstr "Φίλτρα:"
42
 
43
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
44
  msgid "List"
45
  msgstr "Λίστα"
46
 
47
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
48
  msgid "Label"
49
  msgstr "Επιγραφή"
50
 
51
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
52
  msgid "Dropdown"
53
  msgstr "Αναδιπλούμενη λίστα"
54
 
55
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
56
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
57
  msgid "Title"
58
  msgstr "Τίτλος"
59
 
60
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
61
  msgid "Type:"
62
  msgstr "Τύπος:"
63
 
64
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
65
  msgid "Query Type:"
66
  msgstr "Τύπος Ερωτήματος:"
67
 
68
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
69
  msgid "OR"
70
  msgstr "Ή"
71
 
72
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
73
  msgid "Attribute:"
74
  msgstr "Ιδιότητα:"
75
 
76
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
77
  msgid "Display (default All):"
78
  msgstr "Εμφάνιση (προεπιλεγμένα Όλα):"
79
 
80
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
81
  msgid "All (no hierarchical)"
82
  msgstr "Όλοι (μη ιεραρχικά)"
83
 
84
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
85
  msgid "All (hierarchical)"
86
  msgstr "Όλοι (ιεραρχικά)"
87
 
88
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
89
  msgid "Only Parent"
90
  msgstr "Μόνο Γονικός"
91
 
92
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
93
  msgid "CSS custom class"
94
  msgstr "Κλάση προσαρμοσμένου CSS"
95
 
96
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Επαναφορά Φίλτρου"
99
 
100
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
101
  msgid "Reset All Filters"
102
  msgstr "Επαναφορά Όλων των Φίλτρων"
103
 
104
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
105
  msgid "Button Label"
106
  msgstr "Επιγραφή Κουμπιού"
107
 
138
  "περισσότερα πρόσθετα για το ηλεκτρονικό σας κατάστημα στο <strong>YITH</"
139
  "strong></a>"
140
 
141
+ #: includes/class-yith-wcan-admin.php:107
142
  msgctxt "[Admin] Copy confirmation message"
143
  msgid "Content copied to your clipboard"
144
  msgstr "Έγινε αντιγραφή περιεχομένου σε πρόχειρο"
145
 
146
+ #: includes/class-yith-wcan-admin.php:108
147
  msgctxt "[Admin] Confirm filter delete message"
148
  msgid "Are you sure you want to delete this item?"
149
  msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αντικείμενο;"
150
 
151
  #. translators: 1. Number of items that will be added.
152
+ #: includes/class-yith-wcan-admin.php:110
153
  msgctxt "[Admin] Confirm add all terms message"
154
  msgid "Are you sure you want to proceed? This operation will add %s items"
155
  msgstr ""
156
  "Είστε σίγουροι ότι θέλετε να προχωρήσετε; Αυτή η διαδικασία θα προσθέσει %s "
157
  "αντικείμενα"
158
 
159
+ #: includes/class-yith-wcan-admin.php:111
160
  msgctxt "[Admin] Error message"
161
  msgid "\"Filter title\" is a required field"
162
  msgstr ""
163
 
164
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
165
  msgctxt "[Admin] Message shown when filter has empty title"
166
  msgid "&lt; no title &gt;"
167
  msgstr "&lt; χωρίς τίτλο &gt;"
168
 
169
+ #: includes/class-yith-wcan-admin.php:115
170
  msgctxt "[Admin] Media library title, when selecting images"
171
  msgid "Select media you want to use"
172
  msgstr "Επιλέξτε τα πολυμέσα που θέλετε να χρησιμοποιήσετε"
173
 
174
+ #: includes/class-yith-wcan-admin.php:116
175
  msgctxt "[Admin] Media library confirm button, when selecting images"
176
  msgid "Use this media"
177
  msgstr "Χρησιμοποιήστε αυτά τα πολυμέσα"
178
 
179
+ #: includes/class-yith-wcan-admin.php:184
180
  msgctxt "[Admin] tab name"
181
  msgid "Filter presets"
182
  msgstr "Προρυθμίσεις φίλτρου"
183
 
184
+ #: includes/class-yith-wcan-admin.php:185
185
  msgctxt "[Admin] tab name"
186
  msgid "General settings"
187
  msgstr "Γενικές ρυθμίσεις"
188
 
189
+ #: includes/class-yith-wcan-admin.php:186
190
  #, fuzzy
191
  msgctxt "[Admin] tab name"
192
  msgid "SEO"
193
  msgstr "SEO"
194
 
195
+ #: includes/class-yith-wcan-admin.php:187
196
  msgctxt "[Admin] tab name"
197
  msgid "Premium Version"
198
  msgstr "Premium Έκδοση"
199
 
200
+ #: includes/class-yith-wcan-admin.php:191
201
  msgctxt "[Admin] tab name"
202
  msgid "Legacy"
203
  msgstr "Σύστημα κληρονομιάς"
204
 
205
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
206
  msgctxt "[Admin] Plugin description"
207
  msgid ""
208
  "It allows your users to find the product they are looking for as quickly as "
211
  "Επιτρέπει στους χρήστες σας να βρουν το προϊόν που επιθυμούν το συντομότερο "
212
  "δυνατό."
213
 
214
+ #: includes/class-yith-wcan-admin.php:211
215
  msgctxt "[HELP TAB] Video title"
216
  msgid ""
217
  "Check this video to learn how to <b>create a filter preset and show it on "
218
  "the shop page:</b>"
219
  msgstr ""
220
 
221
+ #: includes/class-yith-wcan-admin.php:329
222
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
223
  msgid "item"
224
  msgstr "αντικείμενο"
225
 
226
+ #: includes/class-yith-wcan-admin.php:330
227
  msgctxt "[Admin] Preset table empty message second line"
228
  msgid "But don't worry, here you can create your first one!"
229
  msgstr "Μην ανησυχείτε, εδώ μπορείτε να δημιουργήσετε το πρώτο!"
230
 
231
+ #: includes/class-yith-wcan-admin.php:480
232
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
233
  msgid "Clear Product Filter transients"
234
  msgstr "Καθαρισμός μεταβάσεων φίλτρου προϊόντος"
235
 
236
+ #: includes/class-yith-wcan-admin.php:486
237
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
238
  msgid "Run filter widgets upgrade"
239
  msgstr "Εκτέλεση αναβάθμισης μικροεφαρμογών φίλτρου"
240
 
241
+ #: includes/class-yith-wcan-admin.php:481
242
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
243
  msgid "Clear"
244
  msgstr "Καθαρισμός"
245
 
246
+ #: includes/class-yith-wcan-admin.php:487
247
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
248
  msgid "Run"
249
  msgstr "Εκτέλεση"
250
 
251
+ #: includes/class-yith-wcan-admin.php:482
252
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
253
  msgid ""
254
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
260
  "κατα την αλλαγή της ρύθμισης του προϊόντος σας, τα φίλτρα δεν εμφανίζουν τα "
261
  "αποτελέσματα που περιμένετε. "
262
 
263
+ #: includes/class-yith-wcan-admin.php:488
264
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
265
  msgid ""
266
  "This will create a preset for any sidebar of your shop containing filter "
270
  "καταστήματός σας, που περιέχει μικροεφαρμογές φίλτρου. Η προρύθμιση θα "
271
  "ρυθμιστεί για να αντιστοιχεί με τις προδιαγραφές μικροεφαρμογών"
272
 
273
+ #: includes/class-yith-wcan-filter-factory.php:72
274
  msgctxt "[Admin] Filter edit form"
275
  msgid "Taxonomy"
276
  msgstr "Ταξινομία"
277
 
278
+ #: includes/class-yith-wcan-filter-factory.php:86
279
  msgctxt "[Admin] Filter edit form"
280
  msgid "Checkbox"
281
  msgstr "Πλαίσιο ελέγχου"
282
 
283
+ #: includes/class-yith-wcan-filter-factory.php:87
284
  msgctxt "[Admin] Filter edit form"
285
  msgid "Select"
286
  msgstr "Επιλογή"
287
 
288
+ #: includes/class-yith-wcan-filter-factory.php:88
289
  msgctxt "[Admin] Filter edit form"
290
  msgid "Text"
291
  msgstr "Κείμενο"
292
 
293
+ #: includes/class-yith-wcan-filter-factory.php:89
294
  msgctxt "[Admin] Filter edit form"
295
  msgid "Color Swatches"
296
  msgstr "Δείγματα Χρωμάτων"
297
 
298
+ #: includes/class-yith-wcan-filter-factory.php:90
299
  msgctxt "[Admin] Filter edit form"
300
  msgid "Label"
301
  msgstr "Επιγραφή"
310
  msgid "Enter a name to identify this filter"
311
  msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτό το φίλτρο"
312
 
313
+ #: plugin-options/filter-options.php:40
314
  msgctxt "[Admin] Filter edit form"
315
  msgid "Filter for"
316
  msgstr "Ταξινόμηση για"
317
 
318
+ #: plugin-options/filter-options.php:44
319
  msgctxt "[Admin] Filter edit form"
320
  msgid "Select the parameters you wish to filter for"
321
  msgstr "Επιλέξτε τις παραμέτρους που θέλετε να ταξινομήσετε"
322
 
323
+ #: plugin-options/filter-options.php:49
324
  msgctxt "[Admin] Filter edit form"
325
  msgid "Choose taxonomy"
326
  msgstr "Επιλογή ταξινομίας"
327
 
328
+ #: plugin-options/filter-options.php:53
329
  msgctxt "[Admin] Filter edit form"
330
  msgid "Select which taxonomy to use for this filter"
331
  msgstr ""
332
  "Επιλέξτε την ταξινομία που θέλετε να χρησιμοποιήσετε για αυτό το φίλτρο"
333
 
334
+ #: plugin-options/filter-options.php:58
335
  msgctxt "[Admin] Filter edit form"
336
  msgid "Auto-populate with all terms"
337
  msgstr ""
338
 
339
+ #: plugin-options/filter-options.php:60
340
  msgctxt "[Admin] Filter edit form"
341
  msgid ""
342
  "Populate this filter with all existing terms of the selected taxonomy.\n"
345
  "well.</span>"
346
  msgstr ""
347
 
348
+ #: plugin-options/filter-options.php:69
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Choose terms"
351
  msgstr "Επιλογή όρων"
352
 
353
+ #: plugin-options/filter-options.php:74
354
  msgctxt "[Admin] Filter edit form"
355
  msgid "Select which terms to use for filtering"
356
  msgstr "Επιλέξτε ποιους όρους να χρησιμοποιήσετε για την ταξινόμηση"
357
 
358
+ #: plugin-options/filter-options.php:78
359
  msgctxt "[Admin] Filter edit form"
360
  msgid "Filter type"
361
  msgstr "Τύπος φίλτρου"
362
 
363
+ #: plugin-options/filter-options.php:82
364
  msgctxt "[Admin] Filter edit form"
365
  msgid "Select the filter type for this filter"
366
  msgstr "Επιλέξτε τον τύπο για αυτό το φίλτρο"
367
 
368
+ #: plugin-options/filter-options.php:86
369
  #, fuzzy
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Labels"
372
  msgstr "Επιγραφές"
373
 
374
+ #: plugin-options/filter-options.php:89
375
  #, fuzzy
376
  msgctxt "[Admin] Filter edit form"
377
  msgid "Show below"
378
  msgstr "Εμφάνιση αποτελεσμάτων"
379
 
380
+ #: plugin-options/filter-options.php:90
381
  #, fuzzy
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Show on the right"
384
  msgstr "Εμφάνιση αρίθμησης αντικειμένων"
385
 
386
+ #: plugin-options/filter-options.php:91
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Hide"
389
  msgstr ""
390
 
391
+ #: plugin-options/filter-options.php:93
392
  #, fuzzy
393
  msgctxt "[Admin] Filter edit form"
394
  msgid "Choose if and where to show the label inside your filter"
395
  msgstr "Επιλέξτε το στυλ φίλτρου μέσα στις μικροεφαρμογές"
396
 
397
+ #: plugin-options/filter-options.php:97
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Columns number"
400
  msgstr "Αριθμός στηλών"
401
 
402
+ #: plugin-options/filter-options.php:102
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Set the number of items per row you want to show for this design"
405
  msgstr ""
406
  "Ορίστε τον αριθμό αντικειμένων που θέλετε να εμφανίζετε ανά σειρά για αυτό "
407
  "το σχέδιο"
408
 
409
+ #: plugin-options/filter-options.php:106
410
  msgctxt "[Admin] Filter edit form"
411
  msgid "Customize terms"
412
  msgstr "Προσαρμογή όρων"
413
 
414
+ #: plugin-options/filter-options.php:109
415
  msgctxt "[Admin] Filter edit form"
416
  msgid ""
417
  "Configure your terms individually; system will otherwise use default labels/"
425
  "this option and use the boxes below</span>"
426
  msgstr ""
427
 
428
+ #: plugin-options/filter-options.php:119
429
  #, fuzzy
430
  msgctxt "[Admin] Filter edit form"
431
  msgid "Terms options"
432
  msgstr "Σειρά επιλογών"
433
 
434
+ #: plugin-options/filter-options.php:125
435
  msgctxt "[Admin] Filter edit form"
436
  msgid "Show hierarchy"
437
  msgstr "Εμφάνιση ιεραρχίας"
438
 
439
+ #: plugin-options/filter-options.php:128
440
  msgctxt "[Admin] Filter edit form"
441
  msgid "No, show all terms in same level"
442
  msgstr "Όχι, να εμφανίζονται όλοι οι όροι στο ίδιο επίπεδο"
443
 
444
+ #: plugin-options/filter-options.php:129
445
  msgctxt "[Admin] Filter edit form"
446
  msgid "No, show only parent terms"
447
  msgstr "Όχι, να εμφανίζονται μόνο γονικοί όροι"
448
 
449
+ #: plugin-options/filter-options.php:130
450
  msgctxt "[Admin] Filter edit form"
451
  msgid "Yes"
452
  msgstr ""
453
 
454
+ #: plugin-options/filter-options.php:132
455
  msgctxt "[Admin] Filter edit form"
456
  msgid "Choose how to show terms hierarchy"
457
  msgstr "Επιλέξτε πώς να εμφανίζεται η ιεραρχία όρων"
458
 
459
+ #: plugin-options/filter-options.php:136
460
  msgctxt "[Admin] Filter edit form"
461
  msgid "Allow multiple selection"
462
  msgstr "Επιτρέψτε πολλαπλή επιλογή"
463
 
464
+ #: plugin-options/filter-options.php:138
465
  msgctxt "[Admin] Filter edit form"
466
  msgid "Enable if the user can select multiple terms when filtering products"
467
  msgstr ""
468
  "Ενεργοποιήστε αν ο χρήστης μπορεί να επιλέξει πολλαπλούς όρους κατα την "
469
  "ταξινόμηση προϊόντων"
470
 
471
+ #: plugin-options/filter-options.php:142
472
  msgctxt "[Admin] Filter edit form"
473
  msgid "Multiselect relation"
474
  msgstr "Σχέση πολλαπλής επιλογής"
475
 
476
+ #: plugin-options/filter-options.php:148
477
  msgctxt "[Admin] Filter edit form"
478
  msgid "Choose how multiple terms selection should behave"
479
  msgstr "Επιλέξτε την συμπεριφορά επιλογής πολλαπλών όρων"
480
 
481
+ #: includes/class-yith-wcan-filter-factory.php:104
482
  msgctxt "[Admin] Filter edit form, sorting options"
483
  msgid "Default sorting"
484
  msgstr "Προεπιλεγμένη ταξινόμηση"
485
 
486
+ #: includes/class-yith-wcan-filter-factory.php:105
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Sort by popularity"
489
  msgstr "Ταξινόμηση κατά δημοτικότητα"
490
 
491
+ #: includes/class-yith-wcan-filter-factory.php:106
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by average rating"
494
  msgstr "Ταξινόμηση κατα μέση αξιολόγηση"
495
 
496
+ #: includes/class-yith-wcan-filter-factory.php:107
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by latest"
499
  msgstr "Ταξινόμηση κατά τελευταίο"
500
 
501
+ #: includes/class-yith-wcan-filter-factory.php:108
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by price: low to high"
504
  msgstr "Ταξινόμηση ανά τιμή: χαμηλή προς υψηλή"
505
 
506
+ #: includes/class-yith-wcan-filter-factory.php:109
507
  msgctxt "[Admin] Filter edit form, sorting options"
508
  msgid "Sort by price: high to low"
509
  msgstr "Ταξινόμηση ανά τιμή: υψηλή προς χαμηλή"
510
 
511
+ #: includes/class-yith-wcan-filter.php:116
512
  msgctxt "[Admin] Default filter title"
513
  msgid "New filter"
514
  msgstr "Νέο φίλτρο"
515
 
516
+ #: includes/class-yith-wcan-frontend.php:591
517
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
518
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
519
  msgid "All"
520
  msgstr "Όλα"
521
 
522
+ #: includes/class-yith-wcan-frontend.php:592
523
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
524
  msgid "Search..."
525
  msgstr "Αναζήτηση…"
526
 
527
+ #: includes/class-yith-wcan-frontend.php:593
528
  msgctxt "[FRONTEND] Empty items list in the dropdown"
529
  msgid "No item found"
530
  msgstr "Δεν βρέθηκε αντικείμενο"
531
 
532
  #. translators: 1. Number of items to show.
533
+ #: includes/class-yith-wcan-frontend.php:595
534
  msgctxt "[FRONTEND] Show more link on terms dropdown"
535
  msgid "Show %d more"
536
  msgstr "Εμφάνιση %d περισσότερων"
537
 
538
+ #: includes/class-yith-wcan-frontend.php:596
539
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
540
  msgid "Close"
541
  msgstr "Κλείσιμο"
542
 
543
+ #: includes/class-yith-wcan-frontend.php:597
544
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
545
  msgid "Save"
546
  msgstr ""
547
 
548
+ #: includes/class-yith-wcan-frontend.php:598
549
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
550
  msgid "Show results"
551
  msgstr "Εμφάνιση αποτελεσμάτων"
552
 
553
+ #: includes/class-yith-wcan-frontend.php:599
554
  msgctxt ""
555
  "[FRONTEND] Label for clear selection link, that appears above filter after "
556
  "selection"
557
  msgid "Clear"
558
  msgstr "Καθαρισμός"
559
 
560
+ #: includes/class-yith-wcan-frontend.php:600
561
  msgctxt ""
562
  "[FRONTEND] Label for clear selection link, that appears above filter after "
563
  "selection"
564
  msgid "Clear All"
565
  msgstr "Καθαρισμός Όλων"
566
 
567
+ #: includes/class-yith-wcan-install.php:95
568
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
569
  msgid "Default preset"
570
  msgstr "Προεπιλεγμένη προρύθμιση"
571
 
572
  #. translators: 1. Taxonomy name.
573
+ #: includes/class-yith-wcan-install.php:285
574
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
575
  msgid "Filter by %s"
576
  msgstr "Ταξινόμηση κατά %s"
577
 
578
+ #: includes/class-yith-wcan-preset-factory.php:112
579
  #, fuzzy
580
  msgctxt "[Admin] Label in new preset page"
581
  msgid "Default"
591
  msgid "Enter a name to identify this filter preset"
592
  msgstr "Εισάγετε όνομα για να αναγνωρίζετε αυτή την προρύθμιση φίλτρου"
593
 
594
+ #: templates/admin/preset-filters.php:22
595
  msgctxt "[Admin] Label in new preset page"
596
  msgid "Filters of this preset"
597
  msgstr "Φίλτρα αυτής της προρύθμισης"
598
 
599
+ #: includes/class-yith-wcan-presets.php:95
600
+ #: includes/class-yith-wcan-presets.php:100
601
  msgctxt "[Admin] name of presets custom post type"
602
  msgid "Filter presets"
603
  msgstr "Φίλτρο προρυθμίσεων"
604
 
605
+ #: includes/class-yith-wcan-presets.php:96
606
  msgctxt "[Admin] singular name of presets custom post type"
607
  msgid "Filter preset"
608
  msgstr "Φίλτρο προρύθμισης"
609
 
610
+ #: includes/class-yith-wcan-presets.php:97
611
  msgctxt "[Admin] add new filter preset label"
612
  msgid "Add new preset"
613
  msgstr "Προσθήκη νέας προρύθμισης"
614
 
615
+ #: includes/class-yith-wcan-presets.php:139
616
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
617
  msgid "Convert widgets in a preset"
618
  msgstr "Μετατροπή μικροεφαρμογών σε προρύθμιση"
619
 
620
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
621
  msgctxt ""
622
  "[Generic] Error that happens when trying to read a filter preset that does "
623
  "not exist"
625
  msgstr "Προρύθμιση άκυρη."
626
 
627
  #. translators: 1. Title of original preset.
628
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
629
  msgctxt "[ADMIN] Title of the cloned preset"
630
  msgid "%s - Copy"
631
  msgstr "%s - Αντιγραφή"
632
 
633
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
634
  msgctxt "[ADMIN] Name of the preset elementor widget"
635
  msgid "YITH AJAX Filters Preset"
636
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
637
 
638
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Reset Button"
641
  msgstr "Κουμπί Επαναφοράς Φίλτρων YITH AJAX"
642
 
643
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
644
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
645
  msgctxt "[ELEMENTOR] Default preset option"
646
  msgid "Choose an option"
647
  msgstr "Διαλέξτε μια επιλογή"
648
 
649
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
650
  msgctxt "[ELEMENTOR] Section title"
651
  msgid "Filters"
652
  msgstr "Φίλτρα"
653
 
654
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
655
  msgctxt "[ELEMENTOR] Section title"
656
  msgid "General"
657
  msgstr "Γενικά"
658
 
659
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
660
  msgctxt "[ELEMENTOR] Control label"
661
  msgid "Preset"
662
  msgstr "Προρύθμιση"
663
 
664
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
665
  msgctxt "[ELEMENTOR] Widget description"
666
  msgid ""
667
  "This widget will display \"Filters reset\" button, wherever it is placed"
669
  "Αυτή η μικροεφαρμογή θα εμφανίσει το κουμπί \"Επαναφορά φίλτρων\", όπου "
670
  "τοποθετηθεί"
671
 
672
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
673
  msgctxt "[ELEMENTOR] Widget description"
674
  msgid ""
675
  "It will allow users to reset the filer selection; it will only appear when "
678
  "Θα επιτρέψει στους χρήστες να επαναρυθμίσουν την επιλογή φίλτρου. Θα "
679
  "εμφανιστεί μόνο όταν υπάρχει ενεργό φίλτρο."
680
 
681
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
682
  msgctxt "[ELEMENTOR] Widget description"
683
  msgid ""
684
  "You can use this block to place \"Reset filters\" button inside your page, "
688
  "“Επαναφορά φίλτρων” μέσα στη σελίδα σας, όταν η επιλογή “Επαναφορά θέσης "
689
  "κουμπιού” δεν λειτουργεί για τον βρόχο προϊόντος"
690
 
691
+ #: includes/functions-yith-wcan.php:112
692
  msgctxt "For multicolor: I.E. white and red T-Shirt"
693
  msgid "Color 1"
694
  msgstr "Χρώμα 1"
695
 
696
+ #: includes/functions-yith-wcan.php:112
697
  msgctxt "For multicolor: I.E. white and red T-Shirt"
698
  msgid "Color 2"
699
  msgstr "Χρώμα 2"
700
 
701
+ #: includes/functions-yith-wcan.php:1026
702
  msgctxt "[FRONTEND] Star rating template"
703
  msgid "star"
704
  msgid_plural "stars"
706
  msgstr[1] "αστέρια"
707
 
708
  #. translators: 1. Rating.
709
+ #: includes/functions-yith-wcan.php:1041
710
  msgctxt "[FRONTEND] Star rating label"
711
  msgid "Rated %s out of 5"
712
  msgstr "Βαθμολογήθηκε με %s από 5"
713
 
714
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
715
  msgctxt "[GUTENBERG]: block name"
716
  msgid "YITH AJAX Filters Preset"
717
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
718
 
719
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
720
  msgctxt "[GUTENBERG]: block name"
721
  msgid "YITH Reset Filters Button"
722
  msgstr "Κουμπί Επαναφοράς Φίλτρων YITH"
723
 
724
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
725
  msgctxt "[GUTENBERG]: block description"
726
  msgid "Show filters from a preset"
727
  msgstr "Εμφάνιση φίλτρων από προρύθμιση"
728
 
729
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
730
  msgctxt "[GUTENBERG]: block description"
731
  msgid ""
732
  "Show reset filters button, when a filter is applied and button is enabled in "
740
  "φίλτρων” μέσα στη σελίδα, όταν η επιλογή “Επαναφορά θέσης κουμπιού” δεν "
741
  "λειτουργεί για τον βρόχο προϊόντος"
742
 
743
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
744
  msgctxt "[GUTENBERG]: attribute description"
745
  msgid "Preset"
746
  msgstr "Προρύθμιση"
747
 
748
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
749
  msgctxt "[Admin] Preset table column header"
750
  msgid "Preset name"
751
  msgstr "Όνομα προρύθμισης"
752
 
753
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
754
  msgctxt "[Admin] Preset table column header"
755
  msgid "Shortcode"
756
  msgstr "Μικροκώδικας"
757
 
758
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
759
  msgctxt "[Admin] Preset edit action label"
760
  msgid "Edit this preset"
761
  msgstr "Επεξεργασία προρύθμισης"
762
 
763
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
764
  msgctxt "[Admin] Preset clone action label"
765
  msgid "Clone this preset"
766
  msgstr "Κλωνοποίηση προρύθμισης"
767
 
768
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
769
  msgctxt "[Admin] Preset delete action label"
770
  msgid "Delete this preset"
771
  msgstr "Διαγραφή προρύθμισης"
772
 
773
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
774
  msgctxt "[Admin] Preset delete confirm label"
775
  msgid "Are you sure you want to delete this preset?"
776
  msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε αυτή τη προρύθμιση;"
777
 
778
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
779
  msgctxt "[Admin] on-off yes"
780
  msgid "YES"
781
  msgstr "ΝΑΙ"
782
 
783
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
784
  msgctxt "[Admin] on-off no"
785
  msgid "NO"
786
  msgstr "ΟΧΙ"
787
 
788
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
789
  msgctxt ""
790
  "[Admin] Name of the item missing, shown in preset-empty-content template"
791
  msgid "filter preset"
792
  msgstr "προρύθμιση φίλτρου"
793
 
794
+ #: templates/admin/preset-filters.php:31
795
  msgctxt ""
796
  "[Admin] Name of the item missing, shown in preset-empty-content template"
797
  msgid "filter"
798
  msgstr "φίλτρο"
799
 
800
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
801
  msgctxt "[Admin] New preset button label"
802
  msgid "Create a new preset"
803
  msgstr "Δημιουργία νέας προρύθμισης"
804
 
805
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
806
  msgctxt "[ADMIN] Name of the preset widget"
807
  msgid "YITH AJAX Filters Preset"
808
  msgstr "Προρύθμιση Φίλτρων YITH AJAX"
809
 
810
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
811
  msgctxt "[ADMIN] Preset widget options"
812
  msgid "Preset"
813
  msgstr "Προρύθμιση"
814
 
815
  #. translators: 1. Url to Ajax Product filter admin panel.
816
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
817
  msgctxt "[ADMIN] Preset widget options"
818
  msgid ""
819
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
823
  "Product Filter -> Προρυθμίσεις</a> και χρησιμοποιήστε την πρώτη σας "
824
  "προρύθμιση"
825
 
826
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
827
  msgctxt "[Plugin Name] Admin: Widget Title"
828
  msgid "YITH AJAX Product Filter"
829
  msgstr "YITH AJAX Product Filter"
830
 
831
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
832
  #, fuzzy
833
  msgctxt ""
834
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
835
  msgid "AND"
836
  msgstr "ΚΑΙ"
837
 
838
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
839
  msgctxt "[Plugin Name]"
840
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
841
  msgstr ""
842
  "Επαναφορά όλων των φίλτρων που έχουν οριστεί από το YITH WooCommerce AJAX "
843
  "Product Filter"
844
 
845
+ #: plugin-options/filter-options.php:145
846
  #, fuzzy
847
  msgctxt ""
848
  "[Admin] Filter edit form; logical operator that affects query behaviour"
851
  "ΚΑΙ - Τα αποτελέσματα πρέπει να αντιστοιχούν σε όλους τους επιλεγμένους "
852
  "όρους ταυτόχρονα"
853
 
854
+ #: plugin-options/filter-options.php:146
855
  #, fuzzy
856
  msgctxt ""
857
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1137
  msgctxt "[ADMIN] Premium tab"
1138
  msgid ""
1139
  "<b>Filter by category</b>: to let users choose which product category to "
1140
+ "view<br/>\n"
1141
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1142
  "<b>Filter by price</b>: to let users filter products by a specific price "
1143
+ "range (based on their budget availability)<br/>\n"
1144
  "<b>Filter by color and size</b>: you can create filters for all the "
1145
  "attributes available in your store, like color and size. For the color "
1146
  "filter, you can either choose square or circular color swatches or use "
1147
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1148
  "<b>Filter by rating</b>: to let your users filter products based on other "
1149
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1150
+ "concentrate only on high-rated ones)<br/>\n"
1151
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1152
+ "on plugin, you can also filter products by specific brands<br/>\n"
1153
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1154
+ "filter products and view only those with a discount<br/>\n"
1155
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1156
  "filter products based on their needs and exclude out-of-stock products from "
1157
  "the list"
1277
  "easier to share)"
1278
  msgstr ""
1279
 
1280
+ #: templates/admin/preset-edit.php:31
1281
  msgctxt "[Admin] Back link in new preset page"
1282
  msgid "< back to preset list"
1283
  msgstr "< πίσω στη λίστα προρύθμισης"
1284
 
1285
+ #: templates/admin/preset-edit.php:38
1286
  msgctxt "[ADMIN] Title for new preset page"
1287
  msgid "Edit filter preset"
1288
  msgstr "Επεξεργασία προρύθμισης φίλτρου"
1289
 
1290
+ #: templates/admin/preset-edit.php:40
1291
  msgctxt "[ADMIN] Title for new preset page"
1292
  msgid "Add new filter preset"
1293
  msgstr "Προσθήκη νέας προρύθμισης φίλτρου"
1294
 
1295
+ #: templates/admin/preset-edit.php:47
1296
  msgctxt "[ADMIN] Preset save message"
1297
  msgid "Preset saved correctly"
1298
  msgstr ""
1299
 
1300
+ #: templates/admin/preset-edit.php:93
1301
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1302
  msgid "Save preset"
1303
  msgstr "Αποθήκευση προρύθμισης"
1304
 
1305
+ #: templates/admin/preset-empty-content.php:29
1306
  msgctxt "Alt text for empty preset image"
1307
  msgid "Empty preset"
1308
  msgstr "Κενή προρύθμιση"
1309
 
1310
  #. translators: 1. Missing item name.
1311
+ #: templates/admin/preset-empty-content.php:35
1312
  msgctxt "[Admin] Preset table empty message"
1313
  msgid "You don't have any %s yet."
1314
  msgstr "Δεν έχετε κανένα %s ακόμη."
1315
 
1316
+ #: templates/admin/preset-filter-term.php:30
1317
  msgctxt "[Admin] Term edit field label (preset edit page)"
1318
  msgid "Label"
1319
  msgstr "Επιγραφή"
1320
 
1321
+ #: templates/admin/preset-filter-term.php:35
1322
  msgctxt "[Admin] Term edit field label (preset edit page)"
1323
  msgid "Tooltip"
1324
  msgstr "Υπόμνηση"
1325
 
1326
+ #: templates/admin/preset-filter-term.php:41
1327
  msgctxt "[Admin] Term edit field label (preset edit page)"
1328
  msgid "Color"
1329
  msgstr "Χρώμα"
1330
 
1331
+ #: templates/admin/preset-filter.php:91
1332
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1333
  msgid "Save Filter"
1334
  msgstr "Αποθήκευση Φίλτρου"
1335
 
1336
+ #: templates/admin/preset-filter.php:92
1337
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1338
  msgid "Delete Filter"
1339
  msgstr "Διαγραφή Φίλτρου"
1340
 
1341
+ #: templates/admin/preset-filters.php:33
1342
  msgctxt "[Admin] New filter button label"
1343
  msgid "Add a new filter"
1344
  msgstr "Προσθήκη νέου φίλτρου"
1345
 
1346
+ #: templates/admin/preset-filters.php:57
1347
  msgctxt "[Admin] Add new filter in new preset page"
1348
  msgid "+ Add filter"
1349
  msgstr "+ Προσθήκη φίλτρου"
1355
  msgid "See %d more filters"
1356
  msgstr "Πριν από φίλτρα"
1357
 
1358
+ #: templates/admin/upgrade-note-modal.php:33
1359
  msgctxt "[ADMIN] Upgrade note modal title"
1360
  msgid "Use the new filter preset feature for your filters"
1361
  msgstr ""
1362
  "Χρησιμοποιήστε το νέο χαρακτηριστικό προρύθμισης φίλτρου για τα φίλτρα σας"
1363
 
1364
+ #: templates/admin/upgrade-note-modal.php:38
1365
  msgctxt "[ADMIN] Upgrade note modal content"
1366
  msgid ""
1367
  "From the version 4.0 we built a powerful system that allows you to create "
1376
  "την μικροεφαρμογή Elementor."
1377
 
1378
  #. translators: 1. Url to demo video. 2. Url to docs.
1379
+ #: templates/admin/upgrade-note-modal.php:51
1380
  msgctxt "[ADMIN] Upgrade note modal content"
1381
  msgid ""
1382
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1387
  "χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
1388
 
1389
  #. translators: 1. Url to docs.
1390
+ #: templates/admin/upgrade-note-modal.php:64
1391
  msgctxt "[ADMIN] Upgrade note modal content"
1392
  msgid ""
1393
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1396
  "Σας προτείνουμε να <a href=\"%1$s\">διαβάσετε το εγχειρίδιο χρήσης</a> για "
1397
  "να μάθετε πώς να χρησιμοποιήσετε αυτό το νέο χαρακτηριστικό."
1398
 
1399
+ #: templates/admin/upgrade-note-modal.php:78
1400
  #, fuzzy
1401
  msgctxt "[ADMIN] Upgrade note modal content"
1402
  msgid ""
1411
  "μετακινηθούν μέσα στον πίνακα προρυθμίσεων φίλτρου.<br/><b>Μην ανησυχείτε, "
1412
  "δεν θα χαθούν δεδομένα κατα τη διαδικασία.</b>"
1413
 
1414
+ #: templates/admin/upgrade-note-modal.php:89
1415
  msgctxt "[ADMIN] Upgrade note modal content"
1416
  msgid ""
1417
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1419
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1420
  msgstr ""
1421
 
1422
+ #: templates/admin/upgrade-note-modal.php:98
1423
  msgctxt "[ADMIN] Upgrade note modal button label"
1424
  msgid "Convert your widgets in a preset now"
1425
  msgstr "Μετατρέψτε τις μικροεφαρμογές σας σε προρύθμιση τώρα"
1426
 
1427
+ #: templates/admin/upgrade-note-modal.php:99
1428
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1429
  msgid "No thanks"
1430
  msgstr "Όχι, ευχαριστώ"
1431
 
1432
+ #: templates/filters/global/reset-filters.php:24
1433
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1434
  msgid "Reset filters"
1435
  msgstr "Επαναφορά φίλτρων"
1436
 
1437
+ #~ msgctxt "[Admin] Menu title"
1438
+ #~ msgid "Ajax Product Filter"
1439
+ #~ msgstr "Ajax Product Filter"
1440
+
1441
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1442
  #~ msgid "All"
1443
  #~ msgstr "Όλα"
languages/yith-woocommerce-ajax-navigation-es_ES.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-es_ES.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:30:42+0000\n"
10
  "Language: es\n"
11
  "MIME-Version: 1.0\n"
@@ -14,94 +14,94 @@ msgstr ""
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Borrador preestablecido"
20
 
21
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
22
- #: includes/functions.yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Término"
25
 
26
- #: includes/functions.yith-wcan.php:98
27
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
28
  msgid "Color"
29
  msgstr "Color"
30
 
31
- #: includes/functions.yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Etiquetas"
34
 
35
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filtrar la lista de productos sin recargar la página"
38
 
39
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
40
  msgid "Filters:"
41
  msgstr "Filtros"
42
 
43
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
44
  msgid "List"
45
  msgstr "Lista"
46
 
47
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
48
  msgid "Label"
49
  msgstr "Etiqueta"
50
 
51
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
52
  msgid "Dropdown"
53
  msgstr "Pestaña desplegable"
54
 
55
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
56
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
57
  msgid "Title"
58
  msgstr "Título"
59
 
60
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
61
  msgid "Type:"
62
  msgstr "Tipo:"
63
 
64
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
65
  msgid "Query Type:"
66
  msgstr "Tipo de consulta:"
67
 
68
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
69
  msgid "OR"
70
  msgstr "O"
71
 
72
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
73
  msgid "Attribute:"
74
  msgstr "Atributo:"
75
 
76
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
77
  msgid "Display (default All):"
78
  msgstr "Mostrar (predeterminado todo):"
79
 
80
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
81
  msgid "All (no hierarchical)"
82
  msgstr "Todo (no jerárquico)"
83
 
84
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
85
  msgid "All (hierarchical)"
86
  msgstr "Todo (jerárquico)"
87
 
88
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
89
  msgid "Only Parent"
90
  msgstr "Sólo superior"
91
 
92
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
93
  msgid "CSS custom class"
94
  msgstr "Clase CSS personalizada"
95
 
96
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Restablecer filtro"
99
 
100
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
101
  msgid "Reset All Filters"
102
  msgstr "Restablecer todos los filtros"
103
 
104
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
105
  msgid "Button Label"
106
  msgstr "Etiqueta del botón"
107
 
@@ -138,75 +138,70 @@ msgstr ""
138
  "yithemes.com/\" target=\"_blank\">Obtén más plugins para tu comercio "
139
  "electrónico en <strong>YITH</strong></a>"
140
 
141
- #: includes/class.yith-wcan-admin.php:107
142
  msgctxt "[Admin] Copy confirmation message"
143
  msgid "Content copied to your clipboard"
144
  msgstr "Contenido copiado en tu portapapeles"
145
 
146
- #: includes/class.yith-wcan-admin.php:108
147
  msgctxt "[Admin] Confirm filter delete message"
148
  msgid "Are you sure you want to delete this item?"
149
  msgstr "¿Estás seguro de que quieres eliminar este artículo?"
150
 
151
  #. translators: 1. Number of items that will be added.
152
- #: includes/class.yith-wcan-admin.php:110
153
  msgctxt "[Admin] Confirm add all terms message"
154
  msgid "Are you sure you want to proceed? This operation will add %s items"
155
  msgstr ""
156
  "¿Estás seguro de que quieres continuar? Esta operación añadirá %s artículos"
157
 
158
- #: includes/class.yith-wcan-admin.php:111
159
  msgctxt "[Admin] Error message"
160
  msgid "\"Filter title\" is a required field"
161
  msgstr ""
162
 
163
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
164
  msgctxt "[Admin] Message shown when filter has empty title"
165
  msgid "&lt; no title &gt;"
166
  msgstr "&lt; sin título &gt;"
167
 
168
- #: includes/class.yith-wcan-admin.php:115
169
  msgctxt "[Admin] Media library title, when selecting images"
170
  msgid "Select media you want to use"
171
  msgstr "Selecciona los medios que quieres usar"
172
 
173
- #: includes/class.yith-wcan-admin.php:116
174
  msgctxt "[Admin] Media library confirm button, when selecting images"
175
  msgid "Use this media"
176
  msgstr "Utiliza estos medios"
177
 
178
- #: includes/class.yith-wcan-admin.php:184
179
  msgctxt "[Admin] tab name"
180
  msgid "Filter presets"
181
  msgstr "Filtrar prestablecidos"
182
 
183
- #: includes/class.yith-wcan-admin.php:185
184
  msgctxt "[Admin] tab name"
185
  msgid "General settings"
186
  msgstr "Ajustes generales"
187
 
188
- #: includes/class.yith-wcan-admin.php:186
189
  #, fuzzy
190
  msgctxt "[Admin] tab name"
191
  msgid "SEO"
192
  msgstr "SEO"
193
 
194
- #: includes/class.yith-wcan-admin.php:187
195
  msgctxt "[Admin] tab name"
196
  msgid "Premium Version"
197
  msgstr "Versión premium"
198
 
199
- #: includes/class.yith-wcan-admin.php:191
200
  msgctxt "[Admin] tab name"
201
  msgid "Legacy"
202
  msgstr "Heredado"
203
 
204
- #: includes/class.yith-wcan-admin.php:198
205
- msgctxt "[Admin] Menu title"
206
- msgid "Ajax Product Filter"
207
- msgstr "Ajax Product Filter"
208
-
209
- #: includes/class.yith-wcan-admin.php:199
210
  msgctxt "[Admin] Plugin description"
211
  msgid ""
212
  "It allows your users to find the product they are looking for as quickly as "
@@ -215,44 +210,44 @@ msgstr ""
215
  "Permite a tus usuarios encontrar el producto que están buscando lo más "
216
  "rápido posible."
217
 
218
- #: includes/class.yith-wcan-admin.php:211
219
  msgctxt "[HELP TAB] Video title"
220
  msgid ""
221
  "Check this video to learn how to <b>create a filter preset and show it on "
222
  "the shop page:</b>"
223
  msgstr ""
224
 
225
- #: includes/class.yith-wcan-admin.php:329
226
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
227
  msgid "item"
228
  msgstr "artículo"
229
 
230
- #: includes/class.yith-wcan-admin.php:330
231
  msgctxt "[Admin] Preset table empty message second line"
232
  msgid "But don't worry, here you can create your first one!"
233
  msgstr "¡Pero no te preocupes, aquí puedes crear el primero!"
234
 
235
- #: includes/class.yith-wcan-admin.php:478
236
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
237
  msgid "Clear Product Filter transients"
238
  msgstr "Limpiar datos transitorios de filtro de producto"
239
 
240
- #: includes/class.yith-wcan-admin.php:484
241
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
242
  msgid "Run filter widgets upgrade"
243
  msgstr "Activar actualización de widgets de filtro"
244
 
245
- #: includes/class.yith-wcan-admin.php:479
246
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
247
  msgid "Clear"
248
  msgstr "Limpìar"
249
 
250
- #: includes/class.yith-wcan-admin.php:485
251
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
252
  msgid "Run"
253
  msgstr "Activar"
254
 
255
- #: includes/class.yith-wcan-admin.php:480
256
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
257
  msgid ""
258
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -264,7 +259,7 @@ msgstr ""
264
  "configuración del producto y los filtros no muestran los resultados "
265
  "esperados."
266
 
267
- #: includes/class.yith-wcan-admin.php:486
268
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
269
  msgid ""
270
  "This will create a preset for any sidebar of your shop containing filter "
@@ -274,32 +269,32 @@ msgstr ""
274
  "que contenta widgets de filtro; el pre establecimiento será configurado para "
275
  "coincidir con las especificaciones de los widgets"
276
 
277
- #: includes/class.yith-wcan-filter-factory.php:72
278
  msgctxt "[Admin] Filter edit form"
279
  msgid "Taxonomy"
280
  msgstr "Taxonomía"
281
 
282
- #: includes/class.yith-wcan-filter-factory.php:86
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Checkbox"
285
  msgstr "Casilla de verificación"
286
 
287
- #: includes/class.yith-wcan-filter-factory.php:87
288
  msgctxt "[Admin] Filter edit form"
289
  msgid "Select"
290
  msgstr "Seleccionar"
291
 
292
- #: includes/class.yith-wcan-filter-factory.php:88
293
  msgctxt "[Admin] Filter edit form"
294
  msgid "Text"
295
  msgstr "Texto"
296
 
297
- #: includes/class.yith-wcan-filter-factory.php:89
298
  msgctxt "[Admin] Filter edit form"
299
  msgid "Color Swatches"
300
  msgstr "Muestras de color"
301
 
302
- #: includes/class.yith-wcan-filter-factory.php:90
303
  msgctxt "[Admin] Filter edit form"
304
  msgid "Label"
305
  msgstr "Etiqueta"
@@ -314,32 +309,32 @@ msgctxt "[Admin] Filter edit form"
314
  msgid "Enter a name to identify this filter"
315
  msgstr "Introduce un nombre para identificar este filtro"
316
 
317
- #: plugin-options/filter-options.php:41
318
  msgctxt "[Admin] Filter edit form"
319
  msgid "Filter for"
320
  msgstr "Filtrar por"
321
 
322
- #: plugin-options/filter-options.php:45
323
  msgctxt "[Admin] Filter edit form"
324
  msgid "Select the parameters you wish to filter for"
325
  msgstr "Selecciona los parámetros por los que te gustaría filtrar"
326
 
327
- #: plugin-options/filter-options.php:51
328
  msgctxt "[Admin] Filter edit form"
329
  msgid "Choose taxonomy"
330
  msgstr "Escoger taxonomía"
331
 
332
- #: plugin-options/filter-options.php:55
333
  msgctxt "[Admin] Filter edit form"
334
  msgid "Select which taxonomy to use for this filter"
335
  msgstr "Selecciona qué categoría usar para este filtro"
336
 
337
- #: plugin-options/filter-options.php:60
338
  msgctxt "[Admin] Filter edit form"
339
  msgid "Auto-populate with all terms"
340
  msgstr ""
341
 
342
- #: plugin-options/filter-options.php:62
343
  msgctxt "[Admin] Filter edit form"
344
  msgid ""
345
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -348,73 +343,73 @@ msgid ""
348
  "well.</span>"
349
  msgstr ""
350
 
351
- #: plugin-options/filter-options.php:71
352
  msgctxt "[Admin] Filter edit form"
353
  msgid "Choose terms"
354
  msgstr "Escoger términos"
355
 
356
- #: plugin-options/filter-options.php:76
357
  msgctxt "[Admin] Filter edit form"
358
  msgid "Select which terms to use for filtering"
359
  msgstr "Selecciona qué términos usar para filtrar"
360
 
361
- #: plugin-options/filter-options.php:80
362
  msgctxt "[Admin] Filter edit form"
363
  msgid "Filter type"
364
  msgstr "Tipo de filtro"
365
 
366
- #: plugin-options/filter-options.php:84
367
  msgctxt "[Admin] Filter edit form"
368
  msgid "Select the filter type for this filter"
369
  msgstr "Selecciona el tipo para este filtro"
370
 
371
- #: plugin-options/filter-options.php:88
372
  #, fuzzy
373
  msgctxt "[Admin] Filter edit form"
374
  msgid "Labels"
375
  msgstr "Etiquetas"
376
 
377
- #: plugin-options/filter-options.php:91
378
  #, fuzzy
379
  msgctxt "[Admin] Filter edit form"
380
  msgid "Show below"
381
  msgstr "Mostrar resultados"
382
 
383
- #: plugin-options/filter-options.php:92
384
  #, fuzzy
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Show on the right"
387
  msgstr "Mostrar recuento de artículos"
388
 
389
- #: plugin-options/filter-options.php:93
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Hide"
392
  msgstr ""
393
 
394
- #: plugin-options/filter-options.php:95
395
  #, fuzzy
396
  msgctxt "[Admin] Filter edit form"
397
  msgid "Choose if and where to show the label inside your filter"
398
  msgstr "Escoge el estilo del filtro dentro de los widgets"
399
 
400
- #: plugin-options/filter-options.php:99
401
  msgctxt "[Admin] Filter edit form"
402
  msgid "Columns number"
403
  msgstr "Número de columnas"
404
 
405
- #: plugin-options/filter-options.php:104
406
  msgctxt "[Admin] Filter edit form"
407
  msgid "Set the number of items per row you want to show for this design"
408
  msgstr ""
409
  "Establece el número de artículos por fila que quieres mostrar para este "
410
  "diseño"
411
 
412
- #: plugin-options/filter-options.php:108
413
  msgctxt "[Admin] Filter edit form"
414
  msgid "Customize terms"
415
  msgstr "Términos personalizados"
416
 
417
- #: plugin-options/filter-options.php:111
418
  msgctxt "[Admin] Filter edit form"
419
  msgid ""
420
  "Configure your terms individually; system will otherwise use default labels/"
@@ -428,157 +423,157 @@ msgid ""
428
  "this option and use the boxes below</span>"
429
  msgstr ""
430
 
431
- #: plugin-options/filter-options.php:121
432
  #, fuzzy
433
  msgctxt "[Admin] Filter edit form"
434
  msgid "Terms options"
435
  msgstr "Opciones de orden"
436
 
437
- #: plugin-options/filter-options.php:127
438
  msgctxt "[Admin] Filter edit form"
439
  msgid "Show hierarchy"
440
  msgstr "Mostrar jerarquía"
441
 
442
- #: plugin-options/filter-options.php:130
443
  msgctxt "[Admin] Filter edit form"
444
  msgid "No, show all terms in same level"
445
  msgstr "No, mostrar todos los términos en el mismo nivel"
446
 
447
- #: plugin-options/filter-options.php:131
448
  msgctxt "[Admin] Filter edit form"
449
  msgid "No, show only parent terms"
450
  msgstr "No, mostrar solo términos superiores"
451
 
452
- #: plugin-options/filter-options.php:132
453
  msgctxt "[Admin] Filter edit form"
454
  msgid "Yes"
455
  msgstr ""
456
 
457
- #: plugin-options/filter-options.php:134
458
  msgctxt "[Admin] Filter edit form"
459
  msgid "Choose how to show terms hierarchy"
460
  msgstr "Elige cómo mostrar los términos jerárquicamente"
461
 
462
- #: plugin-options/filter-options.php:138
463
  msgctxt "[Admin] Filter edit form"
464
  msgid "Allow multiple selection"
465
  msgstr "Permitir selección múltiple"
466
 
467
- #: plugin-options/filter-options.php:140
468
  msgctxt "[Admin] Filter edit form"
469
  msgid "Enable if the user can select multiple terms when filtering products"
470
  msgstr ""
471
  "Activa si el usuario puede seleccionar múltiples términos al filtrar los "
472
  "productos"
473
 
474
- #: plugin-options/filter-options.php:144
475
  msgctxt "[Admin] Filter edit form"
476
  msgid "Multiselect relation"
477
  msgstr "Relación de multi-selección"
478
 
479
- #: plugin-options/filter-options.php:150
480
  msgctxt "[Admin] Filter edit form"
481
  msgid "Choose how multiple terms selection should behave"
482
  msgstr "Escoge cómo debe comportarse la selección de términos múltiples"
483
 
484
- #: includes/class.yith-wcan-filter-factory.php:104
485
  msgctxt "[Admin] Filter edit form, sorting options"
486
  msgid "Default sorting"
487
  msgstr "Orden predeterminado"
488
 
489
- #: includes/class.yith-wcan-filter-factory.php:105
490
  msgctxt "[Admin] Filter edit form, sorting options"
491
  msgid "Sort by popularity"
492
  msgstr "Ordenar por popularidad"
493
 
494
- #: includes/class.yith-wcan-filter-factory.php:106
495
  msgctxt "[Admin] Filter edit form, sorting options"
496
  msgid "Sort by average rating"
497
  msgstr "Ordenar por promedio de valoración"
498
 
499
- #: includes/class.yith-wcan-filter-factory.php:107
500
  msgctxt "[Admin] Filter edit form, sorting options"
501
  msgid "Sort by latest"
502
  msgstr "Ordenar por último"
503
 
504
- #: includes/class.yith-wcan-filter-factory.php:108
505
  msgctxt "[Admin] Filter edit form, sorting options"
506
  msgid "Sort by price: low to high"
507
  msgstr "Ordenar por precio: de bajo a alto"
508
 
509
- #: includes/class.yith-wcan-filter-factory.php:109
510
  msgctxt "[Admin] Filter edit form, sorting options"
511
  msgid "Sort by price: high to low"
512
  msgstr "Ordenar por precio: de alto a bajo"
513
 
514
- #: includes/class.yith-wcan-filter.php:116
515
  msgctxt "[Admin] Default filter title"
516
  msgid "New filter"
517
  msgstr "Nuevo filtro"
518
 
519
- #: includes/class.yith-wcan-frontend.php:576
520
- #: includes/filters/class.yith-wcan-filter-tax.php:62
521
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
522
  msgid "All"
523
  msgstr "Todo"
524
 
525
- #: includes/class.yith-wcan-frontend.php:577
526
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
527
  msgid "Search..."
528
  msgstr "Buscar..."
529
 
530
- #: includes/class.yith-wcan-frontend.php:578
531
  msgctxt "[FRONTEND] Empty items list in the dropdown"
532
  msgid "No item found"
533
  msgstr "No se han encontrado artículos."
534
 
535
  #. translators: 1. Number of items to show.
536
- #: includes/class.yith-wcan-frontend.php:580
537
  msgctxt "[FRONTEND] Show more link on terms dropdown"
538
  msgid "Show %d more"
539
  msgstr "Mostrar %d más"
540
 
541
- #: includes/class.yith-wcan-frontend.php:581
542
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
543
  msgid "Close"
544
  msgstr "Cerrar"
545
 
546
- #: includes/class.yith-wcan-frontend.php:582
547
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
548
  msgid "Save"
549
  msgstr ""
550
 
551
- #: includes/class.yith-wcan-frontend.php:583
552
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
553
  msgid "Show results"
554
  msgstr "Mostrar resultados"
555
 
556
- #: includes/class.yith-wcan-frontend.php:584
557
  msgctxt ""
558
  "[FRONTEND] Label for clear selection link, that appears above filter after "
559
  "selection"
560
  msgid "Clear"
561
  msgstr "Limpiar"
562
 
563
- #: includes/class.yith-wcan-frontend.php:585
564
  msgctxt ""
565
  "[FRONTEND] Label for clear selection link, that appears above filter after "
566
  "selection"
567
  msgid "Clear All"
568
  msgstr "Limpiar todo"
569
 
570
- #: includes/class.yith-wcan-install.php:95
571
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
572
  msgid "Default preset"
573
  msgstr "Pre establecimiento predeterminado"
574
 
575
  #. translators: 1. Taxonomy name.
576
- #: includes/class.yith-wcan-install.php:285
577
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
578
  msgid "Filter by %s"
579
  msgstr "Filtrar por %s"
580
 
581
- #: includes/class.yith-wcan-preset-factory.php:112
582
  #, fuzzy
583
  msgctxt "[Admin] Label in new preset page"
584
  msgid "Default"
@@ -594,33 +589,33 @@ msgctxt "[Admin] Label in new preset page"
594
  msgid "Enter a name to identify this filter preset"
595
  msgstr "Introduce un nombre para identificar este filtro pre establecido"
596
 
597
- #: templates/admin/preset-filters.php:20
598
  msgctxt "[Admin] Label in new preset page"
599
  msgid "Filters of this preset"
600
  msgstr "Filtros para este pre establecimiento"
601
 
602
- #: includes/class.yith-wcan-presets.php:95
603
- #: includes/class.yith-wcan-presets.php:100
604
  msgctxt "[Admin] name of presets custom post type"
605
  msgid "Filter presets"
606
  msgstr "Pre establecimientos de filtro"
607
 
608
- #: includes/class.yith-wcan-presets.php:96
609
  msgctxt "[Admin] singular name of presets custom post type"
610
  msgid "Filter preset"
611
  msgstr "Pre establecimiento de filtro"
612
 
613
- #: includes/class.yith-wcan-presets.php:97
614
  msgctxt "[Admin] add new filter preset label"
615
  msgid "Add new preset"
616
  msgstr "Añadir nuevo pre establecimiento"
617
 
618
- #: includes/class.yith-wcan-presets.php:139
619
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
620
  msgid "Convert widgets in a preset"
621
  msgstr "Convertir widgets en un pre establecimiento"
622
 
623
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
624
  msgctxt ""
625
  "[Generic] Error that happens when trying to read a filter preset that does "
626
  "not exist"
@@ -628,50 +623,50 @@ msgid "Invalid preset."
628
  msgstr "Pre establecimiento no válido."
629
 
630
  #. translators: 1. Title of original preset.
631
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
632
  msgctxt "[ADMIN] Title of the cloned preset"
633
  msgid "%s - Copy"
634
  msgstr "%s - Copiar"
635
 
636
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
637
  msgctxt "[ADMIN] Name of the preset elementor widget"
638
  msgid "YITH AJAX Filters Preset"
639
  msgstr "YITH AJAX Pre establecimiento de filtros"
640
 
641
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
642
  msgctxt "[ADMIN] Name of the preset elementor widget"
643
  msgid "YITH AJAX Filters Reset Button"
644
  msgstr "YITH AJAX Botón de restablecimiento de filtros"
645
 
646
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
647
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
648
  msgctxt "[ELEMENTOR] Default preset option"
649
  msgid "Choose an option"
650
  msgstr "Escoge una opción"
651
 
652
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
653
  msgctxt "[ELEMENTOR] Section title"
654
  msgid "Filters"
655
  msgstr "Filtros"
656
 
657
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
658
  msgctxt "[ELEMENTOR] Section title"
659
  msgid "General"
660
  msgstr "General"
661
 
662
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
663
  msgctxt "[ELEMENTOR] Control label"
664
  msgid "Preset"
665
  msgstr "Pre establecimiento"
666
 
667
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
668
  msgctxt "[ELEMENTOR] Widget description"
669
  msgid ""
670
  "This widget will display \"Filters reset\" button, wherever it is placed"
671
  msgstr ""
672
  "Este widget mostrará el botón ''Restablecer filtros'' en donde se encuentre"
673
 
674
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
675
  msgctxt "[ELEMENTOR] Widget description"
676
  msgid ""
677
  "It will allow users to reset the filer selection; it will only appear when "
@@ -680,7 +675,7 @@ msgstr ""
680
  "Permitirá a los usuarios restablecer la selección de filtro; solo aparecerá "
681
  "cuando haya un filtro activo."
682
 
683
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
684
  msgctxt "[ELEMENTOR] Widget description"
685
  msgid ""
686
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -690,17 +685,17 @@ msgstr ""
690
  "dentro de tu página, cuando la opción ''Posición del botón Restablecer'' no "
691
  "funcione para el bucle de tus productos"
692
 
693
- #: includes/functions.yith-wcan.php:112
694
  msgctxt "For multicolor: I.E. white and red T-Shirt"
695
  msgid "Color 1"
696
  msgstr "Color 1"
697
 
698
- #: includes/functions.yith-wcan.php:112
699
  msgctxt "For multicolor: I.E. white and red T-Shirt"
700
  msgid "Color 2"
701
  msgstr "Color 2"
702
 
703
- #: includes/functions.yith-wcan.php:1001
704
  msgctxt "[FRONTEND] Star rating template"
705
  msgid "star"
706
  msgid_plural "stars"
@@ -708,27 +703,27 @@ msgstr[0] "estrella"
708
  msgstr[1] "estrellas"
709
 
710
  #. translators: 1. Rating.
711
- #: includes/functions.yith-wcan.php:1016
712
  msgctxt "[FRONTEND] Star rating label"
713
  msgid "Rated %s out of 5"
714
  msgstr "Valorado en %s sobre 5"
715
 
716
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
717
  msgctxt "[GUTENBERG]: block name"
718
  msgid "YITH AJAX Filters Preset"
719
  msgstr "YITH AJAX Pre establecimiento de filtros"
720
 
721
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
722
  msgctxt "[GUTENBERG]: block name"
723
  msgid "YITH Reset Filters Button"
724
  msgstr "YITH Botón de restablecimiento de filtros"
725
 
726
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
727
  msgctxt "[GUTENBERG]: block description"
728
  msgid "Show filters from a preset"
729
  msgstr "Mostrar filtros de un pre establecimiento"
730
 
731
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
732
  msgctxt "[GUTENBERG]: block description"
733
  msgid ""
734
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -742,80 +737,80 @@ msgstr ""
742
  "opción ''Posición del botón Restablecer' no funcione en el bucle de tus "
743
  "productos"
744
 
745
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
746
  msgctxt "[GUTENBERG]: attribute description"
747
  msgid "Preset"
748
  msgstr "Pre establecimiento"
749
 
750
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
751
  msgctxt "[Admin] Preset table column header"
752
  msgid "Preset name"
753
  msgstr "Nombre del pre establecimiento"
754
 
755
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
756
  msgctxt "[Admin] Preset table column header"
757
  msgid "Shortcode"
758
  msgstr "Shortcode"
759
 
760
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
761
  msgctxt "[Admin] Preset edit action label"
762
  msgid "Edit this preset"
763
  msgstr "Editar este pre establecimiento"
764
 
765
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
766
  msgctxt "[Admin] Preset clone action label"
767
  msgid "Clone this preset"
768
  msgstr "Clonar este pre establecimiento"
769
 
770
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
771
  msgctxt "[Admin] Preset delete action label"
772
  msgid "Delete this preset"
773
  msgstr "Eliminar este pre establecimiento"
774
 
775
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
776
  msgctxt "[Admin] Preset delete confirm label"
777
  msgid "Are you sure you want to delete this preset?"
778
  msgstr "¿Estás seguro de que quieres eliminar este pre establecimiento?"
779
 
780
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
781
  msgctxt "[Admin] on-off yes"
782
  msgid "YES"
783
  msgstr "SÍ"
784
 
785
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
786
  msgctxt "[Admin] on-off no"
787
  msgid "NO"
788
  msgstr "NO"
789
 
790
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
791
  msgctxt ""
792
  "[Admin] Name of the item missing, shown in preset-empty-content template"
793
  msgid "filter preset"
794
  msgstr "Pre establecimiento de filtro"
795
 
796
- #: templates/admin/preset-filters.php:29
797
  msgctxt ""
798
  "[Admin] Name of the item missing, shown in preset-empty-content template"
799
  msgid "filter"
800
  msgstr "filtro"
801
 
802
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
803
  msgctxt "[Admin] New preset button label"
804
  msgid "Create a new preset"
805
  msgstr "Crea un nuevo pre establecimiento"
806
 
807
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
808
  msgctxt "[ADMIN] Name of the preset widget"
809
  msgid "YITH AJAX Filters Preset"
810
  msgstr "YITH AJAX Pre establecimiento de filtros"
811
 
812
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
813
  msgctxt "[ADMIN] Preset widget options"
814
  msgid "Preset"
815
  msgstr "Pre establecimiento"
816
 
817
  #. translators: 1. Url to Ajax Product filter admin panel.
818
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
819
  msgctxt "[ADMIN] Preset widget options"
820
  msgid ""
821
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -824,26 +819,26 @@ msgstr ""
824
  "Por favor, ve al <a href=\"%s\">Panel de WP-> YITH -> Ajax Product Filter -> "
825
  "Pre establecimientos</a> y crea tu primer pre establecimiento"
826
 
827
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
828
  msgctxt "[Plugin Name] Admin: Widget Title"
829
  msgid "YITH AJAX Product Filter"
830
  msgstr "YITH Ajax Filtro de producto"
831
 
832
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
833
  #, fuzzy
834
  msgctxt ""
835
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
836
  msgid "AND"
837
  msgstr "Y"
838
 
839
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
840
  msgctxt "[Plugin Name]"
841
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
842
  msgstr ""
843
  "Restablecer todos los filtros establecidos por YITH WooCommerce Ajax Product "
844
  "Filter"
845
 
846
- #: plugin-options/filter-options.php:147
847
  #, fuzzy
848
  msgctxt ""
849
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -852,7 +847,7 @@ msgstr ""
852
  "Y . Los resultados deben coincidir con los términos seleccionados al mismo "
853
  "tiempo"
854
 
855
- #: plugin-options/filter-options.php:148
856
  #, fuzzy
857
  msgctxt ""
858
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1139,21 +1134,21 @@ msgstr ""
1139
  msgctxt "[ADMIN] Premium tab"
1140
  msgid ""
1141
  "<b>Filter by category</b>: to let users choose which product category to "
1142
- "view<br/>\r\n"
1143
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1144
  "<b>Filter by price</b>: to let users filter products by a specific price "
1145
- "range (based on their budget availability)<br/>\r\n"
1146
  "<b>Filter by color and size</b>: you can create filters for all the "
1147
  "attributes available in your store, like color and size. For the color "
1148
  "filter, you can either choose square or circular color swatches or use "
1149
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1150
  "<b>Filter by rating</b>: to let your users filter products based on other "
1151
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1152
- "concentrate only on high-rated ones)<br/>\r\n"
1153
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1154
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1155
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1156
- "filter products and view only those with a discount<br/>\r\n"
1157
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1158
  "filter products based on their needs and exclude out-of-stock products from "
1159
  "the list"
@@ -1279,73 +1274,73 @@ msgid ""
1279
  "easier to share)"
1280
  msgstr ""
1281
 
1282
- #: templates/admin/preset-edit.php:29
1283
  msgctxt "[Admin] Back link in new preset page"
1284
  msgid "< back to preset list"
1285
  msgstr "< volver a la lista de pre establecimiento"
1286
 
1287
- #: templates/admin/preset-edit.php:36
1288
  msgctxt "[ADMIN] Title for new preset page"
1289
  msgid "Edit filter preset"
1290
  msgstr "Editar pre establecimiento de filtro"
1291
 
1292
- #: templates/admin/preset-edit.php:38
1293
  msgctxt "[ADMIN] Title for new preset page"
1294
  msgid "Add new filter preset"
1295
  msgstr "Añadir nuevo filtro pre establecido"
1296
 
1297
- #: templates/admin/preset-edit.php:45
1298
  msgctxt "[ADMIN] Preset save message"
1299
  msgid "Preset saved correctly"
1300
  msgstr ""
1301
 
1302
- #: templates/admin/preset-edit.php:90
1303
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1304
  msgid "Save preset"
1305
  msgstr "Guardar pre establecimiento"
1306
 
1307
- #: templates/admin/preset-empty-content.php:27
1308
  msgctxt "Alt text for empty preset image"
1309
  msgid "Empty preset"
1310
  msgstr "Pre establecimiento vacío"
1311
 
1312
  #. translators: 1. Missing item name.
1313
- #: templates/admin/preset-empty-content.php:33
1314
  msgctxt "[Admin] Preset table empty message"
1315
  msgid "You don't have any %s yet."
1316
  msgstr "No tienes ningún %s aún."
1317
 
1318
- #: templates/admin/preset-filter-term.php:28
1319
  msgctxt "[Admin] Term edit field label (preset edit page)"
1320
  msgid "Label"
1321
  msgstr "Etiqueta"
1322
 
1323
- #: templates/admin/preset-filter-term.php:33
1324
  msgctxt "[Admin] Term edit field label (preset edit page)"
1325
  msgid "Tooltip"
1326
  msgstr "Información emergente"
1327
 
1328
- #: templates/admin/preset-filter-term.php:39
1329
  msgctxt "[Admin] Term edit field label (preset edit page)"
1330
  msgid "Color"
1331
  msgstr "Color"
1332
 
1333
- #: templates/admin/preset-filter.php:89
1334
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1335
  msgid "Save Filter"
1336
  msgstr "Guardar filtro"
1337
 
1338
- #: templates/admin/preset-filter.php:90
1339
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1340
  msgid "Delete Filter"
1341
  msgstr "Eliminar filtro"
1342
 
1343
- #: templates/admin/preset-filters.php:31
1344
  msgctxt "[Admin] New filter button label"
1345
  msgid "Add a new filter"
1346
  msgstr "Añadir nuevo filtro"
1347
 
1348
- #: templates/admin/preset-filters.php:55
1349
  msgctxt "[Admin] Add new filter in new preset page"
1350
  msgid "+ Add filter"
1351
  msgstr "+ Añadir filtro"
@@ -1357,12 +1352,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1357
  msgid "See %d more filters"
1358
  msgstr "Antes de los filtros"
1359
 
1360
- #: templates/admin/upgrade-note-modal.php:31
1361
  msgctxt "[ADMIN] Upgrade note modal title"
1362
  msgid "Use the new filter preset feature for your filters"
1363
  msgstr "Usar la nueva característica de pre establecimiento para tus filtros"
1364
 
1365
- #: templates/admin/upgrade-note-modal.php:36
1366
  msgctxt "[ADMIN] Upgrade note modal content"
1367
  msgid ""
1368
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1376,7 +1371,7 @@ msgstr ""
1376
  "shortcode, el bloque de Gutenberg o el widget de Elementor."
1377
 
1378
  #. translators: 1. Url to demo video. 2. Url to docs.
1379
- #: templates/admin/upgrade-note-modal.php:49
1380
  msgctxt "[ADMIN] Upgrade note modal content"
1381
  msgid ""
1382
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1386,7 +1381,7 @@ msgstr ""
1386
  "documentación</a> para saber cómo usar esta nueva característica."
1387
 
1388
  #. translators: 1. Url to docs.
1389
- #: templates/admin/upgrade-note-modal.php:62
1390
  msgctxt "[ADMIN] Upgrade note modal content"
1391
  msgid ""
1392
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1395,7 +1390,7 @@ msgstr ""
1395
  "Te sugerimos <a href=\"%1$s\">leer la documentación</a> para aprender como "
1396
  "usar esta nueva característica."
1397
 
1398
- #: templates/admin/upgrade-note-modal.php:76
1399
  #, fuzzy
1400
  msgctxt "[ADMIN] Upgrade note modal content"
1401
  msgid ""
@@ -1410,7 +1405,7 @@ msgstr ""
1410
  "establecimientos de filtro. <br/><b>No te preocupes, no se perderán datos "
1411
  "durante el proceso.</b>"
1412
 
1413
- #: templates/admin/upgrade-note-modal.php:87
1414
  msgctxt "[ADMIN] Upgrade note modal content"
1415
  msgid ""
1416
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1418,21 +1413,25 @@ msgid ""
1418
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1419
  msgstr ""
1420
 
1421
- #: templates/admin/upgrade-note-modal.php:96
1422
  msgctxt "[ADMIN] Upgrade note modal button label"
1423
  msgid "Convert your widgets in a preset now"
1424
  msgstr "Convierte tus widgets en pre establecimiento ahora"
1425
 
1426
- #: templates/admin/upgrade-note-modal.php:97
1427
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1428
  msgid "No thanks"
1429
  msgstr "No, gracias"
1430
 
1431
- #: templates/filters/global/reset-filters.php:23
1432
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1433
  msgid "Reset filters"
1434
  msgstr "Restablecer filtros"
1435
 
 
 
 
 
1436
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1437
  #~ msgid "All"
1438
  #~ msgstr "Todo"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:30:42+0000\n"
10
  "Language: es\n"
11
  "MIME-Version: 1.0\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Borrador preestablecido"
20
 
21
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
22
+ #: includes/functions-yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Término"
25
 
26
+ #: includes/functions-yith-wcan.php:98
27
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
28
  msgid "Color"
29
  msgstr "Color"
30
 
31
+ #: includes/functions-yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Etiquetas"
34
 
35
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filtrar la lista de productos sin recargar la página"
38
 
39
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
40
  msgid "Filters:"
41
  msgstr "Filtros"
42
 
43
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
44
  msgid "List"
45
  msgstr "Lista"
46
 
47
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
48
  msgid "Label"
49
  msgstr "Etiqueta"
50
 
51
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
52
  msgid "Dropdown"
53
  msgstr "Pestaña desplegable"
54
 
55
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
56
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
57
  msgid "Title"
58
  msgstr "Título"
59
 
60
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
61
  msgid "Type:"
62
  msgstr "Tipo:"
63
 
64
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
65
  msgid "Query Type:"
66
  msgstr "Tipo de consulta:"
67
 
68
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
69
  msgid "OR"
70
  msgstr "O"
71
 
72
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
73
  msgid "Attribute:"
74
  msgstr "Atributo:"
75
 
76
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
77
  msgid "Display (default All):"
78
  msgstr "Mostrar (predeterminado todo):"
79
 
80
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
81
  msgid "All (no hierarchical)"
82
  msgstr "Todo (no jerárquico)"
83
 
84
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
85
  msgid "All (hierarchical)"
86
  msgstr "Todo (jerárquico)"
87
 
88
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
89
  msgid "Only Parent"
90
  msgstr "Sólo superior"
91
 
92
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
93
  msgid "CSS custom class"
94
  msgstr "Clase CSS personalizada"
95
 
96
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Restablecer filtro"
99
 
100
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
101
  msgid "Reset All Filters"
102
  msgstr "Restablecer todos los filtros"
103
 
104
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
105
  msgid "Button Label"
106
  msgstr "Etiqueta del botón"
107
 
138
  "yithemes.com/\" target=\"_blank\">Obtén más plugins para tu comercio "
139
  "electrónico en <strong>YITH</strong></a>"
140
 
141
+ #: includes/class-yith-wcan-admin.php:107
142
  msgctxt "[Admin] Copy confirmation message"
143
  msgid "Content copied to your clipboard"
144
  msgstr "Contenido copiado en tu portapapeles"
145
 
146
+ #: includes/class-yith-wcan-admin.php:108
147
  msgctxt "[Admin] Confirm filter delete message"
148
  msgid "Are you sure you want to delete this item?"
149
  msgstr "¿Estás seguro de que quieres eliminar este artículo?"
150
 
151
  #. translators: 1. Number of items that will be added.
152
+ #: includes/class-yith-wcan-admin.php:110
153
  msgctxt "[Admin] Confirm add all terms message"
154
  msgid "Are you sure you want to proceed? This operation will add %s items"
155
  msgstr ""
156
  "¿Estás seguro de que quieres continuar? Esta operación añadirá %s artículos"
157
 
158
+ #: includes/class-yith-wcan-admin.php:111
159
  msgctxt "[Admin] Error message"
160
  msgid "\"Filter title\" is a required field"
161
  msgstr ""
162
 
163
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
164
  msgctxt "[Admin] Message shown when filter has empty title"
165
  msgid "&lt; no title &gt;"
166
  msgstr "&lt; sin título &gt;"
167
 
168
+ #: includes/class-yith-wcan-admin.php:115
169
  msgctxt "[Admin] Media library title, when selecting images"
170
  msgid "Select media you want to use"
171
  msgstr "Selecciona los medios que quieres usar"
172
 
173
+ #: includes/class-yith-wcan-admin.php:116
174
  msgctxt "[Admin] Media library confirm button, when selecting images"
175
  msgid "Use this media"
176
  msgstr "Utiliza estos medios"
177
 
178
+ #: includes/class-yith-wcan-admin.php:184
179
  msgctxt "[Admin] tab name"
180
  msgid "Filter presets"
181
  msgstr "Filtrar prestablecidos"
182
 
183
+ #: includes/class-yith-wcan-admin.php:185
184
  msgctxt "[Admin] tab name"
185
  msgid "General settings"
186
  msgstr "Ajustes generales"
187
 
188
+ #: includes/class-yith-wcan-admin.php:186
189
  #, fuzzy
190
  msgctxt "[Admin] tab name"
191
  msgid "SEO"
192
  msgstr "SEO"
193
 
194
+ #: includes/class-yith-wcan-admin.php:187
195
  msgctxt "[Admin] tab name"
196
  msgid "Premium Version"
197
  msgstr "Versión premium"
198
 
199
+ #: includes/class-yith-wcan-admin.php:191
200
  msgctxt "[Admin] tab name"
201
  msgid "Legacy"
202
  msgstr "Heredado"
203
 
204
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
205
  msgctxt "[Admin] Plugin description"
206
  msgid ""
207
  "It allows your users to find the product they are looking for as quickly as "
210
  "Permite a tus usuarios encontrar el producto que están buscando lo más "
211
  "rápido posible."
212
 
213
+ #: includes/class-yith-wcan-admin.php:211
214
  msgctxt "[HELP TAB] Video title"
215
  msgid ""
216
  "Check this video to learn how to <b>create a filter preset and show it on "
217
  "the shop page:</b>"
218
  msgstr ""
219
 
220
+ #: includes/class-yith-wcan-admin.php:329
221
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
222
  msgid "item"
223
  msgstr "artículo"
224
 
225
+ #: includes/class-yith-wcan-admin.php:330
226
  msgctxt "[Admin] Preset table empty message second line"
227
  msgid "But don't worry, here you can create your first one!"
228
  msgstr "¡Pero no te preocupes, aquí puedes crear el primero!"
229
 
230
+ #: includes/class-yith-wcan-admin.php:480
231
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
232
  msgid "Clear Product Filter transients"
233
  msgstr "Limpiar datos transitorios de filtro de producto"
234
 
235
+ #: includes/class-yith-wcan-admin.php:486
236
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
237
  msgid "Run filter widgets upgrade"
238
  msgstr "Activar actualización de widgets de filtro"
239
 
240
+ #: includes/class-yith-wcan-admin.php:481
241
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
242
  msgid "Clear"
243
  msgstr "Limpìar"
244
 
245
+ #: includes/class-yith-wcan-admin.php:487
246
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
247
  msgid "Run"
248
  msgstr "Activar"
249
 
250
+ #: includes/class-yith-wcan-admin.php:482
251
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
252
  msgid ""
253
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
259
  "configuración del producto y los filtros no muestran los resultados "
260
  "esperados."
261
 
262
+ #: includes/class-yith-wcan-admin.php:488
263
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
264
  msgid ""
265
  "This will create a preset for any sidebar of your shop containing filter "
269
  "que contenta widgets de filtro; el pre establecimiento será configurado para "
270
  "coincidir con las especificaciones de los widgets"
271
 
272
+ #: includes/class-yith-wcan-filter-factory.php:72
273
  msgctxt "[Admin] Filter edit form"
274
  msgid "Taxonomy"
275
  msgstr "Taxonomía"
276
 
277
+ #: includes/class-yith-wcan-filter-factory.php:86
278
  msgctxt "[Admin] Filter edit form"
279
  msgid "Checkbox"
280
  msgstr "Casilla de verificación"
281
 
282
+ #: includes/class-yith-wcan-filter-factory.php:87
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Select"
285
  msgstr "Seleccionar"
286
 
287
+ #: includes/class-yith-wcan-filter-factory.php:88
288
  msgctxt "[Admin] Filter edit form"
289
  msgid "Text"
290
  msgstr "Texto"
291
 
292
+ #: includes/class-yith-wcan-filter-factory.php:89
293
  msgctxt "[Admin] Filter edit form"
294
  msgid "Color Swatches"
295
  msgstr "Muestras de color"
296
 
297
+ #: includes/class-yith-wcan-filter-factory.php:90
298
  msgctxt "[Admin] Filter edit form"
299
  msgid "Label"
300
  msgstr "Etiqueta"
309
  msgid "Enter a name to identify this filter"
310
  msgstr "Introduce un nombre para identificar este filtro"
311
 
312
+ #: plugin-options/filter-options.php:40
313
  msgctxt "[Admin] Filter edit form"
314
  msgid "Filter for"
315
  msgstr "Filtrar por"
316
 
317
+ #: plugin-options/filter-options.php:44
318
  msgctxt "[Admin] Filter edit form"
319
  msgid "Select the parameters you wish to filter for"
320
  msgstr "Selecciona los parámetros por los que te gustaría filtrar"
321
 
322
+ #: plugin-options/filter-options.php:49
323
  msgctxt "[Admin] Filter edit form"
324
  msgid "Choose taxonomy"
325
  msgstr "Escoger taxonomía"
326
 
327
+ #: plugin-options/filter-options.php:53
328
  msgctxt "[Admin] Filter edit form"
329
  msgid "Select which taxonomy to use for this filter"
330
  msgstr "Selecciona qué categoría usar para este filtro"
331
 
332
+ #: plugin-options/filter-options.php:58
333
  msgctxt "[Admin] Filter edit form"
334
  msgid "Auto-populate with all terms"
335
  msgstr ""
336
 
337
+ #: plugin-options/filter-options.php:60
338
  msgctxt "[Admin] Filter edit form"
339
  msgid ""
340
  "Populate this filter with all existing terms of the selected taxonomy.\n"
343
  "well.</span>"
344
  msgstr ""
345
 
346
+ #: plugin-options/filter-options.php:69
347
  msgctxt "[Admin] Filter edit form"
348
  msgid "Choose terms"
349
  msgstr "Escoger términos"
350
 
351
+ #: plugin-options/filter-options.php:74
352
  msgctxt "[Admin] Filter edit form"
353
  msgid "Select which terms to use for filtering"
354
  msgstr "Selecciona qué términos usar para filtrar"
355
 
356
+ #: plugin-options/filter-options.php:78
357
  msgctxt "[Admin] Filter edit form"
358
  msgid "Filter type"
359
  msgstr "Tipo de filtro"
360
 
361
+ #: plugin-options/filter-options.php:82
362
  msgctxt "[Admin] Filter edit form"
363
  msgid "Select the filter type for this filter"
364
  msgstr "Selecciona el tipo para este filtro"
365
 
366
+ #: plugin-options/filter-options.php:86
367
  #, fuzzy
368
  msgctxt "[Admin] Filter edit form"
369
  msgid "Labels"
370
  msgstr "Etiquetas"
371
 
372
+ #: plugin-options/filter-options.php:89
373
  #, fuzzy
374
  msgctxt "[Admin] Filter edit form"
375
  msgid "Show below"
376
  msgstr "Mostrar resultados"
377
 
378
+ #: plugin-options/filter-options.php:90
379
  #, fuzzy
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Show on the right"
382
  msgstr "Mostrar recuento de artículos"
383
 
384
+ #: plugin-options/filter-options.php:91
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Hide"
387
  msgstr ""
388
 
389
+ #: plugin-options/filter-options.php:93
390
  #, fuzzy
391
  msgctxt "[Admin] Filter edit form"
392
  msgid "Choose if and where to show the label inside your filter"
393
  msgstr "Escoge el estilo del filtro dentro de los widgets"
394
 
395
+ #: plugin-options/filter-options.php:97
396
  msgctxt "[Admin] Filter edit form"
397
  msgid "Columns number"
398
  msgstr "Número de columnas"
399
 
400
+ #: plugin-options/filter-options.php:102
401
  msgctxt "[Admin] Filter edit form"
402
  msgid "Set the number of items per row you want to show for this design"
403
  msgstr ""
404
  "Establece el número de artículos por fila que quieres mostrar para este "
405
  "diseño"
406
 
407
+ #: plugin-options/filter-options.php:106
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Customize terms"
410
  msgstr "Términos personalizados"
411
 
412
+ #: plugin-options/filter-options.php:109
413
  msgctxt "[Admin] Filter edit form"
414
  msgid ""
415
  "Configure your terms individually; system will otherwise use default labels/"
423
  "this option and use the boxes below</span>"
424
  msgstr ""
425
 
426
+ #: plugin-options/filter-options.php:119
427
  #, fuzzy
428
  msgctxt "[Admin] Filter edit form"
429
  msgid "Terms options"
430
  msgstr "Opciones de orden"
431
 
432
+ #: plugin-options/filter-options.php:125
433
  msgctxt "[Admin] Filter edit form"
434
  msgid "Show hierarchy"
435
  msgstr "Mostrar jerarquía"
436
 
437
+ #: plugin-options/filter-options.php:128
438
  msgctxt "[Admin] Filter edit form"
439
  msgid "No, show all terms in same level"
440
  msgstr "No, mostrar todos los términos en el mismo nivel"
441
 
442
+ #: plugin-options/filter-options.php:129
443
  msgctxt "[Admin] Filter edit form"
444
  msgid "No, show only parent terms"
445
  msgstr "No, mostrar solo términos superiores"
446
 
447
+ #: plugin-options/filter-options.php:130
448
  msgctxt "[Admin] Filter edit form"
449
  msgid "Yes"
450
  msgstr ""
451
 
452
+ #: plugin-options/filter-options.php:132
453
  msgctxt "[Admin] Filter edit form"
454
  msgid "Choose how to show terms hierarchy"
455
  msgstr "Elige cómo mostrar los términos jerárquicamente"
456
 
457
+ #: plugin-options/filter-options.php:136
458
  msgctxt "[Admin] Filter edit form"
459
  msgid "Allow multiple selection"
460
  msgstr "Permitir selección múltiple"
461
 
462
+ #: plugin-options/filter-options.php:138
463
  msgctxt "[Admin] Filter edit form"
464
  msgid "Enable if the user can select multiple terms when filtering products"
465
  msgstr ""
466
  "Activa si el usuario puede seleccionar múltiples términos al filtrar los "
467
  "productos"
468
 
469
+ #: plugin-options/filter-options.php:142
470
  msgctxt "[Admin] Filter edit form"
471
  msgid "Multiselect relation"
472
  msgstr "Relación de multi-selección"
473
 
474
+ #: plugin-options/filter-options.php:148
475
  msgctxt "[Admin] Filter edit form"
476
  msgid "Choose how multiple terms selection should behave"
477
  msgstr "Escoge cómo debe comportarse la selección de términos múltiples"
478
 
479
+ #: includes/class-yith-wcan-filter-factory.php:104
480
  msgctxt "[Admin] Filter edit form, sorting options"
481
  msgid "Default sorting"
482
  msgstr "Orden predeterminado"
483
 
484
+ #: includes/class-yith-wcan-filter-factory.php:105
485
  msgctxt "[Admin] Filter edit form, sorting options"
486
  msgid "Sort by popularity"
487
  msgstr "Ordenar por popularidad"
488
 
489
+ #: includes/class-yith-wcan-filter-factory.php:106
490
  msgctxt "[Admin] Filter edit form, sorting options"
491
  msgid "Sort by average rating"
492
  msgstr "Ordenar por promedio de valoración"
493
 
494
+ #: includes/class-yith-wcan-filter-factory.php:107
495
  msgctxt "[Admin] Filter edit form, sorting options"
496
  msgid "Sort by latest"
497
  msgstr "Ordenar por último"
498
 
499
+ #: includes/class-yith-wcan-filter-factory.php:108
500
  msgctxt "[Admin] Filter edit form, sorting options"
501
  msgid "Sort by price: low to high"
502
  msgstr "Ordenar por precio: de bajo a alto"
503
 
504
+ #: includes/class-yith-wcan-filter-factory.php:109
505
  msgctxt "[Admin] Filter edit form, sorting options"
506
  msgid "Sort by price: high to low"
507
  msgstr "Ordenar por precio: de alto a bajo"
508
 
509
+ #: includes/class-yith-wcan-filter.php:116
510
  msgctxt "[Admin] Default filter title"
511
  msgid "New filter"
512
  msgstr "Nuevo filtro"
513
 
514
+ #: includes/class-yith-wcan-frontend.php:591
515
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
516
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
517
  msgid "All"
518
  msgstr "Todo"
519
 
520
+ #: includes/class-yith-wcan-frontend.php:592
521
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
522
  msgid "Search..."
523
  msgstr "Buscar..."
524
 
525
+ #: includes/class-yith-wcan-frontend.php:593
526
  msgctxt "[FRONTEND] Empty items list in the dropdown"
527
  msgid "No item found"
528
  msgstr "No se han encontrado artículos."
529
 
530
  #. translators: 1. Number of items to show.
531
+ #: includes/class-yith-wcan-frontend.php:595
532
  msgctxt "[FRONTEND] Show more link on terms dropdown"
533
  msgid "Show %d more"
534
  msgstr "Mostrar %d más"
535
 
536
+ #: includes/class-yith-wcan-frontend.php:596
537
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
538
  msgid "Close"
539
  msgstr "Cerrar"
540
 
541
+ #: includes/class-yith-wcan-frontend.php:597
542
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
543
  msgid "Save"
544
  msgstr ""
545
 
546
+ #: includes/class-yith-wcan-frontend.php:598
547
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
548
  msgid "Show results"
549
  msgstr "Mostrar resultados"
550
 
551
+ #: includes/class-yith-wcan-frontend.php:599
552
  msgctxt ""
553
  "[FRONTEND] Label for clear selection link, that appears above filter after "
554
  "selection"
555
  msgid "Clear"
556
  msgstr "Limpiar"
557
 
558
+ #: includes/class-yith-wcan-frontend.php:600
559
  msgctxt ""
560
  "[FRONTEND] Label for clear selection link, that appears above filter after "
561
  "selection"
562
  msgid "Clear All"
563
  msgstr "Limpiar todo"
564
 
565
+ #: includes/class-yith-wcan-install.php:95
566
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
567
  msgid "Default preset"
568
  msgstr "Pre establecimiento predeterminado"
569
 
570
  #. translators: 1. Taxonomy name.
571
+ #: includes/class-yith-wcan-install.php:285
572
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
573
  msgid "Filter by %s"
574
  msgstr "Filtrar por %s"
575
 
576
+ #: includes/class-yith-wcan-preset-factory.php:112
577
  #, fuzzy
578
  msgctxt "[Admin] Label in new preset page"
579
  msgid "Default"
589
  msgid "Enter a name to identify this filter preset"
590
  msgstr "Introduce un nombre para identificar este filtro pre establecido"
591
 
592
+ #: templates/admin/preset-filters.php:22
593
  msgctxt "[Admin] Label in new preset page"
594
  msgid "Filters of this preset"
595
  msgstr "Filtros para este pre establecimiento"
596
 
597
+ #: includes/class-yith-wcan-presets.php:95
598
+ #: includes/class-yith-wcan-presets.php:100
599
  msgctxt "[Admin] name of presets custom post type"
600
  msgid "Filter presets"
601
  msgstr "Pre establecimientos de filtro"
602
 
603
+ #: includes/class-yith-wcan-presets.php:96
604
  msgctxt "[Admin] singular name of presets custom post type"
605
  msgid "Filter preset"
606
  msgstr "Pre establecimiento de filtro"
607
 
608
+ #: includes/class-yith-wcan-presets.php:97
609
  msgctxt "[Admin] add new filter preset label"
610
  msgid "Add new preset"
611
  msgstr "Añadir nuevo pre establecimiento"
612
 
613
+ #: includes/class-yith-wcan-presets.php:139
614
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
615
  msgid "Convert widgets in a preset"
616
  msgstr "Convertir widgets en un pre establecimiento"
617
 
618
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
619
  msgctxt ""
620
  "[Generic] Error that happens when trying to read a filter preset that does "
621
  "not exist"
623
  msgstr "Pre establecimiento no válido."
624
 
625
  #. translators: 1. Title of original preset.
626
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
627
  msgctxt "[ADMIN] Title of the cloned preset"
628
  msgid "%s - Copy"
629
  msgstr "%s - Copiar"
630
 
631
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
632
  msgctxt "[ADMIN] Name of the preset elementor widget"
633
  msgid "YITH AJAX Filters Preset"
634
  msgstr "YITH AJAX Pre establecimiento de filtros"
635
 
636
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
637
  msgctxt "[ADMIN] Name of the preset elementor widget"
638
  msgid "YITH AJAX Filters Reset Button"
639
  msgstr "YITH AJAX Botón de restablecimiento de filtros"
640
 
641
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
642
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
643
  msgctxt "[ELEMENTOR] Default preset option"
644
  msgid "Choose an option"
645
  msgstr "Escoge una opción"
646
 
647
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
648
  msgctxt "[ELEMENTOR] Section title"
649
  msgid "Filters"
650
  msgstr "Filtros"
651
 
652
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
653
  msgctxt "[ELEMENTOR] Section title"
654
  msgid "General"
655
  msgstr "General"
656
 
657
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
658
  msgctxt "[ELEMENTOR] Control label"
659
  msgid "Preset"
660
  msgstr "Pre establecimiento"
661
 
662
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
663
  msgctxt "[ELEMENTOR] Widget description"
664
  msgid ""
665
  "This widget will display \"Filters reset\" button, wherever it is placed"
666
  msgstr ""
667
  "Este widget mostrará el botón ''Restablecer filtros'' en donde se encuentre"
668
 
669
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
670
  msgctxt "[ELEMENTOR] Widget description"
671
  msgid ""
672
  "It will allow users to reset the filer selection; it will only appear when "
675
  "Permitirá a los usuarios restablecer la selección de filtro; solo aparecerá "
676
  "cuando haya un filtro activo."
677
 
678
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
679
  msgctxt "[ELEMENTOR] Widget description"
680
  msgid ""
681
  "You can use this block to place \"Reset filters\" button inside your page, "
685
  "dentro de tu página, cuando la opción ''Posición del botón Restablecer'' no "
686
  "funcione para el bucle de tus productos"
687
 
688
+ #: includes/functions-yith-wcan.php:112
689
  msgctxt "For multicolor: I.E. white and red T-Shirt"
690
  msgid "Color 1"
691
  msgstr "Color 1"
692
 
693
+ #: includes/functions-yith-wcan.php:112
694
  msgctxt "For multicolor: I.E. white and red T-Shirt"
695
  msgid "Color 2"
696
  msgstr "Color 2"
697
 
698
+ #: includes/functions-yith-wcan.php:1026
699
  msgctxt "[FRONTEND] Star rating template"
700
  msgid "star"
701
  msgid_plural "stars"
703
  msgstr[1] "estrellas"
704
 
705
  #. translators: 1. Rating.
706
+ #: includes/functions-yith-wcan.php:1041
707
  msgctxt "[FRONTEND] Star rating label"
708
  msgid "Rated %s out of 5"
709
  msgstr "Valorado en %s sobre 5"
710
 
711
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
712
  msgctxt "[GUTENBERG]: block name"
713
  msgid "YITH AJAX Filters Preset"
714
  msgstr "YITH AJAX Pre establecimiento de filtros"
715
 
716
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
717
  msgctxt "[GUTENBERG]: block name"
718
  msgid "YITH Reset Filters Button"
719
  msgstr "YITH Botón de restablecimiento de filtros"
720
 
721
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
722
  msgctxt "[GUTENBERG]: block description"
723
  msgid "Show filters from a preset"
724
  msgstr "Mostrar filtros de un pre establecimiento"
725
 
726
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
727
  msgctxt "[GUTENBERG]: block description"
728
  msgid ""
729
  "Show reset filters button, when a filter is applied and button is enabled in "
737
  "opción ''Posición del botón Restablecer' no funcione en el bucle de tus "
738
  "productos"
739
 
740
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
741
  msgctxt "[GUTENBERG]: attribute description"
742
  msgid "Preset"
743
  msgstr "Pre establecimiento"
744
 
745
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
746
  msgctxt "[Admin] Preset table column header"
747
  msgid "Preset name"
748
  msgstr "Nombre del pre establecimiento"
749
 
750
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
751
  msgctxt "[Admin] Preset table column header"
752
  msgid "Shortcode"
753
  msgstr "Shortcode"
754
 
755
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
756
  msgctxt "[Admin] Preset edit action label"
757
  msgid "Edit this preset"
758
  msgstr "Editar este pre establecimiento"
759
 
760
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
761
  msgctxt "[Admin] Preset clone action label"
762
  msgid "Clone this preset"
763
  msgstr "Clonar este pre establecimiento"
764
 
765
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
766
  msgctxt "[Admin] Preset delete action label"
767
  msgid "Delete this preset"
768
  msgstr "Eliminar este pre establecimiento"
769
 
770
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
771
  msgctxt "[Admin] Preset delete confirm label"
772
  msgid "Are you sure you want to delete this preset?"
773
  msgstr "¿Estás seguro de que quieres eliminar este pre establecimiento?"
774
 
775
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
776
  msgctxt "[Admin] on-off yes"
777
  msgid "YES"
778
  msgstr "SÍ"
779
 
780
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
781
  msgctxt "[Admin] on-off no"
782
  msgid "NO"
783
  msgstr "NO"
784
 
785
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
786
  msgctxt ""
787
  "[Admin] Name of the item missing, shown in preset-empty-content template"
788
  msgid "filter preset"
789
  msgstr "Pre establecimiento de filtro"
790
 
791
+ #: templates/admin/preset-filters.php:31
792
  msgctxt ""
793
  "[Admin] Name of the item missing, shown in preset-empty-content template"
794
  msgid "filter"
795
  msgstr "filtro"
796
 
797
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
798
  msgctxt "[Admin] New preset button label"
799
  msgid "Create a new preset"
800
  msgstr "Crea un nuevo pre establecimiento"
801
 
802
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
803
  msgctxt "[ADMIN] Name of the preset widget"
804
  msgid "YITH AJAX Filters Preset"
805
  msgstr "YITH AJAX Pre establecimiento de filtros"
806
 
807
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
808
  msgctxt "[ADMIN] Preset widget options"
809
  msgid "Preset"
810
  msgstr "Pre establecimiento"
811
 
812
  #. translators: 1. Url to Ajax Product filter admin panel.
813
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
814
  msgctxt "[ADMIN] Preset widget options"
815
  msgid ""
816
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
819
  "Por favor, ve al <a href=\"%s\">Panel de WP-> YITH -> Ajax Product Filter -> "
820
  "Pre establecimientos</a> y crea tu primer pre establecimiento"
821
 
822
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
823
  msgctxt "[Plugin Name] Admin: Widget Title"
824
  msgid "YITH AJAX Product Filter"
825
  msgstr "YITH Ajax Filtro de producto"
826
 
827
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
828
  #, fuzzy
829
  msgctxt ""
830
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
831
  msgid "AND"
832
  msgstr "Y"
833
 
834
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
835
  msgctxt "[Plugin Name]"
836
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
837
  msgstr ""
838
  "Restablecer todos los filtros establecidos por YITH WooCommerce Ajax Product "
839
  "Filter"
840
 
841
+ #: plugin-options/filter-options.php:145
842
  #, fuzzy
843
  msgctxt ""
844
  "[Admin] Filter edit form; logical operator that affects query behaviour"
847
  "Y . Los resultados deben coincidir con los términos seleccionados al mismo "
848
  "tiempo"
849
 
850
+ #: plugin-options/filter-options.php:146
851
  #, fuzzy
852
  msgctxt ""
853
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1134
  msgctxt "[ADMIN] Premium tab"
1135
  msgid ""
1136
  "<b>Filter by category</b>: to let users choose which product category to "
1137
+ "view<br/>\n"
1138
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1139
  "<b>Filter by price</b>: to let users filter products by a specific price "
1140
+ "range (based on their budget availability)<br/>\n"
1141
  "<b>Filter by color and size</b>: you can create filters for all the "
1142
  "attributes available in your store, like color and size. For the color "
1143
  "filter, you can either choose square or circular color swatches or use "
1144
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1145
  "<b>Filter by rating</b>: to let your users filter products based on other "
1146
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1147
+ "concentrate only on high-rated ones)<br/>\n"
1148
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1149
+ "on plugin, you can also filter products by specific brands<br/>\n"
1150
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1151
+ "filter products and view only those with a discount<br/>\n"
1152
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1153
  "filter products based on their needs and exclude out-of-stock products from "
1154
  "the list"
1274
  "easier to share)"
1275
  msgstr ""
1276
 
1277
+ #: templates/admin/preset-edit.php:31
1278
  msgctxt "[Admin] Back link in new preset page"
1279
  msgid "< back to preset list"
1280
  msgstr "< volver a la lista de pre establecimiento"
1281
 
1282
+ #: templates/admin/preset-edit.php:38
1283
  msgctxt "[ADMIN] Title for new preset page"
1284
  msgid "Edit filter preset"
1285
  msgstr "Editar pre establecimiento de filtro"
1286
 
1287
+ #: templates/admin/preset-edit.php:40
1288
  msgctxt "[ADMIN] Title for new preset page"
1289
  msgid "Add new filter preset"
1290
  msgstr "Añadir nuevo filtro pre establecido"
1291
 
1292
+ #: templates/admin/preset-edit.php:47
1293
  msgctxt "[ADMIN] Preset save message"
1294
  msgid "Preset saved correctly"
1295
  msgstr ""
1296
 
1297
+ #: templates/admin/preset-edit.php:93
1298
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1299
  msgid "Save preset"
1300
  msgstr "Guardar pre establecimiento"
1301
 
1302
+ #: templates/admin/preset-empty-content.php:29
1303
  msgctxt "Alt text for empty preset image"
1304
  msgid "Empty preset"
1305
  msgstr "Pre establecimiento vacío"
1306
 
1307
  #. translators: 1. Missing item name.
1308
+ #: templates/admin/preset-empty-content.php:35
1309
  msgctxt "[Admin] Preset table empty message"
1310
  msgid "You don't have any %s yet."
1311
  msgstr "No tienes ningún %s aún."
1312
 
1313
+ #: templates/admin/preset-filter-term.php:30
1314
  msgctxt "[Admin] Term edit field label (preset edit page)"
1315
  msgid "Label"
1316
  msgstr "Etiqueta"
1317
 
1318
+ #: templates/admin/preset-filter-term.php:35
1319
  msgctxt "[Admin] Term edit field label (preset edit page)"
1320
  msgid "Tooltip"
1321
  msgstr "Información emergente"
1322
 
1323
+ #: templates/admin/preset-filter-term.php:41
1324
  msgctxt "[Admin] Term edit field label (preset edit page)"
1325
  msgid "Color"
1326
  msgstr "Color"
1327
 
1328
+ #: templates/admin/preset-filter.php:91
1329
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1330
  msgid "Save Filter"
1331
  msgstr "Guardar filtro"
1332
 
1333
+ #: templates/admin/preset-filter.php:92
1334
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1335
  msgid "Delete Filter"
1336
  msgstr "Eliminar filtro"
1337
 
1338
+ #: templates/admin/preset-filters.php:33
1339
  msgctxt "[Admin] New filter button label"
1340
  msgid "Add a new filter"
1341
  msgstr "Añadir nuevo filtro"
1342
 
1343
+ #: templates/admin/preset-filters.php:57
1344
  msgctxt "[Admin] Add new filter in new preset page"
1345
  msgid "+ Add filter"
1346
  msgstr "+ Añadir filtro"
1352
  msgid "See %d more filters"
1353
  msgstr "Antes de los filtros"
1354
 
1355
+ #: templates/admin/upgrade-note-modal.php:33
1356
  msgctxt "[ADMIN] Upgrade note modal title"
1357
  msgid "Use the new filter preset feature for your filters"
1358
  msgstr "Usar la nueva característica de pre establecimiento para tus filtros"
1359
 
1360
+ #: templates/admin/upgrade-note-modal.php:38
1361
  msgctxt "[ADMIN] Upgrade note modal content"
1362
  msgid ""
1363
  "From the version 4.0 we built a powerful system that allows you to create "
1371
  "shortcode, el bloque de Gutenberg o el widget de Elementor."
1372
 
1373
  #. translators: 1. Url to demo video. 2. Url to docs.
1374
+ #: templates/admin/upgrade-note-modal.php:51
1375
  msgctxt "[ADMIN] Upgrade note modal content"
1376
  msgid ""
1377
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1381
  "documentación</a> para saber cómo usar esta nueva característica."
1382
 
1383
  #. translators: 1. Url to docs.
1384
+ #: templates/admin/upgrade-note-modal.php:64
1385
  msgctxt "[ADMIN] Upgrade note modal content"
1386
  msgid ""
1387
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1390
  "Te sugerimos <a href=\"%1$s\">leer la documentación</a> para aprender como "
1391
  "usar esta nueva característica."
1392
 
1393
+ #: templates/admin/upgrade-note-modal.php:78
1394
  #, fuzzy
1395
  msgctxt "[ADMIN] Upgrade note modal content"
1396
  msgid ""
1405
  "establecimientos de filtro. <br/><b>No te preocupes, no se perderán datos "
1406
  "durante el proceso.</b>"
1407
 
1408
+ #: templates/admin/upgrade-note-modal.php:89
1409
  msgctxt "[ADMIN] Upgrade note modal content"
1410
  msgid ""
1411
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1413
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1414
  msgstr ""
1415
 
1416
+ #: templates/admin/upgrade-note-modal.php:98
1417
  msgctxt "[ADMIN] Upgrade note modal button label"
1418
  msgid "Convert your widgets in a preset now"
1419
  msgstr "Convierte tus widgets en pre establecimiento ahora"
1420
 
1421
+ #: templates/admin/upgrade-note-modal.php:99
1422
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1423
  msgid "No thanks"
1424
  msgstr "No, gracias"
1425
 
1426
+ #: templates/filters/global/reset-filters.php:24
1427
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1428
  msgid "Reset filters"
1429
  msgstr "Restablecer filtros"
1430
 
1431
+ #~ msgctxt "[Admin] Menu title"
1432
+ #~ msgid "Ajax Product Filter"
1433
+ #~ msgstr "Ajax Product Filter"
1434
+
1435
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1436
  #~ msgid "All"
1437
  #~ msgstr "Todo"
languages/yith-woocommerce-ajax-navigation-fr_FR.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-fr_FR.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2020-12-29 14:36:56+0000\n"
10
  "Language: fr\n"
11
  "MIME-Version: 1.0\n"
@@ -14,94 +14,94 @@ msgstr ""
14
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr ""
20
 
21
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
22
- #: includes/functions.yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Terme"
25
 
26
- #: includes/functions.yith-wcan.php:98
27
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
28
  msgid "Color"
29
  msgstr "Couleur"
30
 
31
- #: includes/functions.yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Étiquettes"
34
 
35
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filtrer la liste des produits sans recharger la page"
38
 
39
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
40
  msgid "Filters:"
41
  msgstr "Filtres :"
42
 
43
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
44
  msgid "List"
45
  msgstr "Liste"
46
 
47
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
48
  msgid "Label"
49
  msgstr "Étiquette"
50
 
51
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
52
  msgid "Dropdown"
53
  msgstr "Menu déroulant"
54
 
55
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
56
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
57
  msgid "Title"
58
  msgstr "Titre"
59
 
60
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
61
  msgid "Type:"
62
  msgstr "Type :"
63
 
64
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
65
  msgid "Query Type:"
66
  msgstr "Type de requête :"
67
 
68
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
69
  msgid "OR"
70
  msgstr "OU"
71
 
72
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
73
  msgid "Attribute:"
74
  msgstr "Attribut :"
75
 
76
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
77
  msgid "Display (default All):"
78
  msgstr "Affichage (tout par défaut) :"
79
 
80
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
81
  msgid "All (no hierarchical)"
82
  msgstr "Tout (pas de hiérarchie)"
83
 
84
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
85
  msgid "All (hierarchical)"
86
  msgstr "Tout (hiérarchique)"
87
 
88
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
89
  msgid "Only Parent"
90
  msgstr "Parent seulement"
91
 
92
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
93
  msgid "CSS custom class"
94
  msgstr "Classe personnalisée CSS"
95
 
96
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr ""
99
 
100
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
101
  msgid "Reset All Filters"
102
  msgstr "Réinitialiser tous les filtres"
103
 
104
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
105
  msgid "Button Label"
106
  msgstr "Étiquette du bouton"
107
 
@@ -130,118 +130,113 @@ msgid ""
130
  "your e-commerce shop on <strong>YITH</strong></a>"
131
  msgstr ""
132
 
133
- #: includes/class.yith-wcan-admin.php:107
134
  msgctxt "[Admin] Copy confirmation message"
135
  msgid "Content copied to your clipboard"
136
  msgstr ""
137
 
138
- #: includes/class.yith-wcan-admin.php:108
139
  msgctxt "[Admin] Confirm filter delete message"
140
  msgid "Are you sure you want to delete this item?"
141
  msgstr ""
142
 
143
  #. translators: 1. Number of items that will be added.
144
- #: includes/class.yith-wcan-admin.php:110
145
  msgctxt "[Admin] Confirm add all terms message"
146
  msgid "Are you sure you want to proceed? This operation will add %s items"
147
  msgstr ""
148
 
149
- #: includes/class.yith-wcan-admin.php:111
150
  msgctxt "[Admin] Error message"
151
  msgid "\"Filter title\" is a required field"
152
  msgstr ""
153
 
154
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
155
  msgctxt "[Admin] Message shown when filter has empty title"
156
  msgid "&lt; no title &gt;"
157
  msgstr ""
158
 
159
- #: includes/class.yith-wcan-admin.php:115
160
  msgctxt "[Admin] Media library title, when selecting images"
161
  msgid "Select media you want to use"
162
  msgstr ""
163
 
164
- #: includes/class.yith-wcan-admin.php:116
165
  msgctxt "[Admin] Media library confirm button, when selecting images"
166
  msgid "Use this media"
167
  msgstr ""
168
 
169
- #: includes/class.yith-wcan-admin.php:184
170
  msgctxt "[Admin] tab name"
171
  msgid "Filter presets"
172
  msgstr ""
173
 
174
- #: includes/class.yith-wcan-admin.php:185
175
  msgctxt "[Admin] tab name"
176
  msgid "General settings"
177
  msgstr ""
178
 
179
- #: includes/class.yith-wcan-admin.php:186
180
  #, fuzzy
181
  msgctxt "[Admin] tab name"
182
  msgid "SEO"
183
  msgstr "SEO"
184
 
185
- #: includes/class.yith-wcan-admin.php:187
186
  msgctxt "[Admin] tab name"
187
  msgid "Premium Version"
188
  msgstr ""
189
 
190
- #: includes/class.yith-wcan-admin.php:191
191
  msgctxt "[Admin] tab name"
192
  msgid "Legacy"
193
  msgstr ""
194
 
195
- #: includes/class.yith-wcan-admin.php:198
196
- msgctxt "[Admin] Menu title"
197
- msgid "Ajax Product Filter"
198
- msgstr ""
199
-
200
- #: includes/class.yith-wcan-admin.php:199
201
  msgctxt "[Admin] Plugin description"
202
  msgid ""
203
  "It allows your users to find the product they are looking for as quickly as "
204
  "possible."
205
  msgstr ""
206
 
207
- #: includes/class.yith-wcan-admin.php:211
208
  msgctxt "[HELP TAB] Video title"
209
  msgid ""
210
  "Check this video to learn how to <b>create a filter preset and show it on "
211
  "the shop page:</b>"
212
  msgstr ""
213
 
214
- #: includes/class.yith-wcan-admin.php:329
215
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
216
  msgid "item"
217
  msgstr ""
218
 
219
- #: includes/class.yith-wcan-admin.php:330
220
  msgctxt "[Admin] Preset table empty message second line"
221
  msgid "But don't worry, here you can create your first one!"
222
  msgstr ""
223
 
224
- #: includes/class.yith-wcan-admin.php:478
225
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
226
  msgid "Clear Product Filter transients"
227
  msgstr ""
228
 
229
- #: includes/class.yith-wcan-admin.php:484
230
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
231
  msgid "Run filter widgets upgrade"
232
  msgstr ""
233
 
234
- #: includes/class.yith-wcan-admin.php:479
235
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
236
  msgid "Clear"
237
  msgstr ""
238
 
239
- #: includes/class.yith-wcan-admin.php:485
240
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
241
  msgid "Run"
242
  msgstr ""
243
 
244
- #: includes/class.yith-wcan-admin.php:480
245
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
246
  msgid ""
247
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -249,39 +244,39 @@ msgid ""
249
  "and filters do not display the expected results."
250
  msgstr ""
251
 
252
- #: includes/class.yith-wcan-admin.php:486
253
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
254
  msgid ""
255
  "This will create a preset for any sidebar of your shop containing filter "
256
  "widgets; preset will be configured to match widgets specifications"
257
  msgstr ""
258
 
259
- #: includes/class.yith-wcan-filter-factory.php:72
260
  msgctxt "[Admin] Filter edit form"
261
  msgid "Taxonomy"
262
  msgstr ""
263
 
264
- #: includes/class.yith-wcan-filter-factory.php:86
265
  msgctxt "[Admin] Filter edit form"
266
  msgid "Checkbox"
267
  msgstr ""
268
 
269
- #: includes/class.yith-wcan-filter-factory.php:87
270
  msgctxt "[Admin] Filter edit form"
271
  msgid "Select"
272
  msgstr ""
273
 
274
- #: includes/class.yith-wcan-filter-factory.php:88
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Text"
277
  msgstr ""
278
 
279
- #: includes/class.yith-wcan-filter-factory.php:89
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Color Swatches"
282
  msgstr ""
283
 
284
- #: includes/class.yith-wcan-filter-factory.php:90
285
  msgctxt "[Admin] Filter edit form"
286
  msgid "Label"
287
  msgstr ""
@@ -296,32 +291,32 @@ msgctxt "[Admin] Filter edit form"
296
  msgid "Enter a name to identify this filter"
297
  msgstr ""
298
 
299
- #: plugin-options/filter-options.php:41
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Filter for"
302
  msgstr ""
303
 
304
- #: plugin-options/filter-options.php:45
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Select the parameters you wish to filter for"
307
  msgstr ""
308
 
309
- #: plugin-options/filter-options.php:51
310
  msgctxt "[Admin] Filter edit form"
311
  msgid "Choose taxonomy"
312
  msgstr ""
313
 
314
- #: plugin-options/filter-options.php:55
315
  msgctxt "[Admin] Filter edit form"
316
  msgid "Select which taxonomy to use for this filter"
317
  msgstr ""
318
 
319
- #: plugin-options/filter-options.php:60
320
  msgctxt "[Admin] Filter edit form"
321
  msgid "Auto-populate with all terms"
322
  msgstr ""
323
 
324
- #: plugin-options/filter-options.php:62
325
  msgctxt "[Admin] Filter edit form"
326
  msgid ""
327
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -330,70 +325,70 @@ msgid ""
330
  "well.</span>"
331
  msgstr ""
332
 
333
- #: plugin-options/filter-options.php:71
334
  msgctxt "[Admin] Filter edit form"
335
  msgid "Choose terms"
336
  msgstr ""
337
 
338
- #: plugin-options/filter-options.php:76
339
  msgctxt "[Admin] Filter edit form"
340
  msgid "Select which terms to use for filtering"
341
  msgstr ""
342
 
343
- #: plugin-options/filter-options.php:80
344
  msgctxt "[Admin] Filter edit form"
345
  msgid "Filter type"
346
  msgstr ""
347
 
348
- #: plugin-options/filter-options.php:84
349
  msgctxt "[Admin] Filter edit form"
350
  msgid "Select the filter type for this filter"
351
  msgstr ""
352
 
353
- #: plugin-options/filter-options.php:88
354
  #, fuzzy
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Labels"
357
  msgstr "Étiquettes"
358
 
359
- #: plugin-options/filter-options.php:91
360
  #, fuzzy
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Show below"
363
  msgstr "Afficher la sélection"
364
 
365
- #: plugin-options/filter-options.php:92
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Show on the right"
368
  msgstr ""
369
 
370
- #: plugin-options/filter-options.php:93
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "Hide"
373
  msgstr ""
374
 
375
- #: plugin-options/filter-options.php:95
376
  #, fuzzy
377
  msgctxt "[Admin] Filter edit form"
378
  msgid "Choose if and where to show the label inside your filter"
379
  msgstr "Choisissez comment trier les produits WooCommerce"
380
 
381
- #: plugin-options/filter-options.php:99
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Columns number"
384
  msgstr ""
385
 
386
- #: plugin-options/filter-options.php:104
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Set the number of items per row you want to show for this design"
389
  msgstr ""
390
 
391
- #: plugin-options/filter-options.php:108
392
  msgctxt "[Admin] Filter edit form"
393
  msgid "Customize terms"
394
  msgstr ""
395
 
396
- #: plugin-options/filter-options.php:111
397
  msgctxt "[Admin] Filter edit form"
398
  msgid ""
399
  "Configure your terms individually; system will otherwise use default labels/"
@@ -407,154 +402,154 @@ msgid ""
407
  "this option and use the boxes below</span>"
408
  msgstr ""
409
 
410
- #: plugin-options/filter-options.php:121
411
  msgctxt "[Admin] Filter edit form"
412
  msgid "Terms options"
413
  msgstr ""
414
 
415
- #: plugin-options/filter-options.php:127
416
  msgctxt "[Admin] Filter edit form"
417
  msgid "Show hierarchy"
418
  msgstr ""
419
 
420
- #: plugin-options/filter-options.php:130
421
  msgctxt "[Admin] Filter edit form"
422
  msgid "No, show all terms in same level"
423
  msgstr ""
424
 
425
- #: plugin-options/filter-options.php:131
426
  msgctxt "[Admin] Filter edit form"
427
  msgid "No, show only parent terms"
428
  msgstr ""
429
 
430
- #: plugin-options/filter-options.php:132
431
  msgctxt "[Admin] Filter edit form"
432
  msgid "Yes"
433
  msgstr ""
434
 
435
- #: plugin-options/filter-options.php:134
436
  msgctxt "[Admin] Filter edit form"
437
  msgid "Choose how to show terms hierarchy"
438
  msgstr ""
439
 
440
- #: plugin-options/filter-options.php:138
441
  msgctxt "[Admin] Filter edit form"
442
  msgid "Allow multiple selection"
443
  msgstr ""
444
 
445
- #: plugin-options/filter-options.php:140
446
  msgctxt "[Admin] Filter edit form"
447
  msgid "Enable if the user can select multiple terms when filtering products"
448
  msgstr ""
449
 
450
- #: plugin-options/filter-options.php:144
451
  msgctxt "[Admin] Filter edit form"
452
  msgid "Multiselect relation"
453
  msgstr ""
454
 
455
- #: plugin-options/filter-options.php:150
456
  msgctxt "[Admin] Filter edit form"
457
  msgid "Choose how multiple terms selection should behave"
458
  msgstr ""
459
 
460
- #: includes/class.yith-wcan-filter-factory.php:104
461
  msgctxt "[Admin] Filter edit form, sorting options"
462
  msgid "Default sorting"
463
  msgstr ""
464
 
465
- #: includes/class.yith-wcan-filter-factory.php:105
466
  msgctxt "[Admin] Filter edit form, sorting options"
467
  msgid "Sort by popularity"
468
  msgstr ""
469
 
470
- #: includes/class.yith-wcan-filter-factory.php:106
471
  msgctxt "[Admin] Filter edit form, sorting options"
472
  msgid "Sort by average rating"
473
  msgstr ""
474
 
475
- #: includes/class.yith-wcan-filter-factory.php:107
476
  msgctxt "[Admin] Filter edit form, sorting options"
477
  msgid "Sort by latest"
478
  msgstr ""
479
 
480
- #: includes/class.yith-wcan-filter-factory.php:108
481
  msgctxt "[Admin] Filter edit form, sorting options"
482
  msgid "Sort by price: low to high"
483
  msgstr ""
484
 
485
- #: includes/class.yith-wcan-filter-factory.php:109
486
  msgctxt "[Admin] Filter edit form, sorting options"
487
  msgid "Sort by price: high to low"
488
  msgstr ""
489
 
490
- #: includes/class.yith-wcan-filter.php:116
491
  msgctxt "[Admin] Default filter title"
492
  msgid "New filter"
493
  msgstr ""
494
 
495
- #: includes/class.yith-wcan-frontend.php:576
496
- #: includes/filters/class.yith-wcan-filter-tax.php:62
497
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
498
  msgid "All"
499
  msgstr ""
500
 
501
- #: includes/class.yith-wcan-frontend.php:577
502
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
503
  msgid "Search..."
504
  msgstr ""
505
 
506
- #: includes/class.yith-wcan-frontend.php:578
507
  msgctxt "[FRONTEND] Empty items list in the dropdown"
508
  msgid "No item found"
509
  msgstr ""
510
 
511
  #. translators: 1. Number of items to show.
512
- #: includes/class.yith-wcan-frontend.php:580
513
  msgctxt "[FRONTEND] Show more link on terms dropdown"
514
  msgid "Show %d more"
515
  msgstr ""
516
 
517
- #: includes/class.yith-wcan-frontend.php:581
518
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
519
  msgid "Close"
520
  msgstr ""
521
 
522
- #: includes/class.yith-wcan-frontend.php:582
523
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
524
  msgid "Save"
525
  msgstr ""
526
 
527
- #: includes/class.yith-wcan-frontend.php:583
528
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
529
  msgid "Show results"
530
  msgstr ""
531
 
532
- #: includes/class.yith-wcan-frontend.php:584
533
  msgctxt ""
534
  "[FRONTEND] Label for clear selection link, that appears above filter after "
535
  "selection"
536
  msgid "Clear"
537
  msgstr ""
538
 
539
- #: includes/class.yith-wcan-frontend.php:585
540
  msgctxt ""
541
  "[FRONTEND] Label for clear selection link, that appears above filter after "
542
  "selection"
543
  msgid "Clear All"
544
  msgstr ""
545
 
546
- #: includes/class.yith-wcan-install.php:95
547
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
548
  msgid "Default preset"
549
  msgstr ""
550
 
551
  #. translators: 1. Taxonomy name.
552
- #: includes/class.yith-wcan-install.php:285
553
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
554
  msgid "Filter by %s"
555
  msgstr ""
556
 
557
- #: includes/class.yith-wcan-preset-factory.php:112
558
  msgctxt "[Admin] Label in new preset page"
559
  msgid "Default"
560
  msgstr ""
@@ -569,33 +564,33 @@ msgctxt "[Admin] Label in new preset page"
569
  msgid "Enter a name to identify this filter preset"
570
  msgstr ""
571
 
572
- #: templates/admin/preset-filters.php:20
573
  msgctxt "[Admin] Label in new preset page"
574
  msgid "Filters of this preset"
575
  msgstr ""
576
 
577
- #: includes/class.yith-wcan-presets.php:95
578
- #: includes/class.yith-wcan-presets.php:100
579
  msgctxt "[Admin] name of presets custom post type"
580
  msgid "Filter presets"
581
  msgstr ""
582
 
583
- #: includes/class.yith-wcan-presets.php:96
584
  msgctxt "[Admin] singular name of presets custom post type"
585
  msgid "Filter preset"
586
  msgstr ""
587
 
588
- #: includes/class.yith-wcan-presets.php:97
589
  msgctxt "[Admin] add new filter preset label"
590
  msgid "Add new preset"
591
  msgstr ""
592
 
593
- #: includes/class.yith-wcan-presets.php:139
594
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
595
  msgid "Convert widgets in a preset"
596
  msgstr ""
597
 
598
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
599
  msgctxt ""
600
  "[Generic] Error that happens when trying to read a filter preset that does "
601
  "not exist"
@@ -603,73 +598,73 @@ msgid "Invalid preset."
603
  msgstr ""
604
 
605
  #. translators: 1. Title of original preset.
606
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
607
  msgctxt "[ADMIN] Title of the cloned preset"
608
  msgid "%s - Copy"
609
  msgstr ""
610
 
611
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
612
  msgctxt "[ADMIN] Name of the preset elementor widget"
613
  msgid "YITH AJAX Filters Preset"
614
  msgstr ""
615
 
616
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
617
  msgctxt "[ADMIN] Name of the preset elementor widget"
618
  msgid "YITH AJAX Filters Reset Button"
619
  msgstr ""
620
 
621
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
622
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
623
  msgctxt "[ELEMENTOR] Default preset option"
624
  msgid "Choose an option"
625
  msgstr ""
626
 
627
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
628
  msgctxt "[ELEMENTOR] Section title"
629
  msgid "Filters"
630
  msgstr ""
631
 
632
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
633
  msgctxt "[ELEMENTOR] Section title"
634
  msgid "General"
635
  msgstr ""
636
 
637
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
638
  msgctxt "[ELEMENTOR] Control label"
639
  msgid "Preset"
640
  msgstr ""
641
 
642
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
643
  msgctxt "[ELEMENTOR] Widget description"
644
  msgid ""
645
  "This widget will display \"Filters reset\" button, wherever it is placed"
646
  msgstr ""
647
 
648
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
649
  msgctxt "[ELEMENTOR] Widget description"
650
  msgid ""
651
  "It will allow users to reset the filer selection; it will only appear when "
652
  "there is an active filter."
653
  msgstr ""
654
 
655
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
656
  msgctxt "[ELEMENTOR] Widget description"
657
  msgid ""
658
  "You can use this block to place \"Reset filters\" button inside your page, "
659
  "when \"Reset button position\" option won't work for your product's loop"
660
  msgstr ""
661
 
662
- #: includes/functions.yith-wcan.php:112
663
  msgctxt "For multicolor: I.E. white and red T-Shirt"
664
  msgid "Color 1"
665
  msgstr "Couleur 1"
666
 
667
- #: includes/functions.yith-wcan.php:112
668
  msgctxt "For multicolor: I.E. white and red T-Shirt"
669
  msgid "Color 2"
670
  msgstr "Couleur 2"
671
 
672
- #: includes/functions.yith-wcan.php:1001
673
  msgctxt "[FRONTEND] Star rating template"
674
  msgid "star"
675
  msgid_plural "stars"
@@ -677,27 +672,27 @@ msgstr[0] ""
677
  msgstr[1] ""
678
 
679
  #. translators: 1. Rating.
680
- #: includes/functions.yith-wcan.php:1016
681
  msgctxt "[FRONTEND] Star rating label"
682
  msgid "Rated %s out of 5"
683
  msgstr ""
684
 
685
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
686
  msgctxt "[GUTENBERG]: block name"
687
  msgid "YITH AJAX Filters Preset"
688
  msgstr ""
689
 
690
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
691
  msgctxt "[GUTENBERG]: block name"
692
  msgid "YITH Reset Filters Button"
693
  msgstr ""
694
 
695
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
696
  msgctxt "[GUTENBERG]: block description"
697
  msgid "Show filters from a preset"
698
  msgstr ""
699
 
700
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
701
  msgctxt "[GUTENBERG]: block description"
702
  msgid ""
703
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -706,110 +701,110 @@ msgid ""
706
  "product's loop"
707
  msgstr ""
708
 
709
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
710
  msgctxt "[GUTENBERG]: attribute description"
711
  msgid "Preset"
712
  msgstr ""
713
 
714
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
715
  msgctxt "[Admin] Preset table column header"
716
  msgid "Preset name"
717
  msgstr ""
718
 
719
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
720
  msgctxt "[Admin] Preset table column header"
721
  msgid "Shortcode"
722
  msgstr ""
723
 
724
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
725
  msgctxt "[Admin] Preset edit action label"
726
  msgid "Edit this preset"
727
  msgstr ""
728
 
729
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
730
  msgctxt "[Admin] Preset clone action label"
731
  msgid "Clone this preset"
732
  msgstr ""
733
 
734
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
735
  msgctxt "[Admin] Preset delete action label"
736
  msgid "Delete this preset"
737
  msgstr ""
738
 
739
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
740
  msgctxt "[Admin] Preset delete confirm label"
741
  msgid "Are you sure you want to delete this preset?"
742
  msgstr ""
743
 
744
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
745
  msgctxt "[Admin] on-off yes"
746
  msgid "YES"
747
  msgstr ""
748
 
749
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
750
  msgctxt "[Admin] on-off no"
751
  msgid "NO"
752
  msgstr ""
753
 
754
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
755
  msgctxt ""
756
  "[Admin] Name of the item missing, shown in preset-empty-content template"
757
  msgid "filter preset"
758
  msgstr ""
759
 
760
- #: templates/admin/preset-filters.php:29
761
  msgctxt ""
762
  "[Admin] Name of the item missing, shown in preset-empty-content template"
763
  msgid "filter"
764
  msgstr ""
765
 
766
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
767
  msgctxt "[Admin] New preset button label"
768
  msgid "Create a new preset"
769
  msgstr ""
770
 
771
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
772
  msgctxt "[ADMIN] Name of the preset widget"
773
  msgid "YITH AJAX Filters Preset"
774
  msgstr ""
775
 
776
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
777
  msgctxt "[ADMIN] Preset widget options"
778
  msgid "Preset"
779
  msgstr ""
780
 
781
  #. translators: 1. Url to Ajax Product filter admin panel.
782
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
783
  msgctxt "[ADMIN] Preset widget options"
784
  msgid ""
785
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
786
  "Presets</a> and create your first preset"
787
  msgstr ""
788
 
789
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
790
  msgctxt "[Plugin Name] Admin: Widget Title"
791
  msgid "YITH AJAX Product Filter"
792
  msgstr ""
793
 
794
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
795
  #, fuzzy
796
  msgctxt ""
797
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
798
  msgid "AND"
799
  msgstr "ET"
800
 
801
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
802
  msgctxt "[Plugin Name]"
803
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
804
  msgstr ""
805
 
806
- #: plugin-options/filter-options.php:147
807
  msgctxt ""
808
  "[Admin] Filter edit form; logical operator that affects query behaviour"
809
  msgid "AND - Results need to match all selected terms at the same time"
810
  msgstr ""
811
 
812
- #: plugin-options/filter-options.php:148
813
  msgctxt ""
814
  "[Admin] Filter edit form; logical operator that affects query behaviour"
815
  msgid "OR - Results need to match at least one of the selected terms"
@@ -1074,21 +1069,21 @@ msgstr ""
1074
  msgctxt "[ADMIN] Premium tab"
1075
  msgid ""
1076
  "<b>Filter by category</b>: to let users choose which product category to "
1077
- "view<br/>\r\n"
1078
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1079
  "<b>Filter by price</b>: to let users filter products by a specific price "
1080
- "range (based on their budget availability)<br/>\r\n"
1081
  "<b>Filter by color and size</b>: you can create filters for all the "
1082
  "attributes available in your store, like color and size. For the color "
1083
  "filter, you can either choose square or circular color swatches or use "
1084
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1085
  "<b>Filter by rating</b>: to let your users filter products based on other "
1086
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1087
- "concentrate only on high-rated ones)<br/>\r\n"
1088
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1089
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1090
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1091
- "filter products and view only those with a discount<br/>\r\n"
1092
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1093
  "filter products based on their needs and exclude out-of-stock products from "
1094
  "the list"
@@ -1205,73 +1200,73 @@ msgid ""
1205
  "easier to share)"
1206
  msgstr ""
1207
 
1208
- #: templates/admin/preset-edit.php:29
1209
  msgctxt "[Admin] Back link in new preset page"
1210
  msgid "< back to preset list"
1211
  msgstr ""
1212
 
1213
- #: templates/admin/preset-edit.php:36
1214
  msgctxt "[ADMIN] Title for new preset page"
1215
  msgid "Edit filter preset"
1216
  msgstr ""
1217
 
1218
- #: templates/admin/preset-edit.php:38
1219
  msgctxt "[ADMIN] Title for new preset page"
1220
  msgid "Add new filter preset"
1221
  msgstr ""
1222
 
1223
- #: templates/admin/preset-edit.php:45
1224
  msgctxt "[ADMIN] Preset save message"
1225
  msgid "Preset saved correctly"
1226
  msgstr ""
1227
 
1228
- #: templates/admin/preset-edit.php:90
1229
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1230
  msgid "Save preset"
1231
  msgstr ""
1232
 
1233
- #: templates/admin/preset-empty-content.php:27
1234
  msgctxt "Alt text for empty preset image"
1235
  msgid "Empty preset"
1236
  msgstr ""
1237
 
1238
  #. translators: 1. Missing item name.
1239
- #: templates/admin/preset-empty-content.php:33
1240
  msgctxt "[Admin] Preset table empty message"
1241
  msgid "You don't have any %s yet."
1242
  msgstr ""
1243
 
1244
- #: templates/admin/preset-filter-term.php:28
1245
  msgctxt "[Admin] Term edit field label (preset edit page)"
1246
  msgid "Label"
1247
  msgstr ""
1248
 
1249
- #: templates/admin/preset-filter-term.php:33
1250
  msgctxt "[Admin] Term edit field label (preset edit page)"
1251
  msgid "Tooltip"
1252
  msgstr ""
1253
 
1254
- #: templates/admin/preset-filter-term.php:39
1255
  msgctxt "[Admin] Term edit field label (preset edit page)"
1256
  msgid "Color"
1257
  msgstr ""
1258
 
1259
- #: templates/admin/preset-filter.php:89
1260
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1261
  msgid "Save Filter"
1262
  msgstr ""
1263
 
1264
- #: templates/admin/preset-filter.php:90
1265
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1266
  msgid "Delete Filter"
1267
  msgstr ""
1268
 
1269
- #: templates/admin/preset-filters.php:31
1270
  msgctxt "[Admin] New filter button label"
1271
  msgid "Add a new filter"
1272
  msgstr ""
1273
 
1274
- #: templates/admin/preset-filters.php:55
1275
  msgctxt "[Admin] Add new filter in new preset page"
1276
  msgid "+ Add filter"
1277
  msgstr ""
@@ -1282,12 +1277,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1282
  msgid "See %d more filters"
1283
  msgstr ""
1284
 
1285
- #: templates/admin/upgrade-note-modal.php:31
1286
  msgctxt "[ADMIN] Upgrade note modal title"
1287
  msgid "Use the new filter preset feature for your filters"
1288
  msgstr ""
1289
 
1290
- #: templates/admin/upgrade-note-modal.php:36
1291
  msgctxt "[ADMIN] Upgrade note modal content"
1292
  msgid ""
1293
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1297,7 +1292,7 @@ msgid ""
1297
  msgstr ""
1298
 
1299
  #. translators: 1. Url to demo video. 2. Url to docs.
1300
- #: templates/admin/upgrade-note-modal.php:49
1301
  msgctxt "[ADMIN] Upgrade note modal content"
1302
  msgid ""
1303
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1305,14 +1300,14 @@ msgid ""
1305
  msgstr ""
1306
 
1307
  #. translators: 1. Url to docs.
1308
- #: templates/admin/upgrade-note-modal.php:62
1309
  msgctxt "[ADMIN] Upgrade note modal content"
1310
  msgid ""
1311
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1312
  "to use this new feature."
1313
  msgstr ""
1314
 
1315
- #: templates/admin/upgrade-note-modal.php:76
1316
  msgctxt "[ADMIN] Upgrade note modal content"
1317
  msgid ""
1318
  "We offer a tool to automatically convert the widget filters of your shop in "
@@ -1321,7 +1316,7 @@ msgid ""
1321
  "will be lost during the process.</b>"
1322
  msgstr ""
1323
 
1324
- #: templates/admin/upgrade-note-modal.php:87
1325
  msgctxt "[ADMIN] Upgrade note modal content"
1326
  msgid ""
1327
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1329,17 +1324,17 @@ msgid ""
1329
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1330
  msgstr ""
1331
 
1332
- #: templates/admin/upgrade-note-modal.php:96
1333
  msgctxt "[ADMIN] Upgrade note modal button label"
1334
  msgid "Convert your widgets in a preset now"
1335
  msgstr ""
1336
 
1337
- #: templates/admin/upgrade-note-modal.php:97
1338
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1339
  msgid "No thanks"
1340
  msgstr ""
1341
 
1342
- #: templates/filters/global/reset-filters.php:23
1343
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1344
  msgid "Reset filters"
1345
  msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2020-12-29 14:36:56+0000\n"
10
  "Language: fr\n"
11
  "MIME-Version: 1.0\n"
14
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr ""
20
 
21
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
22
+ #: includes/functions-yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Terme"
25
 
26
+ #: includes/functions-yith-wcan.php:98
27
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
28
  msgid "Color"
29
  msgstr "Couleur"
30
 
31
+ #: includes/functions-yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Étiquettes"
34
 
35
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filtrer la liste des produits sans recharger la page"
38
 
39
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
40
  msgid "Filters:"
41
  msgstr "Filtres :"
42
 
43
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
44
  msgid "List"
45
  msgstr "Liste"
46
 
47
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
48
  msgid "Label"
49
  msgstr "Étiquette"
50
 
51
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
52
  msgid "Dropdown"
53
  msgstr "Menu déroulant"
54
 
55
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
56
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
57
  msgid "Title"
58
  msgstr "Titre"
59
 
60
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
61
  msgid "Type:"
62
  msgstr "Type :"
63
 
64
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
65
  msgid "Query Type:"
66
  msgstr "Type de requête :"
67
 
68
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
69
  msgid "OR"
70
  msgstr "OU"
71
 
72
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
73
  msgid "Attribute:"
74
  msgstr "Attribut :"
75
 
76
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
77
  msgid "Display (default All):"
78
  msgstr "Affichage (tout par défaut) :"
79
 
80
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
81
  msgid "All (no hierarchical)"
82
  msgstr "Tout (pas de hiérarchie)"
83
 
84
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
85
  msgid "All (hierarchical)"
86
  msgstr "Tout (hiérarchique)"
87
 
88
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
89
  msgid "Only Parent"
90
  msgstr "Parent seulement"
91
 
92
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
93
  msgid "CSS custom class"
94
  msgstr "Classe personnalisée CSS"
95
 
96
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr ""
99
 
100
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
101
  msgid "Reset All Filters"
102
  msgstr "Réinitialiser tous les filtres"
103
 
104
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
105
  msgid "Button Label"
106
  msgstr "Étiquette du bouton"
107
 
130
  "your e-commerce shop on <strong>YITH</strong></a>"
131
  msgstr ""
132
 
133
+ #: includes/class-yith-wcan-admin.php:107
134
  msgctxt "[Admin] Copy confirmation message"
135
  msgid "Content copied to your clipboard"
136
  msgstr ""
137
 
138
+ #: includes/class-yith-wcan-admin.php:108
139
  msgctxt "[Admin] Confirm filter delete message"
140
  msgid "Are you sure you want to delete this item?"
141
  msgstr ""
142
 
143
  #. translators: 1. Number of items that will be added.
144
+ #: includes/class-yith-wcan-admin.php:110
145
  msgctxt "[Admin] Confirm add all terms message"
146
  msgid "Are you sure you want to proceed? This operation will add %s items"
147
  msgstr ""
148
 
149
+ #: includes/class-yith-wcan-admin.php:111
150
  msgctxt "[Admin] Error message"
151
  msgid "\"Filter title\" is a required field"
152
  msgstr ""
153
 
154
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
155
  msgctxt "[Admin] Message shown when filter has empty title"
156
  msgid "&lt; no title &gt;"
157
  msgstr ""
158
 
159
+ #: includes/class-yith-wcan-admin.php:115
160
  msgctxt "[Admin] Media library title, when selecting images"
161
  msgid "Select media you want to use"
162
  msgstr ""
163
 
164
+ #: includes/class-yith-wcan-admin.php:116
165
  msgctxt "[Admin] Media library confirm button, when selecting images"
166
  msgid "Use this media"
167
  msgstr ""
168
 
169
+ #: includes/class-yith-wcan-admin.php:184
170
  msgctxt "[Admin] tab name"
171
  msgid "Filter presets"
172
  msgstr ""
173
 
174
+ #: includes/class-yith-wcan-admin.php:185
175
  msgctxt "[Admin] tab name"
176
  msgid "General settings"
177
  msgstr ""
178
 
179
+ #: includes/class-yith-wcan-admin.php:186
180
  #, fuzzy
181
  msgctxt "[Admin] tab name"
182
  msgid "SEO"
183
  msgstr "SEO"
184
 
185
+ #: includes/class-yith-wcan-admin.php:187
186
  msgctxt "[Admin] tab name"
187
  msgid "Premium Version"
188
  msgstr ""
189
 
190
+ #: includes/class-yith-wcan-admin.php:191
191
  msgctxt "[Admin] tab name"
192
  msgid "Legacy"
193
  msgstr ""
194
 
195
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
196
  msgctxt "[Admin] Plugin description"
197
  msgid ""
198
  "It allows your users to find the product they are looking for as quickly as "
199
  "possible."
200
  msgstr ""
201
 
202
+ #: includes/class-yith-wcan-admin.php:211
203
  msgctxt "[HELP TAB] Video title"
204
  msgid ""
205
  "Check this video to learn how to <b>create a filter preset and show it on "
206
  "the shop page:</b>"
207
  msgstr ""
208
 
209
+ #: includes/class-yith-wcan-admin.php:329
210
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
211
  msgid "item"
212
  msgstr ""
213
 
214
+ #: includes/class-yith-wcan-admin.php:330
215
  msgctxt "[Admin] Preset table empty message second line"
216
  msgid "But don't worry, here you can create your first one!"
217
  msgstr ""
218
 
219
+ #: includes/class-yith-wcan-admin.php:480
220
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
221
  msgid "Clear Product Filter transients"
222
  msgstr ""
223
 
224
+ #: includes/class-yith-wcan-admin.php:486
225
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
226
  msgid "Run filter widgets upgrade"
227
  msgstr ""
228
 
229
+ #: includes/class-yith-wcan-admin.php:481
230
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
231
  msgid "Clear"
232
  msgstr ""
233
 
234
+ #: includes/class-yith-wcan-admin.php:487
235
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
236
  msgid "Run"
237
  msgstr ""
238
 
239
+ #: includes/class-yith-wcan-admin.php:482
240
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
241
  msgid ""
242
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
244
  "and filters do not display the expected results."
245
  msgstr ""
246
 
247
+ #: includes/class-yith-wcan-admin.php:488
248
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
249
  msgid ""
250
  "This will create a preset for any sidebar of your shop containing filter "
251
  "widgets; preset will be configured to match widgets specifications"
252
  msgstr ""
253
 
254
+ #: includes/class-yith-wcan-filter-factory.php:72
255
  msgctxt "[Admin] Filter edit form"
256
  msgid "Taxonomy"
257
  msgstr ""
258
 
259
+ #: includes/class-yith-wcan-filter-factory.php:86
260
  msgctxt "[Admin] Filter edit form"
261
  msgid "Checkbox"
262
  msgstr ""
263
 
264
+ #: includes/class-yith-wcan-filter-factory.php:87
265
  msgctxt "[Admin] Filter edit form"
266
  msgid "Select"
267
  msgstr ""
268
 
269
+ #: includes/class-yith-wcan-filter-factory.php:88
270
  msgctxt "[Admin] Filter edit form"
271
  msgid "Text"
272
  msgstr ""
273
 
274
+ #: includes/class-yith-wcan-filter-factory.php:89
275
  msgctxt "[Admin] Filter edit form"
276
  msgid "Color Swatches"
277
  msgstr ""
278
 
279
+ #: includes/class-yith-wcan-filter-factory.php:90
280
  msgctxt "[Admin] Filter edit form"
281
  msgid "Label"
282
  msgstr ""
291
  msgid "Enter a name to identify this filter"
292
  msgstr ""
293
 
294
+ #: plugin-options/filter-options.php:40
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Filter for"
297
  msgstr ""
298
 
299
+ #: plugin-options/filter-options.php:44
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Select the parameters you wish to filter for"
302
  msgstr ""
303
 
304
+ #: plugin-options/filter-options.php:49
305
  msgctxt "[Admin] Filter edit form"
306
  msgid "Choose taxonomy"
307
  msgstr ""
308
 
309
+ #: plugin-options/filter-options.php:53
310
  msgctxt "[Admin] Filter edit form"
311
  msgid "Select which taxonomy to use for this filter"
312
  msgstr ""
313
 
314
+ #: plugin-options/filter-options.php:58
315
  msgctxt "[Admin] Filter edit form"
316
  msgid "Auto-populate with all terms"
317
  msgstr ""
318
 
319
+ #: plugin-options/filter-options.php:60
320
  msgctxt "[Admin] Filter edit form"
321
  msgid ""
322
  "Populate this filter with all existing terms of the selected taxonomy.\n"
325
  "well.</span>"
326
  msgstr ""
327
 
328
+ #: plugin-options/filter-options.php:69
329
  msgctxt "[Admin] Filter edit form"
330
  msgid "Choose terms"
331
  msgstr ""
332
 
333
+ #: plugin-options/filter-options.php:74
334
  msgctxt "[Admin] Filter edit form"
335
  msgid "Select which terms to use for filtering"
336
  msgstr ""
337
 
338
+ #: plugin-options/filter-options.php:78
339
  msgctxt "[Admin] Filter edit form"
340
  msgid "Filter type"
341
  msgstr ""
342
 
343
+ #: plugin-options/filter-options.php:82
344
  msgctxt "[Admin] Filter edit form"
345
  msgid "Select the filter type for this filter"
346
  msgstr ""
347
 
348
+ #: plugin-options/filter-options.php:86
349
  #, fuzzy
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Labels"
352
  msgstr "Étiquettes"
353
 
354
+ #: plugin-options/filter-options.php:89
355
  #, fuzzy
356
  msgctxt "[Admin] Filter edit form"
357
  msgid "Show below"
358
  msgstr "Afficher la sélection"
359
 
360
+ #: plugin-options/filter-options.php:90
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Show on the right"
363
  msgstr ""
364
 
365
+ #: plugin-options/filter-options.php:91
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Hide"
368
  msgstr ""
369
 
370
+ #: plugin-options/filter-options.php:93
371
  #, fuzzy
372
  msgctxt "[Admin] Filter edit form"
373
  msgid "Choose if and where to show the label inside your filter"
374
  msgstr "Choisissez comment trier les produits WooCommerce"
375
 
376
+ #: plugin-options/filter-options.php:97
377
  msgctxt "[Admin] Filter edit form"
378
  msgid "Columns number"
379
  msgstr ""
380
 
381
+ #: plugin-options/filter-options.php:102
382
  msgctxt "[Admin] Filter edit form"
383
  msgid "Set the number of items per row you want to show for this design"
384
  msgstr ""
385
 
386
+ #: plugin-options/filter-options.php:106
387
  msgctxt "[Admin] Filter edit form"
388
  msgid "Customize terms"
389
  msgstr ""
390
 
391
+ #: plugin-options/filter-options.php:109
392
  msgctxt "[Admin] Filter edit form"
393
  msgid ""
394
  "Configure your terms individually; system will otherwise use default labels/"
402
  "this option and use the boxes below</span>"
403
  msgstr ""
404
 
405
+ #: plugin-options/filter-options.php:119
406
  msgctxt "[Admin] Filter edit form"
407
  msgid "Terms options"
408
  msgstr ""
409
 
410
+ #: plugin-options/filter-options.php:125
411
  msgctxt "[Admin] Filter edit form"
412
  msgid "Show hierarchy"
413
  msgstr ""
414
 
415
+ #: plugin-options/filter-options.php:128
416
  msgctxt "[Admin] Filter edit form"
417
  msgid "No, show all terms in same level"
418
  msgstr ""
419
 
420
+ #: plugin-options/filter-options.php:129
421
  msgctxt "[Admin] Filter edit form"
422
  msgid "No, show only parent terms"
423
  msgstr ""
424
 
425
+ #: plugin-options/filter-options.php:130
426
  msgctxt "[Admin] Filter edit form"
427
  msgid "Yes"
428
  msgstr ""
429
 
430
+ #: plugin-options/filter-options.php:132
431
  msgctxt "[Admin] Filter edit form"
432
  msgid "Choose how to show terms hierarchy"
433
  msgstr ""
434
 
435
+ #: plugin-options/filter-options.php:136
436
  msgctxt "[Admin] Filter edit form"
437
  msgid "Allow multiple selection"
438
  msgstr ""
439
 
440
+ #: plugin-options/filter-options.php:138
441
  msgctxt "[Admin] Filter edit form"
442
  msgid "Enable if the user can select multiple terms when filtering products"
443
  msgstr ""
444
 
445
+ #: plugin-options/filter-options.php:142
446
  msgctxt "[Admin] Filter edit form"
447
  msgid "Multiselect relation"
448
  msgstr ""
449
 
450
+ #: plugin-options/filter-options.php:148
451
  msgctxt "[Admin] Filter edit form"
452
  msgid "Choose how multiple terms selection should behave"
453
  msgstr ""
454
 
455
+ #: includes/class-yith-wcan-filter-factory.php:104
456
  msgctxt "[Admin] Filter edit form, sorting options"
457
  msgid "Default sorting"
458
  msgstr ""
459
 
460
+ #: includes/class-yith-wcan-filter-factory.php:105
461
  msgctxt "[Admin] Filter edit form, sorting options"
462
  msgid "Sort by popularity"
463
  msgstr ""
464
 
465
+ #: includes/class-yith-wcan-filter-factory.php:106
466
  msgctxt "[Admin] Filter edit form, sorting options"
467
  msgid "Sort by average rating"
468
  msgstr ""
469
 
470
+ #: includes/class-yith-wcan-filter-factory.php:107
471
  msgctxt "[Admin] Filter edit form, sorting options"
472
  msgid "Sort by latest"
473
  msgstr ""
474
 
475
+ #: includes/class-yith-wcan-filter-factory.php:108
476
  msgctxt "[Admin] Filter edit form, sorting options"
477
  msgid "Sort by price: low to high"
478
  msgstr ""
479
 
480
+ #: includes/class-yith-wcan-filter-factory.php:109
481
  msgctxt "[Admin] Filter edit form, sorting options"
482
  msgid "Sort by price: high to low"
483
  msgstr ""
484
 
485
+ #: includes/class-yith-wcan-filter.php:116
486
  msgctxt "[Admin] Default filter title"
487
  msgid "New filter"
488
  msgstr ""
489
 
490
+ #: includes/class-yith-wcan-frontend.php:591
491
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
492
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
493
  msgid "All"
494
  msgstr ""
495
 
496
+ #: includes/class-yith-wcan-frontend.php:592
497
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
498
  msgid "Search..."
499
  msgstr ""
500
 
501
+ #: includes/class-yith-wcan-frontend.php:593
502
  msgctxt "[FRONTEND] Empty items list in the dropdown"
503
  msgid "No item found"
504
  msgstr ""
505
 
506
  #. translators: 1. Number of items to show.
507
+ #: includes/class-yith-wcan-frontend.php:595
508
  msgctxt "[FRONTEND] Show more link on terms dropdown"
509
  msgid "Show %d more"
510
  msgstr ""
511
 
512
+ #: includes/class-yith-wcan-frontend.php:596
513
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
514
  msgid "Close"
515
  msgstr ""
516
 
517
+ #: includes/class-yith-wcan-frontend.php:597
518
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
519
  msgid "Save"
520
  msgstr ""
521
 
522
+ #: includes/class-yith-wcan-frontend.php:598
523
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
524
  msgid "Show results"
525
  msgstr ""
526
 
527
+ #: includes/class-yith-wcan-frontend.php:599
528
  msgctxt ""
529
  "[FRONTEND] Label for clear selection link, that appears above filter after "
530
  "selection"
531
  msgid "Clear"
532
  msgstr ""
533
 
534
+ #: includes/class-yith-wcan-frontend.php:600
535
  msgctxt ""
536
  "[FRONTEND] Label for clear selection link, that appears above filter after "
537
  "selection"
538
  msgid "Clear All"
539
  msgstr ""
540
 
541
+ #: includes/class-yith-wcan-install.php:95
542
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
543
  msgid "Default preset"
544
  msgstr ""
545
 
546
  #. translators: 1. Taxonomy name.
547
+ #: includes/class-yith-wcan-install.php:285
548
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
549
  msgid "Filter by %s"
550
  msgstr ""
551
 
552
+ #: includes/class-yith-wcan-preset-factory.php:112
553
  msgctxt "[Admin] Label in new preset page"
554
  msgid "Default"
555
  msgstr ""
564
  msgid "Enter a name to identify this filter preset"
565
  msgstr ""
566
 
567
+ #: templates/admin/preset-filters.php:22
568
  msgctxt "[Admin] Label in new preset page"
569
  msgid "Filters of this preset"
570
  msgstr ""
571
 
572
+ #: includes/class-yith-wcan-presets.php:95
573
+ #: includes/class-yith-wcan-presets.php:100
574
  msgctxt "[Admin] name of presets custom post type"
575
  msgid "Filter presets"
576
  msgstr ""
577
 
578
+ #: includes/class-yith-wcan-presets.php:96
579
  msgctxt "[Admin] singular name of presets custom post type"
580
  msgid "Filter preset"
581
  msgstr ""
582
 
583
+ #: includes/class-yith-wcan-presets.php:97
584
  msgctxt "[Admin] add new filter preset label"
585
  msgid "Add new preset"
586
  msgstr ""
587
 
588
+ #: includes/class-yith-wcan-presets.php:139
589
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
590
  msgid "Convert widgets in a preset"
591
  msgstr ""
592
 
593
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
594
  msgctxt ""
595
  "[Generic] Error that happens when trying to read a filter preset that does "
596
  "not exist"
598
  msgstr ""
599
 
600
  #. translators: 1. Title of original preset.
601
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
602
  msgctxt "[ADMIN] Title of the cloned preset"
603
  msgid "%s - Copy"
604
  msgstr ""
605
 
606
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
607
  msgctxt "[ADMIN] Name of the preset elementor widget"
608
  msgid "YITH AJAX Filters Preset"
609
  msgstr ""
610
 
611
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
612
  msgctxt "[ADMIN] Name of the preset elementor widget"
613
  msgid "YITH AJAX Filters Reset Button"
614
  msgstr ""
615
 
616
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
617
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
618
  msgctxt "[ELEMENTOR] Default preset option"
619
  msgid "Choose an option"
620
  msgstr ""
621
 
622
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
623
  msgctxt "[ELEMENTOR] Section title"
624
  msgid "Filters"
625
  msgstr ""
626
 
627
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
628
  msgctxt "[ELEMENTOR] Section title"
629
  msgid "General"
630
  msgstr ""
631
 
632
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
633
  msgctxt "[ELEMENTOR] Control label"
634
  msgid "Preset"
635
  msgstr ""
636
 
637
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
638
  msgctxt "[ELEMENTOR] Widget description"
639
  msgid ""
640
  "This widget will display \"Filters reset\" button, wherever it is placed"
641
  msgstr ""
642
 
643
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
644
  msgctxt "[ELEMENTOR] Widget description"
645
  msgid ""
646
  "It will allow users to reset the filer selection; it will only appear when "
647
  "there is an active filter."
648
  msgstr ""
649
 
650
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
651
  msgctxt "[ELEMENTOR] Widget description"
652
  msgid ""
653
  "You can use this block to place \"Reset filters\" button inside your page, "
654
  "when \"Reset button position\" option won't work for your product's loop"
655
  msgstr ""
656
 
657
+ #: includes/functions-yith-wcan.php:112
658
  msgctxt "For multicolor: I.E. white and red T-Shirt"
659
  msgid "Color 1"
660
  msgstr "Couleur 1"
661
 
662
+ #: includes/functions-yith-wcan.php:112
663
  msgctxt "For multicolor: I.E. white and red T-Shirt"
664
  msgid "Color 2"
665
  msgstr "Couleur 2"
666
 
667
+ #: includes/functions-yith-wcan.php:1026
668
  msgctxt "[FRONTEND] Star rating template"
669
  msgid "star"
670
  msgid_plural "stars"
672
  msgstr[1] ""
673
 
674
  #. translators: 1. Rating.
675
+ #: includes/functions-yith-wcan.php:1041
676
  msgctxt "[FRONTEND] Star rating label"
677
  msgid "Rated %s out of 5"
678
  msgstr ""
679
 
680
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
681
  msgctxt "[GUTENBERG]: block name"
682
  msgid "YITH AJAX Filters Preset"
683
  msgstr ""
684
 
685
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
686
  msgctxt "[GUTENBERG]: block name"
687
  msgid "YITH Reset Filters Button"
688
  msgstr ""
689
 
690
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
691
  msgctxt "[GUTENBERG]: block description"
692
  msgid "Show filters from a preset"
693
  msgstr ""
694
 
695
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
696
  msgctxt "[GUTENBERG]: block description"
697
  msgid ""
698
  "Show reset filters button, when a filter is applied and button is enabled in "
701
  "product's loop"
702
  msgstr ""
703
 
704
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
705
  msgctxt "[GUTENBERG]: attribute description"
706
  msgid "Preset"
707
  msgstr ""
708
 
709
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
710
  msgctxt "[Admin] Preset table column header"
711
  msgid "Preset name"
712
  msgstr ""
713
 
714
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
715
  msgctxt "[Admin] Preset table column header"
716
  msgid "Shortcode"
717
  msgstr ""
718
 
719
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
720
  msgctxt "[Admin] Preset edit action label"
721
  msgid "Edit this preset"
722
  msgstr ""
723
 
724
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
725
  msgctxt "[Admin] Preset clone action label"
726
  msgid "Clone this preset"
727
  msgstr ""
728
 
729
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
730
  msgctxt "[Admin] Preset delete action label"
731
  msgid "Delete this preset"
732
  msgstr ""
733
 
734
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
735
  msgctxt "[Admin] Preset delete confirm label"
736
  msgid "Are you sure you want to delete this preset?"
737
  msgstr ""
738
 
739
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
740
  msgctxt "[Admin] on-off yes"
741
  msgid "YES"
742
  msgstr ""
743
 
744
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
745
  msgctxt "[Admin] on-off no"
746
  msgid "NO"
747
  msgstr ""
748
 
749
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
750
  msgctxt ""
751
  "[Admin] Name of the item missing, shown in preset-empty-content template"
752
  msgid "filter preset"
753
  msgstr ""
754
 
755
+ #: templates/admin/preset-filters.php:31
756
  msgctxt ""
757
  "[Admin] Name of the item missing, shown in preset-empty-content template"
758
  msgid "filter"
759
  msgstr ""
760
 
761
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
762
  msgctxt "[Admin] New preset button label"
763
  msgid "Create a new preset"
764
  msgstr ""
765
 
766
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
767
  msgctxt "[ADMIN] Name of the preset widget"
768
  msgid "YITH AJAX Filters Preset"
769
  msgstr ""
770
 
771
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
772
  msgctxt "[ADMIN] Preset widget options"
773
  msgid "Preset"
774
  msgstr ""
775
 
776
  #. translators: 1. Url to Ajax Product filter admin panel.
777
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
778
  msgctxt "[ADMIN] Preset widget options"
779
  msgid ""
780
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
781
  "Presets</a> and create your first preset"
782
  msgstr ""
783
 
784
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
785
  msgctxt "[Plugin Name] Admin: Widget Title"
786
  msgid "YITH AJAX Product Filter"
787
  msgstr ""
788
 
789
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
790
  #, fuzzy
791
  msgctxt ""
792
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
793
  msgid "AND"
794
  msgstr "ET"
795
 
796
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
797
  msgctxt "[Plugin Name]"
798
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
799
  msgstr ""
800
 
801
+ #: plugin-options/filter-options.php:145
802
  msgctxt ""
803
  "[Admin] Filter edit form; logical operator that affects query behaviour"
804
  msgid "AND - Results need to match all selected terms at the same time"
805
  msgstr ""
806
 
807
+ #: plugin-options/filter-options.php:146
808
  msgctxt ""
809
  "[Admin] Filter edit form; logical operator that affects query behaviour"
810
  msgid "OR - Results need to match at least one of the selected terms"
1069
  msgctxt "[ADMIN] Premium tab"
1070
  msgid ""
1071
  "<b>Filter by category</b>: to let users choose which product category to "
1072
+ "view<br/>\n"
1073
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1074
  "<b>Filter by price</b>: to let users filter products by a specific price "
1075
+ "range (based on their budget availability)<br/>\n"
1076
  "<b>Filter by color and size</b>: you can create filters for all the "
1077
  "attributes available in your store, like color and size. For the color "
1078
  "filter, you can either choose square or circular color swatches or use "
1079
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1080
  "<b>Filter by rating</b>: to let your users filter products based on other "
1081
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1082
+ "concentrate only on high-rated ones)<br/>\n"
1083
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1084
+ "on plugin, you can also filter products by specific brands<br/>\n"
1085
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1086
+ "filter products and view only those with a discount<br/>\n"
1087
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1088
  "filter products based on their needs and exclude out-of-stock products from "
1089
  "the list"
1200
  "easier to share)"
1201
  msgstr ""
1202
 
1203
+ #: templates/admin/preset-edit.php:31
1204
  msgctxt "[Admin] Back link in new preset page"
1205
  msgid "< back to preset list"
1206
  msgstr ""
1207
 
1208
+ #: templates/admin/preset-edit.php:38
1209
  msgctxt "[ADMIN] Title for new preset page"
1210
  msgid "Edit filter preset"
1211
  msgstr ""
1212
 
1213
+ #: templates/admin/preset-edit.php:40
1214
  msgctxt "[ADMIN] Title for new preset page"
1215
  msgid "Add new filter preset"
1216
  msgstr ""
1217
 
1218
+ #: templates/admin/preset-edit.php:47
1219
  msgctxt "[ADMIN] Preset save message"
1220
  msgid "Preset saved correctly"
1221
  msgstr ""
1222
 
1223
+ #: templates/admin/preset-edit.php:93
1224
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1225
  msgid "Save preset"
1226
  msgstr ""
1227
 
1228
+ #: templates/admin/preset-empty-content.php:29
1229
  msgctxt "Alt text for empty preset image"
1230
  msgid "Empty preset"
1231
  msgstr ""
1232
 
1233
  #. translators: 1. Missing item name.
1234
+ #: templates/admin/preset-empty-content.php:35
1235
  msgctxt "[Admin] Preset table empty message"
1236
  msgid "You don't have any %s yet."
1237
  msgstr ""
1238
 
1239
+ #: templates/admin/preset-filter-term.php:30
1240
  msgctxt "[Admin] Term edit field label (preset edit page)"
1241
  msgid "Label"
1242
  msgstr ""
1243
 
1244
+ #: templates/admin/preset-filter-term.php:35
1245
  msgctxt "[Admin] Term edit field label (preset edit page)"
1246
  msgid "Tooltip"
1247
  msgstr ""
1248
 
1249
+ #: templates/admin/preset-filter-term.php:41
1250
  msgctxt "[Admin] Term edit field label (preset edit page)"
1251
  msgid "Color"
1252
  msgstr ""
1253
 
1254
+ #: templates/admin/preset-filter.php:91
1255
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1256
  msgid "Save Filter"
1257
  msgstr ""
1258
 
1259
+ #: templates/admin/preset-filter.php:92
1260
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1261
  msgid "Delete Filter"
1262
  msgstr ""
1263
 
1264
+ #: templates/admin/preset-filters.php:33
1265
  msgctxt "[Admin] New filter button label"
1266
  msgid "Add a new filter"
1267
  msgstr ""
1268
 
1269
+ #: templates/admin/preset-filters.php:57
1270
  msgctxt "[Admin] Add new filter in new preset page"
1271
  msgid "+ Add filter"
1272
  msgstr ""
1277
  msgid "See %d more filters"
1278
  msgstr ""
1279
 
1280
+ #: templates/admin/upgrade-note-modal.php:33
1281
  msgctxt "[ADMIN] Upgrade note modal title"
1282
  msgid "Use the new filter preset feature for your filters"
1283
  msgstr ""
1284
 
1285
+ #: templates/admin/upgrade-note-modal.php:38
1286
  msgctxt "[ADMIN] Upgrade note modal content"
1287
  msgid ""
1288
  "From the version 4.0 we built a powerful system that allows you to create "
1292
  msgstr ""
1293
 
1294
  #. translators: 1. Url to demo video. 2. Url to docs.
1295
+ #: templates/admin/upgrade-note-modal.php:51
1296
  msgctxt "[ADMIN] Upgrade note modal content"
1297
  msgid ""
1298
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1300
  msgstr ""
1301
 
1302
  #. translators: 1. Url to docs.
1303
+ #: templates/admin/upgrade-note-modal.php:64
1304
  msgctxt "[ADMIN] Upgrade note modal content"
1305
  msgid ""
1306
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1307
  "to use this new feature."
1308
  msgstr ""
1309
 
1310
+ #: templates/admin/upgrade-note-modal.php:78
1311
  msgctxt "[ADMIN] Upgrade note modal content"
1312
  msgid ""
1313
  "We offer a tool to automatically convert the widget filters of your shop in "
1316
  "will be lost during the process.</b>"
1317
  msgstr ""
1318
 
1319
+ #: templates/admin/upgrade-note-modal.php:89
1320
  msgctxt "[ADMIN] Upgrade note modal content"
1321
  msgid ""
1322
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1324
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1325
  msgstr ""
1326
 
1327
+ #: templates/admin/upgrade-note-modal.php:98
1328
  msgctxt "[ADMIN] Upgrade note modal button label"
1329
  msgid "Convert your widgets in a preset now"
1330
  msgstr ""
1331
 
1332
+ #: templates/admin/upgrade-note-modal.php:99
1333
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1334
  msgid "No thanks"
1335
  msgstr ""
1336
 
1337
+ #: templates/filters/global/reset-filters.php:24
1338
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1339
  msgid "Reset filters"
1340
  msgstr ""
languages/yith-woocommerce-ajax-navigation-it_IT.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-it_IT.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-03-03 10:36+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -16,94 +16,94 @@ msgstr ""
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset bozza"
22
 
23
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
24
- #: includes/functions.yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Proprietà"
27
 
28
- #: includes/functions.yith-wcan.php:98
29
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
30
  msgid "Color"
31
  msgstr "Colore"
32
 
33
- #: includes/functions.yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Etichette "
36
 
37
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filtra la lista dei prodotti senza dover ricaricare la pagina"
40
 
41
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
42
  msgid "Filters:"
43
  msgstr "Filtri:"
44
 
45
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
46
  msgid "List"
47
  msgstr "Lista"
48
 
49
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
50
  msgid "Label"
51
  msgstr "Etichetta"
52
 
53
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
58
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
59
  msgid "Title"
60
  msgstr "Titolo"
61
 
62
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
63
  msgid "Type:"
64
  msgstr "Tipo:"
65
 
66
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
67
  msgid "Query Type:"
68
  msgstr "Tipo Query:"
69
 
70
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
71
  msgid "OR"
72
  msgstr "O"
73
 
74
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
75
  msgid "Attribute:"
76
  msgstr "Attributo:"
77
 
78
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
79
  msgid "Display (default All):"
80
  msgstr "Mostra (default Tutti)"
81
 
82
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
83
  msgid "All (no hierarchical)"
84
  msgstr "Tutti (non gerarchico)"
85
 
86
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
87
  msgid "All (hierarchical)"
88
  msgstr "Tutti (gerarchico)"
89
 
90
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
91
  msgid "Only Parent"
92
  msgstr "Solo Principali"
93
 
94
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
95
  msgid "CSS custom class"
96
  msgstr "Classe CSS custom"
97
 
98
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX Reset Filter"
101
 
102
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
103
  msgid "Reset All Filters"
104
  msgstr "Resetta tutti i filtri"
105
 
106
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
107
  msgid "Button Label"
108
  msgstr "Etichetta Pulsante"
109
 
@@ -141,73 +141,68 @@ msgstr ""
141
  "yithemes.com/\" target=\"_blank\">Scopri altri plugin per il tuo e-commerce "
142
  "su <strong>YITH</strong></a>"
143
 
144
- #: includes/class.yith-wcan-admin.php:107
145
  msgctxt "[Admin] Copy confirmation message"
146
  msgid "Content copied to your clipboard"
147
  msgstr "Contenuto copiato negli appunti"
148
 
149
- #: includes/class.yith-wcan-admin.php:108
150
  msgctxt "[Admin] Confirm filter delete message"
151
  msgid "Are you sure you want to delete this item?"
152
  msgstr "Sei sicuro di voler eliminare questo termine?"
153
 
154
  #. translators: 1. Number of items that will be added.
155
- #: includes/class.yith-wcan-admin.php:110
156
  msgctxt "[Admin] Confirm add all terms message"
157
  msgid "Are you sure you want to proceed? This operation will add %s items"
158
  msgstr "Sei sicuro di voler procedere? Questa azione aggiungerà %s elementi"
159
 
160
- #: includes/class.yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; nessun titolo &gt;"
169
 
170
- #: includes/class.yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Seleziona i media da usare"
174
 
175
- #: includes/class.yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Usa questo media"
179
 
180
- #: includes/class.yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Preset filtri"
184
 
185
- #: includes/class.yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Impostazioni generali"
189
 
190
- #: includes/class.yith-wcan-admin.php:186
191
  msgctxt "[Admin] tab name"
192
  msgid "SEO"
193
  msgstr "SEO"
194
 
195
- #: includes/class.yith-wcan-admin.php:187
196
  msgctxt "[Admin] tab name"
197
  msgid "Premium Version"
198
  msgstr "Versione Premium"
199
 
200
- #: includes/class.yith-wcan-admin.php:191
201
  msgctxt "[Admin] tab name"
202
  msgid "Legacy"
203
  msgstr "Legacy"
204
 
205
- #: includes/class.yith-wcan-admin.php:198
206
- msgctxt "[Admin] Menu title"
207
- msgid "Ajax Product Filter"
208
- msgstr "Ajax Product Filter"
209
-
210
- #: includes/class.yith-wcan-admin.php:199
211
  msgctxt "[Admin] Plugin description"
212
  msgid ""
213
  "It allows your users to find the product they are looking for as quickly as "
@@ -216,44 +211,44 @@ msgstr ""
216
  "Permette ai tuoi utenti di trovare il prodotto che stanno cercando il più "
217
  "velocemente possibile."
218
 
219
- #: includes/class.yith-wcan-admin.php:211
220
  msgctxt "[HELP TAB] Video title"
221
  msgid ""
222
  "Check this video to learn how to <b>create a filter preset and show it on "
223
  "the shop page:</b>"
224
  msgstr ""
225
 
226
- #: includes/class.yith-wcan-admin.php:329
227
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
228
  msgid "item"
229
  msgstr "elemento"
230
 
231
- #: includes/class.yith-wcan-admin.php:330
232
  msgctxt "[Admin] Preset table empty message second line"
233
  msgid "But don't worry, here you can create your first one!"
234
  msgstr "Ma non preoccuparti. Puoi iniziare a crearli qui!"
235
 
236
- #: includes/class.yith-wcan-admin.php:478
237
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
238
  msgid "Clear Product Filter transients"
239
  msgstr "Cancella i transient Product Filter"
240
 
241
- #: includes/class.yith-wcan-admin.php:484
242
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
243
  msgid "Run filter widgets upgrade"
244
  msgstr "Avvia l'upgrade dei widget dei filtri"
245
 
246
- #: includes/class.yith-wcan-admin.php:479
247
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
248
  msgid "Clear"
249
  msgstr "Cancella"
250
 
251
- #: includes/class.yith-wcan-admin.php:485
252
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
253
  msgid "Run"
254
  msgstr "Avvia"
255
 
256
- #: includes/class.yith-wcan-admin.php:480
257
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
258
  msgid ""
259
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -264,7 +259,7 @@ msgstr ""
264
  "Product Filter. Utile se hai cambiato la configurazione del prodotto e i "
265
  "filtri non mostrano i risultati previsti. "
266
 
267
- #: includes/class.yith-wcan-admin.php:486
268
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
269
  msgid ""
270
  "This will create a preset for any sidebar of your shop containing filter "
@@ -273,32 +268,32 @@ msgstr ""
273
  "Questo creerà un preset con i widget dei filtri per qualsiasi barra laterale "
274
  "del tuo shop. Il preset sarà configurato in base alle specifiche dei widget"
275
 
276
- #: includes/class.yith-wcan-filter-factory.php:72
277
  msgctxt "[Admin] Filter edit form"
278
  msgid "Taxonomy"
279
  msgstr "Tassonomia"
280
 
281
- #: includes/class.yith-wcan-filter-factory.php:86
282
  msgctxt "[Admin] Filter edit form"
283
  msgid "Checkbox"
284
  msgstr "Checkbox"
285
 
286
- #: includes/class.yith-wcan-filter-factory.php:87
287
  msgctxt "[Admin] Filter edit form"
288
  msgid "Select"
289
  msgstr "Select"
290
 
291
- #: includes/class.yith-wcan-filter-factory.php:88
292
  msgctxt "[Admin] Filter edit form"
293
  msgid "Text"
294
  msgstr "Testo"
295
 
296
- #: includes/class.yith-wcan-filter-factory.php:89
297
  msgctxt "[Admin] Filter edit form"
298
  msgid "Color Swatches"
299
  msgstr "Campioni colore"
300
 
301
- #: includes/class.yith-wcan-filter-factory.php:90
302
  msgctxt "[Admin] Filter edit form"
303
  msgid "Label"
304
  msgstr "Etichetta"
@@ -313,32 +308,32 @@ msgctxt "[Admin] Filter edit form"
313
  msgid "Enter a name to identify this filter"
314
  msgstr "Inserisci un nome per definire questo filtro"
315
 
316
- #: plugin-options/filter-options.php:41
317
  msgctxt "[Admin] Filter edit form"
318
  msgid "Filter for"
319
  msgstr "Filtro per"
320
 
321
- #: plugin-options/filter-options.php:45
322
  msgctxt "[Admin] Filter edit form"
323
  msgid "Select the parameters you wish to filter for"
324
  msgstr "Seleziona il parametro per il filtro"
325
 
326
- #: plugin-options/filter-options.php:51
327
  msgctxt "[Admin] Filter edit form"
328
  msgid "Choose taxonomy"
329
  msgstr "Scegli tassonomia"
330
 
331
- #: plugin-options/filter-options.php:55
332
  msgctxt "[Admin] Filter edit form"
333
  msgid "Select which taxonomy to use for this filter"
334
  msgstr "Seleziona quale tassonomia usare per questo filtro"
335
 
336
- #: plugin-options/filter-options.php:60
337
  msgctxt "[Admin] Filter edit form"
338
  msgid "Auto-populate with all terms"
339
  msgstr ""
340
 
341
- #: plugin-options/filter-options.php:62
342
  msgctxt "[Admin] Filter edit form"
343
  msgid ""
344
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -347,50 +342,50 @@ msgid ""
347
  "well.</span>"
348
  msgstr ""
349
 
350
- #: plugin-options/filter-options.php:71
351
  msgctxt "[Admin] Filter edit form"
352
  msgid "Choose terms"
353
  msgstr "Scegli termini"
354
 
355
- #: plugin-options/filter-options.php:76
356
  msgctxt "[Admin] Filter edit form"
357
  msgid "Select which terms to use for filtering"
358
  msgstr "Seleziona quali termini usare per i filtri"
359
 
360
- #: plugin-options/filter-options.php:80
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Filter type"
363
  msgstr "Tipo filtro"
364
 
365
- #: plugin-options/filter-options.php:84
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Select the filter type for this filter"
368
  msgstr "Seleziona il tipo di filtro"
369
 
370
- #: plugin-options/filter-options.php:88
371
  #, fuzzy
372
  msgctxt "[Admin] Filter edit form"
373
  msgid "Labels"
374
  msgstr "Etichette "
375
 
376
- #: plugin-options/filter-options.php:91
377
  #, fuzzy
378
  msgctxt "[Admin] Filter edit form"
379
  msgid "Show below"
380
  msgstr "Mostra risultati"
381
 
382
- #: plugin-options/filter-options.php:92
383
  #, fuzzy
384
  msgctxt "[Admin] Filter edit form"
385
  msgid "Show on the right"
386
  msgstr "Mostra conteggio elementi"
387
 
388
- #: plugin-options/filter-options.php:93
389
  msgctxt "[Admin] Filter edit form"
390
  msgid "Hide"
391
  msgstr ""
392
 
393
- #: plugin-options/filter-options.php:95
394
  #, fuzzy
395
  msgctxt "[Admin] Filter edit form"
396
  msgid "Choose if and where to show the label inside your filter"
@@ -398,22 +393,22 @@ msgstr ""
398
  "Decidi se e dove mostrare il pulsante \"Resetta filtri\" e i filtri "
399
  "selezionati"
400
 
401
- #: plugin-options/filter-options.php:99
402
  msgctxt "[Admin] Filter edit form"
403
  msgid "Columns number"
404
  msgstr "Numero colonne"
405
 
406
- #: plugin-options/filter-options.php:104
407
  msgctxt "[Admin] Filter edit form"
408
  msgid "Set the number of items per row you want to show for this design"
409
  msgstr "Scegli il numero di elementi per riga da mostrare "
410
 
411
- #: plugin-options/filter-options.php:108
412
  msgctxt "[Admin] Filter edit form"
413
  msgid "Customize terms"
414
  msgstr "Personalizza termini"
415
 
416
- #: plugin-options/filter-options.php:111
417
  msgctxt "[Admin] Filter edit form"
418
  msgid ""
419
  "Configure your terms individually; system will otherwise use default labels/"
@@ -427,155 +422,155 @@ msgid ""
427
  "this option and use the boxes below</span>"
428
  msgstr ""
429
 
430
- #: plugin-options/filter-options.php:121
431
  #, fuzzy
432
  msgctxt "[Admin] Filter edit form"
433
  msgid "Terms options"
434
  msgstr "Opzioni ordinamento"
435
 
436
- #: plugin-options/filter-options.php:127
437
  msgctxt "[Admin] Filter edit form"
438
  msgid "Show hierarchy"
439
  msgstr "Mostra gerarchia"
440
 
441
- #: plugin-options/filter-options.php:130
442
  msgctxt "[Admin] Filter edit form"
443
  msgid "No, show all terms in same level"
444
  msgstr "No, mostra tutti i termini nello stesso livello"
445
 
446
- #: plugin-options/filter-options.php:131
447
  msgctxt "[Admin] Filter edit form"
448
  msgid "No, show only parent terms"
449
  msgstr "No, mostra solo termini genitore"
450
 
451
- #: plugin-options/filter-options.php:132
452
  msgctxt "[Admin] Filter edit form"
453
  msgid "Yes"
454
  msgstr ""
455
 
456
- #: plugin-options/filter-options.php:134
457
  msgctxt "[Admin] Filter edit form"
458
  msgid "Choose how to show terms hierarchy"
459
  msgstr "Decidi come mostrare la gerarchia dei termini"
460
 
461
- #: plugin-options/filter-options.php:138
462
  msgctxt "[Admin] Filter edit form"
463
  msgid "Allow multiple selection"
464
  msgstr "Abilita selezione multipla"
465
 
466
- #: plugin-options/filter-options.php:140
467
  msgctxt "[Admin] Filter edit form"
468
  msgid "Enable if the user can select multiple terms when filtering products"
469
  msgstr "Abilita la selezione multipla dei termini per filtrare i prodotti"
470
 
471
- #: plugin-options/filter-options.php:144
472
  msgctxt "[Admin] Filter edit form"
473
  msgid "Multiselect relation"
474
  msgstr "Relazione seleziona multipla"
475
 
476
- #: plugin-options/filter-options.php:150
477
  msgctxt "[Admin] Filter edit form"
478
  msgid "Choose how multiple terms selection should behave"
479
  msgstr "Decidi il comportamento della selezione multipla dei termini"
480
 
481
- #: includes/class.yith-wcan-filter-factory.php:104
482
  msgctxt "[Admin] Filter edit form, sorting options"
483
  msgid "Default sorting"
484
  msgstr "Ordinamento predefinito "
485
 
486
- #: includes/class.yith-wcan-filter-factory.php:105
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Sort by popularity"
489
  msgstr "Ordina per popolarità"
490
 
491
- #: includes/class.yith-wcan-filter-factory.php:106
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by average rating"
494
  msgstr "Ordina per valutazione media"
495
 
496
- #: includes/class.yith-wcan-filter-factory.php:107
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by latest"
499
  msgstr "Ordina per più recenti"
500
 
501
- #: includes/class.yith-wcan-filter-factory.php:108
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by price: low to high"
504
  msgstr "Ordina per prezzo: crescente"
505
 
506
- #: includes/class.yith-wcan-filter-factory.php:109
507
  msgctxt "[Admin] Filter edit form, sorting options"
508
  msgid "Sort by price: high to low"
509
  msgstr "Ordina per prezzo: decrescente"
510
 
511
- #: includes/class.yith-wcan-filter.php:116
512
  msgctxt "[Admin] Default filter title"
513
  msgid "New filter"
514
  msgstr "Nuovo filtro"
515
 
516
- #: includes/class.yith-wcan-frontend.php:576
517
- #: includes/filters/class.yith-wcan-filter-tax.php:62
518
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
519
  msgid "All"
520
  msgstr "Tutte"
521
 
522
- #: includes/class.yith-wcan-frontend.php:577
523
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
524
  msgid "Search..."
525
  msgstr "Cerca..."
526
 
527
- #: includes/class.yith-wcan-frontend.php:578
528
  msgctxt "[FRONTEND] Empty items list in the dropdown"
529
  msgid "No item found"
530
  msgstr "Nessun elemento trovato"
531
 
532
  #. translators: 1. Number of items to show.
533
- #: includes/class.yith-wcan-frontend.php:580
534
  msgctxt "[FRONTEND] Show more link on terms dropdown"
535
  msgid "Show %d more"
536
  msgstr "Mostra altri %d"
537
 
538
- #: includes/class.yith-wcan-frontend.php:581
539
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
540
  msgid "Close"
541
  msgstr "Chiudi"
542
 
543
- #: includes/class.yith-wcan-frontend.php:582
544
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
545
  msgid "Save"
546
  msgstr ""
547
 
548
- #: includes/class.yith-wcan-frontend.php:583
549
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
550
  msgid "Show results"
551
  msgstr "Mostra risultati"
552
 
553
- #: includes/class.yith-wcan-frontend.php:584
554
  msgctxt ""
555
  "[FRONTEND] Label for clear selection link, that appears above filter after "
556
  "selection"
557
  msgid "Clear"
558
  msgstr "Cancella"
559
 
560
- #: includes/class.yith-wcan-frontend.php:585
561
  msgctxt ""
562
  "[FRONTEND] Label for clear selection link, that appears above filter after "
563
  "selection"
564
  msgid "Clear All"
565
  msgstr "Cancella tutti"
566
 
567
- #: includes/class.yith-wcan-install.php:95
568
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
569
  msgid "Default preset"
570
  msgstr "Preset predefinito"
571
 
572
  #. translators: 1. Taxonomy name.
573
- #: includes/class.yith-wcan-install.php:285
574
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
575
  msgid "Filter by %s"
576
  msgstr "Filtra per %s"
577
 
578
- #: includes/class.yith-wcan-preset-factory.php:112
579
  #, fuzzy
580
  msgctxt "[Admin] Label in new preset page"
581
  msgid "Default"
@@ -591,33 +586,33 @@ msgctxt "[Admin] Label in new preset page"
591
  msgid "Enter a name to identify this filter preset"
592
  msgstr "Inserisci un nome per definire questo preset di filtri"
593
 
594
- #: templates/admin/preset-filters.php:20
595
  msgctxt "[Admin] Label in new preset page"
596
  msgid "Filters of this preset"
597
  msgstr "Filtri di questo preset"
598
 
599
- #: includes/class.yith-wcan-presets.php:95
600
- #: includes/class.yith-wcan-presets.php:100
601
  msgctxt "[Admin] name of presets custom post type"
602
  msgid "Filter presets"
603
  msgstr "Preset filtri"
604
 
605
- #: includes/class.yith-wcan-presets.php:96
606
  msgctxt "[Admin] singular name of presets custom post type"
607
  msgid "Filter preset"
608
  msgstr "Preset filtri"
609
 
610
- #: includes/class.yith-wcan-presets.php:97
611
  msgctxt "[Admin] add new filter preset label"
612
  msgid "Add new preset"
613
  msgstr "Aggiungi nuovo preset"
614
 
615
- #: includes/class.yith-wcan-presets.php:139
616
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
617
  msgid "Convert widgets in a preset"
618
  msgstr "Converti widget in preset"
619
 
620
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
621
  msgctxt ""
622
  "[Generic] Error that happens when trying to read a filter preset that does "
623
  "not exist"
@@ -625,49 +620,49 @@ msgid "Invalid preset."
625
  msgstr "Preset non valido."
626
 
627
  #. translators: 1. Title of original preset.
628
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
629
  msgctxt "[ADMIN] Title of the cloned preset"
630
  msgid "%s - Copy"
631
  msgstr "%s - Copia"
632
 
633
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
634
  msgctxt "[ADMIN] Name of the preset elementor widget"
635
  msgid "YITH AJAX Filters Preset"
636
  msgstr "YITH AJAX Filters Preset"
637
 
638
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Reset Button"
641
  msgstr "YITH AJAX Filters Reset Button"
642
 
643
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
644
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
645
  msgctxt "[ELEMENTOR] Default preset option"
646
  msgid "Choose an option"
647
  msgstr "Scegli un'opzione"
648
 
649
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
650
  msgctxt "[ELEMENTOR] Section title"
651
  msgid "Filters"
652
  msgstr "Filtri"
653
 
654
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
655
  msgctxt "[ELEMENTOR] Section title"
656
  msgid "General"
657
  msgstr "Generale"
658
 
659
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
660
  msgctxt "[ELEMENTOR] Control label"
661
  msgid "Preset"
662
  msgstr "Preset"
663
 
664
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
665
  msgctxt "[ELEMENTOR] Widget description"
666
  msgid ""
667
  "This widget will display \"Filters reset\" button, wherever it is placed"
668
  msgstr "Questo widget mostrerà il pulsante \"Filters reset\" dove posizionato"
669
 
670
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
671
  msgctxt "[ELEMENTOR] Widget description"
672
  msgid ""
673
  "It will allow users to reset the filer selection; it will only appear when "
@@ -676,7 +671,7 @@ msgstr ""
676
  "Permetterà ai tuoi utenti di resettare i filtri selezionati. Verrà mostrato "
677
  "solo se c'è almeno un filtro attivo. "
678
 
679
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
680
  msgctxt "[ELEMENTOR] Widget description"
681
  msgid ""
682
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -686,17 +681,17 @@ msgstr ""
686
  "all'interno della tua pagina se l'opzione \"Posizione pulsante reset\" non "
687
  "funziona per il loop del prodotto"
688
 
689
- #: includes/functions.yith-wcan.php:112
690
  msgctxt "For multicolor: I.E. white and red T-Shirt"
691
  msgid "Color 1"
692
  msgstr "Colore 1"
693
 
694
- #: includes/functions.yith-wcan.php:112
695
  msgctxt "For multicolor: I.E. white and red T-Shirt"
696
  msgid "Color 2"
697
  msgstr "Colore 2"
698
 
699
- #: includes/functions.yith-wcan.php:1001
700
  msgctxt "[FRONTEND] Star rating template"
701
  msgid "star"
702
  msgid_plural "stars"
@@ -704,27 +699,27 @@ msgstr[0] "stella"
704
  msgstr[1] "stelle"
705
 
706
  #. translators: 1. Rating.
707
- #: includes/functions.yith-wcan.php:1016
708
  msgctxt "[FRONTEND] Star rating label"
709
  msgid "Rated %s out of 5"
710
  msgstr "Valutato %s su 5"
711
 
712
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
713
  msgctxt "[GUTENBERG]: block name"
714
  msgid "YITH AJAX Filters Preset"
715
  msgstr "YITH AJAX Filters Preset"
716
 
717
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
718
  msgctxt "[GUTENBERG]: block name"
719
  msgid "YITH Reset Filters Button"
720
  msgstr "YITH Reset Filters Button"
721
 
722
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
723
  msgctxt "[GUTENBERG]: block description"
724
  msgid "Show filters from a preset"
725
  msgstr "Mostra filtri da un preset"
726
 
727
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
728
  msgctxt "[GUTENBERG]: block description"
729
  msgid ""
730
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -738,80 +733,80 @@ msgstr ""
738
  "pagina se l'opzione \"Posizione pulsante reset\" non funziona per il loop "
739
  "del prodotto"
740
 
741
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
742
  msgctxt "[GUTENBERG]: attribute description"
743
  msgid "Preset"
744
  msgstr "Preset"
745
 
746
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
747
  msgctxt "[Admin] Preset table column header"
748
  msgid "Preset name"
749
  msgstr "Nome preset"
750
 
751
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
752
  msgctxt "[Admin] Preset table column header"
753
  msgid "Shortcode"
754
  msgstr "Shortcode"
755
 
756
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
757
  msgctxt "[Admin] Preset edit action label"
758
  msgid "Edit this preset"
759
  msgstr "Modifica questo preset"
760
 
761
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
762
  msgctxt "[Admin] Preset clone action label"
763
  msgid "Clone this preset"
764
  msgstr "Clona questo preset"
765
 
766
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
767
  msgctxt "[Admin] Preset delete action label"
768
  msgid "Delete this preset"
769
  msgstr "Elimina questo preset"
770
 
771
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
772
  msgctxt "[Admin] Preset delete confirm label"
773
  msgid "Are you sure you want to delete this preset?"
774
  msgstr "Sei sicuro di voler eliminare questo preset?"
775
 
776
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
777
  msgctxt "[Admin] on-off yes"
778
  msgid "YES"
779
  msgstr "SI"
780
 
781
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
782
  msgctxt "[Admin] on-off no"
783
  msgid "NO"
784
  msgstr "NO"
785
 
786
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
787
  msgctxt ""
788
  "[Admin] Name of the item missing, shown in preset-empty-content template"
789
  msgid "filter preset"
790
  msgstr "preset filtri"
791
 
792
- #: templates/admin/preset-filters.php:29
793
  msgctxt ""
794
  "[Admin] Name of the item missing, shown in preset-empty-content template"
795
  msgid "filter"
796
  msgstr "filtro"
797
 
798
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
799
  msgctxt "[Admin] New preset button label"
800
  msgid "Create a new preset"
801
  msgstr "Crea nuovo preset"
802
 
803
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
804
  msgctxt "[ADMIN] Name of the preset widget"
805
  msgid "YITH AJAX Filters Preset"
806
  msgstr "YITH AJAX Filters Preset"
807
 
808
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
809
  msgctxt "[ADMIN] Preset widget options"
810
  msgid "Preset"
811
  msgstr "Preset"
812
 
813
  #. translators: 1. Url to Ajax Product filter admin panel.
814
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
815
  msgctxt "[ADMIN] Preset widget options"
816
  msgid ""
817
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -820,32 +815,32 @@ msgstr ""
820
  "Vai su <a href=\"%s\">Bacheca WP -> YITH -> Ajax Product Filter -> Preset</"
821
  "a> e crea il tuo primo preset"
822
 
823
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
824
  msgctxt "[Plugin Name] Admin: Widget Title"
825
  msgid "YITH AJAX Product Filter"
826
  msgstr "YITH AJAX Product Filter"
827
 
828
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
829
  #, fuzzy
830
  msgctxt ""
831
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
832
  msgid "AND"
833
  msgstr "E"
834
 
835
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
836
  msgctxt "[Plugin Name]"
837
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
838
  msgstr ""
839
  "Resetta tutti i filtri impostati da YITH WooCommerce AJAX Product Filter"
840
 
841
- #: plugin-options/filter-options.php:147
842
  #, fuzzy
843
  msgctxt ""
844
  "[Admin] Filter edit form; logical operator that affects query behaviour"
845
  msgid "AND - Results need to match all selected terms at the same time"
846
  msgstr "AND - I risultati devono combaciare con tutti i termini selezionati "
847
 
848
- #: plugin-options/filter-options.php:148
849
  #, fuzzy
850
  msgctxt ""
851
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1137,24 +1132,25 @@ msgid "The plugin includes:"
1137
  msgstr "Il plugin include:"
1138
 
1139
  #: templates/admin/premium.php:271
 
1140
  msgctxt "[ADMIN] Premium tab"
1141
  msgid ""
1142
  "<b>Filter by category</b>: to let users choose which product category to "
1143
- "view<br/>\r\n"
1144
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1145
  "<b>Filter by price</b>: to let users filter products by a specific price "
1146
- "range (based on their budget availability)<br/>\r\n"
1147
  "<b>Filter by color and size</b>: you can create filters for all the "
1148
  "attributes available in your store, like color and size. For the color "
1149
  "filter, you can either choose square or circular color swatches or use "
1150
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1151
  "<b>Filter by rating</b>: to let your users filter products based on other "
1152
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1153
- "concentrate only on high-rated ones)<br/>\r\n"
1154
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1155
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1156
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1157
- "filter products and view only those with a discount<br/>\r\n"
1158
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1159
  "filter products based on their needs and exclude out-of-stock products from "
1160
  "the list"
@@ -1323,73 +1319,73 @@ msgstr ""
1323
  "aggiungendo i filtri applicati o di modificarlo attraverso i permalink del "
1324
  "plugin (in questo modo gli URL saranno più brevi e semplici da condividere)"
1325
 
1326
- #: templates/admin/preset-edit.php:29
1327
  msgctxt "[Admin] Back link in new preset page"
1328
  msgid "< back to preset list"
1329
  msgstr "< Torna all'elenco preset"
1330
 
1331
- #: templates/admin/preset-edit.php:36
1332
  msgctxt "[ADMIN] Title for new preset page"
1333
  msgid "Edit filter preset"
1334
  msgstr "Modifica preset filtri"
1335
 
1336
- #: templates/admin/preset-edit.php:38
1337
  msgctxt "[ADMIN] Title for new preset page"
1338
  msgid "Add new filter preset"
1339
  msgstr "Aggiungi nuovo preset filtri"
1340
 
1341
- #: templates/admin/preset-edit.php:45
1342
  msgctxt "[ADMIN] Preset save message"
1343
  msgid "Preset saved correctly"
1344
  msgstr ""
1345
 
1346
- #: templates/admin/preset-edit.php:90
1347
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1348
  msgid "Save preset"
1349
  msgstr "Salva preset"
1350
 
1351
- #: templates/admin/preset-empty-content.php:27
1352
  msgctxt "Alt text for empty preset image"
1353
  msgid "Empty preset"
1354
  msgstr "Preset vuoto"
1355
 
1356
  #. translators: 1. Missing item name.
1357
- #: templates/admin/preset-empty-content.php:33
1358
  msgctxt "[Admin] Preset table empty message"
1359
  msgid "You don't have any %s yet."
1360
  msgstr "Non hai ancora nessun %s."
1361
 
1362
- #: templates/admin/preset-filter-term.php:28
1363
  msgctxt "[Admin] Term edit field label (preset edit page)"
1364
  msgid "Label"
1365
  msgstr "Etichetta"
1366
 
1367
- #: templates/admin/preset-filter-term.php:33
1368
  msgctxt "[Admin] Term edit field label (preset edit page)"
1369
  msgid "Tooltip"
1370
  msgstr "Tooltip"
1371
 
1372
- #: templates/admin/preset-filter-term.php:39
1373
  msgctxt "[Admin] Term edit field label (preset edit page)"
1374
  msgid "Color"
1375
  msgstr "Colore"
1376
 
1377
- #: templates/admin/preset-filter.php:89
1378
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1379
  msgid "Save Filter"
1380
  msgstr "Salva filtro "
1381
 
1382
- #: templates/admin/preset-filter.php:90
1383
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1384
  msgid "Delete Filter"
1385
  msgstr "Elimina filtro"
1386
 
1387
- #: templates/admin/preset-filters.php:31
1388
  msgctxt "[Admin] New filter button label"
1389
  msgid "Add a new filter"
1390
  msgstr "Aggiungi nuovo filtro"
1391
 
1392
- #: templates/admin/preset-filters.php:55
1393
  msgctxt "[Admin] Add new filter in new preset page"
1394
  msgid "+ Add filter"
1395
  msgstr "+ Aggiungi filtro"
@@ -1401,12 +1397,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1401
  msgid "See %d more filters"
1402
  msgstr "Prima dei filtri"
1403
 
1404
- #: templates/admin/upgrade-note-modal.php:31
1405
  msgctxt "[ADMIN] Upgrade note modal title"
1406
  msgid "Use the new filter preset feature for your filters"
1407
  msgstr "Usa la nuova funzionalità preset per i tuoi filtri"
1408
 
1409
- #: templates/admin/upgrade-note-modal.php:36
1410
  msgctxt "[ADMIN] Upgrade note modal content"
1411
  msgid ""
1412
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1420,7 +1416,7 @@ msgstr ""
1420
  "Gutenberg o il widget di Elementor."
1421
 
1422
  #. translators: 1. Url to demo video. 2. Url to docs.
1423
- #: templates/admin/upgrade-note-modal.php:49
1424
  msgctxt "[ADMIN] Upgrade note modal content"
1425
  msgid ""
1426
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1431,7 +1427,7 @@ msgstr ""
1431
  "funzionalità. "
1432
 
1433
  #. translators: 1. Url to docs.
1434
- #: templates/admin/upgrade-note-modal.php:62
1435
  msgctxt "[ADMIN] Upgrade note modal content"
1436
  msgid ""
1437
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1440,7 +1436,7 @@ msgstr ""
1440
  "Ti consigliamo di <a href=\"%1$s\">leggere la documentazione</a> per capire "
1441
  "come usare questa nuova funzionalità. "
1442
 
1443
- #: templates/admin/upgrade-note-modal.php:76
1444
  #, fuzzy
1445
  msgctxt "[ADMIN] Upgrade note modal content"
1446
  msgid ""
@@ -1454,7 +1450,7 @@ msgstr ""
1454
  "nella tabella dei preset filtri.<br/><b>Non preoccuparti: non perderai "
1455
  "nessun dato con questa procedura.</b>"
1456
 
1457
- #: templates/admin/upgrade-note-modal.php:87
1458
  msgctxt "[ADMIN] Upgrade note modal content"
1459
  msgid ""
1460
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1462,21 +1458,25 @@ msgid ""
1462
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1463
  msgstr ""
1464
 
1465
- #: templates/admin/upgrade-note-modal.php:96
1466
  msgctxt "[ADMIN] Upgrade note modal button label"
1467
  msgid "Convert your widgets in a preset now"
1468
  msgstr "Converti subito i tuoi widget in preset"
1469
 
1470
- #: templates/admin/upgrade-note-modal.php:97
1471
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1472
  msgid "No thanks"
1473
  msgstr "No grazie"
1474
 
1475
- #: templates/filters/global/reset-filters.php:23
1476
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1477
  msgid "Reset filters"
1478
  msgstr "Resetta filtri"
1479
 
 
 
 
 
1480
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1481
  #~ msgid "All"
1482
  #~ msgstr "Tutti"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-03-03 10:36+0100\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
  "X-Generator: Poedit 2.4.2\n"
18
 
19
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
20
  msgid "Draft Preset"
21
  msgstr "Preset bozza"
22
 
23
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
24
+ #: includes/functions-yith-wcan.php:132
25
  msgid "Term"
26
  msgstr "Proprietà"
27
 
28
+ #: includes/functions-yith-wcan.php:98
29
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
30
  msgid "Color"
31
  msgstr "Colore"
32
 
33
+ #: includes/functions-yith-wcan.php:132
34
  msgid "Labels"
35
  msgstr "Etichette "
36
 
37
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
38
  msgid "Filter the list of products without reloading the page"
39
  msgstr "Filtra la lista dei prodotti senza dover ricaricare la pagina"
40
 
41
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
42
  msgid "Filters:"
43
  msgstr "Filtri:"
44
 
45
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
46
  msgid "List"
47
  msgstr "Lista"
48
 
49
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
50
  msgid "Label"
51
  msgstr "Etichetta"
52
 
53
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
54
  msgid "Dropdown"
55
  msgstr "Dropdown"
56
 
57
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
58
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
59
  msgid "Title"
60
  msgstr "Titolo"
61
 
62
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
63
  msgid "Type:"
64
  msgstr "Tipo:"
65
 
66
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
67
  msgid "Query Type:"
68
  msgstr "Tipo Query:"
69
 
70
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
71
  msgid "OR"
72
  msgstr "O"
73
 
74
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
75
  msgid "Attribute:"
76
  msgstr "Attributo:"
77
 
78
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
79
  msgid "Display (default All):"
80
  msgstr "Mostra (default Tutti)"
81
 
82
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
83
  msgid "All (no hierarchical)"
84
  msgstr "Tutti (non gerarchico)"
85
 
86
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
87
  msgid "All (hierarchical)"
88
  msgstr "Tutti (gerarchico)"
89
 
90
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
91
  msgid "Only Parent"
92
  msgstr "Solo Principali"
93
 
94
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
95
  msgid "CSS custom class"
96
  msgstr "Classe CSS custom"
97
 
98
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
99
  msgid "YITH AJAX Reset Filter"
100
  msgstr "YITH AJAX Reset Filter"
101
 
102
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
103
  msgid "Reset All Filters"
104
  msgstr "Resetta tutti i filtri"
105
 
106
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
107
  msgid "Button Label"
108
  msgstr "Etichetta Pulsante"
109
 
141
  "yithemes.com/\" target=\"_blank\">Scopri altri plugin per il tuo e-commerce "
142
  "su <strong>YITH</strong></a>"
143
 
144
+ #: includes/class-yith-wcan-admin.php:107
145
  msgctxt "[Admin] Copy confirmation message"
146
  msgid "Content copied to your clipboard"
147
  msgstr "Contenuto copiato negli appunti"
148
 
149
+ #: includes/class-yith-wcan-admin.php:108
150
  msgctxt "[Admin] Confirm filter delete message"
151
  msgid "Are you sure you want to delete this item?"
152
  msgstr "Sei sicuro di voler eliminare questo termine?"
153
 
154
  #. translators: 1. Number of items that will be added.
155
+ #: includes/class-yith-wcan-admin.php:110
156
  msgctxt "[Admin] Confirm add all terms message"
157
  msgid "Are you sure you want to proceed? This operation will add %s items"
158
  msgstr "Sei sicuro di voler procedere? Questa azione aggiungerà %s elementi"
159
 
160
+ #: includes/class-yith-wcan-admin.php:111
161
  msgctxt "[Admin] Error message"
162
  msgid "\"Filter title\" is a required field"
163
  msgstr ""
164
 
165
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
166
  msgctxt "[Admin] Message shown when filter has empty title"
167
  msgid "&lt; no title &gt;"
168
  msgstr "&lt; nessun titolo &gt;"
169
 
170
+ #: includes/class-yith-wcan-admin.php:115
171
  msgctxt "[Admin] Media library title, when selecting images"
172
  msgid "Select media you want to use"
173
  msgstr "Seleziona i media da usare"
174
 
175
+ #: includes/class-yith-wcan-admin.php:116
176
  msgctxt "[Admin] Media library confirm button, when selecting images"
177
  msgid "Use this media"
178
  msgstr "Usa questo media"
179
 
180
+ #: includes/class-yith-wcan-admin.php:184
181
  msgctxt "[Admin] tab name"
182
  msgid "Filter presets"
183
  msgstr "Preset filtri"
184
 
185
+ #: includes/class-yith-wcan-admin.php:185
186
  msgctxt "[Admin] tab name"
187
  msgid "General settings"
188
  msgstr "Impostazioni generali"
189
 
190
+ #: includes/class-yith-wcan-admin.php:186
191
  msgctxt "[Admin] tab name"
192
  msgid "SEO"
193
  msgstr "SEO"
194
 
195
+ #: includes/class-yith-wcan-admin.php:187
196
  msgctxt "[Admin] tab name"
197
  msgid "Premium Version"
198
  msgstr "Versione Premium"
199
 
200
+ #: includes/class-yith-wcan-admin.php:191
201
  msgctxt "[Admin] tab name"
202
  msgid "Legacy"
203
  msgstr "Legacy"
204
 
205
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
206
  msgctxt "[Admin] Plugin description"
207
  msgid ""
208
  "It allows your users to find the product they are looking for as quickly as "
211
  "Permette ai tuoi utenti di trovare il prodotto che stanno cercando il più "
212
  "velocemente possibile."
213
 
214
+ #: includes/class-yith-wcan-admin.php:211
215
  msgctxt "[HELP TAB] Video title"
216
  msgid ""
217
  "Check this video to learn how to <b>create a filter preset and show it on "
218
  "the shop page:</b>"
219
  msgstr ""
220
 
221
+ #: includes/class-yith-wcan-admin.php:329
222
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
223
  msgid "item"
224
  msgstr "elemento"
225
 
226
+ #: includes/class-yith-wcan-admin.php:330
227
  msgctxt "[Admin] Preset table empty message second line"
228
  msgid "But don't worry, here you can create your first one!"
229
  msgstr "Ma non preoccuparti. Puoi iniziare a crearli qui!"
230
 
231
+ #: includes/class-yith-wcan-admin.php:480
232
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
233
  msgid "Clear Product Filter transients"
234
  msgstr "Cancella i transient Product Filter"
235
 
236
+ #: includes/class-yith-wcan-admin.php:486
237
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
238
  msgid "Run filter widgets upgrade"
239
  msgstr "Avvia l'upgrade dei widget dei filtri"
240
 
241
+ #: includes/class-yith-wcan-admin.php:481
242
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
243
  msgid "Clear"
244
  msgstr "Cancella"
245
 
246
+ #: includes/class-yith-wcan-admin.php:487
247
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
248
  msgid "Run"
249
  msgstr "Avvia"
250
 
251
+ #: includes/class-yith-wcan-admin.php:482
252
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
253
  msgid ""
254
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
259
  "Product Filter. Utile se hai cambiato la configurazione del prodotto e i "
260
  "filtri non mostrano i risultati previsti. "
261
 
262
+ #: includes/class-yith-wcan-admin.php:488
263
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
264
  msgid ""
265
  "This will create a preset for any sidebar of your shop containing filter "
268
  "Questo creerà un preset con i widget dei filtri per qualsiasi barra laterale "
269
  "del tuo shop. Il preset sarà configurato in base alle specifiche dei widget"
270
 
271
+ #: includes/class-yith-wcan-filter-factory.php:72
272
  msgctxt "[Admin] Filter edit form"
273
  msgid "Taxonomy"
274
  msgstr "Tassonomia"
275
 
276
+ #: includes/class-yith-wcan-filter-factory.php:86
277
  msgctxt "[Admin] Filter edit form"
278
  msgid "Checkbox"
279
  msgstr "Checkbox"
280
 
281
+ #: includes/class-yith-wcan-filter-factory.php:87
282
  msgctxt "[Admin] Filter edit form"
283
  msgid "Select"
284
  msgstr "Select"
285
 
286
+ #: includes/class-yith-wcan-filter-factory.php:88
287
  msgctxt "[Admin] Filter edit form"
288
  msgid "Text"
289
  msgstr "Testo"
290
 
291
+ #: includes/class-yith-wcan-filter-factory.php:89
292
  msgctxt "[Admin] Filter edit form"
293
  msgid "Color Swatches"
294
  msgstr "Campioni colore"
295
 
296
+ #: includes/class-yith-wcan-filter-factory.php:90
297
  msgctxt "[Admin] Filter edit form"
298
  msgid "Label"
299
  msgstr "Etichetta"
308
  msgid "Enter a name to identify this filter"
309
  msgstr "Inserisci un nome per definire questo filtro"
310
 
311
+ #: plugin-options/filter-options.php:40
312
  msgctxt "[Admin] Filter edit form"
313
  msgid "Filter for"
314
  msgstr "Filtro per"
315
 
316
+ #: plugin-options/filter-options.php:44
317
  msgctxt "[Admin] Filter edit form"
318
  msgid "Select the parameters you wish to filter for"
319
  msgstr "Seleziona il parametro per il filtro"
320
 
321
+ #: plugin-options/filter-options.php:49
322
  msgctxt "[Admin] Filter edit form"
323
  msgid "Choose taxonomy"
324
  msgstr "Scegli tassonomia"
325
 
326
+ #: plugin-options/filter-options.php:53
327
  msgctxt "[Admin] Filter edit form"
328
  msgid "Select which taxonomy to use for this filter"
329
  msgstr "Seleziona quale tassonomia usare per questo filtro"
330
 
331
+ #: plugin-options/filter-options.php:58
332
  msgctxt "[Admin] Filter edit form"
333
  msgid "Auto-populate with all terms"
334
  msgstr ""
335
 
336
+ #: plugin-options/filter-options.php:60
337
  msgctxt "[Admin] Filter edit form"
338
  msgid ""
339
  "Populate this filter with all existing terms of the selected taxonomy.\n"
342
  "well.</span>"
343
  msgstr ""
344
 
345
+ #: plugin-options/filter-options.php:69
346
  msgctxt "[Admin] Filter edit form"
347
  msgid "Choose terms"
348
  msgstr "Scegli termini"
349
 
350
+ #: plugin-options/filter-options.php:74
351
  msgctxt "[Admin] Filter edit form"
352
  msgid "Select which terms to use for filtering"
353
  msgstr "Seleziona quali termini usare per i filtri"
354
 
355
+ #: plugin-options/filter-options.php:78
356
  msgctxt "[Admin] Filter edit form"
357
  msgid "Filter type"
358
  msgstr "Tipo filtro"
359
 
360
+ #: plugin-options/filter-options.php:82
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Select the filter type for this filter"
363
  msgstr "Seleziona il tipo di filtro"
364
 
365
+ #: plugin-options/filter-options.php:86
366
  #, fuzzy
367
  msgctxt "[Admin] Filter edit form"
368
  msgid "Labels"
369
  msgstr "Etichette "
370
 
371
+ #: plugin-options/filter-options.php:89
372
  #, fuzzy
373
  msgctxt "[Admin] Filter edit form"
374
  msgid "Show below"
375
  msgstr "Mostra risultati"
376
 
377
+ #: plugin-options/filter-options.php:90
378
  #, fuzzy
379
  msgctxt "[Admin] Filter edit form"
380
  msgid "Show on the right"
381
  msgstr "Mostra conteggio elementi"
382
 
383
+ #: plugin-options/filter-options.php:91
384
  msgctxt "[Admin] Filter edit form"
385
  msgid "Hide"
386
  msgstr ""
387
 
388
+ #: plugin-options/filter-options.php:93
389
  #, fuzzy
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Choose if and where to show the label inside your filter"
393
  "Decidi se e dove mostrare il pulsante \"Resetta filtri\" e i filtri "
394
  "selezionati"
395
 
396
+ #: plugin-options/filter-options.php:97
397
  msgctxt "[Admin] Filter edit form"
398
  msgid "Columns number"
399
  msgstr "Numero colonne"
400
 
401
+ #: plugin-options/filter-options.php:102
402
  msgctxt "[Admin] Filter edit form"
403
  msgid "Set the number of items per row you want to show for this design"
404
  msgstr "Scegli il numero di elementi per riga da mostrare "
405
 
406
+ #: plugin-options/filter-options.php:106
407
  msgctxt "[Admin] Filter edit form"
408
  msgid "Customize terms"
409
  msgstr "Personalizza termini"
410
 
411
+ #: plugin-options/filter-options.php:109
412
  msgctxt "[Admin] Filter edit form"
413
  msgid ""
414
  "Configure your terms individually; system will otherwise use default labels/"
422
  "this option and use the boxes below</span>"
423
  msgstr ""
424
 
425
+ #: plugin-options/filter-options.php:119
426
  #, fuzzy
427
  msgctxt "[Admin] Filter edit form"
428
  msgid "Terms options"
429
  msgstr "Opzioni ordinamento"
430
 
431
+ #: plugin-options/filter-options.php:125
432
  msgctxt "[Admin] Filter edit form"
433
  msgid "Show hierarchy"
434
  msgstr "Mostra gerarchia"
435
 
436
+ #: plugin-options/filter-options.php:128
437
  msgctxt "[Admin] Filter edit form"
438
  msgid "No, show all terms in same level"
439
  msgstr "No, mostra tutti i termini nello stesso livello"
440
 
441
+ #: plugin-options/filter-options.php:129
442
  msgctxt "[Admin] Filter edit form"
443
  msgid "No, show only parent terms"
444
  msgstr "No, mostra solo termini genitore"
445
 
446
+ #: plugin-options/filter-options.php:130
447
  msgctxt "[Admin] Filter edit form"
448
  msgid "Yes"
449
  msgstr ""
450
 
451
+ #: plugin-options/filter-options.php:132
452
  msgctxt "[Admin] Filter edit form"
453
  msgid "Choose how to show terms hierarchy"
454
  msgstr "Decidi come mostrare la gerarchia dei termini"
455
 
456
+ #: plugin-options/filter-options.php:136
457
  msgctxt "[Admin] Filter edit form"
458
  msgid "Allow multiple selection"
459
  msgstr "Abilita selezione multipla"
460
 
461
+ #: plugin-options/filter-options.php:138
462
  msgctxt "[Admin] Filter edit form"
463
  msgid "Enable if the user can select multiple terms when filtering products"
464
  msgstr "Abilita la selezione multipla dei termini per filtrare i prodotti"
465
 
466
+ #: plugin-options/filter-options.php:142
467
  msgctxt "[Admin] Filter edit form"
468
  msgid "Multiselect relation"
469
  msgstr "Relazione seleziona multipla"
470
 
471
+ #: plugin-options/filter-options.php:148
472
  msgctxt "[Admin] Filter edit form"
473
  msgid "Choose how multiple terms selection should behave"
474
  msgstr "Decidi il comportamento della selezione multipla dei termini"
475
 
476
+ #: includes/class-yith-wcan-filter-factory.php:104
477
  msgctxt "[Admin] Filter edit form, sorting options"
478
  msgid "Default sorting"
479
  msgstr "Ordinamento predefinito "
480
 
481
+ #: includes/class-yith-wcan-filter-factory.php:105
482
  msgctxt "[Admin] Filter edit form, sorting options"
483
  msgid "Sort by popularity"
484
  msgstr "Ordina per popolarità"
485
 
486
+ #: includes/class-yith-wcan-filter-factory.php:106
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Sort by average rating"
489
  msgstr "Ordina per valutazione media"
490
 
491
+ #: includes/class-yith-wcan-filter-factory.php:107
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by latest"
494
  msgstr "Ordina per più recenti"
495
 
496
+ #: includes/class-yith-wcan-filter-factory.php:108
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by price: low to high"
499
  msgstr "Ordina per prezzo: crescente"
500
 
501
+ #: includes/class-yith-wcan-filter-factory.php:109
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by price: high to low"
504
  msgstr "Ordina per prezzo: decrescente"
505
 
506
+ #: includes/class-yith-wcan-filter.php:116
507
  msgctxt "[Admin] Default filter title"
508
  msgid "New filter"
509
  msgstr "Nuovo filtro"
510
 
511
+ #: includes/class-yith-wcan-frontend.php:591
512
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
513
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
514
  msgid "All"
515
  msgstr "Tutte"
516
 
517
+ #: includes/class-yith-wcan-frontend.php:592
518
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
519
  msgid "Search..."
520
  msgstr "Cerca..."
521
 
522
+ #: includes/class-yith-wcan-frontend.php:593
523
  msgctxt "[FRONTEND] Empty items list in the dropdown"
524
  msgid "No item found"
525
  msgstr "Nessun elemento trovato"
526
 
527
  #. translators: 1. Number of items to show.
528
+ #: includes/class-yith-wcan-frontend.php:595
529
  msgctxt "[FRONTEND] Show more link on terms dropdown"
530
  msgid "Show %d more"
531
  msgstr "Mostra altri %d"
532
 
533
+ #: includes/class-yith-wcan-frontend.php:596
534
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
535
  msgid "Close"
536
  msgstr "Chiudi"
537
 
538
+ #: includes/class-yith-wcan-frontend.php:597
539
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
540
  msgid "Save"
541
  msgstr ""
542
 
543
+ #: includes/class-yith-wcan-frontend.php:598
544
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
545
  msgid "Show results"
546
  msgstr "Mostra risultati"
547
 
548
+ #: includes/class-yith-wcan-frontend.php:599
549
  msgctxt ""
550
  "[FRONTEND] Label for clear selection link, that appears above filter after "
551
  "selection"
552
  msgid "Clear"
553
  msgstr "Cancella"
554
 
555
+ #: includes/class-yith-wcan-frontend.php:600
556
  msgctxt ""
557
  "[FRONTEND] Label for clear selection link, that appears above filter after "
558
  "selection"
559
  msgid "Clear All"
560
  msgstr "Cancella tutti"
561
 
562
+ #: includes/class-yith-wcan-install.php:95
563
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
564
  msgid "Default preset"
565
  msgstr "Preset predefinito"
566
 
567
  #. translators: 1. Taxonomy name.
568
+ #: includes/class-yith-wcan-install.php:285
569
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
570
  msgid "Filter by %s"
571
  msgstr "Filtra per %s"
572
 
573
+ #: includes/class-yith-wcan-preset-factory.php:112
574
  #, fuzzy
575
  msgctxt "[Admin] Label in new preset page"
576
  msgid "Default"
586
  msgid "Enter a name to identify this filter preset"
587
  msgstr "Inserisci un nome per definire questo preset di filtri"
588
 
589
+ #: templates/admin/preset-filters.php:22
590
  msgctxt "[Admin] Label in new preset page"
591
  msgid "Filters of this preset"
592
  msgstr "Filtri di questo preset"
593
 
594
+ #: includes/class-yith-wcan-presets.php:95
595
+ #: includes/class-yith-wcan-presets.php:100
596
  msgctxt "[Admin] name of presets custom post type"
597
  msgid "Filter presets"
598
  msgstr "Preset filtri"
599
 
600
+ #: includes/class-yith-wcan-presets.php:96
601
  msgctxt "[Admin] singular name of presets custom post type"
602
  msgid "Filter preset"
603
  msgstr "Preset filtri"
604
 
605
+ #: includes/class-yith-wcan-presets.php:97
606
  msgctxt "[Admin] add new filter preset label"
607
  msgid "Add new preset"
608
  msgstr "Aggiungi nuovo preset"
609
 
610
+ #: includes/class-yith-wcan-presets.php:139
611
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
612
  msgid "Convert widgets in a preset"
613
  msgstr "Converti widget in preset"
614
 
615
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
616
  msgctxt ""
617
  "[Generic] Error that happens when trying to read a filter preset that does "
618
  "not exist"
620
  msgstr "Preset non valido."
621
 
622
  #. translators: 1. Title of original preset.
623
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
624
  msgctxt "[ADMIN] Title of the cloned preset"
625
  msgid "%s - Copy"
626
  msgstr "%s - Copia"
627
 
628
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
629
  msgctxt "[ADMIN] Name of the preset elementor widget"
630
  msgid "YITH AJAX Filters Preset"
631
  msgstr "YITH AJAX Filters Preset"
632
 
633
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
634
  msgctxt "[ADMIN] Name of the preset elementor widget"
635
  msgid "YITH AJAX Filters Reset Button"
636
  msgstr "YITH AJAX Filters Reset Button"
637
 
638
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
639
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
640
  msgctxt "[ELEMENTOR] Default preset option"
641
  msgid "Choose an option"
642
  msgstr "Scegli un'opzione"
643
 
644
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
645
  msgctxt "[ELEMENTOR] Section title"
646
  msgid "Filters"
647
  msgstr "Filtri"
648
 
649
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
650
  msgctxt "[ELEMENTOR] Section title"
651
  msgid "General"
652
  msgstr "Generale"
653
 
654
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
655
  msgctxt "[ELEMENTOR] Control label"
656
  msgid "Preset"
657
  msgstr "Preset"
658
 
659
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
660
  msgctxt "[ELEMENTOR] Widget description"
661
  msgid ""
662
  "This widget will display \"Filters reset\" button, wherever it is placed"
663
  msgstr "Questo widget mostrerà il pulsante \"Filters reset\" dove posizionato"
664
 
665
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
666
  msgctxt "[ELEMENTOR] Widget description"
667
  msgid ""
668
  "It will allow users to reset the filer selection; it will only appear when "
671
  "Permetterà ai tuoi utenti di resettare i filtri selezionati. Verrà mostrato "
672
  "solo se c'è almeno un filtro attivo. "
673
 
674
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
675
  msgctxt "[ELEMENTOR] Widget description"
676
  msgid ""
677
  "You can use this block to place \"Reset filters\" button inside your page, "
681
  "all'interno della tua pagina se l'opzione \"Posizione pulsante reset\" non "
682
  "funziona per il loop del prodotto"
683
 
684
+ #: includes/functions-yith-wcan.php:112
685
  msgctxt "For multicolor: I.E. white and red T-Shirt"
686
  msgid "Color 1"
687
  msgstr "Colore 1"
688
 
689
+ #: includes/functions-yith-wcan.php:112
690
  msgctxt "For multicolor: I.E. white and red T-Shirt"
691
  msgid "Color 2"
692
  msgstr "Colore 2"
693
 
694
+ #: includes/functions-yith-wcan.php:1026
695
  msgctxt "[FRONTEND] Star rating template"
696
  msgid "star"
697
  msgid_plural "stars"
699
  msgstr[1] "stelle"
700
 
701
  #. translators: 1. Rating.
702
+ #: includes/functions-yith-wcan.php:1041
703
  msgctxt "[FRONTEND] Star rating label"
704
  msgid "Rated %s out of 5"
705
  msgstr "Valutato %s su 5"
706
 
707
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
708
  msgctxt "[GUTENBERG]: block name"
709
  msgid "YITH AJAX Filters Preset"
710
  msgstr "YITH AJAX Filters Preset"
711
 
712
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
713
  msgctxt "[GUTENBERG]: block name"
714
  msgid "YITH Reset Filters Button"
715
  msgstr "YITH Reset Filters Button"
716
 
717
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
718
  msgctxt "[GUTENBERG]: block description"
719
  msgid "Show filters from a preset"
720
  msgstr "Mostra filtri da un preset"
721
 
722
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
723
  msgctxt "[GUTENBERG]: block description"
724
  msgid ""
725
  "Show reset filters button, when a filter is applied and button is enabled in "
733
  "pagina se l'opzione \"Posizione pulsante reset\" non funziona per il loop "
734
  "del prodotto"
735
 
736
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
737
  msgctxt "[GUTENBERG]: attribute description"
738
  msgid "Preset"
739
  msgstr "Preset"
740
 
741
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
742
  msgctxt "[Admin] Preset table column header"
743
  msgid "Preset name"
744
  msgstr "Nome preset"
745
 
746
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
747
  msgctxt "[Admin] Preset table column header"
748
  msgid "Shortcode"
749
  msgstr "Shortcode"
750
 
751
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
752
  msgctxt "[Admin] Preset edit action label"
753
  msgid "Edit this preset"
754
  msgstr "Modifica questo preset"
755
 
756
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
757
  msgctxt "[Admin] Preset clone action label"
758
  msgid "Clone this preset"
759
  msgstr "Clona questo preset"
760
 
761
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
762
  msgctxt "[Admin] Preset delete action label"
763
  msgid "Delete this preset"
764
  msgstr "Elimina questo preset"
765
 
766
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
767
  msgctxt "[Admin] Preset delete confirm label"
768
  msgid "Are you sure you want to delete this preset?"
769
  msgstr "Sei sicuro di voler eliminare questo preset?"
770
 
771
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
772
  msgctxt "[Admin] on-off yes"
773
  msgid "YES"
774
  msgstr "SI"
775
 
776
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
777
  msgctxt "[Admin] on-off no"
778
  msgid "NO"
779
  msgstr "NO"
780
 
781
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
782
  msgctxt ""
783
  "[Admin] Name of the item missing, shown in preset-empty-content template"
784
  msgid "filter preset"
785
  msgstr "preset filtri"
786
 
787
+ #: templates/admin/preset-filters.php:31
788
  msgctxt ""
789
  "[Admin] Name of the item missing, shown in preset-empty-content template"
790
  msgid "filter"
791
  msgstr "filtro"
792
 
793
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
794
  msgctxt "[Admin] New preset button label"
795
  msgid "Create a new preset"
796
  msgstr "Crea nuovo preset"
797
 
798
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
799
  msgctxt "[ADMIN] Name of the preset widget"
800
  msgid "YITH AJAX Filters Preset"
801
  msgstr "YITH AJAX Filters Preset"
802
 
803
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
804
  msgctxt "[ADMIN] Preset widget options"
805
  msgid "Preset"
806
  msgstr "Preset"
807
 
808
  #. translators: 1. Url to Ajax Product filter admin panel.
809
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
810
  msgctxt "[ADMIN] Preset widget options"
811
  msgid ""
812
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
815
  "Vai su <a href=\"%s\">Bacheca WP -> YITH -> Ajax Product Filter -> Preset</"
816
  "a> e crea il tuo primo preset"
817
 
818
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
819
  msgctxt "[Plugin Name] Admin: Widget Title"
820
  msgid "YITH AJAX Product Filter"
821
  msgstr "YITH AJAX Product Filter"
822
 
823
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
824
  #, fuzzy
825
  msgctxt ""
826
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
827
  msgid "AND"
828
  msgstr "E"
829
 
830
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
831
  msgctxt "[Plugin Name]"
832
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
833
  msgstr ""
834
  "Resetta tutti i filtri impostati da YITH WooCommerce AJAX Product Filter"
835
 
836
+ #: plugin-options/filter-options.php:145
837
  #, fuzzy
838
  msgctxt ""
839
  "[Admin] Filter edit form; logical operator that affects query behaviour"
840
  msgid "AND - Results need to match all selected terms at the same time"
841
  msgstr "AND - I risultati devono combaciare con tutti i termini selezionati "
842
 
843
+ #: plugin-options/filter-options.php:146
844
  #, fuzzy
845
  msgctxt ""
846
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1132
  msgstr "Il plugin include:"
1133
 
1134
  #: templates/admin/premium.php:271
1135
+ #, fuzzy
1136
  msgctxt "[ADMIN] Premium tab"
1137
  msgid ""
1138
  "<b>Filter by category</b>: to let users choose which product category to "
1139
+ "view<br/>\n"
1140
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1141
  "<b>Filter by price</b>: to let users filter products by a specific price "
1142
+ "range (based on their budget availability)<br/>\n"
1143
  "<b>Filter by color and size</b>: you can create filters for all the "
1144
  "attributes available in your store, like color and size. For the color "
1145
  "filter, you can either choose square or circular color swatches or use "
1146
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1147
  "<b>Filter by rating</b>: to let your users filter products based on other "
1148
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1149
+ "concentrate only on high-rated ones)<br/>\n"
1150
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1151
+ "on plugin, you can also filter products by specific brands<br/>\n"
1152
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1153
+ "filter products and view only those with a discount<br/>\n"
1154
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1155
  "filter products based on their needs and exclude out-of-stock products from "
1156
  "the list"
1319
  "aggiungendo i filtri applicati o di modificarlo attraverso i permalink del "
1320
  "plugin (in questo modo gli URL saranno più brevi e semplici da condividere)"
1321
 
1322
+ #: templates/admin/preset-edit.php:31
1323
  msgctxt "[Admin] Back link in new preset page"
1324
  msgid "< back to preset list"
1325
  msgstr "< Torna all'elenco preset"
1326
 
1327
+ #: templates/admin/preset-edit.php:38
1328
  msgctxt "[ADMIN] Title for new preset page"
1329
  msgid "Edit filter preset"
1330
  msgstr "Modifica preset filtri"
1331
 
1332
+ #: templates/admin/preset-edit.php:40
1333
  msgctxt "[ADMIN] Title for new preset page"
1334
  msgid "Add new filter preset"
1335
  msgstr "Aggiungi nuovo preset filtri"
1336
 
1337
+ #: templates/admin/preset-edit.php:47
1338
  msgctxt "[ADMIN] Preset save message"
1339
  msgid "Preset saved correctly"
1340
  msgstr ""
1341
 
1342
+ #: templates/admin/preset-edit.php:93
1343
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1344
  msgid "Save preset"
1345
  msgstr "Salva preset"
1346
 
1347
+ #: templates/admin/preset-empty-content.php:29
1348
  msgctxt "Alt text for empty preset image"
1349
  msgid "Empty preset"
1350
  msgstr "Preset vuoto"
1351
 
1352
  #. translators: 1. Missing item name.
1353
+ #: templates/admin/preset-empty-content.php:35
1354
  msgctxt "[Admin] Preset table empty message"
1355
  msgid "You don't have any %s yet."
1356
  msgstr "Non hai ancora nessun %s."
1357
 
1358
+ #: templates/admin/preset-filter-term.php:30
1359
  msgctxt "[Admin] Term edit field label (preset edit page)"
1360
  msgid "Label"
1361
  msgstr "Etichetta"
1362
 
1363
+ #: templates/admin/preset-filter-term.php:35
1364
  msgctxt "[Admin] Term edit field label (preset edit page)"
1365
  msgid "Tooltip"
1366
  msgstr "Tooltip"
1367
 
1368
+ #: templates/admin/preset-filter-term.php:41
1369
  msgctxt "[Admin] Term edit field label (preset edit page)"
1370
  msgid "Color"
1371
  msgstr "Colore"
1372
 
1373
+ #: templates/admin/preset-filter.php:91
1374
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1375
  msgid "Save Filter"
1376
  msgstr "Salva filtro "
1377
 
1378
+ #: templates/admin/preset-filter.php:92
1379
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1380
  msgid "Delete Filter"
1381
  msgstr "Elimina filtro"
1382
 
1383
+ #: templates/admin/preset-filters.php:33
1384
  msgctxt "[Admin] New filter button label"
1385
  msgid "Add a new filter"
1386
  msgstr "Aggiungi nuovo filtro"
1387
 
1388
+ #: templates/admin/preset-filters.php:57
1389
  msgctxt "[Admin] Add new filter in new preset page"
1390
  msgid "+ Add filter"
1391
  msgstr "+ Aggiungi filtro"
1397
  msgid "See %d more filters"
1398
  msgstr "Prima dei filtri"
1399
 
1400
+ #: templates/admin/upgrade-note-modal.php:33
1401
  msgctxt "[ADMIN] Upgrade note modal title"
1402
  msgid "Use the new filter preset feature for your filters"
1403
  msgstr "Usa la nuova funzionalità preset per i tuoi filtri"
1404
 
1405
+ #: templates/admin/upgrade-note-modal.php:38
1406
  msgctxt "[ADMIN] Upgrade note modal content"
1407
  msgid ""
1408
  "From the version 4.0 we built a powerful system that allows you to create "
1416
  "Gutenberg o il widget di Elementor."
1417
 
1418
  #. translators: 1. Url to demo video. 2. Url to docs.
1419
+ #: templates/admin/upgrade-note-modal.php:51
1420
  msgctxt "[ADMIN] Upgrade note modal content"
1421
  msgid ""
1422
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1427
  "funzionalità. "
1428
 
1429
  #. translators: 1. Url to docs.
1430
+ #: templates/admin/upgrade-note-modal.php:64
1431
  msgctxt "[ADMIN] Upgrade note modal content"
1432
  msgid ""
1433
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1436
  "Ti consigliamo di <a href=\"%1$s\">leggere la documentazione</a> per capire "
1437
  "come usare questa nuova funzionalità. "
1438
 
1439
+ #: templates/admin/upgrade-note-modal.php:78
1440
  #, fuzzy
1441
  msgctxt "[ADMIN] Upgrade note modal content"
1442
  msgid ""
1450
  "nella tabella dei preset filtri.<br/><b>Non preoccuparti: non perderai "
1451
  "nessun dato con questa procedura.</b>"
1452
 
1453
+ #: templates/admin/upgrade-note-modal.php:89
1454
  msgctxt "[ADMIN] Upgrade note modal content"
1455
  msgid ""
1456
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1458
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1459
  msgstr ""
1460
 
1461
+ #: templates/admin/upgrade-note-modal.php:98
1462
  msgctxt "[ADMIN] Upgrade note modal button label"
1463
  msgid "Convert your widgets in a preset now"
1464
  msgstr "Converti subito i tuoi widget in preset"
1465
 
1466
+ #: templates/admin/upgrade-note-modal.php:99
1467
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1468
  msgid "No thanks"
1469
  msgstr "No grazie"
1470
 
1471
+ #: templates/filters/global/reset-filters.php:24
1472
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1473
  msgid "Reset filters"
1474
  msgstr "Resetta filtri"
1475
 
1476
+ #~ msgctxt "[Admin] Menu title"
1477
+ #~ msgid "Ajax Product Filter"
1478
+ #~ msgstr "Ajax Product Filter"
1479
+
1480
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1481
  #~ msgid "All"
1482
  #~ msgstr "Tutti"
languages/yith-woocommerce-ajax-navigation-nl_NL.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-nl_NL.po CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:32:05+0000\n"
10
  "Language: nl\n"
11
  "MIME-Version: 1.0\n"
@@ -14,94 +14,94 @@ msgstr ""
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Concept pre-set"
20
 
21
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
22
- #: includes/functions.yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Termijn"
25
 
26
- #: includes/functions.yith-wcan.php:98
27
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
28
  msgid "Color"
29
  msgstr "Kleur"
30
 
31
- #: includes/functions.yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Labels"
34
 
35
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filter de lijst met producten, zonder te pagina opnieuw te laden"
38
 
39
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
40
  msgid "Filters:"
41
  msgstr "Filters:"
42
 
43
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
44
  msgid "List"
45
  msgstr "Lijst"
46
 
47
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
48
  msgid "Label"
49
  msgstr "Label"
50
 
51
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
52
  msgid "Dropdown"
53
  msgstr "Dropdown"
54
 
55
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
56
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
57
  msgid "Title"
58
  msgstr "Titel"
59
 
60
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
61
  msgid "Type:"
62
  msgstr "Type:"
63
 
64
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
65
  msgid "Query Type:"
66
  msgstr "Query Type:"
67
 
68
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
69
  msgid "OR"
70
  msgstr "OF"
71
 
72
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
73
  msgid "Attribute:"
74
  msgstr "Eigenschap:"
75
 
76
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
77
  msgid "Display (default All):"
78
  msgstr "Weergave (allen default):"
79
 
80
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
81
  msgid "All (no hierarchical)"
82
  msgstr "Allen (niet hiërarchisch)"
83
 
84
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
85
  msgid "All (hierarchical)"
86
  msgstr "Allen (hiërarchisch)"
87
 
88
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
89
  msgid "Only Parent"
90
  msgstr "Alleen bovenliggend"
91
 
92
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
93
  msgid "CSS custom class"
94
  msgstr "CSS custom klasse"
95
 
96
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Reset Filter"
99
 
100
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
101
  msgid "Reset All Filters"
102
  msgstr "Alle filters resetten"
103
 
104
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
105
  msgid "Button Label"
106
  msgstr "Labelknop"
107
 
@@ -137,74 +137,69 @@ msgstr ""
137
  "yithemes.com/\" target=\"_blank\">Verkrijg meer plugins voor je e-commerce "
138
  "winkel op <strong>YITH</strong></a>"
139
 
140
- #: includes/class.yith-wcan-admin.php:107
141
  msgctxt "[Admin] Copy confirmation message"
142
  msgid "Content copied to your clipboard"
143
  msgstr "Inhoud gekopieerd naar je klembord"
144
 
145
- #: includes/class.yith-wcan-admin.php:108
146
  msgctxt "[Admin] Confirm filter delete message"
147
  msgid "Are you sure you want to delete this item?"
148
  msgstr "Weet je zeker dat je dit item wilt verwijderen?"
149
 
150
  #. translators: 1. Number of items that will be added.
151
- #: includes/class.yith-wcan-admin.php:110
152
  msgctxt "[Admin] Confirm add all terms message"
153
  msgid "Are you sure you want to proceed? This operation will add %s items"
154
  msgstr "Weet je zeker dat je door wilt gaan? Deze operatie voegt %s items toe"
155
 
156
- #: includes/class.yith-wcan-admin.php:111
157
  msgctxt "[Admin] Error message"
158
  msgid "\"Filter title\" is a required field"
159
  msgstr ""
160
 
161
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
162
  msgctxt "[Admin] Message shown when filter has empty title"
163
  msgid "&lt; no title &gt;"
164
  msgstr "&lt; geen titel &gt;"
165
 
166
- #: includes/class.yith-wcan-admin.php:115
167
  msgctxt "[Admin] Media library title, when selecting images"
168
  msgid "Select media you want to use"
169
  msgstr "Selecteer de media die je wilt gebruiken"
170
 
171
- #: includes/class.yith-wcan-admin.php:116
172
  msgctxt "[Admin] Media library confirm button, when selecting images"
173
  msgid "Use this media"
174
  msgstr "Gebruik deze media"
175
 
176
- #: includes/class.yith-wcan-admin.php:184
177
  msgctxt "[Admin] tab name"
178
  msgid "Filter presets"
179
  msgstr "Filter pre-set"
180
 
181
- #: includes/class.yith-wcan-admin.php:185
182
  msgctxt "[Admin] tab name"
183
  msgid "General settings"
184
  msgstr "Algemene instellingen"
185
 
186
- #: includes/class.yith-wcan-admin.php:186
187
  #, fuzzy
188
  msgctxt "[Admin] tab name"
189
  msgid "SEO"
190
  msgstr "SEO"
191
 
192
- #: includes/class.yith-wcan-admin.php:187
193
  msgctxt "[Admin] tab name"
194
  msgid "Premium Version"
195
  msgstr "Premium versie"
196
 
197
- #: includes/class.yith-wcan-admin.php:191
198
  msgctxt "[Admin] tab name"
199
  msgid "Legacy"
200
  msgstr "Nalatenschap"
201
 
202
- #: includes/class.yith-wcan-admin.php:198
203
- msgctxt "[Admin] Menu title"
204
- msgid "Ajax Product Filter"
205
- msgstr "Ajax Product Filter"
206
-
207
- #: includes/class.yith-wcan-admin.php:199
208
  msgctxt "[Admin] Plugin description"
209
  msgid ""
210
  "It allows your users to find the product they are looking for as quickly as "
@@ -213,44 +208,44 @@ msgstr ""
213
  "Het laat je gebruikers het product het product dat ze zoeken, zo snel "
214
  "mogelijk vinden."
215
 
216
- #: includes/class.yith-wcan-admin.php:211
217
  msgctxt "[HELP TAB] Video title"
218
  msgid ""
219
  "Check this video to learn how to <b>create a filter preset and show it on "
220
  "the shop page:</b>"
221
  msgstr ""
222
 
223
- #: includes/class.yith-wcan-admin.php:329
224
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
225
  msgid "item"
226
  msgstr "Item"
227
 
228
- #: includes/class.yith-wcan-admin.php:330
229
  msgctxt "[Admin] Preset table empty message second line"
230
  msgid "But don't worry, here you can create your first one!"
231
  msgstr "Maar geen zorgen, je kunt hier je eerste aanmaken!"
232
 
233
- #: includes/class.yith-wcan-admin.php:478
234
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
235
  msgid "Clear Product Filter transients"
236
  msgstr "Product Filter transients legen"
237
 
238
- #: includes/class.yith-wcan-admin.php:484
239
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
240
  msgid "Run filter widgets upgrade"
241
  msgstr "Filter widgets upgrade uitvoeren"
242
 
243
- #: includes/class.yith-wcan-admin.php:479
244
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
245
  msgid "Clear"
246
  msgstr "Wissen"
247
 
248
- #: includes/class.yith-wcan-admin.php:485
249
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
250
  msgid "Run"
251
  msgstr "Uitvoeren"
252
 
253
- #: includes/class.yith-wcan-admin.php:480
254
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
255
  msgid ""
256
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -262,7 +257,7 @@ msgstr ""
262
  "configuratie van je product hebt gewijzigd en filters niet de verwachte "
263
  "resultaten weergeven."
264
 
265
- #: includes/class.yith-wcan-admin.php:486
266
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
267
  msgid ""
268
  "This will create a preset for any sidebar of your shop containing filter "
@@ -272,32 +267,32 @@ msgstr ""
272
  "filter widgets bevat; de preset wordt geconfigureerd om te voldoen aan de "
273
  "widgets specificaties"
274
 
275
- #: includes/class.yith-wcan-filter-factory.php:72
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Taxonomy"
278
  msgstr "Taxonomie"
279
 
280
- #: includes/class.yith-wcan-filter-factory.php:86
281
  msgctxt "[Admin] Filter edit form"
282
  msgid "Checkbox"
283
  msgstr "Keuzevakje"
284
 
285
- #: includes/class.yith-wcan-filter-factory.php:87
286
  msgctxt "[Admin] Filter edit form"
287
  msgid "Select"
288
  msgstr "Selecteren"
289
 
290
- #: includes/class.yith-wcan-filter-factory.php:88
291
  msgctxt "[Admin] Filter edit form"
292
  msgid "Text"
293
  msgstr "Tekst"
294
 
295
- #: includes/class.yith-wcan-filter-factory.php:89
296
  msgctxt "[Admin] Filter edit form"
297
  msgid "Color Swatches"
298
  msgstr "Kleur swatches"
299
 
300
- #: includes/class.yith-wcan-filter-factory.php:90
301
  msgctxt "[Admin] Filter edit form"
302
  msgid "Label"
303
  msgstr "Label"
@@ -312,32 +307,32 @@ msgctxt "[Admin] Filter edit form"
312
  msgid "Enter a name to identify this filter"
313
  msgstr "Naam invoeren voor deze filter"
314
 
315
- #: plugin-options/filter-options.php:41
316
  msgctxt "[Admin] Filter edit form"
317
  msgid "Filter for"
318
  msgstr "Filter voor"
319
 
320
- #: plugin-options/filter-options.php:45
321
  msgctxt "[Admin] Filter edit form"
322
  msgid "Select the parameters you wish to filter for"
323
  msgstr "Selecteer de parameters je wilt filteren voor"
324
 
325
- #: plugin-options/filter-options.php:51
326
  msgctxt "[Admin] Filter edit form"
327
  msgid "Choose taxonomy"
328
  msgstr "Kies taxonomie"
329
 
330
- #: plugin-options/filter-options.php:55
331
  msgctxt "[Admin] Filter edit form"
332
  msgid "Select which taxonomy to use for this filter"
333
  msgstr "Selecteer welke taxonomie je wilt gebruiken voor deze filter"
334
 
335
- #: plugin-options/filter-options.php:60
336
  msgctxt "[Admin] Filter edit form"
337
  msgid "Auto-populate with all terms"
338
  msgstr ""
339
 
340
- #: plugin-options/filter-options.php:62
341
  msgctxt "[Admin] Filter edit form"
342
  msgid ""
343
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -346,71 +341,71 @@ msgid ""
346
  "well.</span>"
347
  msgstr ""
348
 
349
- #: plugin-options/filter-options.php:71
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Choose terms"
352
  msgstr "Kies termen"
353
 
354
- #: plugin-options/filter-options.php:76
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Select which terms to use for filtering"
357
  msgstr "Selecteer welke termen je wilt gebruiken voor filteren"
358
 
359
- #: plugin-options/filter-options.php:80
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Filter type"
362
  msgstr "Filter type"
363
 
364
- #: plugin-options/filter-options.php:84
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "Select the filter type for this filter"
367
  msgstr "Selecteer het filter type voor deze filter"
368
 
369
- #: plugin-options/filter-options.php:88
370
  #, fuzzy
371
  msgctxt "[Admin] Filter edit form"
372
  msgid "Labels"
373
  msgstr "Labels"
374
 
375
- #: plugin-options/filter-options.php:91
376
  #, fuzzy
377
  msgctxt "[Admin] Filter edit form"
378
  msgid "Show below"
379
  msgstr "Resultaten weergeven"
380
 
381
- #: plugin-options/filter-options.php:92
382
  #, fuzzy
383
  msgctxt "[Admin] Filter edit form"
384
  msgid "Show on the right"
385
  msgstr "Toon item telling"
386
 
387
- #: plugin-options/filter-options.php:93
388
  msgctxt "[Admin] Filter edit form"
389
  msgid "Hide"
390
  msgstr ""
391
 
392
- #: plugin-options/filter-options.php:95
393
  #, fuzzy
394
  msgctxt "[Admin] Filter edit form"
395
  msgid "Choose if and where to show the label inside your filter"
396
  msgstr "Kies de stijl van de filter binnen de widgets"
397
 
398
- #: plugin-options/filter-options.php:99
399
  msgctxt "[Admin] Filter edit form"
400
  msgid "Columns number"
401
  msgstr "Kolommen nummer"
402
 
403
- #: plugin-options/filter-options.php:104
404
  msgctxt "[Admin] Filter edit form"
405
  msgid "Set the number of items per row you want to show for this design"
406
  msgstr "Kies het aantal items per rij dat je wilt tonen voor dit ontwerp"
407
 
408
- #: plugin-options/filter-options.php:108
409
  msgctxt "[Admin] Filter edit form"
410
  msgid "Customize terms"
411
  msgstr "Aangepaste termen"
412
 
413
- #: plugin-options/filter-options.php:111
414
  msgctxt "[Admin] Filter edit form"
415
  msgid ""
416
  "Configure your terms individually; system will otherwise use default labels/"
@@ -424,157 +419,157 @@ msgid ""
424
  "this option and use the boxes below</span>"
425
  msgstr ""
426
 
427
- #: plugin-options/filter-options.php:121
428
  #, fuzzy
429
  msgctxt "[Admin] Filter edit form"
430
  msgid "Terms options"
431
  msgstr "Bestelling opties"
432
 
433
- #: plugin-options/filter-options.php:127
434
  msgctxt "[Admin] Filter edit form"
435
  msgid "Show hierarchy"
436
  msgstr "Toon hiërarchie "
437
 
438
- #: plugin-options/filter-options.php:130
439
  msgctxt "[Admin] Filter edit form"
440
  msgid "No, show all terms in same level"
441
  msgstr "Nee, toon alle termen in hetzelfde niveau"
442
 
443
- #: plugin-options/filter-options.php:131
444
  msgctxt "[Admin] Filter edit form"
445
  msgid "No, show only parent terms"
446
  msgstr "Nee, alleen hoofd-termen tonen"
447
 
448
- #: plugin-options/filter-options.php:132
449
  msgctxt "[Admin] Filter edit form"
450
  msgid "Yes"
451
  msgstr ""
452
 
453
- #: plugin-options/filter-options.php:134
454
  msgctxt "[Admin] Filter edit form"
455
  msgid "Choose how to show terms hierarchy"
456
  msgstr "Bepaal hoe je de termen hiërarchie wilt tonen"
457
 
458
- #: plugin-options/filter-options.php:138
459
  msgctxt "[Admin] Filter edit form"
460
  msgid "Allow multiple selection"
461
  msgstr "Meervoudige selectie toestaan"
462
 
463
- #: plugin-options/filter-options.php:140
464
  msgctxt "[Admin] Filter edit form"
465
  msgid "Enable if the user can select multiple terms when filtering products"
466
  msgstr ""
467
  "Inschakelen als de gebruiker meerdere termen can selecteren bij het filteren "
468
  "van producten"
469
 
470
- #: plugin-options/filter-options.php:144
471
  msgctxt "[Admin] Filter edit form"
472
  msgid "Multiselect relation"
473
  msgstr "Multi-selecteren relatie"
474
 
475
- #: plugin-options/filter-options.php:150
476
  msgctxt "[Admin] Filter edit form"
477
  msgid "Choose how multiple terms selection should behave"
478
  msgstr "Bepaal het gedrag van meervoudige termen selectie"
479
 
480
- #: includes/class.yith-wcan-filter-factory.php:104
481
  msgctxt "[Admin] Filter edit form, sorting options"
482
  msgid "Default sorting"
483
  msgstr "Standaard sortering"
484
 
485
- #: includes/class.yith-wcan-filter-factory.php:105
486
  msgctxt "[Admin] Filter edit form, sorting options"
487
  msgid "Sort by popularity"
488
  msgstr "Sorteren op populariteit"
489
 
490
- #: includes/class.yith-wcan-filter-factory.php:106
491
  msgctxt "[Admin] Filter edit form, sorting options"
492
  msgid "Sort by average rating"
493
  msgstr "Sorteren op gemiddelde waardering"
494
 
495
- #: includes/class.yith-wcan-filter-factory.php:107
496
  msgctxt "[Admin] Filter edit form, sorting options"
497
  msgid "Sort by latest"
498
  msgstr "Sorteren op laaste"
499
 
500
- #: includes/class.yith-wcan-filter-factory.php:108
501
  msgctxt "[Admin] Filter edit form, sorting options"
502
  msgid "Sort by price: low to high"
503
  msgstr "Sorteren op prijs: laag naar hoog"
504
 
505
- #: includes/class.yith-wcan-filter-factory.php:109
506
  msgctxt "[Admin] Filter edit form, sorting options"
507
  msgid "Sort by price: high to low"
508
  msgstr "Sorteren op prijs: hoog naar laag"
509
 
510
- #: includes/class.yith-wcan-filter.php:116
511
  msgctxt "[Admin] Default filter title"
512
  msgid "New filter"
513
  msgstr "Nieuwe filter"
514
 
515
- #: includes/class.yith-wcan-frontend.php:576
516
- #: includes/filters/class.yith-wcan-filter-tax.php:62
517
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
518
  msgid "All"
519
  msgstr "Alle"
520
 
521
- #: includes/class.yith-wcan-frontend.php:577
522
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
523
  msgid "Search..."
524
  msgstr "Zoeken..."
525
 
526
- #: includes/class.yith-wcan-frontend.php:578
527
  msgctxt "[FRONTEND] Empty items list in the dropdown"
528
  msgid "No item found"
529
  msgstr "Geen item gevonden"
530
 
531
  #. translators: 1. Number of items to show.
532
- #: includes/class.yith-wcan-frontend.php:580
533
  msgctxt "[FRONTEND] Show more link on terms dropdown"
534
  msgid "Show %d more"
535
  msgstr "Toon %d meer"
536
 
537
- #: includes/class.yith-wcan-frontend.php:581
538
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
539
  msgid "Close"
540
  msgstr "Sluiten"
541
 
542
- #: includes/class.yith-wcan-frontend.php:582
543
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
544
  msgid "Save"
545
  msgstr ""
546
 
547
- #: includes/class.yith-wcan-frontend.php:583
548
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
549
  msgid "Show results"
550
  msgstr "Resultaten weergeven"
551
 
552
- #: includes/class.yith-wcan-frontend.php:584
553
  msgctxt ""
554
  "[FRONTEND] Label for clear selection link, that appears above filter after "
555
  "selection"
556
  msgid "Clear"
557
  msgstr "Wissen"
558
 
559
- #: includes/class.yith-wcan-frontend.php:585
560
  msgctxt ""
561
  "[FRONTEND] Label for clear selection link, that appears above filter after "
562
  "selection"
563
  msgid "Clear All"
564
  msgstr "Alles wissen"
565
 
566
- #: includes/class.yith-wcan-install.php:95
567
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
568
  msgid "Default preset"
569
  msgstr "Standaard pre-set"
570
 
571
  #. translators: 1. Taxonomy name.
572
- #: includes/class.yith-wcan-install.php:285
573
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
574
  msgid "Filter by %s"
575
  msgstr "Filter op %s"
576
 
577
- #: includes/class.yith-wcan-preset-factory.php:112
578
  #, fuzzy
579
  msgctxt "[Admin] Label in new preset page"
580
  msgid "Default"
@@ -590,33 +585,33 @@ msgctxt "[Admin] Label in new preset page"
590
  msgid "Enter a name to identify this filter preset"
591
  msgstr "Naam invoeren voor deze filter pre-set"
592
 
593
- #: templates/admin/preset-filters.php:20
594
  msgctxt "[Admin] Label in new preset page"
595
  msgid "Filters of this preset"
596
  msgstr "Filters van deze pre-set"
597
 
598
- #: includes/class.yith-wcan-presets.php:95
599
- #: includes/class.yith-wcan-presets.php:100
600
  msgctxt "[Admin] name of presets custom post type"
601
  msgid "Filter presets"
602
  msgstr "Filter pre-sets"
603
 
604
- #: includes/class.yith-wcan-presets.php:96
605
  msgctxt "[Admin] singular name of presets custom post type"
606
  msgid "Filter preset"
607
  msgstr "Filter pre-set"
608
 
609
- #: includes/class.yith-wcan-presets.php:97
610
  msgctxt "[Admin] add new filter preset label"
611
  msgid "Add new preset"
612
  msgstr "Nieuwe pre-set toevoegen"
613
 
614
- #: includes/class.yith-wcan-presets.php:139
615
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
616
  msgid "Convert widgets in a preset"
617
  msgstr "Widgets omzetten in een pre-set"
618
 
619
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
620
  msgctxt ""
621
  "[Generic] Error that happens when trying to read a filter preset that does "
622
  "not exist"
@@ -624,43 +619,43 @@ msgid "Invalid preset."
624
  msgstr "Ongeldige pre-set"
625
 
626
  #. translators: 1. Title of original preset.
627
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
628
  msgctxt "[ADMIN] Title of the cloned preset"
629
  msgid "%s - Copy"
630
  msgstr "%s - Kopieer"
631
 
632
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
633
  msgctxt "[ADMIN] Name of the preset elementor widget"
634
  msgid "YITH AJAX Filters Preset"
635
  msgstr "YITH AJAX Filters Pre-set"
636
 
637
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
638
  msgctxt "[ADMIN] Name of the preset elementor widget"
639
  msgid "YITH AJAX Filters Reset Button"
640
  msgstr "YITH AJAX Filters Reset Knop"
641
 
642
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
643
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
644
  msgctxt "[ELEMENTOR] Default preset option"
645
  msgid "Choose an option"
646
  msgstr "Kies een optie"
647
 
648
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
649
  msgctxt "[ELEMENTOR] Section title"
650
  msgid "Filters"
651
  msgstr "Filters"
652
 
653
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
654
  msgctxt "[ELEMENTOR] Section title"
655
  msgid "General"
656
  msgstr "Algemeen"
657
 
658
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
659
  msgctxt "[ELEMENTOR] Control label"
660
  msgid "Preset"
661
  msgstr "Pre-set"
662
 
663
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
664
  msgctxt "[ELEMENTOR] Widget description"
665
  msgid ""
666
  "This widget will display \"Filters reset\" button, wherever it is placed"
@@ -668,7 +663,7 @@ msgstr ""
668
  "Deze widget zal de \"Filters resetten\" knop weergeven, waar deze ook "
669
  "geplaatst is"
670
 
671
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
672
  msgctxt "[ELEMENTOR] Widget description"
673
  msgid ""
674
  "It will allow users to reset the filer selection; it will only appear when "
@@ -677,7 +672,7 @@ msgstr ""
677
  "Het laat gebruikers de filter selectie resetten; het verschijnt alleen "
678
  "wanneer er een actieve filter is."
679
 
680
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
681
  msgctxt "[ELEMENTOR] Widget description"
682
  msgid ""
683
  "You can use this block to place \"Reset filters\" button inside your page, "
@@ -687,17 +682,17 @@ msgstr ""
687
  "plaatsen, wanneer de \"Resetten knop positie' optie niet werkt voor de loop "
688
  "van je producten "
689
 
690
- #: includes/functions.yith-wcan.php:112
691
  msgctxt "For multicolor: I.E. white and red T-Shirt"
692
  msgid "Color 1"
693
  msgstr "Kleur 1"
694
 
695
- #: includes/functions.yith-wcan.php:112
696
  msgctxt "For multicolor: I.E. white and red T-Shirt"
697
  msgid "Color 2"
698
  msgstr "Kleur 2"
699
 
700
- #: includes/functions.yith-wcan.php:1001
701
  msgctxt "[FRONTEND] Star rating template"
702
  msgid "star"
703
  msgid_plural "stars"
@@ -705,27 +700,27 @@ msgstr[0] "ster"
705
  msgstr[1] "sterren"
706
 
707
  #. translators: 1. Rating.
708
- #: includes/functions.yith-wcan.php:1016
709
  msgctxt "[FRONTEND] Star rating label"
710
  msgid "Rated %s out of 5"
711
  msgstr "Waardering %s van de 5"
712
 
713
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
714
  msgctxt "[GUTENBERG]: block name"
715
  msgid "YITH AJAX Filters Preset"
716
  msgstr "YITH AJAX Filters Pre-set"
717
 
718
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
719
  msgctxt "[GUTENBERG]: block name"
720
  msgid "YITH Reset Filters Button"
721
  msgstr "YITH Reset Filters knop"
722
 
723
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
724
  msgctxt "[GUTENBERG]: block description"
725
  msgid "Show filters from a preset"
726
  msgstr "Filters tonen van een pre-set"
727
 
728
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
729
  msgctxt "[GUTENBERG]: block description"
730
  msgid ""
731
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -738,80 +733,80 @@ msgstr ""
738
  "'Filters resetten' op je pagina te plaatsen, als de optie 'Knop positie "
739
  "resetten' niet werkt voor je producten loop"
740
 
741
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
742
  msgctxt "[GUTENBERG]: attribute description"
743
  msgid "Preset"
744
  msgstr "Pre-set"
745
 
746
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
747
  msgctxt "[Admin] Preset table column header"
748
  msgid "Preset name"
749
  msgstr "Naam pre-set"
750
 
751
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
752
  msgctxt "[Admin] Preset table column header"
753
  msgid "Shortcode"
754
  msgstr "Shortcode"
755
 
756
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
757
  msgctxt "[Admin] Preset edit action label"
758
  msgid "Edit this preset"
759
  msgstr "Deze pre-set bewerken"
760
 
761
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
762
  msgctxt "[Admin] Preset clone action label"
763
  msgid "Clone this preset"
764
  msgstr "Deze pre-set clonen"
765
 
766
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
767
  msgctxt "[Admin] Preset delete action label"
768
  msgid "Delete this preset"
769
  msgstr "Deze pre-set verwijderen"
770
 
771
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
772
  msgctxt "[Admin] Preset delete confirm label"
773
  msgid "Are you sure you want to delete this preset?"
774
  msgstr "Weet je zeker dat je deze pre-set wilt verwijderen?"
775
 
776
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
777
  msgctxt "[Admin] on-off yes"
778
  msgid "YES"
779
  msgstr "JA"
780
 
781
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
782
  msgctxt "[Admin] on-off no"
783
  msgid "NO"
784
  msgstr "NEE"
785
 
786
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
787
  msgctxt ""
788
  "[Admin] Name of the item missing, shown in preset-empty-content template"
789
  msgid "filter preset"
790
  msgstr "Filter pre-set"
791
 
792
- #: templates/admin/preset-filters.php:29
793
  msgctxt ""
794
  "[Admin] Name of the item missing, shown in preset-empty-content template"
795
  msgid "filter"
796
  msgstr "filter"
797
 
798
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
799
  msgctxt "[Admin] New preset button label"
800
  msgid "Create a new preset"
801
  msgstr "Nieuwe pre-set aanmaken"
802
 
803
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
804
  msgctxt "[ADMIN] Name of the preset widget"
805
  msgid "YITH AJAX Filters Preset"
806
  msgstr "YITH AJAX Filters Pre-set"
807
 
808
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
809
  msgctxt "[ADMIN] Preset widget options"
810
  msgid "Preset"
811
  msgstr "Pre-set"
812
 
813
  #. translators: 1. Url to Ajax Product filter admin panel.
814
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
815
  msgctxt "[ADMIN] Preset widget options"
816
  msgid ""
817
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -820,26 +815,26 @@ msgstr ""
820
  "Ga a.u.b. naar het <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product "
821
  "Filter -> Pre-sets</a> en maak je eerste pre-set aan"
822
 
823
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
824
  msgctxt "[Plugin Name] Admin: Widget Title"
825
  msgid "YITH AJAX Product Filter"
826
  msgstr "YITH AJAX Product Filter"
827
 
828
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
829
  #, fuzzy
830
  msgctxt ""
831
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
832
  msgid "AND"
833
  msgstr "EN"
834
 
835
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
836
  msgctxt "[Plugin Name]"
837
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
838
  msgstr ""
839
  "Alle filters terugzetten die zijn ingesteld door YITH WooCommerce AJAX "
840
  "Product Filter"
841
 
842
- #: plugin-options/filter-options.php:147
843
  #, fuzzy
844
  msgctxt ""
845
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -847,7 +842,7 @@ msgid "AND - Results need to match all selected terms at the same time"
847
  msgstr ""
848
  "EN - Resultaten moeten matchen met alle geselecteerde termen tegelijkertijd"
849
 
850
- #: plugin-options/filter-options.php:148
851
  #, fuzzy
852
  msgctxt ""
853
  "[Admin] Filter edit form; logical operator that affects query behaviour"
@@ -1132,21 +1127,21 @@ msgstr ""
1132
  msgctxt "[ADMIN] Premium tab"
1133
  msgid ""
1134
  "<b>Filter by category</b>: to let users choose which product category to "
1135
- "view<br/>\r\n"
1136
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1137
  "<b>Filter by price</b>: to let users filter products by a specific price "
1138
- "range (based on their budget availability)<br/>\r\n"
1139
  "<b>Filter by color and size</b>: you can create filters for all the "
1140
  "attributes available in your store, like color and size. For the color "
1141
  "filter, you can either choose square or circular color swatches or use "
1142
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1143
  "<b>Filter by rating</b>: to let your users filter products based on other "
1144
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1145
- "concentrate only on high-rated ones)<br/>\r\n"
1146
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1147
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1148
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1149
- "filter products and view only those with a discount<br/>\r\n"
1150
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1151
  "filter products based on their needs and exclude out-of-stock products from "
1152
  "the list"
@@ -1272,73 +1267,73 @@ msgid ""
1272
  "easier to share)"
1273
  msgstr ""
1274
 
1275
- #: templates/admin/preset-edit.php:29
1276
  msgctxt "[Admin] Back link in new preset page"
1277
  msgid "< back to preset list"
1278
  msgstr "< terug naar pre-set lijst"
1279
 
1280
- #: templates/admin/preset-edit.php:36
1281
  msgctxt "[ADMIN] Title for new preset page"
1282
  msgid "Edit filter preset"
1283
  msgstr "Filter pre-set bewerken"
1284
 
1285
- #: templates/admin/preset-edit.php:38
1286
  msgctxt "[ADMIN] Title for new preset page"
1287
  msgid "Add new filter preset"
1288
  msgstr "Nieuwe filter pre-set toevoegen"
1289
 
1290
- #: templates/admin/preset-edit.php:45
1291
  msgctxt "[ADMIN] Preset save message"
1292
  msgid "Preset saved correctly"
1293
  msgstr ""
1294
 
1295
- #: templates/admin/preset-edit.php:90
1296
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1297
  msgid "Save preset"
1298
  msgstr "Pre-set opslaan"
1299
 
1300
- #: templates/admin/preset-empty-content.php:27
1301
  msgctxt "Alt text for empty preset image"
1302
  msgid "Empty preset"
1303
  msgstr "Lege pre-set"
1304
 
1305
  #. translators: 1. Missing item name.
1306
- #: templates/admin/preset-empty-content.php:33
1307
  msgctxt "[Admin] Preset table empty message"
1308
  msgid "You don't have any %s yet."
1309
  msgstr "Je hebt nog geen %s ingesteld."
1310
 
1311
- #: templates/admin/preset-filter-term.php:28
1312
  msgctxt "[Admin] Term edit field label (preset edit page)"
1313
  msgid "Label"
1314
  msgstr "Label"
1315
 
1316
- #: templates/admin/preset-filter-term.php:33
1317
  msgctxt "[Admin] Term edit field label (preset edit page)"
1318
  msgid "Tooltip"
1319
  msgstr "Tooltip"
1320
 
1321
- #: templates/admin/preset-filter-term.php:39
1322
  msgctxt "[Admin] Term edit field label (preset edit page)"
1323
  msgid "Color"
1324
  msgstr "Kleur"
1325
 
1326
- #: templates/admin/preset-filter.php:89
1327
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1328
  msgid "Save Filter"
1329
  msgstr "Filter opslaan"
1330
 
1331
- #: templates/admin/preset-filter.php:90
1332
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1333
  msgid "Delete Filter"
1334
  msgstr "Filter verwijderen"
1335
 
1336
- #: templates/admin/preset-filters.php:31
1337
  msgctxt "[Admin] New filter button label"
1338
  msgid "Add a new filter"
1339
  msgstr "Nieuwe filter toevoegen"
1340
 
1341
- #: templates/admin/preset-filters.php:55
1342
  msgctxt "[Admin] Add new filter in new preset page"
1343
  msgid "+ Add filter"
1344
  msgstr "+ Nieuwe filter toevoegen"
@@ -1350,12 +1345,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1350
  msgid "See %d more filters"
1351
  msgstr "Voor filters"
1352
 
1353
- #: templates/admin/upgrade-note-modal.php:31
1354
  msgctxt "[ADMIN] Upgrade note modal title"
1355
  msgid "Use the new filter preset feature for your filters"
1356
  msgstr "Gebruik de nieuwe filter pre-set functie voor je filters"
1357
 
1358
- #: templates/admin/upgrade-note-modal.php:36
1359
  msgctxt "[ADMIN] Upgrade note modal content"
1360
  msgid ""
1361
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1369,7 +1364,7 @@ msgstr ""
1369
  "de shortcode, het Gutenberg Blok of de Elementor widget."
1370
 
1371
  #. translators: 1. Url to demo video. 2. Url to docs.
1372
- #: templates/admin/upgrade-note-modal.php:49
1373
  msgctxt "[ADMIN] Upgrade note modal content"
1374
  msgid ""
1375
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1380,7 +1375,7 @@ msgstr ""
1380
  "gebruiken."
1381
 
1382
  #. translators: 1. Url to docs.
1383
- #: templates/admin/upgrade-note-modal.php:62
1384
  msgctxt "[ADMIN] Upgrade note modal content"
1385
  msgid ""
1386
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
@@ -1389,7 +1384,7 @@ msgstr ""
1389
  "We raden je aan om <a href=\"%1$s\">de documentatie te lezen</a> om meer te "
1390
  "weten te komen over deze nieuwe optie."
1391
 
1392
- #: templates/admin/upgrade-note-modal.php:76
1393
  #, fuzzy
1394
  msgctxt "[ADMIN] Upgrade note modal content"
1395
  msgid ""
@@ -1404,7 +1399,7 @@ msgstr ""
1404
  "tabel..<br/><b>Geen zorgen, gegevens zullen niet verloren gaan tijdens het "
1405
  "proces.</b>"
1406
 
1407
- #: templates/admin/upgrade-note-modal.php:87
1408
  msgctxt "[ADMIN] Upgrade note modal content"
1409
  msgid ""
1410
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1412,21 +1407,25 @@ msgid ""
1412
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1413
  msgstr ""
1414
 
1415
- #: templates/admin/upgrade-note-modal.php:96
1416
  msgctxt "[ADMIN] Upgrade note modal button label"
1417
  msgid "Convert your widgets in a preset now"
1418
  msgstr "Je widgets nu omzetten naar een pre-set"
1419
 
1420
- #: templates/admin/upgrade-note-modal.php:97
1421
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1422
  msgid "No thanks"
1423
  msgstr "Nee bedankt"
1424
 
1425
- #: templates/filters/global/reset-filters.php:23
1426
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1427
  msgid "Reset filters"
1428
  msgstr "Filters resetten"
1429
 
 
 
 
 
1430
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1431
  #~ msgid "All"
1432
  #~ msgstr "Alle"
5
  "Project-Id-Version: YITH WooCommerce Ajax Product Filter\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
7
  "ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "PO-Revision-Date: 2021-02-12 13:32:05+0000\n"
10
  "Language: nl\n"
11
  "MIME-Version: 1.0\n"
14
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
15
  "X-Generator: GlotPress/3.0.0-alpha.2\n"
16
 
17
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
18
  msgid "Draft Preset"
19
  msgstr "Concept pre-set"
20
 
21
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
22
+ #: includes/functions-yith-wcan.php:132
23
  msgid "Term"
24
  msgstr "Termijn"
25
 
26
+ #: includes/functions-yith-wcan.php:98
27
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
28
  msgid "Color"
29
  msgstr "Kleur"
30
 
31
+ #: includes/functions-yith-wcan.php:132
32
  msgid "Labels"
33
  msgstr "Labels"
34
 
35
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
36
  msgid "Filter the list of products without reloading the page"
37
  msgstr "Filter de lijst met producten, zonder te pagina opnieuw te laden"
38
 
39
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
40
  msgid "Filters:"
41
  msgstr "Filters:"
42
 
43
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
44
  msgid "List"
45
  msgstr "Lijst"
46
 
47
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
48
  msgid "Label"
49
  msgstr "Label"
50
 
51
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
52
  msgid "Dropdown"
53
  msgstr "Dropdown"
54
 
55
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
56
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
57
  msgid "Title"
58
  msgstr "Titel"
59
 
60
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
61
  msgid "Type:"
62
  msgstr "Type:"
63
 
64
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
65
  msgid "Query Type:"
66
  msgstr "Query Type:"
67
 
68
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
69
  msgid "OR"
70
  msgstr "OF"
71
 
72
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
73
  msgid "Attribute:"
74
  msgstr "Eigenschap:"
75
 
76
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
77
  msgid "Display (default All):"
78
  msgstr "Weergave (allen default):"
79
 
80
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
81
  msgid "All (no hierarchical)"
82
  msgstr "Allen (niet hiërarchisch)"
83
 
84
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
85
  msgid "All (hierarchical)"
86
  msgstr "Allen (hiërarchisch)"
87
 
88
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
89
  msgid "Only Parent"
90
  msgstr "Alleen bovenliggend"
91
 
92
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
93
  msgid "CSS custom class"
94
  msgstr "CSS custom klasse"
95
 
96
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
97
  msgid "YITH AJAX Reset Filter"
98
  msgstr "YITH AJAX Reset Filter"
99
 
100
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
101
  msgid "Reset All Filters"
102
  msgstr "Alle filters resetten"
103
 
104
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
105
  msgid "Button Label"
106
  msgstr "Labelknop"
107
 
137
  "yithemes.com/\" target=\"_blank\">Verkrijg meer plugins voor je e-commerce "
138
  "winkel op <strong>YITH</strong></a>"
139
 
140
+ #: includes/class-yith-wcan-admin.php:107
141
  msgctxt "[Admin] Copy confirmation message"
142
  msgid "Content copied to your clipboard"
143
  msgstr "Inhoud gekopieerd naar je klembord"
144
 
145
+ #: includes/class-yith-wcan-admin.php:108
146
  msgctxt "[Admin] Confirm filter delete message"
147
  msgid "Are you sure you want to delete this item?"
148
  msgstr "Weet je zeker dat je dit item wilt verwijderen?"
149
 
150
  #. translators: 1. Number of items that will be added.
151
+ #: includes/class-yith-wcan-admin.php:110
152
  msgctxt "[Admin] Confirm add all terms message"
153
  msgid "Are you sure you want to proceed? This operation will add %s items"
154
  msgstr "Weet je zeker dat je door wilt gaan? Deze operatie voegt %s items toe"
155
 
156
+ #: includes/class-yith-wcan-admin.php:111
157
  msgctxt "[Admin] Error message"
158
  msgid "\"Filter title\" is a required field"
159
  msgstr ""
160
 
161
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
162
  msgctxt "[Admin] Message shown when filter has empty title"
163
  msgid "&lt; no title &gt;"
164
  msgstr "&lt; geen titel &gt;"
165
 
166
+ #: includes/class-yith-wcan-admin.php:115
167
  msgctxt "[Admin] Media library title, when selecting images"
168
  msgid "Select media you want to use"
169
  msgstr "Selecteer de media die je wilt gebruiken"
170
 
171
+ #: includes/class-yith-wcan-admin.php:116
172
  msgctxt "[Admin] Media library confirm button, when selecting images"
173
  msgid "Use this media"
174
  msgstr "Gebruik deze media"
175
 
176
+ #: includes/class-yith-wcan-admin.php:184
177
  msgctxt "[Admin] tab name"
178
  msgid "Filter presets"
179
  msgstr "Filter pre-set"
180
 
181
+ #: includes/class-yith-wcan-admin.php:185
182
  msgctxt "[Admin] tab name"
183
  msgid "General settings"
184
  msgstr "Algemene instellingen"
185
 
186
+ #: includes/class-yith-wcan-admin.php:186
187
  #, fuzzy
188
  msgctxt "[Admin] tab name"
189
  msgid "SEO"
190
  msgstr "SEO"
191
 
192
+ #: includes/class-yith-wcan-admin.php:187
193
  msgctxt "[Admin] tab name"
194
  msgid "Premium Version"
195
  msgstr "Premium versie"
196
 
197
+ #: includes/class-yith-wcan-admin.php:191
198
  msgctxt "[Admin] tab name"
199
  msgid "Legacy"
200
  msgstr "Nalatenschap"
201
 
202
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
203
  msgctxt "[Admin] Plugin description"
204
  msgid ""
205
  "It allows your users to find the product they are looking for as quickly as "
208
  "Het laat je gebruikers het product het product dat ze zoeken, zo snel "
209
  "mogelijk vinden."
210
 
211
+ #: includes/class-yith-wcan-admin.php:211
212
  msgctxt "[HELP TAB] Video title"
213
  msgid ""
214
  "Check this video to learn how to <b>create a filter preset and show it on "
215
  "the shop page:</b>"
216
  msgstr ""
217
 
218
+ #: includes/class-yith-wcan-admin.php:329
219
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
220
  msgid "item"
221
  msgstr "Item"
222
 
223
+ #: includes/class-yith-wcan-admin.php:330
224
  msgctxt "[Admin] Preset table empty message second line"
225
  msgid "But don't worry, here you can create your first one!"
226
  msgstr "Maar geen zorgen, je kunt hier je eerste aanmaken!"
227
 
228
+ #: includes/class-yith-wcan-admin.php:480
229
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
230
  msgid "Clear Product Filter transients"
231
  msgstr "Product Filter transients legen"
232
 
233
+ #: includes/class-yith-wcan-admin.php:486
234
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
235
  msgid "Run filter widgets upgrade"
236
  msgstr "Filter widgets upgrade uitvoeren"
237
 
238
+ #: includes/class-yith-wcan-admin.php:481
239
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
240
  msgid "Clear"
241
  msgstr "Wissen"
242
 
243
+ #: includes/class-yith-wcan-admin.php:487
244
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
245
  msgid "Run"
246
  msgstr "Uitvoeren"
247
 
248
+ #: includes/class-yith-wcan-admin.php:482
249
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
250
  msgid ""
251
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
257
  "configuratie van je product hebt gewijzigd en filters niet de verwachte "
258
  "resultaten weergeven."
259
 
260
+ #: includes/class-yith-wcan-admin.php:488
261
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
262
  msgid ""
263
  "This will create a preset for any sidebar of your shop containing filter "
267
  "filter widgets bevat; de preset wordt geconfigureerd om te voldoen aan de "
268
  "widgets specificaties"
269
 
270
+ #: includes/class-yith-wcan-filter-factory.php:72
271
  msgctxt "[Admin] Filter edit form"
272
  msgid "Taxonomy"
273
  msgstr "Taxonomie"
274
 
275
+ #: includes/class-yith-wcan-filter-factory.php:86
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Checkbox"
278
  msgstr "Keuzevakje"
279
 
280
+ #: includes/class-yith-wcan-filter-factory.php:87
281
  msgctxt "[Admin] Filter edit form"
282
  msgid "Select"
283
  msgstr "Selecteren"
284
 
285
+ #: includes/class-yith-wcan-filter-factory.php:88
286
  msgctxt "[Admin] Filter edit form"
287
  msgid "Text"
288
  msgstr "Tekst"
289
 
290
+ #: includes/class-yith-wcan-filter-factory.php:89
291
  msgctxt "[Admin] Filter edit form"
292
  msgid "Color Swatches"
293
  msgstr "Kleur swatches"
294
 
295
+ #: includes/class-yith-wcan-filter-factory.php:90
296
  msgctxt "[Admin] Filter edit form"
297
  msgid "Label"
298
  msgstr "Label"
307
  msgid "Enter a name to identify this filter"
308
  msgstr "Naam invoeren voor deze filter"
309
 
310
+ #: plugin-options/filter-options.php:40
311
  msgctxt "[Admin] Filter edit form"
312
  msgid "Filter for"
313
  msgstr "Filter voor"
314
 
315
+ #: plugin-options/filter-options.php:44
316
  msgctxt "[Admin] Filter edit form"
317
  msgid "Select the parameters you wish to filter for"
318
  msgstr "Selecteer de parameters je wilt filteren voor"
319
 
320
+ #: plugin-options/filter-options.php:49
321
  msgctxt "[Admin] Filter edit form"
322
  msgid "Choose taxonomy"
323
  msgstr "Kies taxonomie"
324
 
325
+ #: plugin-options/filter-options.php:53
326
  msgctxt "[Admin] Filter edit form"
327
  msgid "Select which taxonomy to use for this filter"
328
  msgstr "Selecteer welke taxonomie je wilt gebruiken voor deze filter"
329
 
330
+ #: plugin-options/filter-options.php:58
331
  msgctxt "[Admin] Filter edit form"
332
  msgid "Auto-populate with all terms"
333
  msgstr ""
334
 
335
+ #: plugin-options/filter-options.php:60
336
  msgctxt "[Admin] Filter edit form"
337
  msgid ""
338
  "Populate this filter with all existing terms of the selected taxonomy.\n"
341
  "well.</span>"
342
  msgstr ""
343
 
344
+ #: plugin-options/filter-options.php:69
345
  msgctxt "[Admin] Filter edit form"
346
  msgid "Choose terms"
347
  msgstr "Kies termen"
348
 
349
+ #: plugin-options/filter-options.php:74
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Select which terms to use for filtering"
352
  msgstr "Selecteer welke termen je wilt gebruiken voor filteren"
353
 
354
+ #: plugin-options/filter-options.php:78
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Filter type"
357
  msgstr "Filter type"
358
 
359
+ #: plugin-options/filter-options.php:82
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Select the filter type for this filter"
362
  msgstr "Selecteer het filter type voor deze filter"
363
 
364
+ #: plugin-options/filter-options.php:86
365
  #, fuzzy
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Labels"
368
  msgstr "Labels"
369
 
370
+ #: plugin-options/filter-options.php:89
371
  #, fuzzy
372
  msgctxt "[Admin] Filter edit form"
373
  msgid "Show below"
374
  msgstr "Resultaten weergeven"
375
 
376
+ #: plugin-options/filter-options.php:90
377
  #, fuzzy
378
  msgctxt "[Admin] Filter edit form"
379
  msgid "Show on the right"
380
  msgstr "Toon item telling"
381
 
382
+ #: plugin-options/filter-options.php:91
383
  msgctxt "[Admin] Filter edit form"
384
  msgid "Hide"
385
  msgstr ""
386
 
387
+ #: plugin-options/filter-options.php:93
388
  #, fuzzy
389
  msgctxt "[Admin] Filter edit form"
390
  msgid "Choose if and where to show the label inside your filter"
391
  msgstr "Kies de stijl van de filter binnen de widgets"
392
 
393
+ #: plugin-options/filter-options.php:97
394
  msgctxt "[Admin] Filter edit form"
395
  msgid "Columns number"
396
  msgstr "Kolommen nummer"
397
 
398
+ #: plugin-options/filter-options.php:102
399
  msgctxt "[Admin] Filter edit form"
400
  msgid "Set the number of items per row you want to show for this design"
401
  msgstr "Kies het aantal items per rij dat je wilt tonen voor dit ontwerp"
402
 
403
+ #: plugin-options/filter-options.php:106
404
  msgctxt "[Admin] Filter edit form"
405
  msgid "Customize terms"
406
  msgstr "Aangepaste termen"
407
 
408
+ #: plugin-options/filter-options.php:109
409
  msgctxt "[Admin] Filter edit form"
410
  msgid ""
411
  "Configure your terms individually; system will otherwise use default labels/"
419
  "this option and use the boxes below</span>"
420
  msgstr ""
421
 
422
+ #: plugin-options/filter-options.php:119
423
  #, fuzzy
424
  msgctxt "[Admin] Filter edit form"
425
  msgid "Terms options"
426
  msgstr "Bestelling opties"
427
 
428
+ #: plugin-options/filter-options.php:125
429
  msgctxt "[Admin] Filter edit form"
430
  msgid "Show hierarchy"
431
  msgstr "Toon hiërarchie "
432
 
433
+ #: plugin-options/filter-options.php:128
434
  msgctxt "[Admin] Filter edit form"
435
  msgid "No, show all terms in same level"
436
  msgstr "Nee, toon alle termen in hetzelfde niveau"
437
 
438
+ #: plugin-options/filter-options.php:129
439
  msgctxt "[Admin] Filter edit form"
440
  msgid "No, show only parent terms"
441
  msgstr "Nee, alleen hoofd-termen tonen"
442
 
443
+ #: plugin-options/filter-options.php:130
444
  msgctxt "[Admin] Filter edit form"
445
  msgid "Yes"
446
  msgstr ""
447
 
448
+ #: plugin-options/filter-options.php:132
449
  msgctxt "[Admin] Filter edit form"
450
  msgid "Choose how to show terms hierarchy"
451
  msgstr "Bepaal hoe je de termen hiërarchie wilt tonen"
452
 
453
+ #: plugin-options/filter-options.php:136
454
  msgctxt "[Admin] Filter edit form"
455
  msgid "Allow multiple selection"
456
  msgstr "Meervoudige selectie toestaan"
457
 
458
+ #: plugin-options/filter-options.php:138
459
  msgctxt "[Admin] Filter edit form"
460
  msgid "Enable if the user can select multiple terms when filtering products"
461
  msgstr ""
462
  "Inschakelen als de gebruiker meerdere termen can selecteren bij het filteren "
463
  "van producten"
464
 
465
+ #: plugin-options/filter-options.php:142
466
  msgctxt "[Admin] Filter edit form"
467
  msgid "Multiselect relation"
468
  msgstr "Multi-selecteren relatie"
469
 
470
+ #: plugin-options/filter-options.php:148
471
  msgctxt "[Admin] Filter edit form"
472
  msgid "Choose how multiple terms selection should behave"
473
  msgstr "Bepaal het gedrag van meervoudige termen selectie"
474
 
475
+ #: includes/class-yith-wcan-filter-factory.php:104
476
  msgctxt "[Admin] Filter edit form, sorting options"
477
  msgid "Default sorting"
478
  msgstr "Standaard sortering"
479
 
480
+ #: includes/class-yith-wcan-filter-factory.php:105
481
  msgctxt "[Admin] Filter edit form, sorting options"
482
  msgid "Sort by popularity"
483
  msgstr "Sorteren op populariteit"
484
 
485
+ #: includes/class-yith-wcan-filter-factory.php:106
486
  msgctxt "[Admin] Filter edit form, sorting options"
487
  msgid "Sort by average rating"
488
  msgstr "Sorteren op gemiddelde waardering"
489
 
490
+ #: includes/class-yith-wcan-filter-factory.php:107
491
  msgctxt "[Admin] Filter edit form, sorting options"
492
  msgid "Sort by latest"
493
  msgstr "Sorteren op laaste"
494
 
495
+ #: includes/class-yith-wcan-filter-factory.php:108
496
  msgctxt "[Admin] Filter edit form, sorting options"
497
  msgid "Sort by price: low to high"
498
  msgstr "Sorteren op prijs: laag naar hoog"
499
 
500
+ #: includes/class-yith-wcan-filter-factory.php:109
501
  msgctxt "[Admin] Filter edit form, sorting options"
502
  msgid "Sort by price: high to low"
503
  msgstr "Sorteren op prijs: hoog naar laag"
504
 
505
+ #: includes/class-yith-wcan-filter.php:116
506
  msgctxt "[Admin] Default filter title"
507
  msgid "New filter"
508
  msgstr "Nieuwe filter"
509
 
510
+ #: includes/class-yith-wcan-frontend.php:591
511
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
512
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
513
  msgid "All"
514
  msgstr "Alle"
515
 
516
+ #: includes/class-yith-wcan-frontend.php:592
517
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
518
  msgid "Search..."
519
  msgstr "Zoeken..."
520
 
521
+ #: includes/class-yith-wcan-frontend.php:593
522
  msgctxt "[FRONTEND] Empty items list in the dropdown"
523
  msgid "No item found"
524
  msgstr "Geen item gevonden"
525
 
526
  #. translators: 1. Number of items to show.
527
+ #: includes/class-yith-wcan-frontend.php:595
528
  msgctxt "[FRONTEND] Show more link on terms dropdown"
529
  msgid "Show %d more"
530
  msgstr "Toon %d meer"
531
 
532
+ #: includes/class-yith-wcan-frontend.php:596
533
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
534
  msgid "Close"
535
  msgstr "Sluiten"
536
 
537
+ #: includes/class-yith-wcan-frontend.php:597
538
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
539
  msgid "Save"
540
  msgstr ""
541
 
542
+ #: includes/class-yith-wcan-frontend.php:598
543
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
544
  msgid "Show results"
545
  msgstr "Resultaten weergeven"
546
 
547
+ #: includes/class-yith-wcan-frontend.php:599
548
  msgctxt ""
549
  "[FRONTEND] Label for clear selection link, that appears above filter after "
550
  "selection"
551
  msgid "Clear"
552
  msgstr "Wissen"
553
 
554
+ #: includes/class-yith-wcan-frontend.php:600
555
  msgctxt ""
556
  "[FRONTEND] Label for clear selection link, that appears above filter after "
557
  "selection"
558
  msgid "Clear All"
559
  msgstr "Alles wissen"
560
 
561
+ #: includes/class-yith-wcan-install.php:95
562
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
563
  msgid "Default preset"
564
  msgstr "Standaard pre-set"
565
 
566
  #. translators: 1. Taxonomy name.
567
+ #: includes/class-yith-wcan-install.php:285
568
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
569
  msgid "Filter by %s"
570
  msgstr "Filter op %s"
571
 
572
+ #: includes/class-yith-wcan-preset-factory.php:112
573
  #, fuzzy
574
  msgctxt "[Admin] Label in new preset page"
575
  msgid "Default"
585
  msgid "Enter a name to identify this filter preset"
586
  msgstr "Naam invoeren voor deze filter pre-set"
587
 
588
+ #: templates/admin/preset-filters.php:22
589
  msgctxt "[Admin] Label in new preset page"
590
  msgid "Filters of this preset"
591
  msgstr "Filters van deze pre-set"
592
 
593
+ #: includes/class-yith-wcan-presets.php:95
594
+ #: includes/class-yith-wcan-presets.php:100
595
  msgctxt "[Admin] name of presets custom post type"
596
  msgid "Filter presets"
597
  msgstr "Filter pre-sets"
598
 
599
+ #: includes/class-yith-wcan-presets.php:96
600
  msgctxt "[Admin] singular name of presets custom post type"
601
  msgid "Filter preset"
602
  msgstr "Filter pre-set"
603
 
604
+ #: includes/class-yith-wcan-presets.php:97
605
  msgctxt "[Admin] add new filter preset label"
606
  msgid "Add new preset"
607
  msgstr "Nieuwe pre-set toevoegen"
608
 
609
+ #: includes/class-yith-wcan-presets.php:139
610
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
611
  msgid "Convert widgets in a preset"
612
  msgstr "Widgets omzetten in een pre-set"
613
 
614
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
615
  msgctxt ""
616
  "[Generic] Error that happens when trying to read a filter preset that does "
617
  "not exist"
619
  msgstr "Ongeldige pre-set"
620
 
621
  #. translators: 1. Title of original preset.
622
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
623
  msgctxt "[ADMIN] Title of the cloned preset"
624
  msgid "%s - Copy"
625
  msgstr "%s - Kopieer"
626
 
627
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
628
  msgctxt "[ADMIN] Name of the preset elementor widget"
629
  msgid "YITH AJAX Filters Preset"
630
  msgstr "YITH AJAX Filters Pre-set"
631
 
632
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
633
  msgctxt "[ADMIN] Name of the preset elementor widget"
634
  msgid "YITH AJAX Filters Reset Button"
635
  msgstr "YITH AJAX Filters Reset Knop"
636
 
637
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
638
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
639
  msgctxt "[ELEMENTOR] Default preset option"
640
  msgid "Choose an option"
641
  msgstr "Kies een optie"
642
 
643
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
644
  msgctxt "[ELEMENTOR] Section title"
645
  msgid "Filters"
646
  msgstr "Filters"
647
 
648
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
649
  msgctxt "[ELEMENTOR] Section title"
650
  msgid "General"
651
  msgstr "Algemeen"
652
 
653
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
654
  msgctxt "[ELEMENTOR] Control label"
655
  msgid "Preset"
656
  msgstr "Pre-set"
657
 
658
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
659
  msgctxt "[ELEMENTOR] Widget description"
660
  msgid ""
661
  "This widget will display \"Filters reset\" button, wherever it is placed"
663
  "Deze widget zal de \"Filters resetten\" knop weergeven, waar deze ook "
664
  "geplaatst is"
665
 
666
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
667
  msgctxt "[ELEMENTOR] Widget description"
668
  msgid ""
669
  "It will allow users to reset the filer selection; it will only appear when "
672
  "Het laat gebruikers de filter selectie resetten; het verschijnt alleen "
673
  "wanneer er een actieve filter is."
674
 
675
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
676
  msgctxt "[ELEMENTOR] Widget description"
677
  msgid ""
678
  "You can use this block to place \"Reset filters\" button inside your page, "
682
  "plaatsen, wanneer de \"Resetten knop positie' optie niet werkt voor de loop "
683
  "van je producten "
684
 
685
+ #: includes/functions-yith-wcan.php:112
686
  msgctxt "For multicolor: I.E. white and red T-Shirt"
687
  msgid "Color 1"
688
  msgstr "Kleur 1"
689
 
690
+ #: includes/functions-yith-wcan.php:112
691
  msgctxt "For multicolor: I.E. white and red T-Shirt"
692
  msgid "Color 2"
693
  msgstr "Kleur 2"
694
 
695
+ #: includes/functions-yith-wcan.php:1026
696
  msgctxt "[FRONTEND] Star rating template"
697
  msgid "star"
698
  msgid_plural "stars"
700
  msgstr[1] "sterren"
701
 
702
  #. translators: 1. Rating.
703
+ #: includes/functions-yith-wcan.php:1041
704
  msgctxt "[FRONTEND] Star rating label"
705
  msgid "Rated %s out of 5"
706
  msgstr "Waardering %s van de 5"
707
 
708
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
709
  msgctxt "[GUTENBERG]: block name"
710
  msgid "YITH AJAX Filters Preset"
711
  msgstr "YITH AJAX Filters Pre-set"
712
 
713
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
714
  msgctxt "[GUTENBERG]: block name"
715
  msgid "YITH Reset Filters Button"
716
  msgstr "YITH Reset Filters knop"
717
 
718
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
719
  msgctxt "[GUTENBERG]: block description"
720
  msgid "Show filters from a preset"
721
  msgstr "Filters tonen van een pre-set"
722
 
723
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
724
  msgctxt "[GUTENBERG]: block description"
725
  msgid ""
726
  "Show reset filters button, when a filter is applied and button is enabled in "
733
  "'Filters resetten' op je pagina te plaatsen, als de optie 'Knop positie "
734
  "resetten' niet werkt voor je producten loop"
735
 
736
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
737
  msgctxt "[GUTENBERG]: attribute description"
738
  msgid "Preset"
739
  msgstr "Pre-set"
740
 
741
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
742
  msgctxt "[Admin] Preset table column header"
743
  msgid "Preset name"
744
  msgstr "Naam pre-set"
745
 
746
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
747
  msgctxt "[Admin] Preset table column header"
748
  msgid "Shortcode"
749
  msgstr "Shortcode"
750
 
751
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
752
  msgctxt "[Admin] Preset edit action label"
753
  msgid "Edit this preset"
754
  msgstr "Deze pre-set bewerken"
755
 
756
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
757
  msgctxt "[Admin] Preset clone action label"
758
  msgid "Clone this preset"
759
  msgstr "Deze pre-set clonen"
760
 
761
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
762
  msgctxt "[Admin] Preset delete action label"
763
  msgid "Delete this preset"
764
  msgstr "Deze pre-set verwijderen"
765
 
766
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
767
  msgctxt "[Admin] Preset delete confirm label"
768
  msgid "Are you sure you want to delete this preset?"
769
  msgstr "Weet je zeker dat je deze pre-set wilt verwijderen?"
770
 
771
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
772
  msgctxt "[Admin] on-off yes"
773
  msgid "YES"
774
  msgstr "JA"
775
 
776
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
777
  msgctxt "[Admin] on-off no"
778
  msgid "NO"
779
  msgstr "NEE"
780
 
781
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
782
  msgctxt ""
783
  "[Admin] Name of the item missing, shown in preset-empty-content template"
784
  msgid "filter preset"
785
  msgstr "Filter pre-set"
786
 
787
+ #: templates/admin/preset-filters.php:31
788
  msgctxt ""
789
  "[Admin] Name of the item missing, shown in preset-empty-content template"
790
  msgid "filter"
791
  msgstr "filter"
792
 
793
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
794
  msgctxt "[Admin] New preset button label"
795
  msgid "Create a new preset"
796
  msgstr "Nieuwe pre-set aanmaken"
797
 
798
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
799
  msgctxt "[ADMIN] Name of the preset widget"
800
  msgid "YITH AJAX Filters Preset"
801
  msgstr "YITH AJAX Filters Pre-set"
802
 
803
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
804
  msgctxt "[ADMIN] Preset widget options"
805
  msgid "Preset"
806
  msgstr "Pre-set"
807
 
808
  #. translators: 1. Url to Ajax Product filter admin panel.
809
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
810
  msgctxt "[ADMIN] Preset widget options"
811
  msgid ""
812
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
815
  "Ga a.u.b. naar het <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product "
816
  "Filter -> Pre-sets</a> en maak je eerste pre-set aan"
817
 
818
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
819
  msgctxt "[Plugin Name] Admin: Widget Title"
820
  msgid "YITH AJAX Product Filter"
821
  msgstr "YITH AJAX Product Filter"
822
 
823
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
824
  #, fuzzy
825
  msgctxt ""
826
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
827
  msgid "AND"
828
  msgstr "EN"
829
 
830
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
831
  msgctxt "[Plugin Name]"
832
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
833
  msgstr ""
834
  "Alle filters terugzetten die zijn ingesteld door YITH WooCommerce AJAX "
835
  "Product Filter"
836
 
837
+ #: plugin-options/filter-options.php:145
838
  #, fuzzy
839
  msgctxt ""
840
  "[Admin] Filter edit form; logical operator that affects query behaviour"
842
  msgstr ""
843
  "EN - Resultaten moeten matchen met alle geselecteerde termen tegelijkertijd"
844
 
845
+ #: plugin-options/filter-options.php:146
846
  #, fuzzy
847
  msgctxt ""
848
  "[Admin] Filter edit form; logical operator that affects query behaviour"
1127
  msgctxt "[ADMIN] Premium tab"
1128
  msgid ""
1129
  "<b>Filter by category</b>: to let users choose which product category to "
1130
+ "view<br/>\n"
1131
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1132
  "<b>Filter by price</b>: to let users filter products by a specific price "
1133
+ "range (based on their budget availability)<br/>\n"
1134
  "<b>Filter by color and size</b>: you can create filters for all the "
1135
  "attributes available in your store, like color and size. For the color "
1136
  "filter, you can either choose square or circular color swatches or use "
1137
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1138
  "<b>Filter by rating</b>: to let your users filter products based on other "
1139
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1140
+ "concentrate only on high-rated ones)<br/>\n"
1141
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1142
+ "on plugin, you can also filter products by specific brands<br/>\n"
1143
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1144
+ "filter products and view only those with a discount<br/>\n"
1145
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1146
  "filter products based on their needs and exclude out-of-stock products from "
1147
  "the list"
1267
  "easier to share)"
1268
  msgstr ""
1269
 
1270
+ #: templates/admin/preset-edit.php:31
1271
  msgctxt "[Admin] Back link in new preset page"
1272
  msgid "< back to preset list"
1273
  msgstr "< terug naar pre-set lijst"
1274
 
1275
+ #: templates/admin/preset-edit.php:38
1276
  msgctxt "[ADMIN] Title for new preset page"
1277
  msgid "Edit filter preset"
1278
  msgstr "Filter pre-set bewerken"
1279
 
1280
+ #: templates/admin/preset-edit.php:40
1281
  msgctxt "[ADMIN] Title for new preset page"
1282
  msgid "Add new filter preset"
1283
  msgstr "Nieuwe filter pre-set toevoegen"
1284
 
1285
+ #: templates/admin/preset-edit.php:47
1286
  msgctxt "[ADMIN] Preset save message"
1287
  msgid "Preset saved correctly"
1288
  msgstr ""
1289
 
1290
+ #: templates/admin/preset-edit.php:93
1291
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1292
  msgid "Save preset"
1293
  msgstr "Pre-set opslaan"
1294
 
1295
+ #: templates/admin/preset-empty-content.php:29
1296
  msgctxt "Alt text for empty preset image"
1297
  msgid "Empty preset"
1298
  msgstr "Lege pre-set"
1299
 
1300
  #. translators: 1. Missing item name.
1301
+ #: templates/admin/preset-empty-content.php:35
1302
  msgctxt "[Admin] Preset table empty message"
1303
  msgid "You don't have any %s yet."
1304
  msgstr "Je hebt nog geen %s ingesteld."
1305
 
1306
+ #: templates/admin/preset-filter-term.php:30
1307
  msgctxt "[Admin] Term edit field label (preset edit page)"
1308
  msgid "Label"
1309
  msgstr "Label"
1310
 
1311
+ #: templates/admin/preset-filter-term.php:35
1312
  msgctxt "[Admin] Term edit field label (preset edit page)"
1313
  msgid "Tooltip"
1314
  msgstr "Tooltip"
1315
 
1316
+ #: templates/admin/preset-filter-term.php:41
1317
  msgctxt "[Admin] Term edit field label (preset edit page)"
1318
  msgid "Color"
1319
  msgstr "Kleur"
1320
 
1321
+ #: templates/admin/preset-filter.php:91
1322
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1323
  msgid "Save Filter"
1324
  msgstr "Filter opslaan"
1325
 
1326
+ #: templates/admin/preset-filter.php:92
1327
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1328
  msgid "Delete Filter"
1329
  msgstr "Filter verwijderen"
1330
 
1331
+ #: templates/admin/preset-filters.php:33
1332
  msgctxt "[Admin] New filter button label"
1333
  msgid "Add a new filter"
1334
  msgstr "Nieuwe filter toevoegen"
1335
 
1336
+ #: templates/admin/preset-filters.php:57
1337
  msgctxt "[Admin] Add new filter in new preset page"
1338
  msgid "+ Add filter"
1339
  msgstr "+ Nieuwe filter toevoegen"
1345
  msgid "See %d more filters"
1346
  msgstr "Voor filters"
1347
 
1348
+ #: templates/admin/upgrade-note-modal.php:33
1349
  msgctxt "[ADMIN] Upgrade note modal title"
1350
  msgid "Use the new filter preset feature for your filters"
1351
  msgstr "Gebruik de nieuwe filter pre-set functie voor je filters"
1352
 
1353
+ #: templates/admin/upgrade-note-modal.php:38
1354
  msgctxt "[ADMIN] Upgrade note modal content"
1355
  msgid ""
1356
  "From the version 4.0 we built a powerful system that allows you to create "
1364
  "de shortcode, het Gutenberg Blok of de Elementor widget."
1365
 
1366
  #. translators: 1. Url to demo video. 2. Url to docs.
1367
+ #: templates/admin/upgrade-note-modal.php:51
1368
  msgctxt "[ADMIN] Upgrade note modal content"
1369
  msgid ""
1370
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1375
  "gebruiken."
1376
 
1377
  #. translators: 1. Url to docs.
1378
+ #: templates/admin/upgrade-note-modal.php:64
1379
  msgctxt "[ADMIN] Upgrade note modal content"
1380
  msgid ""
1381
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1384
  "We raden je aan om <a href=\"%1$s\">de documentatie te lezen</a> om meer te "
1385
  "weten te komen over deze nieuwe optie."
1386
 
1387
+ #: templates/admin/upgrade-note-modal.php:78
1388
  #, fuzzy
1389
  msgctxt "[ADMIN] Upgrade note modal content"
1390
  msgid ""
1399
  "tabel..<br/><b>Geen zorgen, gegevens zullen niet verloren gaan tijdens het "
1400
  "proces.</b>"
1401
 
1402
+ #: templates/admin/upgrade-note-modal.php:89
1403
  msgctxt "[ADMIN] Upgrade note modal content"
1404
  msgid ""
1405
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1407
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1408
  msgstr ""
1409
 
1410
+ #: templates/admin/upgrade-note-modal.php:98
1411
  msgctxt "[ADMIN] Upgrade note modal button label"
1412
  msgid "Convert your widgets in a preset now"
1413
  msgstr "Je widgets nu omzetten naar een pre-set"
1414
 
1415
+ #: templates/admin/upgrade-note-modal.php:99
1416
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1417
  msgid "No thanks"
1418
  msgstr "Nee bedankt"
1419
 
1420
+ #: templates/filters/global/reset-filters.php:24
1421
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1422
  msgid "Reset filters"
1423
  msgstr "Filters resetten"
1424
 
1425
+ #~ msgctxt "[Admin] Menu title"
1426
+ #~ msgid "Ajax Product Filter"
1427
+ #~ msgstr "Ajax Product Filter"
1428
+
1429
  #~ msgctxt "[FRONTEND] General option for terms dropdown"
1430
  #~ msgid "All"
1431
  #~ msgstr "Alle"
languages/yith-woocommerce-ajax-navigation-tr_TR.mo CHANGED
Binary file
languages/yith-woocommerce-ajax-navigation-tr_TR.po CHANGED
@@ -3,7 +3,7 @@ msgstr ""
3
  "Project-Id-Version: YITH WooCommerce Ajax Product filter\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
5
  "ajax-product-filter\n"
6
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
7
  "PO-Revision-Date: 2019-06-06 10:16+0200\n"
8
  "Last-Translator: Caner Öncel <caneroncel@gmail.com>\n"
9
  "Language-Team: Caner Öncel <caneroncel@gmail.com>\n"
@@ -21,106 +21,106 @@ msgstr ""
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: plugin-fw\n"
23
 
24
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
25
  msgid "Draft Preset"
26
  msgstr ""
27
 
28
  # @ yit
29
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
30
- #: includes/functions.yith-wcan.php:132
31
  msgid "Term"
32
  msgstr "Terim"
33
 
34
  # @ yit
35
- #: includes/functions.yith-wcan.php:98
36
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
37
  msgid "Color"
38
  msgstr "Renk"
39
 
40
  # @ yit
41
- #: includes/functions.yith-wcan.php:132
42
  msgid "Labels"
43
  msgstr "Etiketler"
44
 
45
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
46
  msgid "Filter the list of products without reloading the page"
47
  msgstr ""
48
 
49
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
50
  msgid "Filters:"
51
  msgstr ""
52
 
53
  # @ yit
54
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
55
  msgid "List"
56
  msgstr "Liste"
57
 
58
  # @ yit
59
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
60
  msgid "Label"
61
  msgstr "Etiket"
62
 
63
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
64
  msgid "Dropdown"
65
  msgstr "Açılır Menü"
66
 
67
  # @ yit
68
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
69
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
70
  msgid "Title"
71
  msgstr "Başlık"
72
 
73
  # @ yit
74
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
75
  msgid "Type:"
76
  msgstr "Tür:"
77
 
78
  # @ yit
79
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
80
  msgid "Query Type:"
81
  msgstr "Sorgu Tipi:"
82
 
83
  # @ yit
84
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
85
  msgid "OR"
86
  msgstr "VEYA"
87
 
88
  # @ yit
89
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
90
  msgid "Attribute:"
91
  msgstr "Özellikler:"
92
 
93
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
94
  msgid "Display (default All):"
95
  msgstr "Görüntüleme (Varsayılan tümü):"
96
 
97
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
98
  msgid "All (no hierarchical)"
99
  msgstr "Tümü"
100
 
101
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
102
  msgid "All (hierarchical)"
103
  msgstr ""
104
 
105
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
106
  msgid "Only Parent"
107
  msgstr "Sadece Ebeveyn"
108
 
109
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
110
  msgid "CSS custom class"
111
  msgstr ""
112
 
113
  # @ yit
114
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
115
  #, fuzzy
116
  msgid "YITH AJAX Reset Filter"
117
  msgstr "YITH WooCommerce Ajax Navigation"
118
 
119
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
120
  msgid "Reset All Filters"
121
  msgstr "Tüm Filtreleri Sıfırla"
122
 
123
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
124
  msgid "Button Label"
125
  msgstr "Buton Metni"
126
 
@@ -146,120 +146,113 @@ msgid ""
146
  "your e-commerce shop on <strong>YITH</strong></a>"
147
  msgstr ""
148
 
149
- #: includes/class.yith-wcan-admin.php:107
150
  msgctxt "[Admin] Copy confirmation message"
151
  msgid "Content copied to your clipboard"
152
  msgstr ""
153
 
154
- #: includes/class.yith-wcan-admin.php:108
155
  msgctxt "[Admin] Confirm filter delete message"
156
  msgid "Are you sure you want to delete this item?"
157
  msgstr ""
158
 
159
  #. translators: 1. Number of items that will be added.
160
- #: includes/class.yith-wcan-admin.php:110
161
  msgctxt "[Admin] Confirm add all terms message"
162
  msgid "Are you sure you want to proceed? This operation will add %s items"
163
  msgstr ""
164
 
165
- #: includes/class.yith-wcan-admin.php:111
166
  msgctxt "[Admin] Error message"
167
  msgid "\"Filter title\" is a required field"
168
  msgstr ""
169
 
170
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
171
  msgctxt "[Admin] Message shown when filter has empty title"
172
  msgid "&lt; no title &gt;"
173
  msgstr ""
174
 
175
- #: includes/class.yith-wcan-admin.php:115
176
  msgctxt "[Admin] Media library title, when selecting images"
177
  msgid "Select media you want to use"
178
  msgstr ""
179
 
180
- #: includes/class.yith-wcan-admin.php:116
181
  msgctxt "[Admin] Media library confirm button, when selecting images"
182
  msgid "Use this media"
183
  msgstr ""
184
 
185
- #: includes/class.yith-wcan-admin.php:184
186
  #, fuzzy
187
  msgctxt "[Admin] tab name"
188
  msgid "Filter presets"
189
  msgstr "Filtre Listesi:"
190
 
191
- #: includes/class.yith-wcan-admin.php:185
192
  msgctxt "[Admin] tab name"
193
  msgid "General settings"
194
  msgstr ""
195
 
196
- #: includes/class.yith-wcan-admin.php:186
197
  msgctxt "[Admin] tab name"
198
  msgid "SEO"
199
  msgstr ""
200
 
201
- #: includes/class.yith-wcan-admin.php:187
202
  msgctxt "[Admin] tab name"
203
  msgid "Premium Version"
204
  msgstr ""
205
 
206
- #: includes/class.yith-wcan-admin.php:191
207
  msgctxt "[Admin] tab name"
208
  msgid "Legacy"
209
  msgstr ""
210
 
211
- # @ yit
212
- #: includes/class.yith-wcan-admin.php:198
213
- #, fuzzy
214
- msgctxt "[Admin] Menu title"
215
- msgid "Ajax Product Filter"
216
- msgstr "YITH WooCommerce Ajax Navigation"
217
-
218
- #: includes/class.yith-wcan-admin.php:199
219
  msgctxt "[Admin] Plugin description"
220
  msgid ""
221
  "It allows your users to find the product they are looking for as quickly as "
222
  "possible."
223
  msgstr ""
224
 
225
- #: includes/class.yith-wcan-admin.php:211
226
  msgctxt "[HELP TAB] Video title"
227
  msgid ""
228
  "Check this video to learn how to <b>create a filter preset and show it on "
229
  "the shop page:</b>"
230
  msgstr ""
231
 
232
- #: includes/class.yith-wcan-admin.php:329
233
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
234
  msgid "item"
235
  msgstr ""
236
 
237
- #: includes/class.yith-wcan-admin.php:330
238
  msgctxt "[Admin] Preset table empty message second line"
239
  msgid "But don't worry, here you can create your first one!"
240
  msgstr ""
241
 
242
- #: includes/class.yith-wcan-admin.php:478
243
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
244
  msgid "Clear Product Filter transients"
245
  msgstr ""
246
 
247
- #: includes/class.yith-wcan-admin.php:484
248
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
249
  msgid "Run filter widgets upgrade"
250
  msgstr ""
251
 
252
- #: includes/class.yith-wcan-admin.php:479
253
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
254
  msgid "Clear"
255
  msgstr ""
256
 
257
- #: includes/class.yith-wcan-admin.php:485
258
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
259
  msgid "Run"
260
  msgstr ""
261
 
262
- #: includes/class.yith-wcan-admin.php:480
263
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
264
  msgid ""
265
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -267,42 +260,42 @@ msgid ""
267
  "and filters do not display the expected results."
268
  msgstr ""
269
 
270
- #: includes/class.yith-wcan-admin.php:486
271
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
272
  msgid ""
273
  "This will create a preset for any sidebar of your shop containing filter "
274
  "widgets; preset will be configured to match widgets specifications"
275
  msgstr ""
276
 
277
- #: includes/class.yith-wcan-filter-factory.php:72
278
  msgctxt "[Admin] Filter edit form"
279
  msgid "Taxonomy"
280
  msgstr ""
281
 
282
- #: includes/class.yith-wcan-filter-factory.php:86
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Checkbox"
285
  msgstr ""
286
 
287
  # @ yit
288
- #: includes/class.yith-wcan-filter-factory.php:87
289
  #, fuzzy
290
  msgctxt "[Admin] Filter edit form"
291
  msgid "Select"
292
  msgstr "Bir tarih seçin"
293
 
294
- #: includes/class.yith-wcan-filter-factory.php:88
295
  msgctxt "[Admin] Filter edit form"
296
  msgid "Text"
297
  msgstr ""
298
 
299
- #: includes/class.yith-wcan-filter-factory.php:89
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Color Swatches"
302
  msgstr ""
303
 
304
  # @ yit
305
- #: includes/class.yith-wcan-filter-factory.php:90
306
  #, fuzzy
307
  msgctxt "[Admin] Filter edit form"
308
  msgid "Label"
@@ -318,33 +311,33 @@ msgctxt "[Admin] Filter edit form"
318
  msgid "Enter a name to identify this filter"
319
  msgstr ""
320
 
321
- #: plugin-options/filter-options.php:41
322
  #, fuzzy
323
  msgctxt "[Admin] Filter edit form"
324
  msgid "Filter for"
325
  msgstr "Filtre Listesi:"
326
 
327
- #: plugin-options/filter-options.php:45
328
  msgctxt "[Admin] Filter edit form"
329
  msgid "Select the parameters you wish to filter for"
330
  msgstr ""
331
 
332
- #: plugin-options/filter-options.php:51
333
  msgctxt "[Admin] Filter edit form"
334
  msgid "Choose taxonomy"
335
  msgstr ""
336
 
337
- #: plugin-options/filter-options.php:55
338
  msgctxt "[Admin] Filter edit form"
339
  msgid "Select which taxonomy to use for this filter"
340
  msgstr ""
341
 
342
- #: plugin-options/filter-options.php:60
343
  msgctxt "[Admin] Filter edit form"
344
  msgid "Auto-populate with all terms"
345
  msgstr ""
346
 
347
- #: plugin-options/filter-options.php:62
348
  msgctxt "[Admin] Filter edit form"
349
  msgid ""
350
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -353,70 +346,70 @@ msgid ""
353
  "well.</span>"
354
  msgstr ""
355
 
356
- #: plugin-options/filter-options.php:71
357
  msgctxt "[Admin] Filter edit form"
358
  msgid "Choose terms"
359
  msgstr ""
360
 
361
- #: plugin-options/filter-options.php:76
362
  msgctxt "[Admin] Filter edit form"
363
  msgid "Select which terms to use for filtering"
364
  msgstr ""
365
 
366
- #: plugin-options/filter-options.php:80
367
  #, fuzzy
368
  msgctxt "[Admin] Filter edit form"
369
  msgid "Filter type"
370
  msgstr "Filtre Listesi:"
371
 
372
- #: plugin-options/filter-options.php:84
373
  msgctxt "[Admin] Filter edit form"
374
  msgid "Select the filter type for this filter"
375
  msgstr ""
376
 
377
  # @ yit
378
- #: plugin-options/filter-options.php:88
379
  #, fuzzy
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Labels"
382
  msgstr "Etiketler"
383
 
384
- #: plugin-options/filter-options.php:91
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Show below"
387
  msgstr ""
388
 
389
- #: plugin-options/filter-options.php:92
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Show on the right"
392
  msgstr ""
393
 
394
- #: plugin-options/filter-options.php:93
395
  msgctxt "[Admin] Filter edit form"
396
  msgid "Hide"
397
  msgstr ""
398
 
399
- #: plugin-options/filter-options.php:95
400
  msgctxt "[Admin] Filter edit form"
401
  msgid "Choose if and where to show the label inside your filter"
402
  msgstr ""
403
 
404
- #: plugin-options/filter-options.php:99
405
  msgctxt "[Admin] Filter edit form"
406
  msgid "Columns number"
407
  msgstr ""
408
 
409
- #: plugin-options/filter-options.php:104
410
  msgctxt "[Admin] Filter edit form"
411
  msgid "Set the number of items per row you want to show for this design"
412
  msgstr ""
413
 
414
- #: plugin-options/filter-options.php:108
415
  msgctxt "[Admin] Filter edit form"
416
  msgid "Customize terms"
417
  msgstr ""
418
 
419
- #: plugin-options/filter-options.php:111
420
  msgctxt "[Admin] Filter edit form"
421
  msgid ""
422
  "Configure your terms individually; system will otherwise use default labels/"
@@ -430,155 +423,155 @@ msgid ""
430
  "this option and use the boxes below</span>"
431
  msgstr ""
432
 
433
- #: plugin-options/filter-options.php:121
434
  msgctxt "[Admin] Filter edit form"
435
  msgid "Terms options"
436
  msgstr ""
437
 
438
- #: plugin-options/filter-options.php:127
439
  msgctxt "[Admin] Filter edit form"
440
  msgid "Show hierarchy"
441
  msgstr ""
442
 
443
- #: plugin-options/filter-options.php:130
444
  msgctxt "[Admin] Filter edit form"
445
  msgid "No, show all terms in same level"
446
  msgstr ""
447
 
448
- #: plugin-options/filter-options.php:131
449
  msgctxt "[Admin] Filter edit form"
450
  msgid "No, show only parent terms"
451
  msgstr ""
452
 
453
- #: plugin-options/filter-options.php:132
454
  msgctxt "[Admin] Filter edit form"
455
  msgid "Yes"
456
  msgstr ""
457
 
458
- #: plugin-options/filter-options.php:134
459
  msgctxt "[Admin] Filter edit form"
460
  msgid "Choose how to show terms hierarchy"
461
  msgstr ""
462
 
463
- #: plugin-options/filter-options.php:138
464
  msgctxt "[Admin] Filter edit form"
465
  msgid "Allow multiple selection"
466
  msgstr ""
467
 
468
- #: plugin-options/filter-options.php:140
469
  msgctxt "[Admin] Filter edit form"
470
  msgid "Enable if the user can select multiple terms when filtering products"
471
  msgstr ""
472
 
473
- #: plugin-options/filter-options.php:144
474
  msgctxt "[Admin] Filter edit form"
475
  msgid "Multiselect relation"
476
  msgstr ""
477
 
478
- #: plugin-options/filter-options.php:150
479
  msgctxt "[Admin] Filter edit form"
480
  msgid "Choose how multiple terms selection should behave"
481
  msgstr ""
482
 
483
- #: includes/class.yith-wcan-filter-factory.php:104
484
  msgctxt "[Admin] Filter edit form, sorting options"
485
  msgid "Default sorting"
486
  msgstr ""
487
 
488
- #: includes/class.yith-wcan-filter-factory.php:105
489
  msgctxt "[Admin] Filter edit form, sorting options"
490
  msgid "Sort by popularity"
491
  msgstr ""
492
 
493
- #: includes/class.yith-wcan-filter-factory.php:106
494
  msgctxt "[Admin] Filter edit form, sorting options"
495
  msgid "Sort by average rating"
496
  msgstr ""
497
 
498
- #: includes/class.yith-wcan-filter-factory.php:107
499
  msgctxt "[Admin] Filter edit form, sorting options"
500
  msgid "Sort by latest"
501
  msgstr ""
502
 
503
- #: includes/class.yith-wcan-filter-factory.php:108
504
  msgctxt "[Admin] Filter edit form, sorting options"
505
  msgid "Sort by price: low to high"
506
  msgstr ""
507
 
508
- #: includes/class.yith-wcan-filter-factory.php:109
509
  msgctxt "[Admin] Filter edit form, sorting options"
510
  msgid "Sort by price: high to low"
511
  msgstr ""
512
 
513
- #: includes/class.yith-wcan-filter.php:116
514
  msgctxt "[Admin] Default filter title"
515
  msgid "New filter"
516
  msgstr ""
517
 
518
- #: includes/class.yith-wcan-frontend.php:576
519
- #: includes/filters/class.yith-wcan-filter-tax.php:62
520
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
521
  msgid "All"
522
  msgstr ""
523
 
524
- #: includes/class.yith-wcan-frontend.php:577
525
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
526
  msgid "Search..."
527
  msgstr ""
528
 
529
- #: includes/class.yith-wcan-frontend.php:578
530
  msgctxt "[FRONTEND] Empty items list in the dropdown"
531
  msgid "No item found"
532
  msgstr ""
533
 
534
  #. translators: 1. Number of items to show.
535
- #: includes/class.yith-wcan-frontend.php:580
536
  msgctxt "[FRONTEND] Show more link on terms dropdown"
537
  msgid "Show %d more"
538
  msgstr ""
539
 
540
- #: includes/class.yith-wcan-frontend.php:581
541
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
542
  msgid "Close"
543
  msgstr ""
544
 
545
- #: includes/class.yith-wcan-frontend.php:582
546
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
547
  msgid "Save"
548
  msgstr ""
549
 
550
- #: includes/class.yith-wcan-frontend.php:583
551
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
552
  msgid "Show results"
553
  msgstr ""
554
 
555
- #: includes/class.yith-wcan-frontend.php:584
556
  msgctxt ""
557
  "[FRONTEND] Label for clear selection link, that appears above filter after "
558
  "selection"
559
  msgid "Clear"
560
  msgstr ""
561
 
562
- #: includes/class.yith-wcan-frontend.php:585
563
  msgctxt ""
564
  "[FRONTEND] Label for clear selection link, that appears above filter after "
565
  "selection"
566
  msgid "Clear All"
567
  msgstr ""
568
 
569
- #: includes/class.yith-wcan-install.php:95
570
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
571
  msgid "Default preset"
572
  msgstr ""
573
 
574
  #. translators: 1. Taxonomy name.
575
- #: includes/class.yith-wcan-install.php:285
576
  #, fuzzy
577
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
578
  msgid "Filter by %s"
579
  msgstr "Filtre Listesi:"
580
 
581
- #: includes/class.yith-wcan-preset-factory.php:112
582
  msgctxt "[Admin] Label in new preset page"
583
  msgid "Default"
584
  msgstr ""
@@ -593,36 +586,36 @@ msgctxt "[Admin] Label in new preset page"
593
  msgid "Enter a name to identify this filter preset"
594
  msgstr ""
595
 
596
- #: templates/admin/preset-filters.php:20
597
  #, fuzzy
598
  msgctxt "[Admin] Label in new preset page"
599
  msgid "Filters of this preset"
600
  msgstr "Filtre Listesi:"
601
 
602
- #: includes/class.yith-wcan-presets.php:95
603
- #: includes/class.yith-wcan-presets.php:100
604
  #, fuzzy
605
  msgctxt "[Admin] name of presets custom post type"
606
  msgid "Filter presets"
607
  msgstr "Filtre Listesi:"
608
 
609
- #: includes/class.yith-wcan-presets.php:96
610
  #, fuzzy
611
  msgctxt "[Admin] singular name of presets custom post type"
612
  msgid "Filter preset"
613
  msgstr "Filtre Listesi:"
614
 
615
- #: includes/class.yith-wcan-presets.php:97
616
  msgctxt "[Admin] add new filter preset label"
617
  msgid "Add new preset"
618
  msgstr ""
619
 
620
- #: includes/class.yith-wcan-presets.php:139
621
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
622
  msgid "Convert widgets in a preset"
623
  msgstr ""
624
 
625
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
626
  msgctxt ""
627
  "[Generic] Error that happens when trying to read a filter preset that does "
628
  "not exist"
@@ -630,74 +623,74 @@ msgid "Invalid preset."
630
  msgstr ""
631
 
632
  #. translators: 1. Title of original preset.
633
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
634
  msgctxt "[ADMIN] Title of the cloned preset"
635
  msgid "%s - Copy"
636
  msgstr ""
637
 
638
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
639
  msgctxt "[ADMIN] Name of the preset elementor widget"
640
  msgid "YITH AJAX Filters Preset"
641
  msgstr ""
642
 
643
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
644
  msgctxt "[ADMIN] Name of the preset elementor widget"
645
  msgid "YITH AJAX Filters Reset Button"
646
  msgstr ""
647
 
648
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
649
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
650
  msgctxt "[ELEMENTOR] Default preset option"
651
  msgid "Choose an option"
652
  msgstr ""
653
 
654
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
655
  #, fuzzy
656
  msgctxt "[ELEMENTOR] Section title"
657
  msgid "Filters"
658
  msgstr "Filtre Listesi:"
659
 
660
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
661
  msgctxt "[ELEMENTOR] Section title"
662
  msgid "General"
663
  msgstr ""
664
 
665
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
666
  msgctxt "[ELEMENTOR] Control label"
667
  msgid "Preset"
668
  msgstr ""
669
 
670
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
671
  msgctxt "[ELEMENTOR] Widget description"
672
  msgid ""
673
  "This widget will display \"Filters reset\" button, wherever it is placed"
674
  msgstr ""
675
 
676
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
677
  msgctxt "[ELEMENTOR] Widget description"
678
  msgid ""
679
  "It will allow users to reset the filer selection; it will only appear when "
680
  "there is an active filter."
681
  msgstr ""
682
 
683
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
684
  msgctxt "[ELEMENTOR] Widget description"
685
  msgid ""
686
  "You can use this block to place \"Reset filters\" button inside your page, "
687
  "when \"Reset button position\" option won't work for your product's loop"
688
  msgstr ""
689
 
690
- #: includes/functions.yith-wcan.php:112
691
  msgctxt "For multicolor: I.E. white and red T-Shirt"
692
  msgid "Color 1"
693
  msgstr ""
694
 
695
- #: includes/functions.yith-wcan.php:112
696
  msgctxt "For multicolor: I.E. white and red T-Shirt"
697
  msgid "Color 2"
698
  msgstr ""
699
 
700
- #: includes/functions.yith-wcan.php:1001
701
  msgctxt "[FRONTEND] Star rating template"
702
  msgid "star"
703
  msgid_plural "stars"
@@ -705,29 +698,29 @@ msgstr[0] ""
705
  msgstr[1] ""
706
 
707
  #. translators: 1. Rating.
708
- #: includes/functions.yith-wcan.php:1016
709
  msgctxt "[FRONTEND] Star rating label"
710
  msgid "Rated %s out of 5"
711
  msgstr ""
712
 
713
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
714
  msgctxt "[GUTENBERG]: block name"
715
  msgid "YITH AJAX Filters Preset"
716
  msgstr ""
717
 
718
  # @ yit
719
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
720
  #, fuzzy
721
  msgctxt "[GUTENBERG]: block name"
722
  msgid "YITH Reset Filters Button"
723
  msgstr "YITH WooCommerce Ajax Navigation"
724
 
725
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
726
  msgctxt "[GUTENBERG]: block description"
727
  msgid "Show filters from a preset"
728
  msgstr ""
729
 
730
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
731
  msgctxt "[GUTENBERG]: block description"
732
  msgid ""
733
  "Show reset filters button, when a filter is applied and button is enabled in "
@@ -736,81 +729,81 @@ msgid ""
736
  "product's loop"
737
  msgstr ""
738
 
739
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
740
  msgctxt "[GUTENBERG]: attribute description"
741
  msgid "Preset"
742
  msgstr ""
743
 
744
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
745
  msgctxt "[Admin] Preset table column header"
746
  msgid "Preset name"
747
  msgstr ""
748
 
749
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
750
  msgctxt "[Admin] Preset table column header"
751
  msgid "Shortcode"
752
  msgstr ""
753
 
754
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
755
  msgctxt "[Admin] Preset edit action label"
756
  msgid "Edit this preset"
757
  msgstr ""
758
 
759
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
760
  msgctxt "[Admin] Preset clone action label"
761
  msgid "Clone this preset"
762
  msgstr ""
763
 
764
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
765
  msgctxt "[Admin] Preset delete action label"
766
  msgid "Delete this preset"
767
  msgstr ""
768
 
769
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
770
  msgctxt "[Admin] Preset delete confirm label"
771
  msgid "Are you sure you want to delete this preset?"
772
  msgstr ""
773
 
774
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
775
  msgctxt "[Admin] on-off yes"
776
  msgid "YES"
777
  msgstr ""
778
 
779
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
780
  msgctxt "[Admin] on-off no"
781
  msgid "NO"
782
  msgstr ""
783
 
784
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
785
  #, fuzzy
786
  msgctxt ""
787
  "[Admin] Name of the item missing, shown in preset-empty-content template"
788
  msgid "filter preset"
789
  msgstr "Filtre Listesi:"
790
 
791
- #: templates/admin/preset-filters.php:29
792
  msgctxt ""
793
  "[Admin] Name of the item missing, shown in preset-empty-content template"
794
  msgid "filter"
795
  msgstr ""
796
 
797
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
798
  msgctxt "[Admin] New preset button label"
799
  msgid "Create a new preset"
800
  msgstr ""
801
 
802
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
803
  msgctxt "[ADMIN] Name of the preset widget"
804
  msgid "YITH AJAX Filters Preset"
805
  msgstr ""
806
 
807
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
808
  msgctxt "[ADMIN] Preset widget options"
809
  msgid "Preset"
810
  msgstr ""
811
 
812
  #. translators: 1. Url to Ajax Product filter admin panel.
813
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
814
  msgctxt "[ADMIN] Preset widget options"
815
  msgid ""
816
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
@@ -818,14 +811,14 @@ msgid ""
818
  msgstr ""
819
 
820
  # @ yit
821
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
822
  #, fuzzy
823
  msgctxt "[Plugin Name] Admin: Widget Title"
824
  msgid "YITH AJAX Product Filter"
825
  msgstr "YITH WooCommerce Ajax Navigation"
826
 
827
  # @ yit
828
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
829
  #, fuzzy
830
  msgctxt ""
831
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
@@ -833,20 +826,20 @@ msgid "AND"
833
  msgstr "VE"
834
 
835
  # @ yit
836
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
837
  #, fuzzy
838
  msgctxt "[Plugin Name]"
839
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
840
  msgstr ""
841
  "YITH WooCommerce Ajax Navigation için ayarlanmış tüm filtreleri sıfırlayın"
842
 
843
- #: plugin-options/filter-options.php:147
844
  msgctxt ""
845
  "[Admin] Filter edit form; logical operator that affects query behaviour"
846
  msgid "AND - Results need to match all selected terms at the same time"
847
  msgstr ""
848
 
849
- #: plugin-options/filter-options.php:148
850
  msgctxt ""
851
  "[Admin] Filter edit form; logical operator that affects query behaviour"
852
  msgid "OR - Results need to match at least one of the selected terms"
@@ -1113,21 +1106,21 @@ msgstr ""
1113
  msgctxt "[ADMIN] Premium tab"
1114
  msgid ""
1115
  "<b>Filter by category</b>: to let users choose which product category to "
1116
- "view<br/>\r\n"
1117
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1118
  "<b>Filter by price</b>: to let users filter products by a specific price "
1119
- "range (based on their budget availability)<br/>\r\n"
1120
  "<b>Filter by color and size</b>: you can create filters for all the "
1121
  "attributes available in your store, like color and size. For the color "
1122
  "filter, you can either choose square or circular color swatches or use "
1123
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1124
  "<b>Filter by rating</b>: to let your users filter products based on other "
1125
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1126
- "concentrate only on high-rated ones)<br/>\r\n"
1127
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1128
- "on plugin, you can also filter products by specific brands<br/>\r\n"
1129
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1130
- "filter products and view only those with a discount<br/>\r\n"
1131
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1132
  "filter products based on their needs and exclude out-of-stock products from "
1133
  "the list"
@@ -1243,78 +1236,78 @@ msgid ""
1243
  "easier to share)"
1244
  msgstr ""
1245
 
1246
- #: templates/admin/preset-edit.php:29
1247
  msgctxt "[Admin] Back link in new preset page"
1248
  msgid "< back to preset list"
1249
  msgstr ""
1250
 
1251
- #: templates/admin/preset-edit.php:36
1252
  msgctxt "[ADMIN] Title for new preset page"
1253
  msgid "Edit filter preset"
1254
  msgstr ""
1255
 
1256
- #: templates/admin/preset-edit.php:38
1257
  msgctxt "[ADMIN] Title for new preset page"
1258
  msgid "Add new filter preset"
1259
  msgstr ""
1260
 
1261
- #: templates/admin/preset-edit.php:45
1262
  msgctxt "[ADMIN] Preset save message"
1263
  msgid "Preset saved correctly"
1264
  msgstr ""
1265
 
1266
- #: templates/admin/preset-edit.php:90
1267
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1268
  msgid "Save preset"
1269
  msgstr ""
1270
 
1271
- #: templates/admin/preset-empty-content.php:27
1272
  msgctxt "Alt text for empty preset image"
1273
  msgid "Empty preset"
1274
  msgstr ""
1275
 
1276
  #. translators: 1. Missing item name.
1277
- #: templates/admin/preset-empty-content.php:33
1278
  msgctxt "[Admin] Preset table empty message"
1279
  msgid "You don't have any %s yet."
1280
  msgstr ""
1281
 
1282
  # @ yit
1283
- #: templates/admin/preset-filter-term.php:28
1284
  #, fuzzy
1285
  msgctxt "[Admin] Term edit field label (preset edit page)"
1286
  msgid "Label"
1287
  msgstr "Etiket"
1288
 
1289
- #: templates/admin/preset-filter-term.php:33
1290
  msgctxt "[Admin] Term edit field label (preset edit page)"
1291
  msgid "Tooltip"
1292
  msgstr ""
1293
 
1294
  # @ yit
1295
- #: templates/admin/preset-filter-term.php:39
1296
  #, fuzzy
1297
  msgctxt "[Admin] Term edit field label (preset edit page)"
1298
  msgid "Color"
1299
  msgstr "Renk"
1300
 
1301
- #: templates/admin/preset-filter.php:89
1302
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1303
  msgid "Save Filter"
1304
  msgstr ""
1305
 
1306
- #: templates/admin/preset-filter.php:90
1307
  #, fuzzy
1308
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1309
  msgid "Delete Filter"
1310
  msgstr "Tüm Filtreleri Sıfırla"
1311
 
1312
- #: templates/admin/preset-filters.php:31
1313
  msgctxt "[Admin] New filter button label"
1314
  msgid "Add a new filter"
1315
  msgstr ""
1316
 
1317
- #: templates/admin/preset-filters.php:55
1318
  msgctxt "[Admin] Add new filter in new preset page"
1319
  msgid "+ Add filter"
1320
  msgstr ""
@@ -1326,12 +1319,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1326
  msgid "See %d more filters"
1327
  msgstr "Tüm Filtreleri Sıfırla"
1328
 
1329
- #: templates/admin/upgrade-note-modal.php:31
1330
  msgctxt "[ADMIN] Upgrade note modal title"
1331
  msgid "Use the new filter preset feature for your filters"
1332
  msgstr ""
1333
 
1334
- #: templates/admin/upgrade-note-modal.php:36
1335
  msgctxt "[ADMIN] Upgrade note modal content"
1336
  msgid ""
1337
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1341,7 +1334,7 @@ msgid ""
1341
  msgstr ""
1342
 
1343
  #. translators: 1. Url to demo video. 2. Url to docs.
1344
- #: templates/admin/upgrade-note-modal.php:49
1345
  msgctxt "[ADMIN] Upgrade note modal content"
1346
  msgid ""
1347
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
@@ -1349,14 +1342,14 @@ msgid ""
1349
  msgstr ""
1350
 
1351
  #. translators: 1. Url to docs.
1352
- #: templates/admin/upgrade-note-modal.php:62
1353
  msgctxt "[ADMIN] Upgrade note modal content"
1354
  msgid ""
1355
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1356
  "to use this new feature."
1357
  msgstr ""
1358
 
1359
- #: templates/admin/upgrade-note-modal.php:76
1360
  msgctxt "[ADMIN] Upgrade note modal content"
1361
  msgid ""
1362
  "We offer a tool to automatically convert the widget filters of your shop in "
@@ -1365,7 +1358,7 @@ msgid ""
1365
  "will be lost during the process.</b>"
1366
  msgstr ""
1367
 
1368
- #: templates/admin/upgrade-note-modal.php:87
1369
  msgctxt "[ADMIN] Upgrade note modal content"
1370
  msgid ""
1371
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1373,22 +1366,28 @@ msgid ""
1373
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1374
  msgstr ""
1375
 
1376
- #: templates/admin/upgrade-note-modal.php:96
1377
  msgctxt "[ADMIN] Upgrade note modal button label"
1378
  msgid "Convert your widgets in a preset now"
1379
  msgstr ""
1380
 
1381
- #: templates/admin/upgrade-note-modal.php:97
1382
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1383
  msgid "No thanks"
1384
  msgstr ""
1385
 
1386
- #: templates/filters/global/reset-filters.php:23
1387
  #, fuzzy
1388
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1389
  msgid "Reset filters"
1390
  msgstr "Tüm Filtreleri Sıfırla"
1391
 
 
 
 
 
 
 
1392
  # @ yit
1393
  #, fuzzy
1394
  #~ msgid "YITH WooCommerce Ajax Product Filter"
3
  "Project-Id-Version: YITH WooCommerce Ajax Product filter\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/yith-woocommerce-"
5
  "ajax-product-filter\n"
6
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
7
  "PO-Revision-Date: 2019-06-06 10:16+0200\n"
8
  "Last-Translator: Caner Öncel <caneroncel@gmail.com>\n"
9
  "Language-Team: Caner Öncel <caneroncel@gmail.com>\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: plugin-fw\n"
23
 
24
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
25
  msgid "Draft Preset"
26
  msgstr ""
27
 
28
  # @ yit
29
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
30
+ #: includes/functions-yith-wcan.php:132
31
  msgid "Term"
32
  msgstr "Terim"
33
 
34
  # @ yit
35
+ #: includes/functions-yith-wcan.php:98
36
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
37
  msgid "Color"
38
  msgstr "Renk"
39
 
40
  # @ yit
41
+ #: includes/functions-yith-wcan.php:132
42
  msgid "Labels"
43
  msgstr "Etiketler"
44
 
45
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
46
  msgid "Filter the list of products without reloading the page"
47
  msgstr ""
48
 
49
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
50
  msgid "Filters:"
51
  msgstr ""
52
 
53
  # @ yit
54
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
55
  msgid "List"
56
  msgstr "Liste"
57
 
58
  # @ yit
59
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
60
  msgid "Label"
61
  msgstr "Etiket"
62
 
63
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
64
  msgid "Dropdown"
65
  msgstr "Açılır Menü"
66
 
67
  # @ yit
68
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
69
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
70
  msgid "Title"
71
  msgstr "Başlık"
72
 
73
  # @ yit
74
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
75
  msgid "Type:"
76
  msgstr "Tür:"
77
 
78
  # @ yit
79
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
80
  msgid "Query Type:"
81
  msgstr "Sorgu Tipi:"
82
 
83
  # @ yit
84
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
85
  msgid "OR"
86
  msgstr "VEYA"
87
 
88
  # @ yit
89
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
90
  msgid "Attribute:"
91
  msgstr "Özellikler:"
92
 
93
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
94
  msgid "Display (default All):"
95
  msgstr "Görüntüleme (Varsayılan tümü):"
96
 
97
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
98
  msgid "All (no hierarchical)"
99
  msgstr "Tümü"
100
 
101
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
102
  msgid "All (hierarchical)"
103
  msgstr ""
104
 
105
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
106
  msgid "Only Parent"
107
  msgstr "Sadece Ebeveyn"
108
 
109
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
110
  msgid "CSS custom class"
111
  msgstr ""
112
 
113
  # @ yit
114
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
115
  #, fuzzy
116
  msgid "YITH AJAX Reset Filter"
117
  msgstr "YITH WooCommerce Ajax Navigation"
118
 
119
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
120
  msgid "Reset All Filters"
121
  msgstr "Tüm Filtreleri Sıfırla"
122
 
123
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
124
  msgid "Button Label"
125
  msgstr "Buton Metni"
126
 
146
  "your e-commerce shop on <strong>YITH</strong></a>"
147
  msgstr ""
148
 
149
+ #: includes/class-yith-wcan-admin.php:107
150
  msgctxt "[Admin] Copy confirmation message"
151
  msgid "Content copied to your clipboard"
152
  msgstr ""
153
 
154
+ #: includes/class-yith-wcan-admin.php:108
155
  msgctxt "[Admin] Confirm filter delete message"
156
  msgid "Are you sure you want to delete this item?"
157
  msgstr ""
158
 
159
  #. translators: 1. Number of items that will be added.
160
+ #: includes/class-yith-wcan-admin.php:110
161
  msgctxt "[Admin] Confirm add all terms message"
162
  msgid "Are you sure you want to proceed? This operation will add %s items"
163
  msgstr ""
164
 
165
+ #: includes/class-yith-wcan-admin.php:111
166
  msgctxt "[Admin] Error message"
167
  msgid "\"Filter title\" is a required field"
168
  msgstr ""
169
 
170
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
171
  msgctxt "[Admin] Message shown when filter has empty title"
172
  msgid "&lt; no title &gt;"
173
  msgstr ""
174
 
175
+ #: includes/class-yith-wcan-admin.php:115
176
  msgctxt "[Admin] Media library title, when selecting images"
177
  msgid "Select media you want to use"
178
  msgstr ""
179
 
180
+ #: includes/class-yith-wcan-admin.php:116
181
  msgctxt "[Admin] Media library confirm button, when selecting images"
182
  msgid "Use this media"
183
  msgstr ""
184
 
185
+ #: includes/class-yith-wcan-admin.php:184
186
  #, fuzzy
187
  msgctxt "[Admin] tab name"
188
  msgid "Filter presets"
189
  msgstr "Filtre Listesi:"
190
 
191
+ #: includes/class-yith-wcan-admin.php:185
192
  msgctxt "[Admin] tab name"
193
  msgid "General settings"
194
  msgstr ""
195
 
196
+ #: includes/class-yith-wcan-admin.php:186
197
  msgctxt "[Admin] tab name"
198
  msgid "SEO"
199
  msgstr ""
200
 
201
+ #: includes/class-yith-wcan-admin.php:187
202
  msgctxt "[Admin] tab name"
203
  msgid "Premium Version"
204
  msgstr ""
205
 
206
+ #: includes/class-yith-wcan-admin.php:191
207
  msgctxt "[Admin] tab name"
208
  msgid "Legacy"
209
  msgstr ""
210
 
211
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
 
 
212
  msgctxt "[Admin] Plugin description"
213
  msgid ""
214
  "It allows your users to find the product they are looking for as quickly as "
215
  "possible."
216
  msgstr ""
217
 
218
+ #: includes/class-yith-wcan-admin.php:211
219
  msgctxt "[HELP TAB] Video title"
220
  msgid ""
221
  "Check this video to learn how to <b>create a filter preset and show it on "
222
  "the shop page:</b>"
223
  msgstr ""
224
 
225
+ #: includes/class-yith-wcan-admin.php:329
226
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
227
  msgid "item"
228
  msgstr ""
229
 
230
+ #: includes/class-yith-wcan-admin.php:330
231
  msgctxt "[Admin] Preset table empty message second line"
232
  msgid "But don't worry, here you can create your first one!"
233
  msgstr ""
234
 
235
+ #: includes/class-yith-wcan-admin.php:480
236
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
237
  msgid "Clear Product Filter transients"
238
  msgstr ""
239
 
240
+ #: includes/class-yith-wcan-admin.php:486
241
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
242
  msgid "Run filter widgets upgrade"
243
  msgstr ""
244
 
245
+ #: includes/class-yith-wcan-admin.php:481
246
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
247
  msgid "Clear"
248
  msgstr ""
249
 
250
+ #: includes/class-yith-wcan-admin.php:487
251
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
252
  msgid "Run"
253
  msgstr ""
254
 
255
+ #: includes/class-yith-wcan-admin.php:482
256
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
257
  msgid ""
258
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
260
  "and filters do not display the expected results."
261
  msgstr ""
262
 
263
+ #: includes/class-yith-wcan-admin.php:488
264
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
265
  msgid ""
266
  "This will create a preset for any sidebar of your shop containing filter "
267
  "widgets; preset will be configured to match widgets specifications"
268
  msgstr ""
269
 
270
+ #: includes/class-yith-wcan-filter-factory.php:72
271
  msgctxt "[Admin] Filter edit form"
272
  msgid "Taxonomy"
273
  msgstr ""
274
 
275
+ #: includes/class-yith-wcan-filter-factory.php:86
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Checkbox"
278
  msgstr ""
279
 
280
  # @ yit
281
+ #: includes/class-yith-wcan-filter-factory.php:87
282
  #, fuzzy
283
  msgctxt "[Admin] Filter edit form"
284
  msgid "Select"
285
  msgstr "Bir tarih seçin"
286
 
287
+ #: includes/class-yith-wcan-filter-factory.php:88
288
  msgctxt "[Admin] Filter edit form"
289
  msgid "Text"
290
  msgstr ""
291
 
292
+ #: includes/class-yith-wcan-filter-factory.php:89
293
  msgctxt "[Admin] Filter edit form"
294
  msgid "Color Swatches"
295
  msgstr ""
296
 
297
  # @ yit
298
+ #: includes/class-yith-wcan-filter-factory.php:90
299
  #, fuzzy
300
  msgctxt "[Admin] Filter edit form"
301
  msgid "Label"
311
  msgid "Enter a name to identify this filter"
312
  msgstr ""
313
 
314
+ #: plugin-options/filter-options.php:40
315
  #, fuzzy
316
  msgctxt "[Admin] Filter edit form"
317
  msgid "Filter for"
318
  msgstr "Filtre Listesi:"
319
 
320
+ #: plugin-options/filter-options.php:44
321
  msgctxt "[Admin] Filter edit form"
322
  msgid "Select the parameters you wish to filter for"
323
  msgstr ""
324
 
325
+ #: plugin-options/filter-options.php:49
326
  msgctxt "[Admin] Filter edit form"
327
  msgid "Choose taxonomy"
328
  msgstr ""
329
 
330
+ #: plugin-options/filter-options.php:53
331
  msgctxt "[Admin] Filter edit form"
332
  msgid "Select which taxonomy to use for this filter"
333
  msgstr ""
334
 
335
+ #: plugin-options/filter-options.php:58
336
  msgctxt "[Admin] Filter edit form"
337
  msgid "Auto-populate with all terms"
338
  msgstr ""
339
 
340
+ #: plugin-options/filter-options.php:60
341
  msgctxt "[Admin] Filter edit form"
342
  msgid ""
343
  "Populate this filter with all existing terms of the selected taxonomy.\n"
346
  "well.</span>"
347
  msgstr ""
348
 
349
+ #: plugin-options/filter-options.php:69
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Choose terms"
352
  msgstr ""
353
 
354
+ #: plugin-options/filter-options.php:74
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Select which terms to use for filtering"
357
  msgstr ""
358
 
359
+ #: plugin-options/filter-options.php:78
360
  #, fuzzy
361
  msgctxt "[Admin] Filter edit form"
362
  msgid "Filter type"
363
  msgstr "Filtre Listesi:"
364
 
365
+ #: plugin-options/filter-options.php:82
366
  msgctxt "[Admin] Filter edit form"
367
  msgid "Select the filter type for this filter"
368
  msgstr ""
369
 
370
  # @ yit
371
+ #: plugin-options/filter-options.php:86
372
  #, fuzzy
373
  msgctxt "[Admin] Filter edit form"
374
  msgid "Labels"
375
  msgstr "Etiketler"
376
 
377
+ #: plugin-options/filter-options.php:89
378
  msgctxt "[Admin] Filter edit form"
379
  msgid "Show below"
380
  msgstr ""
381
 
382
+ #: plugin-options/filter-options.php:90
383
  msgctxt "[Admin] Filter edit form"
384
  msgid "Show on the right"
385
  msgstr ""
386
 
387
+ #: plugin-options/filter-options.php:91
388
  msgctxt "[Admin] Filter edit form"
389
  msgid "Hide"
390
  msgstr ""
391
 
392
+ #: plugin-options/filter-options.php:93
393
  msgctxt "[Admin] Filter edit form"
394
  msgid "Choose if and where to show the label inside your filter"
395
  msgstr ""
396
 
397
+ #: plugin-options/filter-options.php:97
398
  msgctxt "[Admin] Filter edit form"
399
  msgid "Columns number"
400
  msgstr ""
401
 
402
+ #: plugin-options/filter-options.php:102
403
  msgctxt "[Admin] Filter edit form"
404
  msgid "Set the number of items per row you want to show for this design"
405
  msgstr ""
406
 
407
+ #: plugin-options/filter-options.php:106
408
  msgctxt "[Admin] Filter edit form"
409
  msgid "Customize terms"
410
  msgstr ""
411
 
412
+ #: plugin-options/filter-options.php:109
413
  msgctxt "[Admin] Filter edit form"
414
  msgid ""
415
  "Configure your terms individually; system will otherwise use default labels/"
423
  "this option and use the boxes below</span>"
424
  msgstr ""
425
 
426
+ #: plugin-options/filter-options.php:119
427
  msgctxt "[Admin] Filter edit form"
428
  msgid "Terms options"
429
  msgstr ""
430
 
431
+ #: plugin-options/filter-options.php:125
432
  msgctxt "[Admin] Filter edit form"
433
  msgid "Show hierarchy"
434
  msgstr ""
435
 
436
+ #: plugin-options/filter-options.php:128
437
  msgctxt "[Admin] Filter edit form"
438
  msgid "No, show all terms in same level"
439
  msgstr ""
440
 
441
+ #: plugin-options/filter-options.php:129
442
  msgctxt "[Admin] Filter edit form"
443
  msgid "No, show only parent terms"
444
  msgstr ""
445
 
446
+ #: plugin-options/filter-options.php:130
447
  msgctxt "[Admin] Filter edit form"
448
  msgid "Yes"
449
  msgstr ""
450
 
451
+ #: plugin-options/filter-options.php:132
452
  msgctxt "[Admin] Filter edit form"
453
  msgid "Choose how to show terms hierarchy"
454
  msgstr ""
455
 
456
+ #: plugin-options/filter-options.php:136
457
  msgctxt "[Admin] Filter edit form"
458
  msgid "Allow multiple selection"
459
  msgstr ""
460
 
461
+ #: plugin-options/filter-options.php:138
462
  msgctxt "[Admin] Filter edit form"
463
  msgid "Enable if the user can select multiple terms when filtering products"
464
  msgstr ""
465
 
466
+ #: plugin-options/filter-options.php:142
467
  msgctxt "[Admin] Filter edit form"
468
  msgid "Multiselect relation"
469
  msgstr ""
470
 
471
+ #: plugin-options/filter-options.php:148
472
  msgctxt "[Admin] Filter edit form"
473
  msgid "Choose how multiple terms selection should behave"
474
  msgstr ""
475
 
476
+ #: includes/class-yith-wcan-filter-factory.php:104
477
  msgctxt "[Admin] Filter edit form, sorting options"
478
  msgid "Default sorting"
479
  msgstr ""
480
 
481
+ #: includes/class-yith-wcan-filter-factory.php:105
482
  msgctxt "[Admin] Filter edit form, sorting options"
483
  msgid "Sort by popularity"
484
  msgstr ""
485
 
486
+ #: includes/class-yith-wcan-filter-factory.php:106
487
  msgctxt "[Admin] Filter edit form, sorting options"
488
  msgid "Sort by average rating"
489
  msgstr ""
490
 
491
+ #: includes/class-yith-wcan-filter-factory.php:107
492
  msgctxt "[Admin] Filter edit form, sorting options"
493
  msgid "Sort by latest"
494
  msgstr ""
495
 
496
+ #: includes/class-yith-wcan-filter-factory.php:108
497
  msgctxt "[Admin] Filter edit form, sorting options"
498
  msgid "Sort by price: low to high"
499
  msgstr ""
500
 
501
+ #: includes/class-yith-wcan-filter-factory.php:109
502
  msgctxt "[Admin] Filter edit form, sorting options"
503
  msgid "Sort by price: high to low"
504
  msgstr ""
505
 
506
+ #: includes/class-yith-wcan-filter.php:116
507
  msgctxt "[Admin] Default filter title"
508
  msgid "New filter"
509
  msgstr ""
510
 
511
+ #: includes/class-yith-wcan-frontend.php:591
512
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
513
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
514
  msgid "All"
515
  msgstr ""
516
 
517
+ #: includes/class-yith-wcan-frontend.php:592
518
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
519
  msgid "Search..."
520
  msgstr ""
521
 
522
+ #: includes/class-yith-wcan-frontend.php:593
523
  msgctxt "[FRONTEND] Empty items list in the dropdown"
524
  msgid "No item found"
525
  msgstr ""
526
 
527
  #. translators: 1. Number of items to show.
528
+ #: includes/class-yith-wcan-frontend.php:595
529
  msgctxt "[FRONTEND] Show more link on terms dropdown"
530
  msgid "Show %d more"
531
  msgstr ""
532
 
533
+ #: includes/class-yith-wcan-frontend.php:596
534
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
535
  msgid "Close"
536
  msgstr ""
537
 
538
+ #: includes/class-yith-wcan-frontend.php:597
539
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
540
  msgid "Save"
541
  msgstr ""
542
 
543
+ #: includes/class-yith-wcan-frontend.php:598
544
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
545
  msgid "Show results"
546
  msgstr ""
547
 
548
+ #: includes/class-yith-wcan-frontend.php:599
549
  msgctxt ""
550
  "[FRONTEND] Label for clear selection link, that appears above filter after "
551
  "selection"
552
  msgid "Clear"
553
  msgstr ""
554
 
555
+ #: includes/class-yith-wcan-frontend.php:600
556
  msgctxt ""
557
  "[FRONTEND] Label for clear selection link, that appears above filter after "
558
  "selection"
559
  msgid "Clear All"
560
  msgstr ""
561
 
562
+ #: includes/class-yith-wcan-install.php:95
563
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
564
  msgid "Default preset"
565
  msgstr ""
566
 
567
  #. translators: 1. Taxonomy name.
568
+ #: includes/class-yith-wcan-install.php:285
569
  #, fuzzy
570
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
571
  msgid "Filter by %s"
572
  msgstr "Filtre Listesi:"
573
 
574
+ #: includes/class-yith-wcan-preset-factory.php:112
575
  msgctxt "[Admin] Label in new preset page"
576
  msgid "Default"
577
  msgstr ""
586
  msgid "Enter a name to identify this filter preset"
587
  msgstr ""
588
 
589
+ #: templates/admin/preset-filters.php:22
590
  #, fuzzy
591
  msgctxt "[Admin] Label in new preset page"
592
  msgid "Filters of this preset"
593
  msgstr "Filtre Listesi:"
594
 
595
+ #: includes/class-yith-wcan-presets.php:95
596
+ #: includes/class-yith-wcan-presets.php:100
597
  #, fuzzy
598
  msgctxt "[Admin] name of presets custom post type"
599
  msgid "Filter presets"
600
  msgstr "Filtre Listesi:"
601
 
602
+ #: includes/class-yith-wcan-presets.php:96
603
  #, fuzzy
604
  msgctxt "[Admin] singular name of presets custom post type"
605
  msgid "Filter preset"
606
  msgstr "Filtre Listesi:"
607
 
608
+ #: includes/class-yith-wcan-presets.php:97
609
  msgctxt "[Admin] add new filter preset label"
610
  msgid "Add new preset"
611
  msgstr ""
612
 
613
+ #: includes/class-yith-wcan-presets.php:139
614
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
615
  msgid "Convert widgets in a preset"
616
  msgstr ""
617
 
618
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
619
  msgctxt ""
620
  "[Generic] Error that happens when trying to read a filter preset that does "
621
  "not exist"
623
  msgstr ""
624
 
625
  #. translators: 1. Title of original preset.
626
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
627
  msgctxt "[ADMIN] Title of the cloned preset"
628
  msgid "%s - Copy"
629
  msgstr ""
630
 
631
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
632
  msgctxt "[ADMIN] Name of the preset elementor widget"
633
  msgid "YITH AJAX Filters Preset"
634
  msgstr ""
635
 
636
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
637
  msgctxt "[ADMIN] Name of the preset elementor widget"
638
  msgid "YITH AJAX Filters Reset Button"
639
  msgstr ""
640
 
641
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
642
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
643
  msgctxt "[ELEMENTOR] Default preset option"
644
  msgid "Choose an option"
645
  msgstr ""
646
 
647
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
648
  #, fuzzy
649
  msgctxt "[ELEMENTOR] Section title"
650
  msgid "Filters"
651
  msgstr "Filtre Listesi:"
652
 
653
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
654
  msgctxt "[ELEMENTOR] Section title"
655
  msgid "General"
656
  msgstr ""
657
 
658
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
659
  msgctxt "[ELEMENTOR] Control label"
660
  msgid "Preset"
661
  msgstr ""
662
 
663
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
664
  msgctxt "[ELEMENTOR] Widget description"
665
  msgid ""
666
  "This widget will display \"Filters reset\" button, wherever it is placed"
667
  msgstr ""
668
 
669
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
670
  msgctxt "[ELEMENTOR] Widget description"
671
  msgid ""
672
  "It will allow users to reset the filer selection; it will only appear when "
673
  "there is an active filter."
674
  msgstr ""
675
 
676
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
677
  msgctxt "[ELEMENTOR] Widget description"
678
  msgid ""
679
  "You can use this block to place \"Reset filters\" button inside your page, "
680
  "when \"Reset button position\" option won't work for your product's loop"
681
  msgstr ""
682
 
683
+ #: includes/functions-yith-wcan.php:112
684
  msgctxt "For multicolor: I.E. white and red T-Shirt"
685
  msgid "Color 1"
686
  msgstr ""
687
 
688
+ #: includes/functions-yith-wcan.php:112
689
  msgctxt "For multicolor: I.E. white and red T-Shirt"
690
  msgid "Color 2"
691
  msgstr ""
692
 
693
+ #: includes/functions-yith-wcan.php:1026
694
  msgctxt "[FRONTEND] Star rating template"
695
  msgid "star"
696
  msgid_plural "stars"
698
  msgstr[1] ""
699
 
700
  #. translators: 1. Rating.
701
+ #: includes/functions-yith-wcan.php:1041
702
  msgctxt "[FRONTEND] Star rating label"
703
  msgid "Rated %s out of 5"
704
  msgstr ""
705
 
706
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
707
  msgctxt "[GUTENBERG]: block name"
708
  msgid "YITH AJAX Filters Preset"
709
  msgstr ""
710
 
711
  # @ yit
712
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
713
  #, fuzzy
714
  msgctxt "[GUTENBERG]: block name"
715
  msgid "YITH Reset Filters Button"
716
  msgstr "YITH WooCommerce Ajax Navigation"
717
 
718
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
719
  msgctxt "[GUTENBERG]: block description"
720
  msgid "Show filters from a preset"
721
  msgstr ""
722
 
723
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
724
  msgctxt "[GUTENBERG]: block description"
725
  msgid ""
726
  "Show reset filters button, when a filter is applied and button is enabled in "
729
  "product's loop"
730
  msgstr ""
731
 
732
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
733
  msgctxt "[GUTENBERG]: attribute description"
734
  msgid "Preset"
735
  msgstr ""
736
 
737
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
738
  msgctxt "[Admin] Preset table column header"
739
  msgid "Preset name"
740
  msgstr ""
741
 
742
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
743
  msgctxt "[Admin] Preset table column header"
744
  msgid "Shortcode"
745
  msgstr ""
746
 
747
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
748
  msgctxt "[Admin] Preset edit action label"
749
  msgid "Edit this preset"
750
  msgstr ""
751
 
752
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
753
  msgctxt "[Admin] Preset clone action label"
754
  msgid "Clone this preset"
755
  msgstr ""
756
 
757
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
758
  msgctxt "[Admin] Preset delete action label"
759
  msgid "Delete this preset"
760
  msgstr ""
761
 
762
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
763
  msgctxt "[Admin] Preset delete confirm label"
764
  msgid "Are you sure you want to delete this preset?"
765
  msgstr ""
766
 
767
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
768
  msgctxt "[Admin] on-off yes"
769
  msgid "YES"
770
  msgstr ""
771
 
772
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
773
  msgctxt "[Admin] on-off no"
774
  msgid "NO"
775
  msgstr ""
776
 
777
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
778
  #, fuzzy
779
  msgctxt ""
780
  "[Admin] Name of the item missing, shown in preset-empty-content template"
781
  msgid "filter preset"
782
  msgstr "Filtre Listesi:"
783
 
784
+ #: templates/admin/preset-filters.php:31
785
  msgctxt ""
786
  "[Admin] Name of the item missing, shown in preset-empty-content template"
787
  msgid "filter"
788
  msgstr ""
789
 
790
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
791
  msgctxt "[Admin] New preset button label"
792
  msgid "Create a new preset"
793
  msgstr ""
794
 
795
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
796
  msgctxt "[ADMIN] Name of the preset widget"
797
  msgid "YITH AJAX Filters Preset"
798
  msgstr ""
799
 
800
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
801
  msgctxt "[ADMIN] Preset widget options"
802
  msgid "Preset"
803
  msgstr ""
804
 
805
  #. translators: 1. Url to Ajax Product filter admin panel.
806
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
807
  msgctxt "[ADMIN] Preset widget options"
808
  msgid ""
809
  "Please, go to <a href=\"%s\">WP Dashboard -> YITH -> Ajax Product Filter -> "
811
  msgstr ""
812
 
813
  # @ yit
814
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
815
  #, fuzzy
816
  msgctxt "[Plugin Name] Admin: Widget Title"
817
  msgid "YITH AJAX Product Filter"
818
  msgstr "YITH WooCommerce Ajax Navigation"
819
 
820
  # @ yit
821
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
822
  #, fuzzy
823
  msgctxt ""
824
  "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
826
  msgstr "VE"
827
 
828
  # @ yit
829
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
830
  #, fuzzy
831
  msgctxt "[Plugin Name]"
832
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
833
  msgstr ""
834
  "YITH WooCommerce Ajax Navigation için ayarlanmış tüm filtreleri sıfırlayın"
835
 
836
+ #: plugin-options/filter-options.php:145
837
  msgctxt ""
838
  "[Admin] Filter edit form; logical operator that affects query behaviour"
839
  msgid "AND - Results need to match all selected terms at the same time"
840
  msgstr ""
841
 
842
+ #: plugin-options/filter-options.php:146
843
  msgctxt ""
844
  "[Admin] Filter edit form; logical operator that affects query behaviour"
845
  msgid "OR - Results need to match at least one of the selected terms"
1106
  msgctxt "[ADMIN] Premium tab"
1107
  msgid ""
1108
  "<b>Filter by category</b>: to let users choose which product category to "
1109
+ "view<br/>\n"
1110
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1111
  "<b>Filter by price</b>: to let users filter products by a specific price "
1112
+ "range (based on their budget availability)<br/>\n"
1113
  "<b>Filter by color and size</b>: you can create filters for all the "
1114
  "attributes available in your store, like color and size. For the color "
1115
  "filter, you can either choose square or circular color swatches or use "
1116
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1117
  "<b>Filter by rating</b>: to let your users filter products based on other "
1118
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1119
+ "concentrate only on high-rated ones)<br/>\n"
1120
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands Add-"
1121
+ "on plugin, you can also filter products by specific brands<br/>\n"
1122
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1123
+ "filter products and view only those with a discount<br/>\n"
1124
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1125
  "filter products based on their needs and exclude out-of-stock products from "
1126
  "the list"
1236
  "easier to share)"
1237
  msgstr ""
1238
 
1239
+ #: templates/admin/preset-edit.php:31
1240
  msgctxt "[Admin] Back link in new preset page"
1241
  msgid "< back to preset list"
1242
  msgstr ""
1243
 
1244
+ #: templates/admin/preset-edit.php:38
1245
  msgctxt "[ADMIN] Title for new preset page"
1246
  msgid "Edit filter preset"
1247
  msgstr ""
1248
 
1249
+ #: templates/admin/preset-edit.php:40
1250
  msgctxt "[ADMIN] Title for new preset page"
1251
  msgid "Add new filter preset"
1252
  msgstr ""
1253
 
1254
+ #: templates/admin/preset-edit.php:47
1255
  msgctxt "[ADMIN] Preset save message"
1256
  msgid "Preset saved correctly"
1257
  msgstr ""
1258
 
1259
+ #: templates/admin/preset-edit.php:93
1260
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1261
  msgid "Save preset"
1262
  msgstr ""
1263
 
1264
+ #: templates/admin/preset-empty-content.php:29
1265
  msgctxt "Alt text for empty preset image"
1266
  msgid "Empty preset"
1267
  msgstr ""
1268
 
1269
  #. translators: 1. Missing item name.
1270
+ #: templates/admin/preset-empty-content.php:35
1271
  msgctxt "[Admin] Preset table empty message"
1272
  msgid "You don't have any %s yet."
1273
  msgstr ""
1274
 
1275
  # @ yit
1276
+ #: templates/admin/preset-filter-term.php:30
1277
  #, fuzzy
1278
  msgctxt "[Admin] Term edit field label (preset edit page)"
1279
  msgid "Label"
1280
  msgstr "Etiket"
1281
 
1282
+ #: templates/admin/preset-filter-term.php:35
1283
  msgctxt "[Admin] Term edit field label (preset edit page)"
1284
  msgid "Tooltip"
1285
  msgstr ""
1286
 
1287
  # @ yit
1288
+ #: templates/admin/preset-filter-term.php:41
1289
  #, fuzzy
1290
  msgctxt "[Admin] Term edit field label (preset edit page)"
1291
  msgid "Color"
1292
  msgstr "Renk"
1293
 
1294
+ #: templates/admin/preset-filter.php:91
1295
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1296
  msgid "Save Filter"
1297
  msgstr ""
1298
 
1299
+ #: templates/admin/preset-filter.php:92
1300
  #, fuzzy
1301
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1302
  msgid "Delete Filter"
1303
  msgstr "Tüm Filtreleri Sıfırla"
1304
 
1305
+ #: templates/admin/preset-filters.php:33
1306
  msgctxt "[Admin] New filter button label"
1307
  msgid "Add a new filter"
1308
  msgstr ""
1309
 
1310
+ #: templates/admin/preset-filters.php:57
1311
  msgctxt "[Admin] Add new filter in new preset page"
1312
  msgid "+ Add filter"
1313
  msgstr ""
1319
  msgid "See %d more filters"
1320
  msgstr "Tüm Filtreleri Sıfırla"
1321
 
1322
+ #: templates/admin/upgrade-note-modal.php:33
1323
  msgctxt "[ADMIN] Upgrade note modal title"
1324
  msgid "Use the new filter preset feature for your filters"
1325
  msgstr ""
1326
 
1327
+ #: templates/admin/upgrade-note-modal.php:38
1328
  msgctxt "[ADMIN] Upgrade note modal content"
1329
  msgid ""
1330
  "From the version 4.0 we built a powerful system that allows you to create "
1334
  msgstr ""
1335
 
1336
  #. translators: 1. Url to demo video. 2. Url to docs.
1337
+ #: templates/admin/upgrade-note-modal.php:51
1338
  msgctxt "[ADMIN] Upgrade note modal content"
1339
  msgid ""
1340
  "We suggest you to <a href=\"%1$s\">check this video</a> or <a href=\"%2$s"
1342
  msgstr ""
1343
 
1344
  #. translators: 1. Url to docs.
1345
+ #: templates/admin/upgrade-note-modal.php:64
1346
  msgctxt "[ADMIN] Upgrade note modal content"
1347
  msgid ""
1348
  "We suggest you to <a href=\"%1$s\">read the documentation</a> to learn how "
1349
  "to use this new feature."
1350
  msgstr ""
1351
 
1352
+ #: templates/admin/upgrade-note-modal.php:78
1353
  msgctxt "[ADMIN] Upgrade note modal content"
1354
  msgid ""
1355
  "We offer a tool to automatically convert the widget filters of your shop in "
1358
  "will be lost during the process.</b>"
1359
  msgstr ""
1360
 
1361
+ #: templates/admin/upgrade-note-modal.php:89
1362
  msgctxt "[ADMIN] Upgrade note modal content"
1363
  msgid ""
1364
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1366
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1367
  msgstr ""
1368
 
1369
+ #: templates/admin/upgrade-note-modal.php:98
1370
  msgctxt "[ADMIN] Upgrade note modal button label"
1371
  msgid "Convert your widgets in a preset now"
1372
  msgstr ""
1373
 
1374
+ #: templates/admin/upgrade-note-modal.php:99
1375
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1376
  msgid "No thanks"
1377
  msgstr ""
1378
 
1379
+ #: templates/filters/global/reset-filters.php:24
1380
  #, fuzzy
1381
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1382
  msgid "Reset filters"
1383
  msgstr "Tüm Filtreleri Sıfırla"
1384
 
1385
+ # @ yit
1386
+ #, fuzzy
1387
+ #~ msgctxt "[Admin] Menu title"
1388
+ #~ msgid "Ajax Product Filter"
1389
+ #~ msgstr "YITH WooCommerce Ajax Navigation"
1390
+
1391
  # @ yit
1392
  #, fuzzy
1393
  #~ msgid "YITH WooCommerce Ajax Product Filter"
languages/yith-woocommerce-ajax-navigation.pot CHANGED
@@ -5,7 +5,7 @@ msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Navigation\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/yith-woocommerce-ajax-product-filter\n"
8
- "POT-Creation-Date: 2021-06-18 12:05:17+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -29,94 +29,94 @@ msgstr ""
29
  "X-Poedit-SearchPathExcluded-2: node_modules\n"
30
  "X-Generator: grunt-wp-i18n 1.0.3\n"
31
 
32
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:57
33
  msgid "Draft Preset"
34
  msgstr ""
35
 
36
- #: includes/functions.yith-wcan.php:98 includes/functions.yith-wcan.php:112
37
- #: includes/functions.yith-wcan.php:132
38
  msgid "Term"
39
  msgstr ""
40
 
41
- #: includes/functions.yith-wcan.php:98
42
- #: includes/widgets/class.yith-wcan-navigation-widget.php:434
43
  msgid "Color"
44
  msgstr ""
45
 
46
- #: includes/functions.yith-wcan.php:132
47
  msgid "Labels"
48
  msgstr ""
49
 
50
- #: includes/widgets/class.yith-wcan-navigation-widget.php:47
51
  msgid "Filter the list of products without reloading the page"
52
  msgstr ""
53
 
54
- #: includes/widgets/class.yith-wcan-navigation-widget.php:201
55
  msgid "Filters:"
56
  msgstr ""
57
 
58
- #: includes/widgets/class.yith-wcan-navigation-widget.php:433
59
  msgid "List"
60
  msgstr ""
61
 
62
- #: includes/widgets/class.yith-wcan-navigation-widget.php:435
63
  msgid "Label"
64
  msgstr ""
65
 
66
- #: includes/widgets/class.yith-wcan-navigation-widget.php:436
67
  msgid "Dropdown"
68
  msgstr ""
69
 
70
- #: includes/widgets/class.yith-wcan-navigation-widget.php:443
71
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:194
72
  msgid "Title"
73
  msgstr ""
74
 
75
- #: includes/widgets/class.yith-wcan-navigation-widget.php:449
76
  msgid "Type:"
77
  msgstr ""
78
 
79
- #: includes/widgets/class.yith-wcan-navigation-widget.php:460
80
  msgid "Query Type:"
81
  msgstr ""
82
 
83
- #: includes/widgets/class.yith-wcan-navigation-widget.php:463
84
  msgid "OR"
85
  msgstr ""
86
 
87
- #: includes/widgets/class.yith-wcan-navigation-widget.php:468
88
  msgid "Attribute:"
89
  msgstr ""
90
 
91
- #: includes/widgets/class.yith-wcan-navigation-widget.php:475
92
  msgid "Display (default All):"
93
  msgstr ""
94
 
95
- #: includes/widgets/class.yith-wcan-navigation-widget.php:477
96
  msgid "All (no hierarchical)"
97
  msgstr ""
98
 
99
- #: includes/widgets/class.yith-wcan-navigation-widget.php:478
100
  msgid "All (hierarchical)"
101
  msgstr ""
102
 
103
- #: includes/widgets/class.yith-wcan-navigation-widget.php:479
104
  msgid "Only Parent"
105
  msgstr ""
106
 
107
- #: includes/widgets/class.yith-wcan-navigation-widget.php:486
108
  msgid "CSS custom class"
109
  msgstr ""
110
 
111
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:37
112
  msgid "YITH AJAX Reset Filter"
113
  msgstr ""
114
 
115
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:187
116
  msgid "Reset All Filters"
117
  msgstr ""
118
 
119
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:200
120
  msgid "Button Label"
121
  msgstr ""
122
 
@@ -142,117 +142,112 @@ msgid ""
142
  "your e-commerce shop on <strong>YITH</strong></a>"
143
  msgstr ""
144
 
145
- #: includes/class.yith-wcan-admin.php:107
146
  msgctxt "[Admin] Copy confirmation message"
147
  msgid "Content copied to your clipboard"
148
  msgstr ""
149
 
150
- #: includes/class.yith-wcan-admin.php:108
151
  msgctxt "[Admin] Confirm filter delete message"
152
  msgid "Are you sure you want to delete this item?"
153
  msgstr ""
154
 
155
- #: includes/class.yith-wcan-admin.php:110
156
  #. translators: 1. Number of items that will be added.
157
  msgctxt "[Admin] Confirm add all terms message"
158
  msgid "Are you sure you want to proceed? This operation will add %s items"
159
  msgstr ""
160
 
161
- #: includes/class.yith-wcan-admin.php:111
162
  msgctxt "[Admin] Error message"
163
  msgid "\"Filter title\" is a required field"
164
  msgstr ""
165
 
166
- #: includes/class.yith-wcan-admin.php:114 templates/admin/preset-filter.php:31
167
  msgctxt "[Admin] Message shown when filter has empty title"
168
  msgid "&lt; no title &gt;"
169
  msgstr ""
170
 
171
- #: includes/class.yith-wcan-admin.php:115
172
  msgctxt "[Admin] Media library title, when selecting images"
173
  msgid "Select media you want to use"
174
  msgstr ""
175
 
176
- #: includes/class.yith-wcan-admin.php:116
177
  msgctxt "[Admin] Media library confirm button, when selecting images"
178
  msgid "Use this media"
179
  msgstr ""
180
 
181
- #: includes/class.yith-wcan-admin.php:184
182
  msgctxt "[Admin] tab name"
183
  msgid "Filter presets"
184
  msgstr ""
185
 
186
- #: includes/class.yith-wcan-admin.php:185
187
  msgctxt "[Admin] tab name"
188
  msgid "General settings"
189
  msgstr ""
190
 
191
- #: includes/class.yith-wcan-admin.php:186
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr ""
195
 
196
- #: includes/class.yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr ""
200
 
201
- #: includes/class.yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr ""
205
 
206
- #: includes/class.yith-wcan-admin.php:198
207
- msgctxt "[Admin] Menu title"
208
- msgid "Ajax Product Filter"
209
- msgstr ""
210
-
211
- #: includes/class.yith-wcan-admin.php:199
212
  msgctxt "[Admin] Plugin description"
213
  msgid ""
214
  "It allows your users to find the product they are looking for as quickly as "
215
  "possible."
216
  msgstr ""
217
 
218
- #: includes/class.yith-wcan-admin.php:211
219
  msgctxt "[HELP TAB] Video title"
220
  msgid ""
221
  "Check this video to learn how to <b>create a filter preset and show it on "
222
  "the shop page:</b>"
223
  msgstr ""
224
 
225
- #: includes/class.yith-wcan-admin.php:329
226
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
227
  msgid "item"
228
  msgstr ""
229
 
230
- #: includes/class.yith-wcan-admin.php:330
231
  msgctxt "[Admin] Preset table empty message second line"
232
  msgid "But don't worry, here you can create your first one!"
233
  msgstr ""
234
 
235
- #: includes/class.yith-wcan-admin.php:478
236
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
237
  msgid "Clear Product Filter transients"
238
  msgstr ""
239
 
240
- #: includes/class.yith-wcan-admin.php:484
241
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
242
  msgid "Run filter widgets upgrade"
243
  msgstr ""
244
 
245
- #: includes/class.yith-wcan-admin.php:479
246
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
247
  msgid "Clear"
248
  msgstr ""
249
 
250
- #: includes/class.yith-wcan-admin.php:485
251
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
252
  msgid "Run"
253
  msgstr ""
254
 
255
- #: includes/class.yith-wcan-admin.php:480
256
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
257
  msgid ""
258
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
@@ -260,39 +255,39 @@ msgid ""
260
  "configuration, and filters do not display the expected results."
261
  msgstr ""
262
 
263
- #: includes/class.yith-wcan-admin.php:486
264
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
265
  msgid ""
266
  "This will create a preset for any sidebar of your shop containing filter "
267
  "widgets; preset will be configured to match widgets specifications"
268
  msgstr ""
269
 
270
- #: includes/class.yith-wcan-filter-factory.php:72
271
  msgctxt "[Admin] Filter edit form"
272
  msgid "Taxonomy"
273
  msgstr ""
274
 
275
- #: includes/class.yith-wcan-filter-factory.php:86
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Checkbox"
278
  msgstr ""
279
 
280
- #: includes/class.yith-wcan-filter-factory.php:87
281
  msgctxt "[Admin] Filter edit form"
282
  msgid "Select"
283
  msgstr ""
284
 
285
- #: includes/class.yith-wcan-filter-factory.php:88
286
  msgctxt "[Admin] Filter edit form"
287
  msgid "Text"
288
  msgstr ""
289
 
290
- #: includes/class.yith-wcan-filter-factory.php:89
291
  msgctxt "[Admin] Filter edit form"
292
  msgid "Color Swatches"
293
  msgstr ""
294
 
295
- #: includes/class.yith-wcan-filter-factory.php:90
296
  msgctxt "[Admin] Filter edit form"
297
  msgid "Label"
298
  msgstr ""
@@ -307,32 +302,32 @@ msgctxt "[Admin] Filter edit form"
307
  msgid "Enter a name to identify this filter"
308
  msgstr ""
309
 
310
- #: plugin-options/filter-options.php:41
311
  msgctxt "[Admin] Filter edit form"
312
  msgid "Filter for"
313
  msgstr ""
314
 
315
- #: plugin-options/filter-options.php:45
316
  msgctxt "[Admin] Filter edit form"
317
  msgid "Select the parameters you wish to filter for"
318
  msgstr ""
319
 
320
- #: plugin-options/filter-options.php:51
321
  msgctxt "[Admin] Filter edit form"
322
  msgid "Choose taxonomy"
323
  msgstr ""
324
 
325
- #: plugin-options/filter-options.php:55
326
  msgctxt "[Admin] Filter edit form"
327
  msgid "Select which taxonomy to use for this filter"
328
  msgstr ""
329
 
330
- #: plugin-options/filter-options.php:60
331
  msgctxt "[Admin] Filter edit form"
332
  msgid "Auto-populate with all terms"
333
  msgstr ""
334
 
335
- #: plugin-options/filter-options.php:62
336
  msgctxt "[Admin] Filter edit form"
337
  msgid ""
338
  "Populate this filter with all existing terms of the selected taxonomy.\n"
@@ -341,67 +336,67 @@ msgid ""
341
  "as well.</span>"
342
  msgstr ""
343
 
344
- #: plugin-options/filter-options.php:71
345
  msgctxt "[Admin] Filter edit form"
346
  msgid "Choose terms"
347
  msgstr ""
348
 
349
- #: plugin-options/filter-options.php:76
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Select which terms to use for filtering"
352
  msgstr ""
353
 
354
- #: plugin-options/filter-options.php:80
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Filter type"
357
  msgstr ""
358
 
359
- #: plugin-options/filter-options.php:84
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Select the filter type for this filter"
362
  msgstr ""
363
 
364
- #: plugin-options/filter-options.php:88
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "Labels"
367
  msgstr ""
368
 
369
- #: plugin-options/filter-options.php:91
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Show below"
372
  msgstr ""
373
 
374
- #: plugin-options/filter-options.php:92
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Show on the right"
377
  msgstr ""
378
 
379
- #: plugin-options/filter-options.php:93
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Hide"
382
  msgstr ""
383
 
384
- #: plugin-options/filter-options.php:95
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Choose if and where to show the label inside your filter"
387
  msgstr ""
388
 
389
- #: plugin-options/filter-options.php:99
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Columns number"
392
  msgstr ""
393
 
394
- #: plugin-options/filter-options.php:104
395
  msgctxt "[Admin] Filter edit form"
396
  msgid "Set the number of items per row you want to show for this design"
397
  msgstr ""
398
 
399
- #: plugin-options/filter-options.php:108
400
  msgctxt "[Admin] Filter edit form"
401
  msgid "Customize terms"
402
  msgstr ""
403
 
404
- #: plugin-options/filter-options.php:111
405
  msgctxt "[Admin] Filter edit form"
406
  msgid ""
407
  "Configure your terms individually; system will otherwise use default "
@@ -415,154 +410,154 @@ msgid ""
415
  "this option and use the boxes below</span>"
416
  msgstr ""
417
 
418
- #: plugin-options/filter-options.php:121
419
  msgctxt "[Admin] Filter edit form"
420
  msgid "Terms options"
421
  msgstr ""
422
 
423
- #: plugin-options/filter-options.php:127
424
  msgctxt "[Admin] Filter edit form"
425
  msgid "Show hierarchy"
426
  msgstr ""
427
 
428
- #: plugin-options/filter-options.php:130
429
  msgctxt "[Admin] Filter edit form"
430
  msgid "No, show all terms in same level"
431
  msgstr ""
432
 
433
- #: plugin-options/filter-options.php:131
434
  msgctxt "[Admin] Filter edit form"
435
  msgid "No, show only parent terms"
436
  msgstr ""
437
 
438
- #: plugin-options/filter-options.php:132
439
  msgctxt "[Admin] Filter edit form"
440
  msgid "Yes"
441
  msgstr ""
442
 
443
- #: plugin-options/filter-options.php:134
444
  msgctxt "[Admin] Filter edit form"
445
  msgid "Choose how to show terms hierarchy"
446
  msgstr ""
447
 
448
- #: plugin-options/filter-options.php:138
449
  msgctxt "[Admin] Filter edit form"
450
  msgid "Allow multiple selection"
451
  msgstr ""
452
 
453
- #: plugin-options/filter-options.php:140
454
  msgctxt "[Admin] Filter edit form"
455
  msgid "Enable if the user can select multiple terms when filtering products"
456
  msgstr ""
457
 
458
- #: plugin-options/filter-options.php:144
459
  msgctxt "[Admin] Filter edit form"
460
  msgid "Multiselect relation"
461
  msgstr ""
462
 
463
- #: plugin-options/filter-options.php:150
464
  msgctxt "[Admin] Filter edit form"
465
  msgid "Choose how multiple terms selection should behave"
466
  msgstr ""
467
 
468
- #: includes/class.yith-wcan-filter-factory.php:104
469
  msgctxt "[Admin] Filter edit form, sorting options"
470
  msgid "Default sorting"
471
  msgstr ""
472
 
473
- #: includes/class.yith-wcan-filter-factory.php:105
474
  msgctxt "[Admin] Filter edit form, sorting options"
475
  msgid "Sort by popularity"
476
  msgstr ""
477
 
478
- #: includes/class.yith-wcan-filter-factory.php:106
479
  msgctxt "[Admin] Filter edit form, sorting options"
480
  msgid "Sort by average rating"
481
  msgstr ""
482
 
483
- #: includes/class.yith-wcan-filter-factory.php:107
484
  msgctxt "[Admin] Filter edit form, sorting options"
485
  msgid "Sort by latest"
486
  msgstr ""
487
 
488
- #: includes/class.yith-wcan-filter-factory.php:108
489
  msgctxt "[Admin] Filter edit form, sorting options"
490
  msgid "Sort by price: low to high"
491
  msgstr ""
492
 
493
- #: includes/class.yith-wcan-filter-factory.php:109
494
  msgctxt "[Admin] Filter edit form, sorting options"
495
  msgid "Sort by price: high to low"
496
  msgstr ""
497
 
498
- #: includes/class.yith-wcan-filter.php:116
499
  msgctxt "[Admin] Default filter title"
500
  msgid "New filter"
501
  msgstr ""
502
 
503
- #: includes/class.yith-wcan-frontend.php:576
504
- #: includes/filters/class.yith-wcan-filter-tax.php:62
505
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
506
  msgid "All"
507
  msgstr ""
508
 
509
- #: includes/class.yith-wcan-frontend.php:577
510
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
511
  msgid "Search..."
512
  msgstr ""
513
 
514
- #: includes/class.yith-wcan-frontend.php:578
515
  msgctxt "[FRONTEND] Empty items list in the dropdown"
516
  msgid "No item found"
517
  msgstr ""
518
 
519
- #: includes/class.yith-wcan-frontend.php:580
520
  #. translators: 1. Number of items to show.
521
  msgctxt "[FRONTEND] Show more link on terms dropdown"
522
  msgid "Show %d more"
523
  msgstr ""
524
 
525
- #: includes/class.yith-wcan-frontend.php:581
526
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
527
  msgid "Close"
528
  msgstr ""
529
 
530
- #: includes/class.yith-wcan-frontend.php:582
531
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
532
  msgid "Save"
533
  msgstr ""
534
 
535
- #: includes/class.yith-wcan-frontend.php:583
536
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
537
  msgid "Show results"
538
  msgstr ""
539
 
540
- #: includes/class.yith-wcan-frontend.php:584
541
  msgctxt ""
542
  "[FRONTEND] Label for clear selection link, that appears above filter after "
543
  "selection"
544
  msgid "Clear"
545
  msgstr ""
546
 
547
- #: includes/class.yith-wcan-frontend.php:585
548
  msgctxt ""
549
  "[FRONTEND] Label for clear selection link, that appears above filter after "
550
  "selection"
551
  msgid "Clear All"
552
  msgstr ""
553
 
554
- #: includes/class.yith-wcan-install.php:95
555
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
556
  msgid "Default preset"
557
  msgstr ""
558
 
559
- #: includes/class.yith-wcan-install.php:285
560
  #. translators: 1. Taxonomy name.
561
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
562
  msgid "Filter by %s"
563
  msgstr ""
564
 
565
- #: includes/class.yith-wcan-preset-factory.php:112
566
  msgctxt "[Admin] Label in new preset page"
567
  msgid "Default"
568
  msgstr ""
@@ -577,134 +572,134 @@ msgctxt "[Admin] Label in new preset page"
577
  msgid "Enter a name to identify this filter preset"
578
  msgstr ""
579
 
580
- #: templates/admin/preset-filters.php:20
581
  msgctxt "[Admin] Label in new preset page"
582
  msgid "Filters of this preset"
583
  msgstr ""
584
 
585
- #: includes/class.yith-wcan-presets.php:95
586
- #: includes/class.yith-wcan-presets.php:100
587
  msgctxt "[Admin] name of presets custom post type"
588
  msgid "Filter presets"
589
  msgstr ""
590
 
591
- #: includes/class.yith-wcan-presets.php:96
592
  msgctxt "[Admin] singular name of presets custom post type"
593
  msgid "Filter preset"
594
  msgstr ""
595
 
596
- #: includes/class.yith-wcan-presets.php:97
597
  msgctxt "[Admin] add new filter preset label"
598
  msgid "Add new preset"
599
  msgstr ""
600
 
601
- #: includes/class.yith-wcan-presets.php:139
602
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
603
  msgid "Convert widgets in a preset"
604
  msgstr ""
605
 
606
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:108
607
  msgctxt ""
608
  "[Generic] Error that happens when trying to read a filter preset that does "
609
  "not exist"
610
  msgid "Invalid preset."
611
  msgstr ""
612
 
613
- #: includes/data-stores/class.yith-wcan-preset-data-store.php:235
614
  #. translators: 1. Title of original preset.
615
  msgctxt "[ADMIN] Title of the cloned preset"
616
  msgid "%s - Copy"
617
  msgstr ""
618
 
619
- #: includes/elementor/class.yith-wcan-elementor-filters.php:48
620
  msgctxt "[ADMIN] Name of the preset elementor widget"
621
  msgid "YITH AJAX Filters Preset"
622
  msgstr ""
623
 
624
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:48
625
  msgctxt "[ADMIN] Name of the preset elementor widget"
626
  msgid "YITH AJAX Filters Reset Button"
627
  msgstr ""
628
 
629
- #: includes/elementor/class.yith-wcan-elementor-filters.php:89
630
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:60
631
  msgctxt "[ELEMENTOR] Default preset option"
632
  msgid "Choose an option"
633
  msgstr ""
634
 
635
- #: includes/elementor/class.yith-wcan-elementor-filters.php:97
636
  msgctxt "[ELEMENTOR] Section title"
637
  msgid "Filters"
638
  msgstr ""
639
 
640
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:89
641
  msgctxt "[ELEMENTOR] Section title"
642
  msgid "General"
643
  msgstr ""
644
 
645
- #: includes/elementor/class.yith-wcan-elementor-filters.php:105
646
  msgctxt "[ELEMENTOR] Control label"
647
  msgid "Preset"
648
  msgstr ""
649
 
650
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:100
651
  msgctxt "[ELEMENTOR] Widget description"
652
  msgid "This widget will display \"Filters reset\" button, wherever it is placed"
653
  msgstr ""
654
 
655
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:103
656
  msgctxt "[ELEMENTOR] Widget description"
657
  msgid ""
658
  "It will allow users to reset the filer selection; it will only appear when "
659
  "there is an active filter."
660
  msgstr ""
661
 
662
- #: includes/elementor/class.yith-wcan-elementor-reset-button.php:107
663
  msgctxt "[ELEMENTOR] Widget description"
664
  msgid ""
665
  "You can use this block to place \"Reset filters\" button inside your page, "
666
  "when \"Reset button position\" option won't work for your product's loop"
667
  msgstr ""
668
 
669
- #: includes/functions.yith-wcan.php:112
670
  msgctxt "For multicolor: I.E. white and red T-Shirt"
671
  msgid "Color 1"
672
  msgstr ""
673
 
674
- #: includes/functions.yith-wcan.php:112
675
  msgctxt "For multicolor: I.E. white and red T-Shirt"
676
  msgid "Color 2"
677
  msgstr ""
678
 
679
- #: includes/functions.yith-wcan.php:1001
680
  msgctxt "[FRONTEND] Star rating template"
681
  msgid "star"
682
  msgid_plural "stars"
683
  msgstr[0] ""
684
  msgstr[1] ""
685
 
686
- #: includes/functions.yith-wcan.php:1016
687
  #. translators: 1. Rating.
688
  msgctxt "[FRONTEND] Star rating label"
689
  msgid "Rated %s out of 5"
690
  msgstr ""
691
 
692
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:69
693
  msgctxt "[GUTENBERG]: block name"
694
  msgid "YITH AJAX Filters Preset"
695
  msgstr ""
696
 
697
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:49
698
  msgctxt "[GUTENBERG]: block name"
699
  msgid "YITH Reset Filters Button"
700
  msgstr ""
701
 
702
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:70
703
  msgctxt "[GUTENBERG]: block description"
704
  msgid "Show filters from a preset"
705
  msgstr ""
706
 
707
- #: includes/shortcodes/class.yith-wcan-shortcode-reset-button.php:50
708
  msgctxt "[GUTENBERG]: block description"
709
  msgid ""
710
  "Show reset filters button, when a filter is applied and button is enabled "
@@ -713,77 +708,77 @@ msgid ""
713
  "for your product's loop"
714
  msgstr ""
715
 
716
- #: includes/shortcodes/class.yith-wcan-shortcode-filters.php:75
717
  msgctxt "[GUTENBERG]: attribute description"
718
  msgid "Preset"
719
  msgstr ""
720
 
721
- #: includes/tables/class.yith-wcan-filter-presets-table.php:115
722
  msgctxt "[Admin] Preset table column header"
723
  msgid "Preset name"
724
  msgstr ""
725
 
726
- #: includes/tables/class.yith-wcan-filter-presets-table.php:116
727
  msgctxt "[Admin] Preset table column header"
728
  msgid "Shortcode"
729
  msgstr ""
730
 
731
- #: includes/tables/class.yith-wcan-filter-presets-table.php:134
732
  msgctxt "[Admin] Preset edit action label"
733
  msgid "Edit this preset"
734
  msgstr ""
735
 
736
- #: includes/tables/class.yith-wcan-filter-presets-table.php:147
737
  msgctxt "[Admin] Preset clone action label"
738
  msgid "Clone this preset"
739
  msgstr ""
740
 
741
- #: includes/tables/class.yith-wcan-filter-presets-table.php:160
742
  msgctxt "[Admin] Preset delete action label"
743
  msgid "Delete this preset"
744
  msgstr ""
745
 
746
- #: includes/tables/class.yith-wcan-filter-presets-table.php:161
747
  msgctxt "[Admin] Preset delete confirm label"
748
  msgid "Are you sure you want to delete this preset?"
749
  msgstr ""
750
 
751
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
752
  msgctxt "[Admin] on-off yes"
753
  msgid "YES"
754
  msgstr ""
755
 
756
- #: includes/tables/class.yith-wcan-filter-presets-table.php:174
757
  msgctxt "[Admin] on-off no"
758
  msgid "NO"
759
  msgstr ""
760
 
761
- #: includes/tables/class.yith-wcan-filter-presets-table.php:194
762
  msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
763
  msgid "filter preset"
764
  msgstr ""
765
 
766
- #: templates/admin/preset-filters.php:29
767
  msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
768
  msgid "filter"
769
  msgstr ""
770
 
771
- #: includes/tables/class.yith-wcan-filter-presets-table.php:195
772
  msgctxt "[Admin] New preset button label"
773
  msgid "Create a new preset"
774
  msgstr ""
775
 
776
- #: includes/widgets/class.yith-wcan-filters-widget.php:34
777
  msgctxt "[ADMIN] Name of the preset widget"
778
  msgid "YITH AJAX Filters Preset"
779
  msgstr ""
780
 
781
- #: includes/widgets/class.yith-wcan-filters-widget.php:52
782
  msgctxt "[ADMIN] Preset widget options"
783
  msgid "Preset"
784
  msgstr ""
785
 
786
- #: includes/widgets/class.yith-wcan-filters-widget.php:65
787
  #. translators: 1. Url to Ajax Product filter admin panel.
788
  msgctxt "[ADMIN] Preset widget options"
789
  msgid ""
@@ -791,27 +786,27 @@ msgid ""
791
  "Presets</a> and create your first preset"
792
  msgstr ""
793
 
794
- #: includes/widgets/class.yith-wcan-navigation-widget.php:54
795
  msgctxt "[Plugin Name] Admin: Widget Title"
796
  msgid "YITH AJAX Product Filter"
797
  msgstr ""
798
 
799
- #: includes/widgets/class.yith-wcan-navigation-widget.php:462
800
  msgctxt "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
801
  msgid "AND"
802
  msgstr ""
803
 
804
- #: includes/widgets/class.yith-wcan-reset-navigation-widget.php:30
805
  msgctxt "[Plugin Name]"
806
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
807
  msgstr ""
808
 
809
- #: plugin-options/filter-options.php:147
810
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
811
  msgid "AND - Results need to match all selected terms at the same time"
812
  msgstr ""
813
 
814
- #: plugin-options/filter-options.php:148
815
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
816
  msgid "OR - Results need to match at least one of the selected terms"
817
  msgstr ""
@@ -1072,21 +1067,21 @@ msgstr ""
1072
  msgctxt "[ADMIN] Premium tab"
1073
  msgid ""
1074
  "<b>Filter by category</b>: to let users choose which product category to "
1075
- "view<br/>\r\n"
1076
- "<b>Filter by tag</b>: to let users filter products by tag<br/>\r\n"
1077
  "<b>Filter by price</b>: to let users filter products by a specific price "
1078
- "range (based on their budget availability)<br/>\r\n"
1079
  "<b>Filter by color and size</b>: you can create filters for all the "
1080
  "attributes available in your store, like color and size. For the color "
1081
  "filter, you can either choose square or circular color swatches or use "
1082
- "custom images to recall a specific pattern, shade or fabric texture<br/>\r\n"
1083
  "<b>Filter by rating</b>: to let your users filter products based on other "
1084
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1085
- "concentrate only on high-rated ones)<br/>\r\n"
1086
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands "
1087
- "Add-on plugin, you can also filter products by specific brands<br/>\r\n"
1088
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1089
- "filter products and view only those with a discount<br/>\r\n"
1090
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1091
  "filter products based on their needs and exclude out-of-stock products from "
1092
  "the list"
@@ -1201,73 +1196,73 @@ msgid ""
1201
  "easier to share)"
1202
  msgstr ""
1203
 
1204
- #: templates/admin/preset-edit.php:29
1205
  msgctxt "[Admin] Back link in new preset page"
1206
  msgid "< back to preset list"
1207
  msgstr ""
1208
 
1209
- #: templates/admin/preset-edit.php:36
1210
  msgctxt "[ADMIN] Title for new preset page"
1211
  msgid "Edit filter preset"
1212
  msgstr ""
1213
 
1214
- #: templates/admin/preset-edit.php:38
1215
  msgctxt "[ADMIN] Title for new preset page"
1216
  msgid "Add new filter preset"
1217
  msgstr ""
1218
 
1219
- #: templates/admin/preset-edit.php:45
1220
  msgctxt "[ADMIN] Preset save message"
1221
  msgid "Preset saved correctly"
1222
  msgstr ""
1223
 
1224
- #: templates/admin/preset-edit.php:90
1225
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1226
  msgid "Save preset"
1227
  msgstr ""
1228
 
1229
- #: templates/admin/preset-empty-content.php:27
1230
  msgctxt "Alt text for empty preset image"
1231
  msgid "Empty preset"
1232
  msgstr ""
1233
 
1234
- #: templates/admin/preset-empty-content.php:33
1235
  #. translators: 1. Missing item name.
1236
  msgctxt "[Admin] Preset table empty message"
1237
  msgid "You don't have any %s yet."
1238
  msgstr ""
1239
 
1240
- #: templates/admin/preset-filter-term.php:28
1241
  msgctxt "[Admin] Term edit field label (preset edit page)"
1242
  msgid "Label"
1243
  msgstr ""
1244
 
1245
- #: templates/admin/preset-filter-term.php:33
1246
  msgctxt "[Admin] Term edit field label (preset edit page)"
1247
  msgid "Tooltip"
1248
  msgstr ""
1249
 
1250
- #: templates/admin/preset-filter-term.php:39
1251
  msgctxt "[Admin] Term edit field label (preset edit page)"
1252
  msgid "Color"
1253
  msgstr ""
1254
 
1255
- #: templates/admin/preset-filter.php:89
1256
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1257
  msgid "Save Filter"
1258
  msgstr ""
1259
 
1260
- #: templates/admin/preset-filter.php:90
1261
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1262
  msgid "Delete Filter"
1263
  msgstr ""
1264
 
1265
- #: templates/admin/preset-filters.php:31
1266
  msgctxt "[Admin] New filter button label"
1267
  msgid "Add a new filter"
1268
  msgstr ""
1269
 
1270
- #: templates/admin/preset-filters.php:55
1271
  msgctxt "[Admin] Add new filter in new preset page"
1272
  msgid "+ Add filter"
1273
  msgstr ""
@@ -1278,12 +1273,12 @@ msgctxt "[Admin] Add new filter in new preset page"
1278
  msgid "See %d more filters"
1279
  msgstr ""
1280
 
1281
- #: templates/admin/upgrade-note-modal.php:31
1282
  msgctxt "[ADMIN] Upgrade note modal title"
1283
  msgid "Use the new filter preset feature for your filters"
1284
  msgstr ""
1285
 
1286
- #: templates/admin/upgrade-note-modal.php:36
1287
  msgctxt "[ADMIN] Upgrade note modal content"
1288
  msgid ""
1289
  "From the version 4.0 we built a powerful system that allows you to create "
@@ -1292,7 +1287,7 @@ msgid ""
1292
  "block or the Elementor widget."
1293
  msgstr ""
1294
 
1295
- #: templates/admin/upgrade-note-modal.php:49
1296
  #. translators: 1. Url to demo video. 2. Url to docs.
1297
  msgctxt "[ADMIN] Upgrade note modal content"
1298
  msgid ""
@@ -1301,7 +1296,7 @@ msgid ""
1301
  "feature."
1302
  msgstr ""
1303
 
1304
- #: templates/admin/upgrade-note-modal.php:62
1305
  #. translators: 1. Url to docs.
1306
  msgctxt "[ADMIN] Upgrade note modal content"
1307
  msgid ""
@@ -1309,7 +1304,7 @@ msgid ""
1309
  "to use this new feature."
1310
  msgstr ""
1311
 
1312
- #: templates/admin/upgrade-note-modal.php:76
1313
  msgctxt "[ADMIN] Upgrade note modal content"
1314
  msgid ""
1315
  "We offer a tool to automatically convert the widget filters of your shop in "
@@ -1318,7 +1313,7 @@ msgid ""
1318
  "will be lost during the process.</b>"
1319
  msgstr ""
1320
 
1321
- #: templates/admin/upgrade-note-modal.php:87
1322
  msgctxt "[ADMIN] Upgrade note modal content"
1323
  msgid ""
1324
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
@@ -1326,17 +1321,17 @@ msgid ""
1326
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1327
  msgstr ""
1328
 
1329
- #: templates/admin/upgrade-note-modal.php:96
1330
  msgctxt "[ADMIN] Upgrade note modal button label"
1331
  msgid "Convert your widgets in a preset now"
1332
  msgstr ""
1333
 
1334
- #: templates/admin/upgrade-note-modal.php:97
1335
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1336
  msgid "No thanks"
1337
  msgstr ""
1338
 
1339
- #: templates/filters/global/reset-filters.php:23
1340
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1341
  msgid "Reset filters"
1342
  msgstr ""
5
  "Project-Id-Version: YITH WooCommerce Ajax Navigation\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://wordpress.org/support/plugin/yith-woocommerce-ajax-product-filter\n"
8
+ "POT-Creation-Date: 2021-09-24 12:55:48+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
29
  "X-Poedit-SearchPathExcluded-2: node_modules\n"
30
  "X-Generator: grunt-wp-i18n 1.0.3\n"
31
 
32
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:57
33
  msgid "Draft Preset"
34
  msgstr ""
35
 
36
+ #: includes/functions-yith-wcan.php:98 includes/functions-yith-wcan.php:112
37
+ #: includes/functions-yith-wcan.php:132
38
  msgid "Term"
39
  msgstr ""
40
 
41
+ #: includes/functions-yith-wcan.php:98
42
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:438
43
  msgid "Color"
44
  msgstr ""
45
 
46
+ #: includes/functions-yith-wcan.php:132
47
  msgid "Labels"
48
  msgstr ""
49
 
50
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:46
51
  msgid "Filter the list of products without reloading the page"
52
  msgstr ""
53
 
54
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:205
55
  msgid "Filters:"
56
  msgstr ""
57
 
58
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:437
59
  msgid "List"
60
  msgstr ""
61
 
62
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:439
63
  msgid "Label"
64
  msgstr ""
65
 
66
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:440
67
  msgid "Dropdown"
68
  msgstr ""
69
 
70
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:447
71
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:195
72
  msgid "Title"
73
  msgstr ""
74
 
75
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:453
76
  msgid "Type:"
77
  msgstr ""
78
 
79
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:464
80
  msgid "Query Type:"
81
  msgstr ""
82
 
83
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:467
84
  msgid "OR"
85
  msgstr ""
86
 
87
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:472
88
  msgid "Attribute:"
89
  msgstr ""
90
 
91
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:479
92
  msgid "Display (default All):"
93
  msgstr ""
94
 
95
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:481
96
  msgid "All (no hierarchical)"
97
  msgstr ""
98
 
99
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:482
100
  msgid "All (hierarchical)"
101
  msgstr ""
102
 
103
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:483
104
  msgid "Only Parent"
105
  msgstr ""
106
 
107
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:490
108
  msgid "CSS custom class"
109
  msgstr ""
110
 
111
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:37
112
  msgid "YITH AJAX Reset Filter"
113
  msgstr ""
114
 
115
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:188
116
  msgid "Reset All Filters"
117
  msgstr ""
118
 
119
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:201
120
  msgid "Button Label"
121
  msgstr ""
122
 
142
  "your e-commerce shop on <strong>YITH</strong></a>"
143
  msgstr ""
144
 
145
+ #: includes/class-yith-wcan-admin.php:107
146
  msgctxt "[Admin] Copy confirmation message"
147
  msgid "Content copied to your clipboard"
148
  msgstr ""
149
 
150
+ #: includes/class-yith-wcan-admin.php:108
151
  msgctxt "[Admin] Confirm filter delete message"
152
  msgid "Are you sure you want to delete this item?"
153
  msgstr ""
154
 
155
+ #: includes/class-yith-wcan-admin.php:110
156
  #. translators: 1. Number of items that will be added.
157
  msgctxt "[Admin] Confirm add all terms message"
158
  msgid "Are you sure you want to proceed? This operation will add %s items"
159
  msgstr ""
160
 
161
+ #: includes/class-yith-wcan-admin.php:111
162
  msgctxt "[Admin] Error message"
163
  msgid "\"Filter title\" is a required field"
164
  msgstr ""
165
 
166
+ #: includes/class-yith-wcan-admin.php:114 templates/admin/preset-filter.php:33
167
  msgctxt "[Admin] Message shown when filter has empty title"
168
  msgid "&lt; no title &gt;"
169
  msgstr ""
170
 
171
+ #: includes/class-yith-wcan-admin.php:115
172
  msgctxt "[Admin] Media library title, when selecting images"
173
  msgid "Select media you want to use"
174
  msgstr ""
175
 
176
+ #: includes/class-yith-wcan-admin.php:116
177
  msgctxt "[Admin] Media library confirm button, when selecting images"
178
  msgid "Use this media"
179
  msgstr ""
180
 
181
+ #: includes/class-yith-wcan-admin.php:184
182
  msgctxt "[Admin] tab name"
183
  msgid "Filter presets"
184
  msgstr ""
185
 
186
+ #: includes/class-yith-wcan-admin.php:185
187
  msgctxt "[Admin] tab name"
188
  msgid "General settings"
189
  msgstr ""
190
 
191
+ #: includes/class-yith-wcan-admin.php:186
192
  msgctxt "[Admin] tab name"
193
  msgid "SEO"
194
  msgstr ""
195
 
196
+ #: includes/class-yith-wcan-admin.php:187
197
  msgctxt "[Admin] tab name"
198
  msgid "Premium Version"
199
  msgstr ""
200
 
201
+ #: includes/class-yith-wcan-admin.php:191
202
  msgctxt "[Admin] tab name"
203
  msgid "Legacy"
204
  msgstr ""
205
 
206
+ #: includes/class-yith-wcan-admin.php:199
 
 
 
 
 
207
  msgctxt "[Admin] Plugin description"
208
  msgid ""
209
  "It allows your users to find the product they are looking for as quickly as "
210
  "possible."
211
  msgstr ""
212
 
213
+ #: includes/class-yith-wcan-admin.php:211
214
  msgctxt "[HELP TAB] Video title"
215
  msgid ""
216
  "Check this video to learn how to <b>create a filter preset and show it on "
217
  "the shop page:</b>"
218
  msgstr ""
219
 
220
+ #: includes/class-yith-wcan-admin.php:329
221
  msgctxt "[Admin] Generic item name, in \"You have no x yet\""
222
  msgid "item"
223
  msgstr ""
224
 
225
+ #: includes/class-yith-wcan-admin.php:330
226
  msgctxt "[Admin] Preset table empty message second line"
227
  msgid "But don't worry, here you can create your first one!"
228
  msgstr ""
229
 
230
+ #: includes/class-yith-wcan-admin.php:480
231
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
232
  msgid "Clear Product Filter transients"
233
  msgstr ""
234
 
235
+ #: includes/class-yith-wcan-admin.php:486
236
  msgctxt "[ADMIN] WooCommerce Tools tab, name of the tool"
237
  msgid "Run filter widgets upgrade"
238
  msgstr ""
239
 
240
+ #: includes/class-yith-wcan-admin.php:481
241
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
242
  msgid "Clear"
243
  msgstr ""
244
 
245
+ #: includes/class-yith-wcan-admin.php:487
246
  msgctxt "[ADMIN] WooCommerce Tools tab, button for the tool"
247
  msgid "Run"
248
  msgstr ""
249
 
250
+ #: includes/class-yith-wcan-admin.php:482
251
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
252
  msgid ""
253
  "This will clear all transients related to the YITH WooCommerce AJAX Product "
255
  "configuration, and filters do not display the expected results."
256
  msgstr ""
257
 
258
+ #: includes/class-yith-wcan-admin.php:488
259
  msgctxt "[ADMIN] WooCommerce Tools tab, description of the tool"
260
  msgid ""
261
  "This will create a preset for any sidebar of your shop containing filter "
262
  "widgets; preset will be configured to match widgets specifications"
263
  msgstr ""
264
 
265
+ #: includes/class-yith-wcan-filter-factory.php:72
266
  msgctxt "[Admin] Filter edit form"
267
  msgid "Taxonomy"
268
  msgstr ""
269
 
270
+ #: includes/class-yith-wcan-filter-factory.php:86
271
  msgctxt "[Admin] Filter edit form"
272
  msgid "Checkbox"
273
  msgstr ""
274
 
275
+ #: includes/class-yith-wcan-filter-factory.php:87
276
  msgctxt "[Admin] Filter edit form"
277
  msgid "Select"
278
  msgstr ""
279
 
280
+ #: includes/class-yith-wcan-filter-factory.php:88
281
  msgctxt "[Admin] Filter edit form"
282
  msgid "Text"
283
  msgstr ""
284
 
285
+ #: includes/class-yith-wcan-filter-factory.php:89
286
  msgctxt "[Admin] Filter edit form"
287
  msgid "Color Swatches"
288
  msgstr ""
289
 
290
+ #: includes/class-yith-wcan-filter-factory.php:90
291
  msgctxt "[Admin] Filter edit form"
292
  msgid "Label"
293
  msgstr ""
302
  msgid "Enter a name to identify this filter"
303
  msgstr ""
304
 
305
+ #: plugin-options/filter-options.php:40
306
  msgctxt "[Admin] Filter edit form"
307
  msgid "Filter for"
308
  msgstr ""
309
 
310
+ #: plugin-options/filter-options.php:44
311
  msgctxt "[Admin] Filter edit form"
312
  msgid "Select the parameters you wish to filter for"
313
  msgstr ""
314
 
315
+ #: plugin-options/filter-options.php:49
316
  msgctxt "[Admin] Filter edit form"
317
  msgid "Choose taxonomy"
318
  msgstr ""
319
 
320
+ #: plugin-options/filter-options.php:53
321
  msgctxt "[Admin] Filter edit form"
322
  msgid "Select which taxonomy to use for this filter"
323
  msgstr ""
324
 
325
+ #: plugin-options/filter-options.php:58
326
  msgctxt "[Admin] Filter edit form"
327
  msgid "Auto-populate with all terms"
328
  msgstr ""
329
 
330
+ #: plugin-options/filter-options.php:60
331
  msgctxt "[Admin] Filter edit form"
332
  msgid ""
333
  "Populate this filter with all existing terms of the selected taxonomy.\n"
336
  "as well.</span>"
337
  msgstr ""
338
 
339
+ #: plugin-options/filter-options.php:69
340
  msgctxt "[Admin] Filter edit form"
341
  msgid "Choose terms"
342
  msgstr ""
343
 
344
+ #: plugin-options/filter-options.php:74
345
  msgctxt "[Admin] Filter edit form"
346
  msgid "Select which terms to use for filtering"
347
  msgstr ""
348
 
349
+ #: plugin-options/filter-options.php:78
350
  msgctxt "[Admin] Filter edit form"
351
  msgid "Filter type"
352
  msgstr ""
353
 
354
+ #: plugin-options/filter-options.php:82
355
  msgctxt "[Admin] Filter edit form"
356
  msgid "Select the filter type for this filter"
357
  msgstr ""
358
 
359
+ #: plugin-options/filter-options.php:86
360
  msgctxt "[Admin] Filter edit form"
361
  msgid "Labels"
362
  msgstr ""
363
 
364
+ #: plugin-options/filter-options.php:89
365
  msgctxt "[Admin] Filter edit form"
366
  msgid "Show below"
367
  msgstr ""
368
 
369
+ #: plugin-options/filter-options.php:90
370
  msgctxt "[Admin] Filter edit form"
371
  msgid "Show on the right"
372
  msgstr ""
373
 
374
+ #: plugin-options/filter-options.php:91
375
  msgctxt "[Admin] Filter edit form"
376
  msgid "Hide"
377
  msgstr ""
378
 
379
+ #: plugin-options/filter-options.php:93
380
  msgctxt "[Admin] Filter edit form"
381
  msgid "Choose if and where to show the label inside your filter"
382
  msgstr ""
383
 
384
+ #: plugin-options/filter-options.php:97
385
  msgctxt "[Admin] Filter edit form"
386
  msgid "Columns number"
387
  msgstr ""
388
 
389
+ #: plugin-options/filter-options.php:102
390
  msgctxt "[Admin] Filter edit form"
391
  msgid "Set the number of items per row you want to show for this design"
392
  msgstr ""
393
 
394
+ #: plugin-options/filter-options.php:106
395
  msgctxt "[Admin] Filter edit form"
396
  msgid "Customize terms"
397
  msgstr ""
398
 
399
+ #: plugin-options/filter-options.php:109
400
  msgctxt "[Admin] Filter edit form"
401
  msgid ""
402
  "Configure your terms individually; system will otherwise use default "
410
  "this option and use the boxes below</span>"
411
  msgstr ""
412
 
413
+ #: plugin-options/filter-options.php:119
414
  msgctxt "[Admin] Filter edit form"
415
  msgid "Terms options"
416
  msgstr ""
417
 
418
+ #: plugin-options/filter-options.php:125
419
  msgctxt "[Admin] Filter edit form"
420
  msgid "Show hierarchy"
421
  msgstr ""
422
 
423
+ #: plugin-options/filter-options.php:128
424
  msgctxt "[Admin] Filter edit form"
425
  msgid "No, show all terms in same level"
426
  msgstr ""
427
 
428
+ #: plugin-options/filter-options.php:129
429
  msgctxt "[Admin] Filter edit form"
430
  msgid "No, show only parent terms"
431
  msgstr ""
432
 
433
+ #: plugin-options/filter-options.php:130
434
  msgctxt "[Admin] Filter edit form"
435
  msgid "Yes"
436
  msgstr ""
437
 
438
+ #: plugin-options/filter-options.php:132
439
  msgctxt "[Admin] Filter edit form"
440
  msgid "Choose how to show terms hierarchy"
441
  msgstr ""
442
 
443
+ #: plugin-options/filter-options.php:136
444
  msgctxt "[Admin] Filter edit form"
445
  msgid "Allow multiple selection"
446
  msgstr ""
447
 
448
+ #: plugin-options/filter-options.php:138
449
  msgctxt "[Admin] Filter edit form"
450
  msgid "Enable if the user can select multiple terms when filtering products"
451
  msgstr ""
452
 
453
+ #: plugin-options/filter-options.php:142
454
  msgctxt "[Admin] Filter edit form"
455
  msgid "Multiselect relation"
456
  msgstr ""
457
 
458
+ #: plugin-options/filter-options.php:148
459
  msgctxt "[Admin] Filter edit form"
460
  msgid "Choose how multiple terms selection should behave"
461
  msgstr ""
462
 
463
+ #: includes/class-yith-wcan-filter-factory.php:104
464
  msgctxt "[Admin] Filter edit form, sorting options"
465
  msgid "Default sorting"
466
  msgstr ""
467
 
468
+ #: includes/class-yith-wcan-filter-factory.php:105
469
  msgctxt "[Admin] Filter edit form, sorting options"
470
  msgid "Sort by popularity"
471
  msgstr ""
472
 
473
+ #: includes/class-yith-wcan-filter-factory.php:106
474
  msgctxt "[Admin] Filter edit form, sorting options"
475
  msgid "Sort by average rating"
476
  msgstr ""
477
 
478
+ #: includes/class-yith-wcan-filter-factory.php:107
479
  msgctxt "[Admin] Filter edit form, sorting options"
480
  msgid "Sort by latest"
481
  msgstr ""
482
 
483
+ #: includes/class-yith-wcan-filter-factory.php:108
484
  msgctxt "[Admin] Filter edit form, sorting options"
485
  msgid "Sort by price: low to high"
486
  msgstr ""
487
 
488
+ #: includes/class-yith-wcan-filter-factory.php:109
489
  msgctxt "[Admin] Filter edit form, sorting options"
490
  msgid "Sort by price: high to low"
491
  msgstr ""
492
 
493
+ #: includes/class-yith-wcan-filter.php:116
494
  msgctxt "[Admin] Default filter title"
495
  msgid "New filter"
496
  msgstr ""
497
 
498
+ #: includes/class-yith-wcan-frontend.php:591
499
+ #: includes/filters/class-yith-wcan-filter-tax.php:62
500
  msgctxt "[FRONTEND] \"All\" label shown when no term is selected"
501
  msgid "All"
502
  msgstr ""
503
 
504
+ #: includes/class-yith-wcan-frontend.php:592
505
  msgctxt "[FRONTEND] Search placeholder shown in terms dropdown"
506
  msgid "Search..."
507
  msgstr ""
508
 
509
+ #: includes/class-yith-wcan-frontend.php:593
510
  msgctxt "[FRONTEND] Empty items list in the dropdown"
511
  msgid "No item found"
512
  msgstr ""
513
 
514
+ #: includes/class-yith-wcan-frontend.php:595
515
  #. translators: 1. Number of items to show.
516
  msgctxt "[FRONTEND] Show more link on terms dropdown"
517
  msgid "Show %d more"
518
  msgstr ""
519
 
520
+ #: includes/class-yith-wcan-frontend.php:596
521
  msgctxt "[FRONTEND] Alt text for modal close button on mobile"
522
  msgid "Close"
523
  msgstr ""
524
 
525
+ #: includes/class-yith-wcan-frontend.php:597
526
  msgctxt "[FRONTEND] Label for filter button, on horizontal layout"
527
  msgid "Save"
528
  msgstr ""
529
 
530
+ #: includes/class-yith-wcan-frontend.php:598
531
  msgctxt "[FRONTEND] Label for filter button, on mobile modal"
532
  msgid "Show results"
533
  msgstr ""
534
 
535
+ #: includes/class-yith-wcan-frontend.php:599
536
  msgctxt ""
537
  "[FRONTEND] Label for clear selection link, that appears above filter after "
538
  "selection"
539
  msgid "Clear"
540
  msgstr ""
541
 
542
+ #: includes/class-yith-wcan-frontend.php:600
543
  msgctxt ""
544
  "[FRONTEND] Label for clear selection link, that appears above filter after "
545
  "selection"
546
  msgid "Clear All"
547
  msgstr ""
548
 
549
+ #: includes/class-yith-wcan-install.php:95
550
  msgctxt "[ADMIN] Name of default preset that is installed with the plugin"
551
  msgid "Default preset"
552
  msgstr ""
553
 
554
+ #: includes/class-yith-wcan-install.php:285
555
  #. translators: 1. Taxonomy name.
556
  msgctxt "[ADMIN] Name of default taxonomy filter created by plugin"
557
  msgid "Filter by %s"
558
  msgstr ""
559
 
560
+ #: includes/class-yith-wcan-preset-factory.php:112
561
  msgctxt "[Admin] Label in new preset page"
562
  msgid "Default"
563
  msgstr ""
572
  msgid "Enter a name to identify this filter preset"
573
  msgstr ""
574
 
575
+ #: templates/admin/preset-filters.php:22
576
  msgctxt "[Admin] Label in new preset page"
577
  msgid "Filters of this preset"
578
  msgstr ""
579
 
580
+ #: includes/class-yith-wcan-presets.php:95
581
+ #: includes/class-yith-wcan-presets.php:100
582
  msgctxt "[Admin] name of presets custom post type"
583
  msgid "Filter presets"
584
  msgstr ""
585
 
586
+ #: includes/class-yith-wcan-presets.php:96
587
  msgctxt "[Admin] singular name of presets custom post type"
588
  msgid "Filter preset"
589
  msgstr ""
590
 
591
+ #: includes/class-yith-wcan-presets.php:97
592
  msgctxt "[Admin] add new filter preset label"
593
  msgid "Add new preset"
594
  msgstr ""
595
 
596
+ #: includes/class-yith-wcan-presets.php:139
597
  msgctxt "[ADMIN] Convert widgets tools, in preset tab"
598
  msgid "Convert widgets in a preset"
599
  msgstr ""
600
 
601
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:108
602
  msgctxt ""
603
  "[Generic] Error that happens when trying to read a filter preset that does "
604
  "not exist"
605
  msgid "Invalid preset."
606
  msgstr ""
607
 
608
+ #: includes/data-stores/class-yith-wcan-preset-data-store.php:235
609
  #. translators: 1. Title of original preset.
610
  msgctxt "[ADMIN] Title of the cloned preset"
611
  msgid "%s - Copy"
612
  msgstr ""
613
 
614
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:48
615
  msgctxt "[ADMIN] Name of the preset elementor widget"
616
  msgid "YITH AJAX Filters Preset"
617
  msgstr ""
618
 
619
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:48
620
  msgctxt "[ADMIN] Name of the preset elementor widget"
621
  msgid "YITH AJAX Filters Reset Button"
622
  msgstr ""
623
 
624
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:89
625
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:60
626
  msgctxt "[ELEMENTOR] Default preset option"
627
  msgid "Choose an option"
628
  msgstr ""
629
 
630
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:97
631
  msgctxt "[ELEMENTOR] Section title"
632
  msgid "Filters"
633
  msgstr ""
634
 
635
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:89
636
  msgctxt "[ELEMENTOR] Section title"
637
  msgid "General"
638
  msgstr ""
639
 
640
+ #: includes/elementor/class-yith-wcan-elementor-filters.php:105
641
  msgctxt "[ELEMENTOR] Control label"
642
  msgid "Preset"
643
  msgstr ""
644
 
645
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:100
646
  msgctxt "[ELEMENTOR] Widget description"
647
  msgid "This widget will display \"Filters reset\" button, wherever it is placed"
648
  msgstr ""
649
 
650
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:103
651
  msgctxt "[ELEMENTOR] Widget description"
652
  msgid ""
653
  "It will allow users to reset the filer selection; it will only appear when "
654
  "there is an active filter."
655
  msgstr ""
656
 
657
+ #: includes/elementor/class-yith-wcan-elementor-reset-button.php:107
658
  msgctxt "[ELEMENTOR] Widget description"
659
  msgid ""
660
  "You can use this block to place \"Reset filters\" button inside your page, "
661
  "when \"Reset button position\" option won't work for your product's loop"
662
  msgstr ""
663
 
664
+ #: includes/functions-yith-wcan.php:112
665
  msgctxt "For multicolor: I.E. white and red T-Shirt"
666
  msgid "Color 1"
667
  msgstr ""
668
 
669
+ #: includes/functions-yith-wcan.php:112
670
  msgctxt "For multicolor: I.E. white and red T-Shirt"
671
  msgid "Color 2"
672
  msgstr ""
673
 
674
+ #: includes/functions-yith-wcan.php:1026
675
  msgctxt "[FRONTEND] Star rating template"
676
  msgid "star"
677
  msgid_plural "stars"
678
  msgstr[0] ""
679
  msgstr[1] ""
680
 
681
+ #: includes/functions-yith-wcan.php:1041
682
  #. translators: 1. Rating.
683
  msgctxt "[FRONTEND] Star rating label"
684
  msgid "Rated %s out of 5"
685
  msgstr ""
686
 
687
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:69
688
  msgctxt "[GUTENBERG]: block name"
689
  msgid "YITH AJAX Filters Preset"
690
  msgstr ""
691
 
692
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:49
693
  msgctxt "[GUTENBERG]: block name"
694
  msgid "YITH Reset Filters Button"
695
  msgstr ""
696
 
697
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:70
698
  msgctxt "[GUTENBERG]: block description"
699
  msgid "Show filters from a preset"
700
  msgstr ""
701
 
702
+ #: includes/shortcodes/class-yith-wcan-shortcode-reset-button.php:50
703
  msgctxt "[GUTENBERG]: block description"
704
  msgid ""
705
  "Show reset filters button, when a filter is applied and button is enabled "
708
  "for your product's loop"
709
  msgstr ""
710
 
711
+ #: includes/shortcodes/class-yith-wcan-shortcode-filters.php:75
712
  msgctxt "[GUTENBERG]: attribute description"
713
  msgid "Preset"
714
  msgstr ""
715
 
716
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:116
717
  msgctxt "[Admin] Preset table column header"
718
  msgid "Preset name"
719
  msgstr ""
720
 
721
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:117
722
  msgctxt "[Admin] Preset table column header"
723
  msgid "Shortcode"
724
  msgstr ""
725
 
726
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:135
727
  msgctxt "[Admin] Preset edit action label"
728
  msgid "Edit this preset"
729
  msgstr ""
730
 
731
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:148
732
  msgctxt "[Admin] Preset clone action label"
733
  msgid "Clone this preset"
734
  msgstr ""
735
 
736
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:161
737
  msgctxt "[Admin] Preset delete action label"
738
  msgid "Delete this preset"
739
  msgstr ""
740
 
741
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:162
742
  msgctxt "[Admin] Preset delete confirm label"
743
  msgid "Are you sure you want to delete this preset?"
744
  msgstr ""
745
 
746
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
747
  msgctxt "[Admin] on-off yes"
748
  msgid "YES"
749
  msgstr ""
750
 
751
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:175
752
  msgctxt "[Admin] on-off no"
753
  msgid "NO"
754
  msgstr ""
755
 
756
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:195
757
  msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
758
  msgid "filter preset"
759
  msgstr ""
760
 
761
+ #: templates/admin/preset-filters.php:31
762
  msgctxt "[Admin] Name of the item missing, shown in preset-empty-content template"
763
  msgid "filter"
764
  msgstr ""
765
 
766
+ #: includes/tables/class-yith-wcan-filter-presets-table.php:196
767
  msgctxt "[Admin] New preset button label"
768
  msgid "Create a new preset"
769
  msgstr ""
770
 
771
+ #: includes/widgets/class-yith-wcan-filters-widget.php:34
772
  msgctxt "[ADMIN] Name of the preset widget"
773
  msgid "YITH AJAX Filters Preset"
774
  msgstr ""
775
 
776
+ #: includes/widgets/class-yith-wcan-filters-widget.php:52
777
  msgctxt "[ADMIN] Preset widget options"
778
  msgid "Preset"
779
  msgstr ""
780
 
781
+ #: includes/widgets/class-yith-wcan-filters-widget.php:65
782
  #. translators: 1. Url to Ajax Product filter admin panel.
783
  msgctxt "[ADMIN] Preset widget options"
784
  msgid ""
786
  "Presets</a> and create your first preset"
787
  msgstr ""
788
 
789
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:53
790
  msgctxt "[Plugin Name] Admin: Widget Title"
791
  msgid "YITH AJAX Product Filter"
792
  msgstr ""
793
 
794
+ #: includes/widgets/class-yith-wcan-navigation-widget.php:466
795
  msgctxt "[ADMIN] Ajax Filter Widget; logical operator that affects query behaviour"
796
  msgid "AND"
797
  msgstr ""
798
 
799
+ #: includes/widgets/class-yith-wcan-reset-navigation-widget.php:30
800
  msgctxt "[Plugin Name]"
801
  msgid "Reset all filters set by YITH WooCommerce AJAX Product Filter"
802
  msgstr ""
803
 
804
+ #: plugin-options/filter-options.php:145
805
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
806
  msgid "AND - Results need to match all selected terms at the same time"
807
  msgstr ""
808
 
809
+ #: plugin-options/filter-options.php:146
810
  msgctxt "[Admin] Filter edit form; logical operator that affects query behaviour"
811
  msgid "OR - Results need to match at least one of the selected terms"
812
  msgstr ""
1067
  msgctxt "[ADMIN] Premium tab"
1068
  msgid ""
1069
  "<b>Filter by category</b>: to let users choose which product category to "
1070
+ "view<br/>\n"
1071
+ "<b>Filter by tag</b>: to let users filter products by tag<br/>\n"
1072
  "<b>Filter by price</b>: to let users filter products by a specific price "
1073
+ "range (based on their budget availability)<br/>\n"
1074
  "<b>Filter by color and size</b>: you can create filters for all the "
1075
  "attributes available in your store, like color and size. For the color "
1076
  "filter, you can either choose square or circular color swatches or use "
1077
+ "custom images to recall a specific pattern, shade or fabric texture<br/>\n"
1078
  "<b>Filter by rating</b>: to let your users filter products based on other "
1079
  "customers’ reviews (most e-buyers want to skip low-rated products and "
1080
+ "concentrate only on high-rated ones)<br/>\n"
1081
  "<b>Filter by brand</b>: thanks to the integration with our YITH Brands "
1082
+ "Add-on plugin, you can also filter products by specific brands<br/>\n"
1083
  "<b>Show only on-sale products</b>: thanks to this option, your users can "
1084
+ "filter products and view only those with a discount<br/>\n"
1085
  "<b>Show only in-stock products</b>: thanks to this option, your users can "
1086
  "filter products based on their needs and exclude out-of-stock products from "
1087
  "the list"
1196
  "easier to share)"
1197
  msgstr ""
1198
 
1199
+ #: templates/admin/preset-edit.php:31
1200
  msgctxt "[Admin] Back link in new preset page"
1201
  msgid "< back to preset list"
1202
  msgstr ""
1203
 
1204
+ #: templates/admin/preset-edit.php:38
1205
  msgctxt "[ADMIN] Title for new preset page"
1206
  msgid "Edit filter preset"
1207
  msgstr ""
1208
 
1209
+ #: templates/admin/preset-edit.php:40
1210
  msgctxt "[ADMIN] Title for new preset page"
1211
  msgid "Add new filter preset"
1212
  msgstr ""
1213
 
1214
+ #: templates/admin/preset-edit.php:47
1215
  msgctxt "[ADMIN] Preset save message"
1216
  msgid "Preset saved correctly"
1217
  msgstr ""
1218
 
1219
+ #: templates/admin/preset-edit.php:93
1220
  msgctxt "[Admin] Preset save button, in new/edit preset page"
1221
  msgid "Save preset"
1222
  msgstr ""
1223
 
1224
+ #: templates/admin/preset-empty-content.php:29
1225
  msgctxt "Alt text for empty preset image"
1226
  msgid "Empty preset"
1227
  msgstr ""
1228
 
1229
+ #: templates/admin/preset-empty-content.php:35
1230
  #. translators: 1. Missing item name.
1231
  msgctxt "[Admin] Preset table empty message"
1232
  msgid "You don't have any %s yet."
1233
  msgstr ""
1234
 
1235
+ #: templates/admin/preset-filter-term.php:30
1236
  msgctxt "[Admin] Term edit field label (preset edit page)"
1237
  msgid "Label"
1238
  msgstr ""
1239
 
1240
+ #: templates/admin/preset-filter-term.php:35
1241
  msgctxt "[Admin] Term edit field label (preset edit page)"
1242
  msgid "Tooltip"
1243
  msgstr ""
1244
 
1245
+ #: templates/admin/preset-filter-term.php:41
1246
  msgctxt "[Admin] Term edit field label (preset edit page)"
1247
  msgid "Color"
1248
  msgstr ""
1249
 
1250
+ #: templates/admin/preset-filter.php:91
1251
  msgctxt "[Admin] Save filter button, in new/edit preset page"
1252
  msgid "Save Filter"
1253
  msgstr ""
1254
 
1255
+ #: templates/admin/preset-filter.php:92
1256
  msgctxt "[Admin] Delete filter button, in new/edit preset page"
1257
  msgid "Delete Filter"
1258
  msgstr ""
1259
 
1260
+ #: templates/admin/preset-filters.php:33
1261
  msgctxt "[Admin] New filter button label"
1262
  msgid "Add a new filter"
1263
  msgstr ""
1264
 
1265
+ #: templates/admin/preset-filters.php:57
1266
  msgctxt "[Admin] Add new filter in new preset page"
1267
  msgid "+ Add filter"
1268
  msgstr ""
1273
  msgid "See %d more filters"
1274
  msgstr ""
1275
 
1276
+ #: templates/admin/upgrade-note-modal.php:33
1277
  msgctxt "[ADMIN] Upgrade note modal title"
1278
  msgid "Use the new filter preset feature for your filters"
1279
  msgstr ""
1280
 
1281
+ #: templates/admin/upgrade-note-modal.php:38
1282
  msgctxt "[ADMIN] Upgrade note modal content"
1283
  msgid ""
1284
  "From the version 4.0 we built a powerful system that allows you to create "
1287
  "block or the Elementor widget."
1288
  msgstr ""
1289
 
1290
+ #: templates/admin/upgrade-note-modal.php:51
1291
  #. translators: 1. Url to demo video. 2. Url to docs.
1292
  msgctxt "[ADMIN] Upgrade note modal content"
1293
  msgid ""
1296
  "feature."
1297
  msgstr ""
1298
 
1299
+ #: templates/admin/upgrade-note-modal.php:64
1300
  #. translators: 1. Url to docs.
1301
  msgctxt "[ADMIN] Upgrade note modal content"
1302
  msgid ""
1304
  "to use this new feature."
1305
  msgstr ""
1306
 
1307
+ #: templates/admin/upgrade-note-modal.php:78
1308
  msgctxt "[ADMIN] Upgrade note modal content"
1309
  msgid ""
1310
  "We offer a tool to automatically convert the widget filters of your shop in "
1313
  "will be lost during the process.</b>"
1314
  msgstr ""
1315
 
1316
+ #: templates/admin/upgrade-note-modal.php:89
1317
  msgctxt "[ADMIN] Upgrade note modal content"
1318
  msgid ""
1319
  "After converting the widgets into presets, go to <b>WordPress Dashboard -> "
1321
  "Filter Preset</b>, selecting the appropriate preset for current sidebar."
1322
  msgstr ""
1323
 
1324
+ #: templates/admin/upgrade-note-modal.php:98
1325
  msgctxt "[ADMIN] Upgrade note modal button label"
1326
  msgid "Convert your widgets in a preset now"
1327
  msgstr ""
1328
 
1329
+ #: templates/admin/upgrade-note-modal.php:99
1330
  msgctxt "[ADMIN] Upgrade note modal dismiss label"
1331
  msgid "No thanks"
1332
  msgstr ""
1333
 
1334
+ #: templates/filters/global/reset-filters.php:24
1335
  msgctxt "[FRONTEND] Reset button for preset shortcode"
1336
  msgid "Reset filters"
1337
  msgstr ""
plugin-fw/assets/css/metaboxes.css CHANGED
@@ -176,10 +176,10 @@
176
  }
177
 
178
  .metaboxes-tab span.description.inline {
179
- display : inline-block;
180
- line-height : 23px;
181
- width : auto;
182
- margin : 0;
183
  }
184
 
185
  .metaboxes-tab .slider label {
@@ -254,8 +254,8 @@
254
  }
255
 
256
  .metaboxes-tab.yith-plugin-ui input[type=number] {
257
- width : auto;
258
- min-width : 90px;
259
  }
260
 
261
  .metaboxes-tab.yith-plugin-ui p {
176
  }
177
 
178
  .metaboxes-tab span.description.inline {
179
+ display : inline-block;
180
+ line-height : 23px;
181
+ width : auto;
182
+ margin : 0;
183
  }
184
 
185
  .metaboxes-tab .slider label {
254
  }
255
 
256
  .metaboxes-tab.yith-plugin-ui input[type=number] {
257
+ width : 70px;
258
+ min-width : 70px;
259
  }
260
 
261
  .metaboxes-tab.yith-plugin-ui p {
plugin-fw/assets/css/yit-plugin-panel.css CHANGED
@@ -88,7 +88,7 @@
88
  }
89
 
90
  .yith-plugin-fw-panel-help-tab-content {
91
- background-color : #F4F4F4;
92
  border-radius : 15px;
93
  max-width : 1100px;
94
  margin : 0 auto;
@@ -96,7 +96,7 @@
96
  }
97
 
98
  .yith-plugin-fw-panel-help-tab-content p,
99
- .yith-plugin-fw-panel-help-tab-content a{
100
  font-size : 16px;
101
  }
102
 
@@ -125,8 +125,8 @@
125
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-actions,
126
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles,
127
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
128
- box-sizing : border-box;
129
- white-space : normal;
130
  }
131
 
132
  .yith-plugin-fw-panel-help-tab-content h2.yith-plugin-fw-panel-help-tab-title {
@@ -139,7 +139,7 @@
139
  }
140
 
141
  .yith-plugin-fw-panel-help-tab-content h3 {
142
- color : #03689F;
143
  font-size : 15px;
144
  }
145
 
@@ -150,7 +150,7 @@
150
  }
151
 
152
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video {
153
- text-align: center;
154
  }
155
 
156
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video p.video-description {
@@ -181,7 +181,7 @@
181
  display : block;
182
  background-color : #fff;
183
  border-radius : 5px;
184
- box-shadow : 0 0 15px 5px rgba(174,201,207,0.3);
185
  transition : all .2s ease;
186
  }
187
 
@@ -192,7 +192,7 @@
192
  }
193
 
194
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions:not( .full-width ) {
195
- padding-top : 65px!important;
196
  }
197
 
198
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li {
@@ -201,17 +201,17 @@
201
 
202
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li > a {
203
  display : block;
204
- padding : 15px 20px 15px 75px!important;
205
  text-decoration : none;
206
  }
207
 
208
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li:hover {
209
- box-shadow : 0 0 15px 5px rgba(177,220,228,0.6);
210
  transform : scale(1.04);
211
  }
212
 
213
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li a:before {
214
- color : #03689F;
215
  float : left;
216
  font-family : 'yith-icon';
217
  font-size : 36px;
@@ -238,7 +238,7 @@
238
  }
239
 
240
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 a {
241
- color : #03689F;
242
  text-decoration : none;
243
  }
244
 
@@ -262,7 +262,7 @@
262
 
263
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3:before {
264
  content : '';
265
- background : #03689F;
266
  display : block;
267
  height : 100%;
268
  left : -40px;
@@ -273,7 +273,7 @@
273
  }
274
 
275
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles a.button {
276
- font-size: 16px;
277
  }
278
 
279
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list {
@@ -286,33 +286,33 @@
286
  }
287
 
288
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li:before {
289
- content: '-';
290
  }
291
 
292
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list a {
293
  text-decoration : none;
294
  }
295
 
296
- .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket > .box-with-shadow{
297
- padding: 30px!important;
298
  }
299
 
300
- .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket h3{
301
- color : #B90A0A;
302
  font-size : 18px;
303
  margin : 0 0 15px;
304
  }
305
 
306
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket p {
307
- margin-bottom: 35px;
308
  }
309
 
310
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket .button {
311
- border-radius : 7px;
312
- display : block;
313
- font-size : 15px;
314
- padding : 7px 15px;
315
- text-align : center;
316
  }
317
 
318
  /**
@@ -842,7 +842,7 @@
842
  margin-right : 0;
843
  background-color : #f1f1f1;
844
  color : #336374;
845
- font-size : 13px;
846
  padding : 8px 20px 9px;
847
  border : 0;
848
  }
@@ -1010,7 +1010,7 @@ button#yith-plugin-fw-float-save-button {
1010
  }
1011
 
1012
  .ywtenv-is-sandbox button#yith-plugin-fw-float-save-button {
1013
- bottom: 100px;
1014
  }
1015
 
1016
  button#yith-plugin-fw-float-save-button.visible {
@@ -1033,6 +1033,17 @@ button#yith-plugin-fw-float-save-button.green {
1033
  transition : all 0.8s linear;
1034
  }
1035
 
 
 
 
 
 
 
 
 
 
 
 
1036
  /* === Responsive === */
1037
 
1038
  @media (max-width : 767px) {
@@ -1043,20 +1054,20 @@ button#yith-plugin-fw-float-save-button.green {
1043
 
1044
  }
1045
 
1046
- @media (max-width: 992px) {
1047
  .yith-plugin-fw-panel-help-tab-content .row {
1048
- white-space: normal;
1049
- margin-bottom: 0;
1050
  }
1051
 
1052
  .yith-plugin-fw-panel-help-tab-content .row .column-left,
1053
  .yith-plugin-fw-panel-help-tab-content .row .column-right {
1054
- width : 100%;
1055
- margin-bottom: 50px;
1056
  }
1057
 
1058
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions {
1059
- padding-top: 0!important;
1060
  }
1061
  }
1062
 
88
  }
89
 
90
  .yith-plugin-fw-panel-help-tab-content {
91
+ background-color : #f4f4f4;
92
  border-radius : 15px;
93
  max-width : 1100px;
94
  margin : 0 auto;
96
  }
97
 
98
  .yith-plugin-fw-panel-help-tab-content p,
99
+ .yith-plugin-fw-panel-help-tab-content a {
100
  font-size : 16px;
101
  }
102
 
125
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-actions,
126
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles,
127
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket {
128
+ box-sizing : border-box;
129
+ white-space : normal;
130
  }
131
 
132
  .yith-plugin-fw-panel-help-tab-content h2.yith-plugin-fw-panel-help-tab-title {
139
  }
140
 
141
  .yith-plugin-fw-panel-help-tab-content h3 {
142
+ color : #03689f;
143
  font-size : 15px;
144
  }
145
 
150
  }
151
 
152
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video {
153
+ text-align : center;
154
  }
155
 
156
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-help-tab-video p.video-description {
181
  display : block;
182
  background-color : #fff;
183
  border-radius : 5px;
184
+ box-shadow : 0 0 15px 5px rgba(174, 201, 207, 0.3);
185
  transition : all .2s ease;
186
  }
187
 
192
  }
193
 
194
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions:not( .full-width ) {
195
+ padding-top : 65px !important;
196
  }
197
 
198
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li {
201
 
202
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li > a {
203
  display : block;
204
+ padding : 15px 20px 15px 75px !important;
205
  text-decoration : none;
206
  }
207
 
208
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li:hover {
209
+ box-shadow : 0 0 15px 5px rgba(177, 220, 228, 0.6);
210
  transform : scale(1.04);
211
  }
212
 
213
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li a:before {
214
+ color : #03689f;
215
  float : left;
216
  font-family : 'yith-icon';
217
  font-size : 36px;
238
  }
239
 
240
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions li h4 a {
241
+ color : #03689f;
242
  text-decoration : none;
243
  }
244
 
262
 
263
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles h3:before {
264
  content : '';
265
+ background : #03689f;
266
  display : block;
267
  height : 100%;
268
  left : -40px;
273
  }
274
 
275
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles a.button {
276
+ font-size : 16px;
277
  }
278
 
279
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list {
286
  }
287
 
288
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list li:before {
289
+ content : '-';
290
  }
291
 
292
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-hc-articles-list a {
293
  text-decoration : none;
294
  }
295
 
296
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket > .box-with-shadow {
297
+ padding : 30px !important;
298
  }
299
 
300
+ .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket h3 {
301
+ color : #b90a0a;
302
  font-size : 18px;
303
  margin : 0 0 15px;
304
  }
305
 
306
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket p {
307
+ margin-bottom : 35px;
308
  }
309
 
310
  .yith-plugin-fw-panel-help-tab-content .yith-plugin-fw-submit-ticket .button {
311
+ border-radius : 7px;
312
+ display : block;
313
+ font-size : 15px;
314
+ padding : 7px 15px;
315
+ text-align : center;
316
  }
317
 
318
  /**
842
  margin-right : 0;
843
  background-color : #f1f1f1;
844
  color : #336374;
845
+ font-size : 12px;
846
  padding : 8px 20px 9px;
847
  border : 0;
848
  }
1010
  }
1011
 
1012
  .ywtenv-is-sandbox button#yith-plugin-fw-float-save-button {
1013
+ bottom : 100px;
1014
  }
1015
 
1016
  button#yith-plugin-fw-float-save-button.visible {
1033
  transition : all 0.8s linear;
1034
  }
1035
 
1036
+ .rtl button#yith-plugin-fw-float-save-button {
1037
+ right : auto;
1038
+ left : 70px;
1039
+ }
1040
+
1041
+ .rtl button#yith-plugin-fw-float-save-button i {
1042
+ margin-left : 8px;
1043
+ margin-right : 0;
1044
+ }
1045
+
1046
+
1047
  /* === Responsive === */
1048
 
1049
  @media (max-width : 767px) {
1054
 
1055
  }
1056
 
1057
+ @media (max-width : 992px) {
1058
  .yith-plugin-fw-panel-help-tab-content .row {
1059
+ white-space : normal;
1060
+ margin-bottom : 0;
1061
  }
1062
 
1063
  .yith-plugin-fw-panel-help-tab-content .row .column-left,
1064
  .yith-plugin-fw-panel-help-tab-content .row .column-right {
1065
+ width : 100%;
1066
+ margin-bottom : 50px;
1067
  }
1068
 
1069
  .yith-plugin-fw-panel-help-tab-content ul.yith-plugin-fw-help-tab-actions {
1070
+ padding-top : 0 !important;
1071
  }
1072
  }
1073
 
plugin-fw/assets/css/yith-fields.css CHANGED
@@ -71,6 +71,12 @@
71
  line-height : 1;
72
  }
73
 
 
 
 
 
 
 
74
  .woocommerce .yith-plugin-fw table.form-table input[type=text].wp-color-picker,
75
  .woocommerce .yith-plugin-fw table.form-table input[type=text].yith-plugin-fw-colorpicker,
76
  .yith-plugin-fw input[type=text].wp-color-picker,
@@ -535,8 +541,8 @@ YITH UI
535
  .yith-plugin-ui .nav-tab {
536
  background-color : #336374;
537
  color : #fff;
538
- font-size : 15px;
539
- padding : 7px 20px;
540
  border : 0;
541
  margin : 0 4px 0 0;
542
  transition : background-color 0.3s linear;
@@ -730,6 +736,27 @@ YITH UI
730
  color : #716269;
731
  }
732
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
733
  .yith-plugin-ui textarea:not(.wp-editor-area),
734
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area) {
735
  height : auto;
@@ -1962,11 +1989,11 @@ div#ui-datepicker-div.yith-plugin-fw-datepicker-div {
1962
  }
1963
 
1964
  .yith-plugin-ui .yith-plugin-fw-image-dimensions label {
1965
- display : block;
1966
- font-size : 11px;
1967
- font-weight : 600;
1968
- text-transform : uppercase;
1969
- margin : 0 0 10px 0;
1970
  }
1971
 
1972
  /**
71
  line-height : 1;
72
  }
73
 
74
+ .yith-plugin-fw input[type=number],
75
+ .woocommerce .yith-plugin-fw table.form-table input[type=number] {
76
+ width : 70px;
77
+ min-width : 70px;
78
+ }
79
+
80
  .woocommerce .yith-plugin-fw table.form-table input[type=text].wp-color-picker,
81
  .woocommerce .yith-plugin-fw table.form-table input[type=text].yith-plugin-fw-colorpicker,
82
  .yith-plugin-fw input[type=text].wp-color-picker,
541
  .yith-plugin-ui .nav-tab {
542
  background-color : #336374;
543
  color : #fff;
544
+ font-size : 13px;
545
+ padding : 7px 15px;
546
  border : 0;
547
  margin : 0 4px 0 0;
548
  transition : background-color 0.3s linear;
736
  color : #716269;
737
  }
738
 
739
+
740
+ .yith-plugin-ui input::-webkit-input-placeholder {
741
+ color : #999999;
742
+ }
743
+
744
+ .yith-plugin-ui input:-ms-input-placeholder {
745
+ color : #999999;
746
+ }
747
+
748
+ .yith-plugin-ui input::-ms-input-placeholder {
749
+ color : #999999;
750
+ }
751
+
752
+ .yith-plugin-ui input::placeholder {
753
+ color : #999999;
754
+ }
755
+
756
+ .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table input[type=number] {
757
+ min-width : 70px;
758
+ }
759
+
760
  .yith-plugin-ui textarea:not(.wp-editor-area),
761
  .woocommerce.yith-plugin-fw-panel .yith-plugin-ui table.form-table textarea:not(.wp-editor-area) {
762
  height : auto;
1989
  }
1990
 
1991
  .yith-plugin-ui .yith-plugin-fw-image-dimensions label {
1992
+ display : block;
1993
+ font-size : 11px;
1994
+ font-weight : 600;
1995
+ text-transform : uppercase;
1996
+ margin : 0 0 10px 0;
1997
  }
1998
 
1999
  /**
plugin-fw/assets/css/yith-plugin-ui.css CHANGED
@@ -29,6 +29,12 @@
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
 
 
 
 
 
 
32
  --yith-accent: #98aa36;
33
  --yith-light-bg: #f0f6fb;
34
  --yith-light-border-color: #d7e3e7;
@@ -322,13 +328,25 @@
322
  .yith-plugin-ui #doaction,
323
  .yith-plugin-ui #doaction2,
324
  .yith-plugin-ui #post-query-submit,
 
325
  .yith-plugin-ui #search-submit,
326
  .yith-plugin-ui .button.filter-button, .wp-core-ui .yith-plugin-ui .button.action,
327
  .wp-core-ui .yith-plugin-ui #doaction,
328
  .wp-core-ui .yith-plugin-ui #doaction2,
329
  .wp-core-ui .yith-plugin-ui #post-query-submit,
 
330
  .wp-core-ui .yith-plugin-ui #search-submit,
331
  .wp-core-ui .yith-plugin-ui .button.filter-button {
 
 
 
 
 
 
 
 
 
 
332
  background: var(--yith-outline-bg);
333
  border: 1px solid var(--yith-outline-border);
334
  color: var(--yith-outline-text);
@@ -343,11 +361,30 @@
343
  .yith-plugin-ui #doaction:focus,
344
  .yith-plugin-ui #doaction2:focus,
345
  .yith-plugin-ui #post-query-submit:focus,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  .yith-plugin-ui #search-submit:focus,
347
  .yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
348
  .wp-core-ui .yith-plugin-ui #doaction:focus,
349
  .wp-core-ui .yith-plugin-ui #doaction2:focus,
350
  .wp-core-ui .yith-plugin-ui #post-query-submit:focus,
 
351
  .wp-core-ui .yith-plugin-ui #search-submit:focus,
352
  .wp-core-ui .yith-plugin-ui .button.filter-button:focus {
353
  background: var(--yith-outline-bg);
@@ -363,6 +400,8 @@
363
  .yith-plugin-ui #doaction2:active,
364
  .yith-plugin-ui #post-query-submit:hover,
365
  .yith-plugin-ui #post-query-submit:active,
 
 
366
  .yith-plugin-ui #search-submit:hover,
367
  .yith-plugin-ui #search-submit:active,
368
  .yith-plugin-ui .button.filter-button:hover,
@@ -373,6 +412,8 @@
373
  .wp-core-ui .yith-plugin-ui #doaction2:active,
374
  .wp-core-ui .yith-plugin-ui #post-query-submit:hover,
375
  .wp-core-ui .yith-plugin-ui #post-query-submit:active,
 
 
376
  .wp-core-ui .yith-plugin-ui #search-submit:hover,
377
  .wp-core-ui .yith-plugin-ui #search-submit:active,
378
  .wp-core-ui .yith-plugin-ui .button.filter-button:hover,
@@ -382,6 +423,25 @@
382
  color: var(--yith-outline-text);
383
  }
384
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  .yith-plugin-ui .tablenav .tablenav-pages .button,
386
  .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan, .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .button,
387
  .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan {
@@ -1240,7 +1300,6 @@ table.yith-plugin-fw__boxed-table tbody tr {
1240
 
1241
  table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
1242
  background: transparent;
1243
- border-radius: 5px;
1244
  vertical-align: middle;
1245
  padding: 25px 0 25px 25px;
1246
  }
@@ -1249,6 +1308,17 @@ table.yith-plugin-fw__boxed-table tbody tr td:last-child {
1249
  padding-right: 25px;
1250
  }
1251
 
 
 
 
 
 
 
 
 
 
 
 
1252
  table.yith-plugin-fw__boxed-table tbody tr:hover {
1253
  background: var(--yith-table-row-highlight);
1254
  }
@@ -1454,7 +1524,6 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1454
 
1455
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
1456
  background: transparent;
1457
- border-radius: 5px;
1458
  vertical-align: middle;
1459
  padding: 25px 0 25px 25px;
1460
  }
@@ -1463,6 +1532,19 @@ table.yith-plugin-fw__boxed-table.wp-list-table tbody tr:hover .yith-plugin-fw__
1463
  padding-right: 25px;
1464
  }
1465
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1466
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
1467
  background: var(--yith-table-row-highlight);
1468
  }
29
  --yith-outline-bg-hover: rgba(157, 198, 205, 0.2);
30
  --yith-outline-border-hover: #007ba3;
31
  --yith-outline-focus: #dfeef2;
32
+ --yith-delete-outline-text: #c41d04;
33
+ --yith-delete-outline-border: #c41d04;
34
+ --yith-delete-outline-bg: rgba(205, 157, 157, 0);
35
+ --yith-delete-outline-bg-hover: rgba(232, 184, 184, 0.15);
36
+ --yith-delete-outline-border-hover: #db2b11;
37
+ --yith-delete-outline-focus: #ffe9e7;
38
  --yith-accent: #98aa36;
39
  --yith-light-bg: #f0f6fb;
40
  --yith-light-border-color: #d7e3e7;
328
  .yith-plugin-ui #doaction,
329
  .yith-plugin-ui #doaction2,
330
  .yith-plugin-ui #post-query-submit,
331
+ .yith-plugin-ui #posts-filter #delete_all,
332
  .yith-plugin-ui #search-submit,
333
  .yith-plugin-ui .button.filter-button, .wp-core-ui .yith-plugin-ui .button.action,
334
  .wp-core-ui .yith-plugin-ui #doaction,
335
  .wp-core-ui .yith-plugin-ui #doaction2,
336
  .wp-core-ui .yith-plugin-ui #post-query-submit,
337
+ .wp-core-ui .yith-plugin-ui #posts-filter #delete_all,
338
  .wp-core-ui .yith-plugin-ui #search-submit,
339
  .wp-core-ui .yith-plugin-ui .button.filter-button {
340
+ display: inline-block;
341
+ height: auto;
342
+ line-height: 30px;
343
+ border-radius: 4px;
344
+ padding: 0 17px;
345
+ font-weight: 600;
346
+ cursor: pointer;
347
+ transition: all .3s ease-in-out;
348
+ text-decoration: none;
349
+ white-space: nowrap;
350
  background: var(--yith-outline-bg);
351
  border: 1px solid var(--yith-outline-border);
352
  color: var(--yith-outline-text);
361
  .yith-plugin-ui #doaction:focus,
362
  .yith-plugin-ui #doaction2:focus,
363
  .yith-plugin-ui #post-query-submit:focus,
364
+ .yith-plugin-ui #posts-filter #delete_all:focus,
365
+ .yith-plugin-ui #search-submit:focus,
366
+ .yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
367
+ .wp-core-ui .yith-plugin-ui #doaction:focus,
368
+ .wp-core-ui .yith-plugin-ui #doaction2:focus,
369
+ .wp-core-ui .yith-plugin-ui #post-query-submit:focus,
370
+ .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus,
371
+ .wp-core-ui .yith-plugin-ui #search-submit:focus,
372
+ .wp-core-ui .yith-plugin-ui .button.filter-button:focus {
373
+ outline: none;
374
+ box-shadow: none;
375
+ }
376
+
377
+ .yith-plugin-ui .button.action:focus,
378
+ .yith-plugin-ui #doaction:focus,
379
+ .yith-plugin-ui #doaction2:focus,
380
+ .yith-plugin-ui #post-query-submit:focus,
381
+ .yith-plugin-ui #posts-filter #delete_all:focus,
382
  .yith-plugin-ui #search-submit:focus,
383
  .yith-plugin-ui .button.filter-button:focus, .wp-core-ui .yith-plugin-ui .button.action:focus,
384
  .wp-core-ui .yith-plugin-ui #doaction:focus,
385
  .wp-core-ui .yith-plugin-ui #doaction2:focus,
386
  .wp-core-ui .yith-plugin-ui #post-query-submit:focus,
387
+ .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus,
388
  .wp-core-ui .yith-plugin-ui #search-submit:focus,
389
  .wp-core-ui .yith-plugin-ui .button.filter-button:focus {
390
  background: var(--yith-outline-bg);
400
  .yith-plugin-ui #doaction2:active,
401
  .yith-plugin-ui #post-query-submit:hover,
402
  .yith-plugin-ui #post-query-submit:active,
403
+ .yith-plugin-ui #posts-filter #delete_all:hover,
404
+ .yith-plugin-ui #posts-filter #delete_all:active,
405
  .yith-plugin-ui #search-submit:hover,
406
  .yith-plugin-ui #search-submit:active,
407
  .yith-plugin-ui .button.filter-button:hover,
412
  .wp-core-ui .yith-plugin-ui #doaction2:active,
413
  .wp-core-ui .yith-plugin-ui #post-query-submit:hover,
414
  .wp-core-ui .yith-plugin-ui #post-query-submit:active,
415
+ .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:hover,
416
+ .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:active,
417
  .wp-core-ui .yith-plugin-ui #search-submit:hover,
418
  .wp-core-ui .yith-plugin-ui #search-submit:active,
419
  .wp-core-ui .yith-plugin-ui .button.filter-button:hover,
423
  color: var(--yith-outline-text);
424
  }
425
 
426
+ .yith-plugin-ui #posts-filter #delete_all, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all {
427
+ background: var(--yith-delete-outline-bg);
428
+ border: 1px solid var(--yith-delete-outline-border);
429
+ color: var(--yith-delete-outline-text);
430
+ }
431
+
432
+ .yith-plugin-ui #posts-filter #delete_all:focus, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:focus {
433
+ background: var(--yith-delete-outline-bg);
434
+ border: 1px solid var(--yith-delete-outline-border);
435
+ color: var(--yith-delete-outline-text);
436
+ box-shadow: 0 0 0 3px var(--yith-delete-outline-focus);
437
+ }
438
+
439
+ .yith-plugin-ui #posts-filter #delete_all:hover, .yith-plugin-ui #posts-filter #delete_all:active, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:hover, .wp-core-ui .yith-plugin-ui #posts-filter #delete_all:active {
440
+ background: var(--yith-delete-outline-bg-hover);
441
+ border-color: var(--yith-delete-outline-border-hover);
442
+ color: var(--yith-delete-outline-text);
443
+ }
444
+
445
  .yith-plugin-ui .tablenav .tablenav-pages .button,
446
  .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan, .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .button,
447
  .wp-core-ui .yith-plugin-ui .tablenav .tablenav-pages .tablenav-pages-navspan {
1300
 
1301
  table.yith-plugin-fw__boxed-table tbody tr th, table.yith-plugin-fw__boxed-table tbody tr td {
1302
  background: transparent;
 
1303
  vertical-align: middle;
1304
  padding: 25px 0 25px 25px;
1305
  }
1308
  padding-right: 25px;
1309
  }
1310
 
1311
+ table.yith-plugin-fw__boxed-table tbody tr th:first-child,
1312
+ table.yith-plugin-fw__boxed-table tbody tr td:first-child {
1313
+ border-radius: 5px 0 0 5px;
1314
+ }
1315
+
1316
+ table.yith-plugin-fw__boxed-table tbody tr th:last-child,
1317
+ table.yith-plugin-fw__boxed-table tbody tr td:last-child {
1318
+ padding-right: 25px;
1319
+ border-radius: 0 5px 5px 0;
1320
+ }
1321
+
1322
  table.yith-plugin-fw__boxed-table tbody tr:hover {
1323
  background: var(--yith-table-row-highlight);
1324
  }
1524
 
1525
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td {
1526
  background: transparent;
 
1527
  vertical-align: middle;
1528
  padding: 25px 0 25px 25px;
1529
  }
1532
  padding-right: 25px;
1533
  }
1534
 
1535
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
1536
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:first-child,
1537
+ .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:first-child {
1538
+ border-radius: 5px 0 0 5px;
1539
+ }
1540
+
1541
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
1542
+ .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr th:last-child,
1543
+ .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr td:last-child {
1544
+ padding-right: 25px;
1545
+ border-radius: 0 5px 5px 0;
1546
+ }
1547
+
1548
  .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover, .yith-plugin-ui #plugin-fw-wc .yith-plugin-ui--boxed-wp-list-style table.wp-list-table tbody tr:hover {
1549
  background: var(--yith-table-row-highlight);
1550
  }
plugin-fw/assets/js/wp-pages.js CHANGED
@@ -42,12 +42,14 @@ jQuery( function ( $ ) {
42
  case 'trash':
43
  confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title;
44
  confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message;
 
45
  confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button;
46
  confirmOptions.confirmButtonType = 'delete';
47
  break;
48
  case 'delete':
49
  confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title;
50
  confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message;
 
51
  confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button;
52
  confirmOptions.confirmButtonType = 'delete';
53
  break;
42
  case 'trash':
43
  confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title;
44
  confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message;
45
+ confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button;
46
  confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button;
47
  confirmOptions.confirmButtonType = 'delete';
48
  break;
49
  case 'delete':
50
  confirmOptions.title = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title;
51
  confirmOptions.message = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message;
52
+ confirmOptions.cancelButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button;
53
  confirmOptions.confirmButton = yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button;
54
  confirmOptions.confirmButtonType = 'delete';
55
  break;
plugin-fw/assets/js/wp-pages.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){var i=e(".yith-plugin-fw-wp-page-wrapper"),t=e("div.updated, div.error, div.notice").not("#message"),n=e("div#message.updated");if(e(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),t.addClass("inline"),i.length&&i.prepend(t),n.length&&(n.addClass("yith-plugin-fw-animate__appear-from-top").show(),n.on("click",".notice-dismiss",function(e){e.stopPropagation(),n.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)})),yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled){var a=!1;e(document).on("click","#doaction, #doaction2",function(i){var t=e(this),n=t.siblings("#bulk-action-selector-top, #bulk-action-selector-bottom");if("yith"in window&&"ui"in yith)if(a)a=!1;else{var o={};if(e("#the-list .check-column input[type=checkbox]:checked").length){switch(n.val()){case"trash":o.title=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title,o.message=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message,o.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button,o.confirmButtonType="delete";break;case"delete":o.title=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title,o.message=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message,o.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button,o.confirmButtonType="delete"}e.isEmptyObject(o)||(i.preventDefault(),o.closeAfterConfirm=!1,o.onConfirm=function(){a=!0,t.trigger("click")},yith.ui.confirm(o))}}})}});
1
+ jQuery(function(e){var t=e(".yith-plugin-fw-wp-page-wrapper"),i=e("div.updated, div.error, div.notice").not("#message"),n=e("div#message.updated");if(e(".yith-plugin-fw-wp-page-wrapper .woo-nav-tab-wrapper").removeClass("woo-nav-tab-wrapper").addClass("yith-nav-tab-wrapper"),i.addClass("inline"),t.length&&t.prepend(i),n.length&&(n.addClass("yith-plugin-fw-animate__appear-from-top").show(),n.on("click",".notice-dismiss",function(e){e.stopPropagation(),n.removeClass("yith-plugin-fw-animate__appear-from-top").slideUp(200)})),yith_plugin_fw_wp_pages.bulk_delete_confirmation_enabled){var a=!1;e(document).on("click","#doaction, #doaction2",function(t){var i=e(this),n=i.siblings("#bulk-action-selector-top, #bulk-action-selector-bottom");if("yith"in window&&"ui"in yith)if(a)a=!1;else{var _={};if(e("#the-list .check-column input[type=checkbox]:checked").length){switch(n.val()){case"trash":_.title=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_trash_confirm_button,_.confirmButtonType="delete";break;case"delete":_.title=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_title,_.message=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_message,_.cancelButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_cancel_button,_.confirmButton=yith_plugin_fw_wp_pages.i18n.bulk_delete_confirm_button,_.confirmButtonType="delete"}e.isEmptyObject(_)||(t.preventDefault(),_.closeAfterConfirm=!1,_.onConfirm=function(){a=!0,i.trigger("click")},yith.ui.confirm(_))}}})}});
plugin-fw/assets/js/yith-enhanced-select.js CHANGED
@@ -130,69 +130,6 @@ jQuery( function ( $ ) {
130
  }
131
  } );
132
 
133
- // Customer Search
134
- $( '.yith-page-search' ).filter( ':not(.enhanced)' ).each( function () {
135
- var default_data = {
136
- action : $( this ).data( 'action' ),
137
- security : yith_framework_enhanced_select_params.search_pages_nonce
138
- },
139
- current_data = $.extend( default_data, $( this ).data() ),
140
- select2_args = {
141
- allowClear : $( this ).data( 'allow_clear' ) ? true : false,
142
- placeholder : $( this ).data( 'placeholder' ),
143
- minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3',
144
- escapeMarkup : function ( m ) {
145
- return m;
146
- },
147
- ajax : {
148
- url : ajaxurl,
149
- dataType : 'json',
150
- quietMillis : 250,
151
- data : function ( params ) {
152
- var default_data_to_return = {
153
- term: params.term
154
- };
155
-
156
- return $.extend( default_data_to_return, current_data );
157
- },
158
- processResults: function ( data ) {
159
- var terms = [];
160
- if ( data ) {
161
- $.each( data, function ( id, text ) {
162
- text = $.trim( text.replace( /\(.*\)/, '' ) ); // Remove page ID.
163
- terms.push( { id: id, text: text } );
164
- } );
165
- }
166
- return {
167
- results: terms
168
- };
169
- },
170
- cache : true
171
- }
172
- };
173
-
174
- $( this ).select2( select2_args ).addClass( 'enhanced' );
175
-
176
- if ( $( this ).data( 'sortable' ) ) {
177
- var $select = $( this );
178
- var $list = $( this ).next( '.select2-container' ).find( 'ul.select2-selection__rendered' );
179
-
180
- $list.sortable( {
181
- placeholder : 'ui-state-highlight select2-selection__choice',
182
- forcePlaceholderSize: true,
183
- items : 'li:not(.select2-search__field)',
184
- tolerance : 'pointer',
185
- stop : function () {
186
- $( $list.find( '.select2-selection__choice' ).get().reverse() ).each( function () {
187
- var id = $( this ).data( 'data' ).id;
188
- var option = $select.find( 'option[value="' + id + '"]' )[ 0 ];
189
- $select.prepend( option );
190
- } );
191
- }
192
- } );
193
- }
194
- } );
195
-
196
  // TERM SEARCH
197
  $( '.yith-term-search' ).filter( ':not(.enhanced)' ).each( function () {
198
  var default_data = {
130
  }
131
  } );
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  // TERM SEARCH
134
  $( '.yith-term-search' ).filter( ':not(.enhanced)' ).each( function () {
135
  var default_data = {
plugin-fw/assets/js/yith-enhanced-select.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){"use strict";e(document.body).on("yith-framework-enhanced-select-init",function(){e(".yith-post-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_posts",security:yith_framework_enhanced_select_params.search_posts_nonce,post_type:"post"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),c=e(this).next(".select2-container").find("ul.select2-selection__rendered");c.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(c.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-customer-search").filter(":not(.enhanced)").each(function(){var t={action:"woocommerce_json_search_customers",security:yith_framework_enhanced_select_params.search_customers_nonce},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),c=e(this).next(".select2-container").find("ul.select2-selection__rendered");c.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(c.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-page-search").filter(":not(.enhanced)").each(function(){var t={action:e(this).data("action"),security:yith_framework_enhanced_select_params.search_pages_nonce},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(t,n){n=e.trim(n.replace(/\(.*\)/,"")),a.push({id:t,text:n})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),c=e(this).next(".select2-container").find("ul.select2-selection__rendered");c.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(c.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-term-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_terms",security:yith_framework_enhanced_select_params.search_terms_nonce,taxonomy:"category"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),c=e(this).next(".select2-container").find("ul.select2-selection__rendered");c.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(c.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}})}).trigger("yith-framework-enhanced-select-init")});
1
+ jQuery(function(e){"use strict";e(document.body).on("yith-framework-enhanced-select-init",function(){e(".yith-post-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_posts",security:yith_framework_enhanced_select_params.search_posts_nonce,post_type:"post"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-customer-search").filter(":not(.enhanced)").each(function(){var t={action:"woocommerce_json_search_customers",security:yith_framework_enhanced_select_params.search_customers_nonce},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}}),e(".yith-term-search").filter(":not(.enhanced)").each(function(){var t={action:"yith_plugin_fw_json_search_terms",security:yith_framework_enhanced_select_params.search_terms_nonce,taxonomy:"category"},a=e.extend(t,e(this).data()),n={allowClear:!!e(this).data("allow_clear"),placeholder:e(this).data("placeholder"),minimumInputLength:e(this).data("minimum_input_length")?e(this).data("minimum_input_length"):"3",escapeMarkup:function(e){return e},ajax:{url:ajaxurl,dataType:"json",quietMillis:250,data:function(t){var n={term:t.term};return e.extend(n,a)},processResults:function(t){var a=[];return t&&e.each(t,function(e,t){a.push({id:e,text:t})}),{results:a}},cache:!0}};if(e(this).select2(n).addClass("enhanced"),e(this).data("sortable")){var i=e(this),s=e(this).next(".select2-container").find("ul.select2-selection__rendered");s.sortable({placeholder:"ui-state-highlight select2-selection__choice",forcePlaceholderSize:!0,items:"li:not(.select2-search__field)",tolerance:"pointer",stop:function(){e(s.find(".select2-selection__choice").get().reverse()).each(function(){var t=e(this).data("data").id,a=i.find('option[value="'+t+'"]')[0];i.prepend(a)})}})}})}).trigger("yith-framework-enhanced-select-init")});
plugin-fw/assets/js/yith-fields.js CHANGED
@@ -1,28 +1,254 @@
1
  /* globals yith_framework_fw_fields, wp */
2
  ( function ( $ ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  var yith_fields_init = function () {
4
- var $datepicker = $( '.yith-plugin-fw-datepicker' ),
5
- $colorpicker = $( '.yith-plugin-fw-colorpicker' ),
6
- $upload = {
7
- imgPreviewHandler : '.yith-plugin-fw-upload-img-preview',
8
- uploadButtonHandler: '.yith-plugin-fw-upload-button',
9
- imgUrlHandler : '.yith-plugin-fw-upload-img-url',
10
- resetButtonHandler : '.yith-plugin-fw-upload-button-reset',
11
- imgUrl : $( '.yith-plugin-fw-upload-img-url' )
12
- },
13
- $wpAddMedia = $( '.add_media' ),
14
- $imageGallery = {
15
- rootSelector : '.yith-plugin-fw-image-gallery',
16
- buttonSelector: '.yith-plugin-fw-image-gallery .image-gallery-button',
17
- sliderWrapper : $( '.yith-plugin-fw-image-gallery ul.slides-wrapper' )
18
- },
19
- $sidebars = $( '.yith-plugin-fw-sidebar-layout' ),
20
- $slider = $( '.yith-plugin-fw-slider-container .ui-slider-horizontal' ),
21
- $icons = $( '.yit-icons-manager-wrapper' ),
22
- $checkgroup = $( ".yith-plugin-ui td.forminp-checkbox" );
23
 
24
  /* Datepicker */
25
  $datepicker.each( function () {
 
 
26
  var currentDatePicker = $( this ),
27
  args = currentDatePicker.data(),
28
  icon = currentDatePicker.next( '.yith-icon-calendar' );
@@ -45,19 +271,22 @@
45
  } );
46
 
47
  /* Colorpicker */
48
- $colorpicker.wpColorPicker( {
49
- palettes: false,
50
- width : 200,
51
- mode : 'hsl',
52
- clear : function () {
53
- var input = $( this );
54
- input.val( input.data( 'default-color' ) );
55
- input.change();
56
- }
57
- } );
58
-
59
-
60
  $colorpicker.each( function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  var select_label = $( this ).data( 'variations-label' ),
62
  wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
63
  wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
@@ -69,206 +298,22 @@
69
 
70
  if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
71
  var button = $( '<span/>' ).attr( {
72
- class: "wp-picker-default-custom"
73
  } );
74
  wrap1.find( '.wp-picker-default' ).wrap( button );
75
  }
76
 
77
  if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
78
  var button = $( '<span/>' ).attr( {
79
- class: "wp-picker-default-custom"
80
  } );
81
  wrap2.find( '.wp-picker-default' ).wrap( button );
82
  }
83
  } );
84
 
85
-
86
- /* Upload */
87
- if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
88
- var _custom_media = true;
89
- // preview
90
- $upload.imgUrl.change( function () {
91
- var url = $( this ).val(),
92
- re = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
93
- preview = $( this ).parent().find( $upload.imgPreviewHandler ).first();
94
-
95
- if ( preview.length < 1 ) {
96
- preview = $( this ).parent().parent().find( $upload.imgPreviewHandler ).first();
97
- }
98
-
99
- if ( re.test( url ) ) {
100
- preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
101
- } else {
102
- preview.html( '' );
103
- }
104
- } ).trigger( 'change' );
105
-
106
- $( document ).on( 'click', $upload.uploadButtonHandler, function ( e ) {
107
- e.preventDefault();
108
-
109
- var t = $( this ),
110
- custom_uploader,
111
- id = t.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
112
-
113
- //If the uploader object has already been created, reopen the dialog
114
- if ( custom_uploader ) {
115
- custom_uploader.open();
116
- return;
117
- }
118
-
119
- var custom_uploader_states = [
120
- // Main states.
121
- new wp.media.controller.Library( {
122
- library : wp.media.query(),
123
- multiple : false,
124
- title : 'Choose Image',
125
- priority : 20,
126
- filterable: 'uploaded'
127
- } )
128
- ];
129
-
130
- // Create the media frame.
131
- custom_uploader = wp.media.frames.downloadable_file = wp.media( {
132
- // Set the title of the modal.
133
- title : 'Choose Image',
134
- library : {
135
- type: ''
136
- },
137
- button : {
138
- text: 'Choose Image'
139
- },
140
- multiple: false,
141
- states : custom_uploader_states
142
- } );
143
-
144
- //When a file is selected, grab the URL and set it as the text field's value
145
- custom_uploader.on( 'select', function () {
146
- var attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
147
-
148
- $( "#" + id ).val( attachment.url );
149
- // Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
150
- if ( $( "#" + id + "-yith-attachment-id" ) ) {
151
- $( "#" + id + "-yith-attachment-id" ).val( attachment.id );
152
- }
153
- $upload.imgUrl.trigger( 'change' );
154
- } );
155
-
156
- //Open the uploader dialog
157
- custom_uploader.open();
158
- } );
159
-
160
- $( document ).on( 'click', $upload.resetButtonHandler, function ( e ) {
161
- var t = $( this ),
162
- id = t.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
163
- input_id = t.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
164
- default_value = $( '#' + id ).data( 'default' );
165
-
166
- $( "#" + input_id ).val( default_value );
167
- $upload.imgUrl.trigger( 'change' );
168
- } );
169
- }
170
-
171
- $wpAddMedia.on( 'click', function () {
172
- _custom_media = false;
173
- } );
174
-
175
- /* Image Gallery */
176
- if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
177
- $( document ).on( 'click', $imageGallery.buttonSelector, function ( e ) {
178
- var $t = $( this ),
179
- $container = $t.closest( $imageGallery.rootSelector ),
180
- $image_gallery_ids = $container.find( '.image_gallery_ids' ),
181
- attachment_ids = $image_gallery_ids.val(),
182
- $gallery_images_wrapper = $container.find( 'ul.slides-wrapper' );
183
-
184
- // Create the media frame.
185
- var image_gallery_frame = wp.media.frames.image_gallery = wp.media( {
186
- // Set the title of the modal.
187
- title : $t.data( 'choose' ),
188
- button: {
189
- text: $t.data( 'update' )
190
- },
191
- states: [
192
- new wp.media.controller.Library( {
193
- title : $t.data( 'choose' ),
194
- filterable: 'all',
195
- multiple : true
196
- } )
197
- ]
198
- } );
199
-
200
- // When an image is selected, run a callback.
201
- image_gallery_frame.on( 'select', function () {
202
- var selection = image_gallery_frame.state().get( 'selection' );
203
- selection.map( function ( attachment ) {
204
- attachment = attachment.toJSON();
205
-
206
- if ( attachment.id ) {
207
- attachment_ids = attachment_ids ? attachment_ids + "," + attachment.id : attachment.id;
208
- $gallery_images_wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + $t.data( 'delete' ) + '">x</a></li></ul></li>' );
209
- }
210
- } );
211
-
212
- $image_gallery_ids.val( attachment_ids );
213
- $image_gallery_ids.trigger( 'change' );
214
- } );
215
-
216
- image_gallery_frame.open();
217
-
218
- } );
219
-
220
- // Image ordering
221
- $imageGallery.sliderWrapper.each( function () {
222
- var $t = $( this );
223
- $t.sortable( {
224
- items : 'li.image',
225
- cursor : 'move',
226
- scrollSensitivity : 40,
227
- forcePlaceholderSize: true,
228
- forceHelperSize : false,
229
- helper : 'clone',
230
- opacity : 0.65,
231
- start : function ( event, ui ) {
232
- ui.item.css( 'background-color', '#f6f6f6' );
233
- },
234
- stop : function ( event, ui ) {
235
- ui.item.removeAttr( 'style' );
236
- },
237
- update : function ( event, ui ) {
238
- var attachment_ids = '';
239
-
240
- $t.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
241
- var attachment_id = $( this ).attr( 'data-attachment_id' );
242
- attachment_ids = attachment_ids + attachment_id + ',';
243
- } );
244
-
245
- $t.closest( $imageGallery.rootSelector ).find( '.image_gallery_ids' ).val( attachment_ids );
246
- }
247
- } );
248
- } );
249
-
250
- // Remove images
251
- $imageGallery.sliderWrapper.on( 'click', 'a.delete', function ( e ) {
252
- e.preventDefault();
253
- var $wrapper = $( this ).closest( $imageGallery.rootSelector ),
254
- $gallery = $wrapper.find( 'ul.slides-wrapper' ),
255
- $image_gallery_ids = $wrapper.find( '.image_gallery_ids' ),
256
- attachment_ids = '';
257
-
258
- $( this ).closest( 'li.image' ).remove();
259
-
260
- $gallery.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
261
- var attachment_id = $( this ).attr( 'data-attachment_id' );
262
- attachment_ids = attachment_ids + attachment_id + ',';
263
- } );
264
-
265
- $image_gallery_ids.val( attachment_ids );
266
- } );
267
- }
268
-
269
-
270
  /* Sidebars */
271
  $sidebars.each( function () {
 
272
  var $images = $( this ).find( 'img' );
273
  $images.on( 'click', function () {
274
  var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
@@ -304,13 +349,15 @@
304
 
305
  /* Slider */
306
  $slider.each( function () {
307
- var val = $( this ).data( 'val' ),
308
- minValue = $( this ).data( 'min' ),
309
- maxValue = $( this ).data( 'max' ),
310
- step = $( this ).data( 'step' ),
311
- labels = $( this ).data( 'labels' );
312
-
313
- $( this ).slider( {
 
 
314
  value: val,
315
  min : minValue,
316
  max : maxValue,
@@ -330,35 +377,8 @@
330
  } );
331
  } );
332
 
333
- // Codemirror.
334
- $( function () {
335
- var codemirrorInit = function () {
336
- if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
337
- $( '.codemirror:not(.codemirror--initialized)' ).each( function () {
338
- var settings = $( this ).data( 'settings' ),
339
- editor = wp.codeEditor.initialize( $( this ), settings );
340
-
341
- $( this ).addClass( 'codemirror--initialized' );
342
- $( this ).data( 'codemirrorInstance', editor );
343
- } );
344
- }
345
- };
346
- $( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
347
- } );
348
-
349
- /* Select All - Deselect All */
350
- $( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
351
- var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
352
- $targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
353
- } );
354
-
355
- $( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
356
- var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
357
- $targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
358
- } );
359
-
360
-
361
  $icons.each( function () {
 
362
  var $container = $( this ),
363
  $preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
364
  $text = $container.find( '.yit-icons-manager-icon-text' );
@@ -386,23 +406,6 @@
386
  } );
387
  } );
388
 
389
- /** Select Images */
390
- $( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
391
- var item = $( this ),
392
- key = item.data( 'key' ),
393
- wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
394
- items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
395
- select = wrapper.find( 'select' ).first();
396
-
397
- if ( select.length ) {
398
- select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
399
- items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
400
- item.addClass( 'yith-plugin-fw-select-images__item--selected' );
401
- }
402
- } );
403
-
404
- $( document.body ).trigger( 'wc-enhanced-select-init' );
405
-
406
  $( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
407
  {
408
  cursor : 'move',
@@ -426,11 +429,41 @@
426
  }
427
  );
428
 
 
429
  $( document.body ).trigger( 'yith-framework-enhanced-select-init' );
 
 
 
430
  };
431
 
432
  $( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
433
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  /* on-off */
435
  $( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
436
  var input = $( this ).prev( 'input' ),
@@ -450,7 +483,6 @@
450
  } else {
451
  $( this ).attr( 'value', 'no' ).removeClass( 'onoffchecked' );
452
  }
453
- $( this ).trigger( 'change' );
454
  } );
455
 
456
 
@@ -732,7 +764,7 @@
732
 
733
  $( document.body ).on( 'yith-plugin-fw-init-radio', function () {
734
  $( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
735
- $( this ).val( $( this ).data( 'value' ) );
736
  $( this ).addClass( 'yith-plugin-fw-radio--initialized' );
737
  } );
738
  } ).trigger( 'yith-plugin-fw-init-radio' );
1
  /* globals yith_framework_fw_fields, wp */
2
  ( function ( $ ) {
3
+
4
+ /* Upload */
5
+ var uploadHandler = {
6
+ selectors : {
7
+ imgPreview : '.yith-plugin-fw-upload-img-preview',
8
+ uploadButton: '.yith-plugin-fw-upload-button',
9
+ imgUrl : '.yith-plugin-fw-upload-img-url',
10
+ resetButton : '.yith-plugin-fw-upload-button-reset'
11
+ },
12
+ onImageChange : function () {
13
+ var url = $( this ).val(),
14
+ imageRegex = new RegExp( "(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)" ),
15
+ preview = $( this ).parent().find( uploadHandler.selectors.imgPreview ).first();
16
+
17
+ if ( preview.length < 1 ) {
18
+ preview = $( this ).parent().parent().find( uploadHandler.selectors.imgPreview ).first();
19
+ }
20
+
21
+ if ( imageRegex.test( url ) ) {
22
+ preview.html( '<img src="' + url + '" style="max-width:100px; max-height:100px;" />' );
23
+ } else {
24
+ preview.html( '' );
25
+ }
26
+ },
27
+ onButtonClick : function ( e ) {
28
+ e.preventDefault();
29
+
30
+ var button = $( this ),
31
+ custom_uploader,
32
+ id = button.attr( 'id' ).replace( /-button$/, '' ).replace( /(\[|\])/g, '\\$1' );
33
+
34
+ // If the uploader object has already been created, reopen the dialog
35
+ if ( custom_uploader ) {
36
+ custom_uploader.open();
37
+ return;
38
+ }
39
+
40
+ var custom_uploader_states = [
41
+ new wp.media.controller.Library(
42
+ {
43
+ library : wp.media.query(),
44
+ multiple : false,
45
+ title : 'Choose Image',
46
+ priority : 20,
47
+ filterable: 'uploaded'
48
+ }
49
+ )
50
+ ];
51
+
52
+ // Create the media frame.
53
+ custom_uploader = wp.media.frames.downloadable_file = wp.media(
54
+ {
55
+ // Set the title of the modal.
56
+ title : 'Choose Image',
57
+ library : {
58
+ type: ''
59
+ },
60
+ button : {
61
+ text: 'Choose Image'
62
+ },
63
+ multiple: false,
64
+ states : custom_uploader_states
65
+ }
66
+ );
67
+
68
+ // When a file is selected, grab the URL and set it as the text field's value
69
+ custom_uploader.on( 'select', function () {
70
+ var attachment = custom_uploader.state().get( 'selection' ).first().toJSON(),
71
+ attachmentField = $( "#" + id + "-yith-attachment-id" );
72
+
73
+ $( "#" + id ).val( attachment.url );
74
+ // Save the id of the selected element to an element which name is the same with a suffix "-yith-attachment-id"
75
+ if ( attachmentField.length ) {
76
+ attachmentField.val( attachment.id );
77
+ }
78
+ uploadHandler.triggerImageChange();
79
+ } );
80
+
81
+ custom_uploader.open();
82
+ },
83
+ onResetClick : function () {
84
+ var button = $( this ),
85
+ id = button.attr( 'id' ).replace( /(\[|\])/g, '\\$1' ),
86
+ input_id = button.attr( 'id' ).replace( /-button-reset$/, '' ).replace( /(\[|\])/g, '\\$1' ),
87
+ default_value = $( '#' + id ).data( 'default' );
88
+
89
+ $( "#" + input_id ).val( default_value );
90
+ uploadHandler.triggerImageChange();
91
+ },
92
+ triggerImageChange: function () {
93
+ $( uploadHandler.selectors.imgUrl ).trigger( 'change' );
94
+ },
95
+ initOnce : function () {
96
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
97
+ $( document ).on( 'change', uploadHandler.selectors.imgUrl, uploadHandler.onImageChange );
98
+
99
+ $( document ).on( 'click', uploadHandler.selectors.uploadButton, uploadHandler.onButtonClick );
100
+
101
+ $( document ).on( 'click', uploadHandler.selectors.resetButton, uploadHandler.onResetClick );
102
+ }
103
+ }
104
+ };
105
+
106
+ uploadHandler.initOnce();
107
+
108
+ var imageGallery = {
109
+ selectors: {
110
+ gallery : '.yith-plugin-fw-image-gallery',
111
+ notInitGallery: '.yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)',
112
+ button : '.yith-plugin-fw-image-gallery .image-gallery-button',
113
+ slideWrapper : 'ul.slides-wrapper'
114
+ },
115
+ initOnce : function () {
116
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
117
+ $( document ).on( 'click', imageGallery.selectors.button, function ( e ) {
118
+ var button = $( this ),
119
+ gallery = button.closest( imageGallery.selectors.gallery ),
120
+ imageGalleryIDsField = gallery.find( '.image_gallery_ids' ),
121
+ attachmentIDs = imageGalleryIDsField.val(),
122
+ wrapper = gallery.find( 'ul.slides-wrapper' );
123
+
124
+ // Create the media frame.
125
+ var imageGalleryFrame = wp.media.frames.image_gallery = wp.media(
126
+ {
127
+ // Set the title of the modal.
128
+ title : button.data( 'choose' ),
129
+ button: {
130
+ text: button.data( 'update' )
131
+ },
132
+ states: [
133
+ new wp.media.controller.Library(
134
+ {
135
+ title : button.data( 'choose' ),
136
+ filterable: 'all',
137
+ multiple : true
138
+ }
139
+ )
140
+ ]
141
+ }
142
+ );
143
+
144
+ // When an image is selected, run a callback.
145
+ imageGalleryFrame.on( 'select', function () {
146
+ var selection = imageGalleryFrame.state().get( 'selection' );
147
+ selection.map( function ( attachment ) {
148
+ attachment = attachment.toJSON();
149
+
150
+ if ( attachment.id ) {
151
+ attachmentIDs = attachmentIDs ? attachmentIDs + "," + attachment.id : attachment.id;
152
+ wrapper.append( '<li class="image" data-attachment_id="' + attachment.id + '"><img src="' + attachment.sizes.thumbnail.url + '"/><ul class="actions"><li><a href="#" class="delete" title="' + button.data( 'delete' ) + '">x</a></li></ul></li>' );
153
+ }
154
+ } );
155
+
156
+ imageGalleryIDsField.val( attachmentIDs );
157
+ imageGalleryIDsField.trigger( 'change' );
158
+ } );
159
+
160
+ imageGalleryFrame.open();
161
+
162
+ } );
163
+ }
164
+ },
165
+ init : function () {
166
+ if ( typeof wp !== 'undefined' && typeof wp.media !== 'undefined' ) {
167
+ $( imageGallery.selectors.notInitGallery ).each( function () {
168
+ $( this ).addClass( 'yith-plugin-fw-image-gallery--initialized' );
169
+ var slideWrappers = $( this ).find( imageGallery.selectors.slideWrapper );
170
+
171
+ // Image ordering
172
+ slideWrappers.each( function () {
173
+ var currentSlideWrapper = $( this );
174
+ currentSlideWrapper.sortable( {
175
+ items : 'li.image',
176
+ cursor : 'move',
177
+ scrollSensitivity : 40,
178
+ forcePlaceholderSize: true,
179
+ forceHelperSize : false,
180
+ helper : 'clone',
181
+ opacity : 0.65,
182
+ start : function ( event, ui ) {
183
+ ui.item.css( 'background-color', '#f6f6f6' );
184
+ },
185
+ stop : function ( event, ui ) {
186
+ ui.item.removeAttr( 'style' );
187
+ },
188
+ update : function ( event, ui ) {
189
+ var attachment_ids = '';
190
+
191
+ currentSlideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
192
+ var attachment_id = $( this ).attr( 'data-attachment_id' );
193
+ attachment_ids = attachment_ids + attachment_id + ',';
194
+ } );
195
+
196
+ currentSlideWrapper.closest( imageGallery.selectors.gallery ).find( '.image_gallery_ids' ).val( attachment_ids );
197
+ }
198
+ } );
199
+ } );
200
+
201
+ // Remove images
202
+ slideWrappers.on( 'click', 'a.delete', function ( e ) {
203
+ e.preventDefault();
204
+ var _wrapper = $( this ).closest( imageGallery.selectors.gallery ),
205
+ _slideWrapper = _wrapper.find( 'ul.slides-wrapper' ),
206
+ _imageGalleryIDsField = _wrapper.find( '.image_gallery_ids' ),
207
+ _attachmentIDs = '';
208
+
209
+ $( this ).closest( 'li.image' ).remove();
210
+
211
+ _slideWrapper.find( 'li.image' ).css( 'cursor', 'default' ).each( function () {
212
+ var attachment_id = $( this ).attr( 'data-attachment_id' );
213
+ _attachmentIDs = _attachmentIDs + attachment_id + ',';
214
+ } );
215
+
216
+ _imageGalleryIDsField.val( _attachmentIDs );
217
+ } );
218
+ } )
219
+ }
220
+ }
221
+ };
222
+ imageGallery.initOnce();
223
+
224
+
225
+ // Codemirror.
226
+ $( function () {
227
+ var codemirrorInit = function () {
228
+ if ( typeof wp !== 'undefined' && typeof wp.codeEditor !== 'undefined' ) {
229
+ $( '.codemirror:not(.codemirror--initialized)' ).each( function () {
230
+ var settings = $( this ).data( 'settings' ),
231
+ editor = wp.codeEditor.initialize( $( this ), settings );
232
+
233
+ $( this ).addClass( 'codemirror--initialized' );
234
+ $( this ).data( 'codemirrorInstance', editor );
235
+ } );
236
+ }
237
+ };
238
+ $( document ).on( 'yith-plugin-fw-codemirror-init', codemirrorInit ).trigger( 'yith-plugin-fw-codemirror-init' );
239
+ } );
240
+
241
  var yith_fields_init = function () {
242
+ var $datepicker = $( '.yith-plugin-fw-datepicker:not(.yith-plugin-fw-datepicker--initialized)' ),
243
+ $colorpicker = $( '.yith-plugin-fw-colorpicker:not(.yith-plugin-fw-colorpicker--initialized)' ),
244
+ $sidebars = $( '.yith-plugin-fw-sidebar-layout:not(.yith-plugin-fw-sidebar-layout--initialized)' ),
245
+ $slider = $( '.yith-plugin-fw-slider-container:not(.yith-plugin-fw-slider-container--initialized)' ),
246
+ $icons = $( '.yit-icons-manager-wrapper:not(.yit-icons-manager-wrapper--initialized)' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
 
248
  /* Datepicker */
249
  $datepicker.each( function () {
250
+ $( this ).addClass( 'yith-plugin-fw-datepicker--initialized' );
251
+
252
  var currentDatePicker = $( this ),
253
  args = currentDatePicker.data(),
254
  icon = currentDatePicker.next( '.yith-icon-calendar' );
271
  } );
272
 
273
  /* Colorpicker */
 
 
 
 
 
 
 
 
 
 
 
 
274
  $colorpicker.each( function () {
275
+ $( this ).addClass( 'yith-plugin-fw-colorpicker--initialized' );
276
+
277
+ $( this ).wpColorPicker(
278
+ {
279
+ palettes: false,
280
+ width : 200,
281
+ mode : 'hsl',
282
+ clear : function () {
283
+ var input = $( this );
284
+ input.val( input.data( 'default-color' ) );
285
+ input.trigger( 'change' );
286
+ }
287
+ }
288
+ );
289
+
290
  var select_label = $( this ).data( 'variations-label' ),
291
  wrap_main1 = $( this ).closest( '.yith-plugin-fw-colorpicker-field-wrapper' ),
292
  wrap_main2 = $( this ).closest( '.yith-single-colorpicker' ),
298
 
299
  if ( !wrap1.find( '.wp-picker-default-custom' ).length ) {
300
  var button = $( '<span/>' ).attr( {
301
+ class: 'wp-picker-default-custom'
302
  } );
303
  wrap1.find( '.wp-picker-default' ).wrap( button );
304
  }
305
 
306
  if ( !wrap2.find( '.wp-picker-default-custom' ).length ) {
307
  var button = $( '<span/>' ).attr( {
308
+ class: 'wp-picker-default-custom'
309
  } );
310
  wrap2.find( '.wp-picker-default' ).wrap( button );
311
  }
312
  } );
313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  /* Sidebars */
315
  $sidebars.each( function () {
316
+ $( this ).addClass( 'yith-plugin-fw-sidebar-layout--initialized' );
317
  var $images = $( this ).find( 'img' );
318
  $images.on( 'click', function () {
319
  var $container = $( this ).closest( '.yith-plugin-fw-sidebar-layout' ),
349
 
350
  /* Slider */
351
  $slider.each( function () {
352
+ $( this ).addClass( 'yith-plugin-fw-slider-container--initialized' );
353
+ var theSlider = $( this ).find( '.ui-slider-horizontal' ),
354
+ val = theSlider.data( 'val' ),
355
+ minValue = theSlider.data( 'min' ),
356
+ maxValue = theSlider.data( 'max' ),
357
+ step = theSlider.data( 'step' ),
358
+ labels = theSlider.data( 'labels' );
359
+
360
+ theSlider.slider( {
361
  value: val,
362
  min : minValue,
363
  max : maxValue,
377
  } );
378
  } );
379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  $icons.each( function () {
381
+ $( this ).addClass( 'yit-icons-manager-wrapper--initialized' );
382
  var $container = $( this ),
383
  $preview = $container.find( '.yit-icons-manager-icon-preview' ).first(),
384
  $text = $container.find( '.yit-icons-manager-icon-text' );
406
  } );
407
  } );
408
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  $( document ).find( '.ui-sortable .yith-toggle-elements' ).sortable(
410
  {
411
  cursor : 'move',
429
  }
430
  );
431
 
432
+ $( document.body ).trigger( 'wc-enhanced-select-init' );
433
  $( document.body ).trigger( 'yith-framework-enhanced-select-init' );
434
+ $( document ).trigger( 'yith-plugin-fw-codemirror-init' );
435
+ uploadHandler.triggerImageChange();
436
+ imageGallery.init();
437
  };
438
 
439
  $( document ).on( 'yith_fields_init', yith_fields_init ).trigger( 'yith_fields_init' );
440
 
441
+ /** Select Images */
442
+ $( document ).on( 'click', '.yith-plugin-fw-select-images__item', function () {
443
+ var item = $( this ),
444
+ key = item.data( 'key' ),
445
+ wrapper = item.closest( '.yith-plugin-fw-select-images__wrapper' ),
446
+ items = wrapper.find( '.yith-plugin-fw-select-images__item' ),
447
+ select = wrapper.find( 'select' ).first();
448
+
449
+ if ( select.length ) {
450
+ select.val( key ).trigger( 'yith_select_images_value_changed' ).trigger( 'change' );
451
+ items.removeClass( 'yith-plugin-fw-select-images__item--selected' );
452
+ item.addClass( 'yith-plugin-fw-select-images__item--selected' );
453
+ }
454
+ } );
455
+
456
+ /* Select All - Deselect All */
457
+ $( document ).on( 'click', '.yith-plugin-fw-select-all', function () {
458
+ var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
459
+ $targetSelect.find( 'option' ).prop( 'selected', true ).trigger( 'change' );
460
+ } );
461
+
462
+ $( document ).on( 'click', '.yith-plugin-fw-deselect-all', function () {
463
+ var $targetSelect = $( '#' + $( this ).data( 'select-id' ) );
464
+ $targetSelect.find( 'option' ).prop( 'selected', false ).trigger( 'change' );
465
+ } );
466
+
467
  /* on-off */
468
  $( document ).on( 'click', '.yith-plugin-fw-onoff-container span', function () {
469
  var input = $( this ).prev( 'input' ),
483
  } else {
484
  $( this ).attr( 'value', 'no' ).removeClass( 'onoffchecked' );
485
  }
 
486
  } );
487
 
488
 
764
 
765
  $( document.body ).on( 'yith-plugin-fw-init-radio', function () {
766
  $( '.yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)' ).each( function () {
767
+ $( this ).find( 'input[type="radio"]' ).filter( '[value="' + $( this ).data( 'value' ) + '"]' ).click();
768
  $( this ).addClass( 'yith-plugin-fw-radio--initialized' );
769
  } );
770
  } ).trigger( 'yith-plugin-fw-init-radio' );
plugin-fw/assets/js/yith-fields.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){e(document).on("yith_fields_init",function(){var t=e(".yith-plugin-fw-datepicker"),i=e(".yith-plugin-fw-colorpicker"),n={imgPreviewHandler:".yith-plugin-fw-upload-img-preview",uploadButtonHandler:".yith-plugin-fw-upload-button",imgUrlHandler:".yith-plugin-fw-upload-img-url",resetButtonHandler:".yith-plugin-fw-upload-button-reset",imgUrl:e(".yith-plugin-fw-upload-img-url")},a=e(".add_media"),l={rootSelector:".yith-plugin-fw-image-gallery",buttonSelector:".yith-plugin-fw-image-gallery .image-gallery-button",sliderWrapper:e(".yith-plugin-fw-image-gallery ul.slides-wrapper")},o=e(".yith-plugin-fw-sidebar-layout"),s=e(".yith-plugin-fw-slider-container .ui-slider-horizontal"),r=e(".yit-icons-manager-wrapper");e(".yith-plugin-ui td.forminp-checkbox");t.each(function(){var t=e(this),i=t.data(),n=t.next(".yith-icon-calendar");i.showAnim=!1,i.beforeShow=function(e,t){t.dpDiv.addClass("yith-plugin-fw-datepicker-div")},i.onClose=function(e,t){t.dpDiv.removeClass("yith-plugin-fw-datepicker-div")},t.datepicker(i),n&&n.on("click",function(){t.datepicker("show")})}),i.wpColorPicker({palettes:!1,width:200,mode:"hsl",clear:function(){var t=e(this);t.val(t.data("default-color")),t.change()}}),i.each(function(){var t=e(this).data("variations-label"),i=e(this).closest(".yith-plugin-fw-colorpicker-field-wrapper"),n=e(this).closest(".yith-single-colorpicker"),a=i.find(".wp-picker-input-wrap"),l=n.find(".wp-picker-input-wrap");if(a.length&&i.find("a.wp-color-result").attr("title",t),n.length&&n.find("a.wp-color-result").attr("title",t),!a.find(".wp-picker-default-custom").length){var o=e("<span/>").attr({"class":"wp-picker-default-custom"});a.find(".wp-picker-default").wrap(o)}l.find(".wp-picker-default-custom").length||(o=e("<span/>").attr({"class":"wp-picker-default-custom"}),l.find(".wp-picker-default").wrap(o))}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(n.imgUrl.change(function(){var t=e(this).val(),i=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(n.imgPreviewHandler).first();a.length<1&&(a=e(this).parent().parent().find(n.imgPreviewHandler).first()),i.test(t)?a.html('<img src="'+t+'" style="max-width:100px; max-height:100px;" />'):a.html("")}).trigger("change"),e(document).on("click",n.uploadButtonHandler,function(t){t.preventDefault();var i,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(i)i.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(i=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var t=i.state().get("selection").first().toJSON();e("#"+a).val(t.url),e("#"+a+"-yith-attachment-id")&&e("#"+a+"-yith-attachment-id").val(t.id),n.imgUrl.trigger("change")}),i.open()}}),e(document).on("click",n.resetButtonHandler,function(t){var i=e(this),a=i.attr("id").replace(/(\[|\])/g,"\\$1"),l=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),o=e("#"+a).data("default");e("#"+l).val(o),n.imgUrl.trigger("change")}));a.on("click",function(){}),"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("click",l.buttonSelector,function(t){var i=e(this),n=i.closest(l.rootSelector),a=n.find(".image_gallery_ids"),o=a.val(),s=n.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:i.data("choose"),button:{text:i.data("update")},states:[new wp.media.controller.Library({title:i.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+i.data("delete")+'">x</a></li></ul></li>'))}),a.val(o),a.trigger("change")}),r.open()}),l.sliderWrapper.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(i,n){var a="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");a=a+t+","}),t.closest(l.rootSelector).find(".image_gallery_ids").val(a)}})}),l.sliderWrapper.on("click","a.delete",function(t){t.preventDefault();var i=e(this).closest(l.rootSelector),n=i.find("ul.slides-wrapper"),a=i.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),n.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");o=o+t+","}),a.val(o)})),o.each(function(){e(this).find("img").on("click",function(){var t=e(this).closest(".yith-plugin-fw-sidebar-layout"),i=t.find(".yith-plugin-fw-sidebar-layout-sidebar-left-container"),n=t.find(".yith-plugin-fw-sidebar-layout-sidebar-right-container"),a=e(this).data("type");if(e(this).parent().children(":radio").attr("checked",!1),e(this).prev(":radio").attr("checked",!0),void 0!==a)switch(a){case"left":i.show(),n.hide();break;case"right":n.show(),i.hide();break;case"double":i.show(),n.show();break;default:i.hide(),n.hide()}})}),s.each(function(){var t=e(this).data("val"),i=e(this).data("min"),n=e(this).data("max"),a=e(this).data("step"),l=e(this).data("labels");e(this).slider({value:t,min:i,max:n,range:"min",step:a,create:function(){e(this).find(".ui-slider-handle").text(e(this).slider("value"))},slide:function(t,i){e(this).find("input").val(i.value).trigger("change"),e(this).find(".ui-slider-handle").text(i.value),e(this).siblings(".feedback").find("strong").text(i.value+l)}})}),e(function(){e(document).on("yith-plugin-fw-codemirror-init",function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.codeEditor&&e(".codemirror:not(.codemirror--initialized)").each(function(){var t=e(this).data("settings"),i=wp.codeEditor.initialize(e(this),t);e(this).addClass("codemirror--initialized"),e(this).data("codemirrorInstance",i)})}).trigger("yith-plugin-fw-codemirror-init")}),e(document).on("click",".yith-plugin-fw-select-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!0).trigger("change")}),e(document).on("click",".yith-plugin-fw-deselect-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!1).trigger("change")}),r.each(function(){var t=e(this),i=t.find(".yit-icons-manager-icon-preview").first(),n=t.find(".yit-icons-manager-icon-text");t.on("click",".yit-icons-manager-list li",function(a){var l=e(a.target).closest("li"),o=l.data("font"),s=l.data("icon"),r=l.data("key"),c=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",c),n.val(o+":"+c),t.find(".yit-icons-manager-list li").removeClass("active"),l.addClass("active")}),t.on("click",".yit-icons-manager-action-set-default",function(){t.find(".yit-icons-manager-list li.default").trigger("click")})}),e(document).on("click",".yith-plugin-fw-select-images__item",function(){var t=e(this),i=t.data("key"),n=t.closest(".yith-plugin-fw-select-images__wrapper"),a=n.find(".yith-plugin-fw-select-images__item"),l=n.find("select").first();l.length&&(l.val(i).trigger("yith_select_images_value_changed").trigger("change"),a.removeClass("yith-plugin-fw-select-images__item--selected"),t.addClass("yith-plugin-fw-select-images__item--selected"))}),e(document.body).trigger("wc-enhanced-select-init"),e(document).find(".ui-sortable .yith-toggle-elements").sortable({cursor:"move",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop:function(t,i){var n=jQuery(".ui-sortable-handle"),a=0,l=new Array;for(a=0;a<n.length;a++)l[a]=e(n[a]).data("item_key");l.length>0&&e(this).closest(".toggle-element").saveToggleElement(null,l)}}),e(document.body).trigger("yith-framework-enhanced-select-init")}).trigger("yith_fields_init"),e(document).on("click",".yith-plugin-fw-onoff-container span",function(){var t=e(this).prev("input");t.prop("disabled")||t.trigger("click")}),e(document).on("click",".yith-plugin-fw-onoff-container input",function(t){e(this).is(":checked")?e(this).attr("value","yes").addClass("onoffchecked"):e(this).attr("value","no").removeClass("onoffchecked"),e(this).trigger("change")}),e.fn.saveToggleElement=function(t,i){var n=e(this),a="yith_plugin_fw_save_toggle_element",l=n.serializeToggleElement(),o=n.find(".yith-toggle_wrapper"),s=o.attr("id"),r=e.urlParam("tab");l.append("security",o.data("nonce")),void 0!==i&&i.length>0&&l.append("yith_toggle_elements_order_keys",i),n.closest(".metaboxes-tab.yith-plugin-ui").length?(a="yith_plugin_fw_save_toggle_element_metabox",post_id=e(this).closest("form#post").find("#post_ID").val(),yit_metaboxes_nonce=e(this).closest("form#post").find("#yit_metaboxes_nonce").val(),metabox_tab=e(this).closest(".tabs-panel").attr("id"),url=yith_framework_fw_fields.ajax_url+"?action="+a+"&post_ID="+post_id+"&yit_metaboxes_nonce="+yit_metaboxes_nonce+"&toggle_id="+s+"&metabox_tab="+metabox_tab):url=yith_framework_fw_fields.admin_url+"?action="+a+"&tab="+r+"&toggle_id="+s,e.ajax({type:"POST",url:url,data:l,contentType:!1,processData:!1,success:function(i){t&&t.removeClass("show"),e(document).trigger("yith_save_toggle_element_done",[i,n])}})},e.fn.serializeToggleElement=function(){var t=e(this),i=new FormData,n=e(t).find(":input").serializeArray();return e.each(n,function(e,t){el_name=t.name,i.append(t.name,t.value)}),i},e.fn.formatToggleTitle=function(){var t=e(this),i=t.find(":input"),n=t.find("span.title").data("title_format"),a=t.find(".subtitle").data("subtitle_format"),l=new RegExp("[^%%]+(?=[%%])","g");if(void 0!==n)var o=n.match(l);if(void 0!==a)var s=a.match(l);e.each(i,function(t,i){void 0!==e(i).attr("id")&&($field_id=e(i).attr("id"),$field_array=$field_id.split("_"),$field_array.pop(),$field_id=$field_array.join("_"),$field_val=e(i).val(),null!=o&&void 0!==o&&-1!==o.indexOf($field_id)&&(n=n.replace("%%"+$field_id+"%%",$field_val)),null!=s&&void 0!==s&&-1!==s.indexOf($field_id)&&(a=a.replace("%%"+$field_id+"%%",$field_val)))}),""!==n&&t.find("span.title").html(n),""!==a&&t.find(".subtitle").html(a),e(document).trigger("yith-toggle-element-item-title",[t])},e.urlParam=function(e){var t=new RegExp("[?&]"+e+"=([^&#]*)").exec(window.location.search);return null!==t&&(t[1]||0)},e(document).on("click",".yith-toggle-title",function(t){var i=e(t.target),n=i.closest(".yith-toggle-row"),a=n.find(".yith-toggle-content");if(i.hasClass("yith-plugin-fw-onoff")||i.hasClass("yith-icon-drag"))return!1;n.is(".yith-toggle-row-opened")?a.slideUp(400):a.slideDown(400),n.toggleClass("yith-toggle-row-opened")}),e(document).on("click",".yith-add-box-button",function(t){t.preventDefault();var i=e(this),n=i.data("box_id"),a=i.data("closed_label"),l=i.data("opened_label"),o=i.closest(".yith-toggle_wrapper").attr("id"),s=wp.template("yith-toggle-element-add-box-content-"+o);""!==n&&(e("#"+n).html(s({index:"box_id"})).slideToggle(),""!==a&&(i.html()===a?i.html(l).removeClass("closed"):i.html(a).addClass("closed")),e(document).trigger("yith_fields_init"),e(document).trigger("yith-add-box-button-toggle",[i]))}),e(document).on("click",".yith-add-box-buttons .yith-save-button",function(t){t.preventDefault();var i=e(this).parents(".yith-add-box"),n=e(this).closest(".yith-toggle_wrapper").attr("id"),a=i.find(".spinner"),l=e(this).parents(".toggle-element"),o=i.find(":input"),s=0,r=e('<input type="hidden">');l.find(".yith-toggle-row").each(function(){var t=parseInt(e(this).data("item_key"));s<=t&&(s=t+1)}),r.val(s),e(document).trigger("yith-toggle-change-counter",[r,i]),s=r.val();var c=wp.template("yith-toggle-element-item-"+n),d=e(c({index:s}));a.addClass("show"),e.each(o,function(t,i){if(void 0!==e(i).attr("id")){var n=e(i).attr("id"),a=e(i).val();n="radio"===e(i).attr("type")?(n=(n=e(i).closest(".yith-plugin-fw-radio").attr("id")).replace("new_","")+"_"+s)+"-"+a:n.replace("new_","")+"_"+s,e(i).is(":checked")&&e(d).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(d).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(d).find("#"+n).val(a)}}),e(d).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,d,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(d),e(i).find(".yith-plugin-fw-datepicker").datepicker("destroy"),e(i).html(""),e(i).prev(".yith-add-box-button").trigger("click"),l.saveToggleElement();setTimeout(function(){e(l).find(".highlight").removeClass("highlight")},2e3),e(document).trigger("yith_fields_init")}},1e3)}),e(document).on("click",".yith-toggle-row .yith-save-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element"),n=e(this).closest(".yith-toggle-row"),a=n.find(".spinner");n.formatToggleTitle();var l=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-update",[i,n,l]),"yes"===l.val()&&(a.addClass("show"),i.saveToggleElement(a))}),e(document).on("click",".yith-toggle-row .yith-delete-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element");e(this).closest(".yith-toggle-row").remove(),i.saveToggleElement()}),e(document).on("click",".yith-toggle-onoff",function(t){t.preventDefault(),e(this).closest(".toggle-element").saveToggleElement()}),e(document).on("click",".yith-plugin-fw-radio input[type=radio]",function(){var t=e(this).closest(".yith-plugin-fw-radio"),i=e(this).val();t.val(i).data("value",i).trigger("change")}),e(document.body).on("yith-plugin-fw-init-radio",function(){e(".yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)").each(function(){e(this).val(e(this).data("value")),e(this).addClass("yith-plugin-fw-radio--initialized")})}).trigger("yith-plugin-fw-init-radio"),e(document).on("click",".yith-password-eye",function(){var t=e(this),i=e(this).closest(".yith-password-wrapper").find("input");"password"===i.attr("type")?(i.attr("type","text"),t.addClass("yith-password-eye-closed")):(i.attr("type","password"),t.removeClass("yith-password-eye-closed"))}),e(document).on("select2:open",function(t){e(t.target).closest(".yith-plugin-ui").length&&e(".select2-results").closest(".select2-container").addClass("yith-plugin-fw-select2-container")});var t={selectors:{wrapper:".yith-plugin-fw-dimensions",units:{wrapper:".yith-plugin-fw-dimensions__units",single:".yith-plugin-fw-dimensions__unit",value:".yith-plugin-fw-dimensions__unit__value",selectedClass:"yith-plugin-fw-dimensions__unit--selected"},linked:{button:".yith-plugin-fw-dimensions__linked",value:".yith-plugin-fw-dimensions__linked__value",wrapperActiveClass:"yith-plugin-fw-dimensions--linked-active"},dimensions:{number:".yith-plugin-fw-dimensions__dimension__number"}},init:function(){var i=t;e(document).on("click",i.selectors.units.single,i.unitChange),e(document).on("click",i.selectors.linked.button,i.linkedChange),e(document).on("change keyup",i.selectors.dimensions.number,i.numberChange)},unitChange:function(i){var n=e(this).closest(t.selectors.units.single),a=n.closest(t.selectors.units.wrapper),l=a.find(t.selectors.units.single),o=a.find(t.selectors.units.value).first(),s=n.data("value");l.removeClass(t.selectors.units.selectedClass),n.addClass(t.selectors.units.selectedClass),o.val(s).trigger("change")},linkedChange:function(){var i=e(this).closest(t.selectors.linked.button),n=i.closest(t.selectors.wrapper),a=i.find(t.selectors.linked.value);"yes"===a.val()?(n.removeClass(t.selectors.linked.wrapperActiveClass),a.val("no")):(n.addClass(t.selectors.linked.wrapperActiveClass),a.val("yes"),n.find(t.selectors.dimensions.number).first().trigger("change"))},numberChange:function(i){var n=e(this).closest(t.selectors.dimensions.number),a=n.closest(t.selectors.wrapper);a.hasClass(t.selectors.linked.wrapperActiveClass)&&a.find(t.selectors.dimensions.number).val(n.val())}};t.init();e(document).on("click",".yith-plugin-fw-copy-to-clipboard__copy",function(){var t,i=e(this).closest(".yith-plugin-fw-copy-to-clipboard"),n=i.find(".yith-plugin-fw-copy-to-clipboard__field"),a=i.find(".yith-plugin-fw-copy-to-clipboard__tip"),l=i.data("tip-timeout");l&&clearTimeout(l),n.select(),document.execCommand("copy"),(t="getSelection"in window&&window.getSelection())?"empty"in t?t.empty():"removeAllRanges"in t&&t.removeAllRanges():"selection"in document&&document.selection.empty(),a.fadeIn(400),l=setTimeout(function(){a.fadeOut(400)},1500),i.data("tip-timeout",l)});var i={init:function(){e(document).on("click",".yith-plugin-fw__action-button--has-menu",i.open),e(document).on("click",".yith-plugin-fw__action-button__menu",i.stopPropagation),e(document).on("click",i.closeAll)},closeAll:function(){e(".yith-plugin-fw__action-button--opened").removeClass("yith-plugin-fw__action-button--opened")},open:function(t){var n=e(this).closest(".yith-plugin-fw__action-button"),a=n.hasClass("yith-plugin-fw__action-button--opened");t.preventDefault(),t.stopPropagation(),i.closeAll(),a||n.addClass("yith-plugin-fw__action-button--opened")},stopPropagation:function(e){e.stopPropagation()}};i.init(),e(document).on("click","a.yith-plugin-fw__require-confirmation-link",function(t){var i=e(this).closest("a.yith-plugin-fw__require-confirmation-link"),n=i.attr("href");if(n&&"#"!==n&&(t.preventDefault(),t.stopPropagation(),"yith"in window&&"ui"in yith)){var a,l=["title","message","confirmButtonType","cancelButton","confirmButton"],o={};for(a in l){var s=l[a],r=i.data(s);void 0!==r&&(o[s]=r)}o.onConfirm=function(){window.location.href=n},o.closeAfterConfirm=!1,yith.ui.confirm(o)}}),e(document).on("yith-plugin-fw-tips-init",function(){e(".yith-plugin-fw__tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})}).trigger("yith-plugin-fw-tips-init")}(jQuery);
1
+ !function(e){var t={selectors:{imgPreview:".yith-plugin-fw-upload-img-preview",uploadButton:".yith-plugin-fw-upload-button",imgUrl:".yith-plugin-fw-upload-img-url",resetButton:".yith-plugin-fw-upload-button-reset"},onImageChange:function(){var i=e(this).val(),n=new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&amp;:/~+#-_.]*.(gif|jpg|jpeg|png|ico|svg)"),a=e(this).parent().find(t.selectors.imgPreview).first();a.length<1&&(a=e(this).parent().parent().find(t.selectors.imgPreview).first()),n.test(i)?a.html('<img src="'+i+'" style="max-width:100px; max-height:100px;" />'):a.html("")},onButtonClick:function(i){i.preventDefault();var n,a=e(this).attr("id").replace(/-button$/,"").replace(/(\[|\])/g,"\\$1");if(n)n.open();else{var l=[new wp.media.controller.Library({library:wp.media.query(),multiple:!1,title:"Choose Image",priority:20,filterable:"uploaded"})];(n=wp.media.frames.downloadable_file=wp.media({title:"Choose Image",library:{type:""},button:{text:"Choose Image"},multiple:!1,states:l})).on("select",function(){var i=n.state().get("selection").first().toJSON(),l=e("#"+a+"-yith-attachment-id");e("#"+a).val(i.url),l.length&&l.val(i.id),t.triggerImageChange()}),n.open()}},onResetClick:function(){var i=e(this),n=i.attr("id").replace(/(\[|\])/g,"\\$1"),a=i.attr("id").replace(/-button-reset$/,"").replace(/(\[|\])/g,"\\$1"),l=e("#"+n).data("default");e("#"+a).val(l),t.triggerImageChange()},triggerImageChange:function(){e(t.selectors.imgUrl).trigger("change")},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&(e(document).on("change",t.selectors.imgUrl,t.onImageChange),e(document).on("click",t.selectors.uploadButton,t.onButtonClick),e(document).on("click",t.selectors.resetButton,t.onResetClick))}};t.initOnce();var i={selectors:{gallery:".yith-plugin-fw-image-gallery",notInitGallery:".yith-plugin-fw-image-gallery:not(.yith-plugin-fw-image-gallery--initialized)",button:".yith-plugin-fw-image-gallery .image-gallery-button",slideWrapper:"ul.slides-wrapper"},initOnce:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(document).on("click",i.selectors.button,function(t){var n=e(this),a=n.closest(i.selectors.gallery),l=a.find(".image_gallery_ids"),o=l.val(),s=a.find("ul.slides-wrapper"),r=wp.media.frames.image_gallery=wp.media({title:n.data("choose"),button:{text:n.data("update")},states:[new wp.media.controller.Library({title:n.data("choose"),filterable:"all",multiple:!0})]});r.on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).id&&(o=o?o+","+e.id:e.id,s.append('<li class="image" data-attachment_id="'+e.id+'"><img src="'+e.sizes.thumbnail.url+'"/><ul class="actions"><li><a href="#" class="delete" title="'+n.data("delete")+'">x</a></li></ul></li>'))}),l.val(o),l.trigger("change")}),r.open()})},init:function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.media&&e(i.selectors.notInitGallery).each(function(){e(this).addClass("yith-plugin-fw-image-gallery--initialized");var t=e(this).find(i.selectors.slideWrapper);t.each(function(){var t=e(this);t.sortable({items:"li.image",cursor:"move",scrollSensitivity:40,forcePlaceholderSize:!0,forceHelperSize:!1,helper:"clone",opacity:.65,start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(n,a){var l="";t.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");l=l+t+","}),t.closest(i.selectors.gallery).find(".image_gallery_ids").val(l)}})}),t.on("click","a.delete",function(t){t.preventDefault();var n=e(this).closest(i.selectors.gallery),a=n.find("ul.slides-wrapper"),l=n.find(".image_gallery_ids"),o="";e(this).closest("li.image").remove(),a.find("li.image").css("cursor","default").each(function(){var t=e(this).attr("data-attachment_id");o=o+t+","}),l.val(o)})})}};i.initOnce(),e(function(){e(document).on("yith-plugin-fw-codemirror-init",function(){"undefined"!=typeof wp&&"undefined"!=typeof wp.codeEditor&&e(".codemirror:not(.codemirror--initialized)").each(function(){var t=e(this).data("settings"),i=wp.codeEditor.initialize(e(this),t);e(this).addClass("codemirror--initialized"),e(this).data("codemirrorInstance",i)})}).trigger("yith-plugin-fw-codemirror-init")});e(document).on("yith_fields_init",function(){var n=e(".yith-plugin-fw-datepicker:not(.yith-plugin-fw-datepicker--initialized)"),a=e(".yith-plugin-fw-colorpicker:not(.yith-plugin-fw-colorpicker--initialized)"),l=e(".yith-plugin-fw-sidebar-layout:not(.yith-plugin-fw-sidebar-layout--initialized)"),o=e(".yith-plugin-fw-slider-container:not(.yith-plugin-fw-slider-container--initialized)"),s=e(".yit-icons-manager-wrapper:not(.yit-icons-manager-wrapper--initialized)");n.each(function(){e(this).addClass("yith-plugin-fw-datepicker--initialized");var t=e(this),i=t.data(),n=t.next(".yith-icon-calendar");i.showAnim=!1,i.beforeShow=function(e,t){t.dpDiv.addClass("yith-plugin-fw-datepicker-div")},i.onClose=function(e,t){t.dpDiv.removeClass("yith-plugin-fw-datepicker-div")},t.datepicker(i),n&&n.on("click",function(){t.datepicker("show")})}),a.each(function(){e(this).addClass("yith-plugin-fw-colorpicker--initialized"),e(this).wpColorPicker({palettes:!1,width:200,mode:"hsl",clear:function(){var t=e(this);t.val(t.data("default-color")),t.trigger("change")}});var t=e(this).data("variations-label"),i=e(this).closest(".yith-plugin-fw-colorpicker-field-wrapper"),n=e(this).closest(".yith-single-colorpicker"),a=i.find(".wp-picker-input-wrap"),l=n.find(".wp-picker-input-wrap");if(a.length&&i.find("a.wp-color-result").attr("title",t),n.length&&n.find("a.wp-color-result").attr("title",t),!a.find(".wp-picker-default-custom").length){var o=e("<span/>").attr({"class":"wp-picker-default-custom"});a.find(".wp-picker-default").wrap(o)}l.find(".wp-picker-default-custom").length||(o=e("<span/>").attr({"class":"wp-picker-default-custom"}),l.find(".wp-picker-default").wrap(o))}),l.each(function(){e(this).addClass("yith-plugin-fw-sidebar-layout--initialized"),e(this).find("img").on("click",function(){var t=e(this).closest(".yith-plugin-fw-sidebar-layout"),i=t.find(".yith-plugin-fw-sidebar-layout-sidebar-left-container"),n=t.find(".yith-plugin-fw-sidebar-layout-sidebar-right-container"),a=e(this).data("type");if(e(this).parent().children(":radio").attr("checked",!1),e(this).prev(":radio").attr("checked",!0),void 0!==a)switch(a){case"left":i.show(),n.hide();break;case"right":n.show(),i.hide();break;case"double":i.show(),n.show();break;default:i.hide(),n.hide()}})}),o.each(function(){e(this).addClass("yith-plugin-fw-slider-container--initialized");var t=e(this).find(".ui-slider-horizontal"),i=t.data("val"),n=t.data("min"),a=t.data("max"),l=t.data("step"),o=t.data("labels");t.slider({value:i,min:n,max:a,range:"min",step:l,create:function(){e(this).find(".ui-slider-handle").text(e(this).slider("value"))},slide:function(t,i){e(this).find("input").val(i.value).trigger("change"),e(this).find(".ui-slider-handle").text(i.value),e(this).siblings(".feedback").find("strong").text(i.value+o)}})}),s.each(function(){e(this).addClass("yit-icons-manager-wrapper--initialized");var t=e(this),i=t.find(".yit-icons-manager-icon-preview").first(),n=t.find(".yit-icons-manager-icon-text");t.on("click",".yit-icons-manager-list li",function(a){var l=e(a.target).closest("li"),o=l.data("font"),s=l.data("icon"),r=l.data("key"),c=l.data("name");i.attr("data-font",o),i.attr("data-icon",s),i.attr("data-key",r),i.attr("data-name",c),n.val(o+":"+c),t.find(".yit-icons-manager-list li").removeClass("active"),l.addClass("active")}),t.on("click",".yit-icons-manager-action-set-default",function(){t.find(".yit-icons-manager-list li.default").trigger("click")})}),e(document).find(".ui-sortable .yith-toggle-elements").sortable({cursor:"move",axis:"y",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",stop:function(t,i){var n=jQuery(".ui-sortable-handle"),a=0,l=new Array;for(a=0;a<n.length;a++)l[a]=e(n[a]).data("item_key");l.length>0&&e(this).closest(".toggle-element").saveToggleElement(null,l)}}),e(document.body).trigger("wc-enhanced-select-init"),e(document.body).trigger("yith-framework-enhanced-select-init"),e(document).trigger("yith-plugin-fw-codemirror-init"),t.triggerImageChange(),i.init()}).trigger("yith_fields_init"),e(document).on("click",".yith-plugin-fw-select-images__item",function(){var t=e(this),i=t.data("key"),n=t.closest(".yith-plugin-fw-select-images__wrapper"),a=n.find(".yith-plugin-fw-select-images__item"),l=n.find("select").first();l.length&&(l.val(i).trigger("yith_select_images_value_changed").trigger("change"),a.removeClass("yith-plugin-fw-select-images__item--selected"),t.addClass("yith-plugin-fw-select-images__item--selected"))}),e(document).on("click",".yith-plugin-fw-select-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!0).trigger("change")}),e(document).on("click",".yith-plugin-fw-deselect-all",function(){e("#"+e(this).data("select-id")).find("option").prop("selected",!1).trigger("change")}),e(document).on("click",".yith-plugin-fw-onoff-container span",function(){var t=e(this).prev("input");t.prop("disabled")||t.trigger("click")}),e(document).on("click",".yith-plugin-fw-onoff-container input",function(t){e(this).is(":checked")?e(this).attr("value","yes").addClass("onoffchecked"):e(this).attr("value","no").removeClass("onoffchecked")}),e.fn.saveToggleElement=function(t,i){var n=e(this),a="yith_plugin_fw_save_toggle_element",l=n.serializeToggleElement(),o=n.find(".yith-toggle_wrapper"),s=o.attr("id"),r=e.urlParam("tab");l.append("security",o.data("nonce")),void 0!==i&&i.length>0&&l.append("yith_toggle_elements_order_keys",i),n.closest(".metaboxes-tab.yith-plugin-ui").length?(a="yith_plugin_fw_save_toggle_element_metabox",post_id=e(this).closest("form#post").find("#post_ID").val(),yit_metaboxes_nonce=e(this).closest("form#post").find("#yit_metaboxes_nonce").val(),metabox_tab=e(this).closest(".tabs-panel").attr("id"),url=yith_framework_fw_fields.ajax_url+"?action="+a+"&post_ID="+post_id+"&yit_metaboxes_nonce="+yit_metaboxes_nonce+"&toggle_id="+s+"&metabox_tab="+metabox_tab):url=yith_framework_fw_fields.admin_url+"?action="+a+"&tab="+r+"&toggle_id="+s,e.ajax({type:"POST",url:url,data:l,contentType:!1,processData:!1,success:function(i){t&&t.removeClass("show"),e(document).trigger("yith_save_toggle_element_done",[i,n])}})},e.fn.serializeToggleElement=function(){var t=e(this),i=new FormData,n=e(t).find(":input").serializeArray();return e.each(n,function(e,t){el_name=t.name,i.append(t.name,t.value)}),i},e.fn.formatToggleTitle=function(){var t=e(this),i=t.find(":input"),n=t.find("span.title").data("title_format"),a=t.find(".subtitle").data("subtitle_format"),l=new RegExp("[^%%]+(?=[%%])","g");if(void 0!==n)var o=n.match(l);if(void 0!==a)var s=a.match(l);e.each(i,function(t,i){void 0!==e(i).attr("id")&&($field_id=e(i).attr("id"),$field_array=$field_id.split("_"),$field_array.pop(),$field_id=$field_array.join("_"),$field_val=e(i).val(),null!=o&&void 0!==o&&-1!==o.indexOf($field_id)&&(n=n.replace("%%"+$field_id+"%%",$field_val)),null!=s&&void 0!==s&&-1!==s.indexOf($field_id)&&(a=a.replace("%%"+$field_id+"%%",$field_val)))}),""!==n&&t.find("span.title").html(n),""!==a&&t.find(".subtitle").html(a),e(document).trigger("yith-toggle-element-item-title",[t])},e.urlParam=function(e){var t=new RegExp("[?&]"+e+"=([^&#]*)").exec(window.location.search);return null!==t&&(t[1]||0)},e(document).on("click",".yith-toggle-title",function(t){var i=e(t.target),n=i.closest(".yith-toggle-row"),a=n.find(".yith-toggle-content");if(i.hasClass("yith-plugin-fw-onoff")||i.hasClass("yith-icon-drag"))return!1;n.is(".yith-toggle-row-opened")?a.slideUp(400):a.slideDown(400),n.toggleClass("yith-toggle-row-opened")}),e(document).on("click",".yith-add-box-button",function(t){t.preventDefault();var i=e(this),n=i.data("box_id"),a=i.data("closed_label"),l=i.data("opened_label"),o=i.closest(".yith-toggle_wrapper").attr("id"),s=wp.template("yith-toggle-element-add-box-content-"+o);""!==n&&(e("#"+n).html(s({index:"box_id"})).slideToggle(),""!==a&&(i.html()===a?i.html(l).removeClass("closed"):i.html(a).addClass("closed")),e(document).trigger("yith_fields_init"),e(document).trigger("yith-add-box-button-toggle",[i]))}),e(document).on("click",".yith-add-box-buttons .yith-save-button",function(t){t.preventDefault();var i=e(this).parents(".yith-add-box"),n=e(this).closest(".yith-toggle_wrapper").attr("id"),a=i.find(".spinner"),l=e(this).parents(".toggle-element"),o=i.find(":input"),s=0,r=e('<input type="hidden">');l.find(".yith-toggle-row").each(function(){var t=parseInt(e(this).data("item_key"));s<=t&&(s=t+1)}),r.val(s),e(document).trigger("yith-toggle-change-counter",[r,i]),s=r.val();var c=wp.template("yith-toggle-element-item-"+n),d=e(c({index:s}));a.addClass("show"),e.each(o,function(t,i){if(void 0!==e(i).attr("id")){var n=e(i).attr("id"),a=e(i).val();n="radio"===e(i).attr("type")?(n=(n=e(i).closest(".yith-plugin-fw-radio").attr("id")).replace("new_","")+"_"+s)+"-"+a:n.replace("new_","")+"_"+s,e(i).is(":checked")&&e(d).find("#"+n).prop("checked",!0),(e(i).hasClass("yith-post-search")||e(i).hasClass("yith-term-search"))&&e(d).find("#"+n).html(e("#"+e(i).attr("id")).html()),e(d).find("#"+n).val(a)}}),e(d).formatToggleTitle();var u=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-add",[i,d,u]);setTimeout(function(){if("yes"===u.val()){e(l).find(".yith-toggle-elements").append(d),e(i).find(".yith-plugin-fw-datepicker").datepicker("destroy"),e(i).html(""),e(i).prev(".yith-add-box-button").trigger("click"),l.saveToggleElement();setTimeout(function(){e(l).find(".highlight").removeClass("highlight")},2e3),e(document).trigger("yith_fields_init")}},1e3)}),e(document).on("click",".yith-toggle-row .yith-save-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element"),n=e(this).closest(".yith-toggle-row"),a=n.find(".spinner");n.formatToggleTitle();var l=e('<input type="hidden">').val("yes");e(document).trigger("yith-toggle-element-item-before-update",[i,n,l]),"yes"===l.val()&&(a.addClass("show"),i.saveToggleElement(a))}),e(document).on("click",".yith-toggle-row .yith-delete-button",function(t){t.preventDefault();var i=e(this).closest(".toggle-element");e(this).closest(".yith-toggle-row").remove(),i.saveToggleElement()}),e(document).on("click",".yith-toggle-onoff",function(t){t.preventDefault(),e(this).closest(".toggle-element").saveToggleElement()}),e(document).on("click",".yith-plugin-fw-radio input[type=radio]",function(){var t=e(this).closest(".yith-plugin-fw-radio"),i=e(this).val();t.val(i).data("value",i).trigger("change")}),e(document.body).on("yith-plugin-fw-init-radio",function(){e(".yith-plugin-fw-radio:not(.yith-plugin-fw-radio--initialized)").each(function(){e(this).find('input[type="radio"]').filter('[value="'+e(this).data("value")+'"]').click(),e(this).addClass("yith-plugin-fw-radio--initialized")})}).trigger("yith-plugin-fw-init-radio"),e(document).on("click",".yith-password-eye",function(){var t=e(this),i=e(this).closest(".yith-password-wrapper").find("input");"password"===i.attr("type")?(i.attr("type","text"),t.addClass("yith-password-eye-closed")):(i.attr("type","password"),t.removeClass("yith-password-eye-closed"))}),e(document).on("select2:open",function(t){e(t.target).closest(".yith-plugin-ui").length&&e(".select2-results").closest(".select2-container").addClass("yith-plugin-fw-select2-container")});var n={selectors:{wrapper:".yith-plugin-fw-dimensions",units:{wrapper:".yith-plugin-fw-dimensions__units",single:".yith-plugin-fw-dimensions__unit",value:".yith-plugin-fw-dimensions__unit__value",selectedClass:"yith-plugin-fw-dimensions__unit--selected"},linked:{button:".yith-plugin-fw-dimensions__linked",value:".yith-plugin-fw-dimensions__linked__value",wrapperActiveClass:"yith-plugin-fw-dimensions--linked-active"},dimensions:{number:".yith-plugin-fw-dimensions__dimension__number"}},init:function(){var t=n;e(document).on("click",t.selectors.units.single,